import {throttle} from "../../../js/utils"; const app = getApp(); var locationData = require("./data.js"); const risk_message = "检测到名称中含有敏感词汇"; function msgSecCheck({name, nickname}){ let content = name+","+nickname; console.log("secCheck", content); if(this.tmp_promise&&this.tmp_content==content) return this.tmp_promise; this.tmp_promise = app.openapi("security.msgSecCheck")({content}); this.tmp_content = content; this.tmp_promise.then(res=>{ if(res.errCode==87014){ wx.showToast({ title: risk_message,icon:"none",duration:2600 }) } }) return this.tmp_promise; } Page({ data: { eduImgDir:global.config.eduImgDir, locations:[], cities:[], identities:[{value:"teacher", text:"教师"},{value:"student",text:"学生"},{value:"professional", text:"专业人士"}], technicalTitles:{ 0:["教授","副教授","讲师","助教"], 2:["企业管理者","部门管理者","高级工程师","工程师","助理工程师"] } }, refresh(){ app.api("users.accounts")().then(res=>{ this.originInfo = res; res.authen = res.authentication == "certified"; res.pro_authen = res.professional_certification == "certified"; this.setData(res); this.setInfo(res); }).catch(e=>{ this.showError(e); }); }, msgSecCheck, throttledMsgSecCheck: throttle(msgSecCheck, 1000, {}), updateNickName({detail:{value}}){ this.setData({nickname: value}); this.throttledMsgSecCheck(this.data); }, updateName({detail:{value}}){ this.setData({name: value}); this.throttledMsgSecCheck(this.data); }, onGetUserInfo(e){ console.log(e); }, setInfo(res){ let locations = Object.keys(locationData); let location_index = locations.indexOf(res.location); let cities = locationData[res.location] || locationData['北京']; let city_index = cities.indexOf(res.location_city); let identity_index = -1; let { identities } = this.data; for (var i = 0; i < identities.length; i++) { if (identities[i].value == res.identity) { identity_index = i; break; } } var technical_index = -1; if (identity_index == 0 || identity_index == 2) { let technicals = this.data.technicalTitles[identity_index]; for (var i = 0; i < technicals.length; i++) { if (technicals[i] == res.technical_title) { technical_index = i; break; } } } this.setData({ locations, cities, location_index, city_index, identity_index, technical_index }); if (res.school_id) { this.changeSchoolDepartment(res); } }, updateAccount(data){ app.api("users.accounts",{method:"PUT"})(data).then(res=>{ app.showMsg(res); setTimeout(res=>{ wx.navigateBack({ delta:1 }); },400) }).catch(e=>{ this.showError(e); }) }, onGenderChange({detail:{value}}){ value = parseInt(value); this.setData({gender:value}); }, onLocationChange(e){ let {detail:{value:[location_index, city_index]}} = e; this.setData({location_index, city_index}); this.setData({cities:locationData[this.data.locations[location_index]]}); }, onCitiesChange(e){ let {detail:{value,column}} = e; if(column==0) this.setData({cities:locationData[this.data.locations[value]],location_index:value ,city_index:-1}); }, onIdentityChange(e){ let {detail:{value}} = e; this.setData({identity_index:value, technical_index:-1}); }, onTechnicalChange(e){ let { detail: { value } } = e; this.setData({technical_index: value}); }, onDepartmentChange(e){ let { detail: { value } } = e; this.setData({department_index:value}); }, refreshDepartments({detail}){ this.setData({department_id: detail.id}); this.pullDepartments(); }, pullDepartments(){ let {school_id, department_id} = this.data; app.api("schools.departments.for_option")({school_id}) .then(res=>{ let {departments} = res; let department_index = -1; for(var i=0; i{ let {avatar_url} = res; this.setData({avatar_url}); }) } //@todo: better solution? this.secondShow = 1; let data = wx.getStorageSync("SET-SCHOOL-DEPARTMENT-KEY"); if(data){ this.changeSchoolDepartment(data); wx.setStorageSync("SET-SCHOOL-DEPARTMENT-KEY",''); } }, checkProInfo(value){ let info = this.originInfo; if (info.identity != value.identity) return true; if(info.identity=='student'){ if(info.student_id!=value.student_id) return true; }else{ if (info.technical_title!=value.technical_title) return true; } if(info.school_id!=value.school_id||info.department_id!=value.department_id) return true return false; }, onSubmit(e){ let {detail:{value}} = e; if(!this.checkInput(value)) return; if(this.data.pro_authen&&this.checkProInfo(value)){ wx.showModal({ title: '确认修改', content: '您修改了职业信息,保存后认证信息会清空,需重新进行职业认证,\n是否保存?', confirmText:"保存", success:res=>{ if(res.confirm) this.saveInfo(value); } }); }else{ this.saveInfo(value); } }, checkInput(value){ var showTip = key=>{ this.showError({ message: `请填写${key}`}); return false; } if(!value.nickname) return showTip("昵称"); if(!value.name) return showTip("姓名"); if(value.gender==null) return showTip("性别"); if (!value.location) return showTip("所在地"); if (!value.location_city) return showTip("所在地"); if(!value.identity) return showTip("职业"); if(value.identity=='student'){ if(!value.student_id) return showTip("学号"); }else{ if (!value.technical_title) return showTip("职称"); } if(!value.school_id) return showTip("学校/单位"); if (!value.department_id) return showTip("院系/部门"); return true; }, saveInfo(value){ wx.showLoading({ title: '提交中' }); value.gender = parseInt(value.gender); this.msgSecCheck(value).then(res=>{ if(res.errCode==87014){ wx.hideLoading(); wx.showModal({ content: risk_message,showCancel:false }) }else{ app.api("users.accounts", { method: "PUT" })(value) .then(res => { app.syncUser({refresh:1});//更新用户信息 res.message = "更新成功"; wx.hideLoading(); app.showMsg(res); setTimeout(() => { wx.navigateBack({ delta: 1 }) }, 420); }).catch(e => { wx.hideLoading(); this.showError(e); }) } }).catch(e=>{ wx.hideLoading(); wx.showToast({ title: '出错了\n>︿<',icon:"none" }); throw e; }) }, onTap(e){ let { target: { id } } = e; if (id) { if ((id == 'name' || id == "gender") && this.data.authen) this.showError({ message: `请重新实名认证以更改${id == "name" ? "姓名" : id == 'gender' ? "性别" : '此信息'}`, during: 1400 }); this.setData({edited:1}); } }, showError(e){ let {message:error, during=2000} = e; if(error){ error = error.replace(/\n/g, ""); this.setData({showError:1, error}); setTimeout(()=>{ this.setData({showError:0}); }, during); } } })