|
|
|
|
const app = getApp<IAppOption>()
|
|
|
|
|
|
|
|
|
|
Page({
|
|
|
|
|
data: {
|
|
|
|
|
id: '',
|
|
|
|
|
isEdit: false,
|
|
|
|
|
visitTime: '',
|
|
|
|
|
treatmentPlan: [] as string[],
|
|
|
|
|
planOptions: [] as any[],
|
|
|
|
|
teprotumumabCount: 1,
|
|
|
|
|
showUsageCount: false,
|
|
|
|
|
nextVisitTime: '',
|
|
|
|
|
nextVisitPreset: '',
|
|
|
|
|
intervalOptions: [] as any[],
|
|
|
|
|
popupShow: false,
|
|
|
|
|
popupType: 'popup16',
|
|
|
|
|
popupParams: {} as any,
|
|
|
|
|
hasChange: false,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onLoad(options: any) {
|
|
|
|
|
app.waitLogin({ type: [1] }).then(() => {
|
|
|
|
|
this.getEnum().then(() => {
|
|
|
|
|
if (options.id) {
|
|
|
|
|
this.setData({
|
|
|
|
|
id: options.id,
|
|
|
|
|
isEdit: true,
|
|
|
|
|
})
|
|
|
|
|
this.getDetail()
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getEnum() {
|
|
|
|
|
return wx.ajax({
|
|
|
|
|
method: 'GET',
|
|
|
|
|
url: '?r=xd/follow-up-reminder/enum',
|
|
|
|
|
}).then((res: any) => {
|
|
|
|
|
const tp = res.treatmentPlan || {}
|
|
|
|
|
const planOptions = Object.keys(tp).map(key => ({
|
|
|
|
|
value: key,
|
|
|
|
|
label: tp[key],
|
|
|
|
|
isSelected: false,
|
|
|
|
|
}))
|
|
|
|
|
const nvi = res.nextVisitInterval || {}
|
|
|
|
|
const intervalOptions = Object.keys(nvi).map(key => ({
|
|
|
|
|
value: key,
|
|
|
|
|
label: nvi[key],
|
|
|
|
|
}))
|
|
|
|
|
this.setData({ planOptions, intervalOptions })
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
updatePlanOptions(treatmentPlan: string[]) {
|
|
|
|
|
const planOptions = this.data.planOptions.map((opt: any) => ({
|
|
|
|
|
...opt,
|
|
|
|
|
isSelected: treatmentPlan.includes(opt.value),
|
|
|
|
|
}))
|
|
|
|
|
const showUsageCount = treatmentPlan.includes('5')
|
|
|
|
|
this.setData({ planOptions, showUsageCount })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDetail() {
|
|
|
|
|
wx.ajax({
|
|
|
|
|
method: 'GET',
|
|
|
|
|
url: '?r=xd/follow-up-reminder/detail',
|
|
|
|
|
data: { id: this.data.id },
|
|
|
|
|
loading: true,
|
|
|
|
|
}).then((res: any) => {
|
|
|
|
|
const treatmentPlan = res.treatmentPlan ? res.treatmentPlan.split(',') : []
|
|
|
|
|
this.setData({
|
|
|
|
|
visitTime: res.visitTime || '',
|
|
|
|
|
treatmentPlan,
|
|
|
|
|
teprotumumabCount: res.teprotumumabCount || 1,
|
|
|
|
|
nextVisitTime: res.nextVisitTime || '',
|
|
|
|
|
hasChange: false,
|
|
|
|
|
})
|
|
|
|
|
this.updatePlanOptions(treatmentPlan)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onVisitDateChange(e: any) {
|
|
|
|
|
this.setData({ visitTime: e.detail.value, hasChange: true })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onNextDateChange(e: any) {
|
|
|
|
|
this.setData({ nextVisitTime: e.detail.value, nextVisitPreset: '', hasChange: true })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
togglePlan(e: any) {
|
|
|
|
|
const value = e.currentTarget.dataset.value
|
|
|
|
|
const treatmentPlan = [...this.data.treatmentPlan]
|
|
|
|
|
const index = treatmentPlan.indexOf(value)
|
|
|
|
|
if (index > -1) {
|
|
|
|
|
treatmentPlan.splice(index, 1)
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
treatmentPlan.push(value)
|
|
|
|
|
}
|
|
|
|
|
this.setData({ treatmentPlan, hasChange: true })
|
|
|
|
|
this.updatePlanOptions(treatmentPlan)
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onStepperChange(e: any) {
|
|
|
|
|
this.setData({ teprotumumabCount: e.detail, hasChange: true })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onNextPresetChange(e: any) {
|
|
|
|
|
const preset = e.currentTarget.dataset.value
|
|
|
|
|
const { visitTime } = this.data
|
|
|
|
|
if (!visitTime) {
|
|
|
|
|
wx.showToast({ title: '请先选择复诊时间', icon: 'none' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
const date = new Date(visitTime)
|
|
|
|
|
if (preset === '21') {
|
|
|
|
|
date.setDate(date.getDate() + 21)
|
|
|
|
|
}
|
|
|
|
|
else if (preset === '30') {
|
|
|
|
|
date.setMonth(date.getMonth() + 1)
|
|
|
|
|
}
|
|
|
|
|
else if (preset === '60') {
|
|
|
|
|
date.setMonth(date.getMonth() + 2)
|
|
|
|
|
}
|
|
|
|
|
const nextVisitTime = this.formatDate(date)
|
|
|
|
|
this.setData({ nextVisitPreset: preset, nextVisitTime, hasChange: true })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
formatDate(date: Date) {
|
|
|
|
|
const y = date.getFullYear()
|
|
|
|
|
const m = String(date.getMonth() + 1).padStart(2, '0')
|
|
|
|
|
const d = String(date.getDate()).padStart(2, '0')
|
|
|
|
|
return `${y}-${m}-${d}`
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleSubmit() {
|
|
|
|
|
const { visitTime, treatmentPlan, teprotumumabCount, nextVisitTime, id, isEdit } = this.data
|
|
|
|
|
if (!visitTime) {
|
|
|
|
|
wx.showToast({ title: '请选择复诊时间', icon: 'none' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (!treatmentPlan.length) {
|
|
|
|
|
wx.showToast({ title: '请选择复诊方案', icon: 'none' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (!nextVisitTime) {
|
|
|
|
|
wx.showToast({ title: '请选择下次复诊时间', icon: 'none' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
const data = {
|
|
|
|
|
visitTime,
|
|
|
|
|
treatmentPlan: treatmentPlan.join(','),
|
|
|
|
|
teprotumumabCount,
|
|
|
|
|
nextVisitTime,
|
|
|
|
|
}
|
|
|
|
|
if (isEdit) {
|
|
|
|
|
wx.ajax({
|
|
|
|
|
method: 'POST',
|
|
|
|
|
url: '?r=xd/follow-up-reminder/update',
|
|
|
|
|
data: { id, ...data },
|
|
|
|
|
loading: true,
|
|
|
|
|
}).then(() => {
|
|
|
|
|
wx.showToast({ title: '更新成功', icon: 'none' })
|
|
|
|
|
setTimeout(() => wx.navigateBack(), 1500)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
wx.ajax({
|
|
|
|
|
method: 'POST',
|
|
|
|
|
url: '?r=xd/follow-up-reminder/create',
|
|
|
|
|
data,
|
|
|
|
|
loading: true,
|
|
|
|
|
}).then(() => {
|
|
|
|
|
wx.showToast({ title: '创建成功', icon: 'none' })
|
|
|
|
|
setTimeout(() => wx.navigateBack(), 1500)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleCancel() {
|
|
|
|
|
if (this.data.hasChange) {
|
|
|
|
|
this.setData({ popupShow: true, popupType: 'popup16' })
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
wx.navigateBack()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleDelete() {
|
|
|
|
|
this.setData({ popupShow: true, popupType: 'popup15' })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handlePopupOk() {
|
|
|
|
|
const { popupType } = this.data
|
|
|
|
|
this.setData({ popupShow: false })
|
|
|
|
|
if (popupType === 'popup15') {
|
|
|
|
|
// 删除确认
|
|
|
|
|
wx.ajax({
|
|
|
|
|
method: 'POST',
|
|
|
|
|
url: '?r=xd/follow-up-reminder/delete',
|
|
|
|
|
data: { id: this.data.id },
|
|
|
|
|
loading: true,
|
|
|
|
|
}).then(() => {
|
|
|
|
|
wx.showToast({ title: '删除成功', icon: 'none' })
|
|
|
|
|
setTimeout(() => wx.navigateBack(), 1500)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// 保存记录
|
|
|
|
|
this.handleSubmit()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handlePopupCancel() {
|
|
|
|
|
this.setData({ popupShow: false })
|
|
|
|
|
wx.navigateBack()
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
export {}
|