|
|
|
|
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 {}
|