You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
4.0 KiB
161 lines
4.0 KiB
const app = getApp<IAppOption>() |
|
|
|
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<string, any> = { |
|
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 {}
|
|
|