const app = getApp() interface OptionItem { value: number label: string } Page({ data: { menuTop: 0, step: 1, // 基础数据列表 (from API 1.7) ageRangeList: [] as OptionItem[], genderList: [] as OptionItem[], diagnosisStatusList: [] as OptionItem[], surgeryStatusList: [] as OptionItem[], // Step 1: 基础信息 ageRange: 0 as number, gender: 0 as number, provinceId: '', provinceName: '', cityId: '', cityName: '', regionText: '', // Step 2: PSVT情况 diagnosisStatus: 0 as number, diagnosisTime: '', surgeryStatus: 0 as number, currentMonth: '', }, onLoad() { const menuRes = wx.getMenuButtonBoundingClientRect() const now = new Date() const currentMonth = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}` this.setData({ menuTop: menuRes.top, currentMonth, }) this.getBaseData() }, getBaseData() { wx.ajax({ method: 'GET', url: '?r=psvt/patient/base-data', }).then((res) => { const parseList = (list: any): OptionItem[] => { if (Array.isArray(list)) { return list.map((item) => { const key = Object.keys(item)[0] return { value: Number(key), label: item[key] } }) } if (list && typeof list === 'object') { return Object.keys(list).map((key) => ({ value: Number(key), label: list[key], })) } return [] } this.setData({ ageRangeList: parseList(res.ageRangeList), genderList: parseList(res.genderList), diagnosisStatusList: parseList(res.diagnosisStatusList), surgeryStatusList: parseList(res.surgeryStatusList), }) }) }, handleSelect(e: WechatMiniprogram.TouchEvent) { const { key, value } = e.currentTarget.dataset this.setData({ [key]: Number(value), }) }, handleAreaChange(e: any) { const [province, city] = e.detail this.setData({ provinceId: province.value, provinceName: province.label, cityId: city.value, cityName: city.label, regionText: [province.label, city.label].filter(Boolean).join(' '), }) }, handleDiagnosisTimeChange(e: WechatMiniprogram.PickerChange) { this.setData({ diagnosisTime: e.detail.value as string, }) }, handleNext() { const { ageRange, gender } = this.data if (!ageRange) { wx.showToast({ title: '请选择年龄段', icon: 'none' }) return } if (!gender) { wx.showToast({ title: '请选择性别', icon: 'none' }) return } this.setData({ step: 2 }) }, handlePrev() { this.setData({ step: 1 }) }, handleSubmit() { const { diagnosisStatus, surgeryStatus } = this.data if (!diagnosisStatus) { wx.showToast({ title: '请选择确诊状态', icon: 'none' }) return } if (!surgeryStatus) { wx.showToast({ title: '请选择手术状态', icon: 'none' }) return } const { ageRange, gender, provinceId, provinceName, cityId, cityName, diagnosisStatus: ds, diagnosisTime, surgeryStatus: ss, } = this.data const channelId = app.globalData.scene?.channelId || '' const data: Record = { ageRange, gender, diagnosisStatus: ds, surgeryStatus: ss, channelId, } if (provinceName) data.provinceName = provinceName if (provinceId) data.provinceId = provinceId if (cityName) data.cityName = cityName if (cityId) data.cityId = cityId if (diagnosisTime) data.diagnosisTime = diagnosisTime wx.ajax({ method: 'POST', url: '?r=psvt/patient/register', data, loading: true, loadingText: '提交中...', }).then(() => { app.globalData.initLoginInfo.isReg = 1 app.globalData.initLoginInfo.isLogin = 1 wx.reLaunch({ url: '/pages/index/index', }) }) }, }) export {}