|
|
|
|
const app = getApp<IAppOption>()
|
|
|
|
|
|
|
|
|
|
Page({
|
|
|
|
|
data: {
|
|
|
|
|
id: 0,
|
|
|
|
|
visitDate: '',
|
|
|
|
|
nextVisitDate: '',
|
|
|
|
|
displayIgG4Value: '' as string | number | null,
|
|
|
|
|
medicationsLabel: '',
|
|
|
|
|
oralHormoneDosageMg: '' as string | number | null,
|
|
|
|
|
immunosuppressantLabel: '',
|
|
|
|
|
reminderEnabled: 2,
|
|
|
|
|
imageGroups: [] as { type: string; label: string; list: string[] }[],
|
|
|
|
|
change: 0,
|
|
|
|
|
|
|
|
|
|
// 枚举
|
|
|
|
|
medicationsMap: {} as Record<number, string>,
|
|
|
|
|
immunosuppressantMap: {} as Record<number, string>,
|
|
|
|
|
imageTypeLabels: {} as Record<string, string>,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onLoad(options: any) {
|
|
|
|
|
app.waitLogin().then(() => {
|
|
|
|
|
app.mpBehavior({ PageName: 'PG_PatientRecordDetail', detailId: String(options.id) })
|
|
|
|
|
this.getEnums().then(() => {
|
|
|
|
|
if (options.id) {
|
|
|
|
|
this.setData({ id: Number(options.id) })
|
|
|
|
|
this.getDetail()
|
|
|
|
|
this.getReminderConfig()
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
onShow() {
|
|
|
|
|
if (typeof this.__loaded === 'undefined') {
|
|
|
|
|
this.__loaded = true
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
this.getDetail()
|
|
|
|
|
this.getReminderConfig()
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== API ==========
|
|
|
|
|
|
|
|
|
|
getEnums(): Promise<void> {
|
|
|
|
|
return wx
|
|
|
|
|
.ajax({
|
|
|
|
|
method: 'GET',
|
|
|
|
|
url: '?r=igg4/medical-visit/get-enums',
|
|
|
|
|
})
|
|
|
|
|
.then((res: any) => {
|
|
|
|
|
if (!res) return
|
|
|
|
|
const medicationsMap: Record<number, string> = {}
|
|
|
|
|
for (const item of res.medicationsUsed || []) {
|
|
|
|
|
medicationsMap[item.value] = item.label
|
|
|
|
|
}
|
|
|
|
|
const immunosuppressantMap: Record<number, string> = {}
|
|
|
|
|
for (const item of res.immunosuppressantName || []) {
|
|
|
|
|
immunosuppressantMap[item.value] = item.label
|
|
|
|
|
}
|
|
|
|
|
const imageTypeLabels: Record<string, string> = {}
|
|
|
|
|
for (const item of res.imageType || []) {
|
|
|
|
|
imageTypeLabels[item.value] = item.label
|
|
|
|
|
}
|
|
|
|
|
this.setData({ medicationsMap, immunosuppressantMap, imageTypeLabels })
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDetail() {
|
|
|
|
|
wx.ajax({
|
|
|
|
|
method: 'GET',
|
|
|
|
|
url: '?r=igg4/medical-visit/detail',
|
|
|
|
|
data: { id: this.data.id },
|
|
|
|
|
}).then((res: any) => {
|
|
|
|
|
if (!res) return
|
|
|
|
|
const { medicationsMap, immunosuppressantMap, imageTypeLabels } = this.data
|
|
|
|
|
const medicationsLabel = (res.medicationsUsed || [])
|
|
|
|
|
.map((id: number) => {
|
|
|
|
|
if (id === 99 && res.medicationsUsedOtherText) return `其他:${res.medicationsUsedOtherText}`
|
|
|
|
|
if (id === 99) return ''
|
|
|
|
|
return medicationsMap[id]
|
|
|
|
|
})
|
|
|
|
|
.filter(Boolean)
|
|
|
|
|
.join('、')
|
|
|
|
|
const immunosuppressantLabel = (res.immunosuppressantName || [])
|
|
|
|
|
.map((id: number) => {
|
|
|
|
|
if (id === 99 && res.immunosuppressantNameOtherText) return `其他:${res.immunosuppressantNameOtherText}`
|
|
|
|
|
if (id === 99) return ''
|
|
|
|
|
return immunosuppressantMap[id]
|
|
|
|
|
})
|
|
|
|
|
.filter(Boolean)
|
|
|
|
|
.join('、')
|
|
|
|
|
|
|
|
|
|
const imageGroups: { type: string; label: string; list: string[] }[] = []
|
|
|
|
|
const images = res.images || {}
|
|
|
|
|
for (const type of Object.keys(imageTypeLabels)) {
|
|
|
|
|
const list = (images[type] || []).map((img: any) => img.maskedImageUrl || img.imageUrl)
|
|
|
|
|
if (list.length) {
|
|
|
|
|
imageGroups.push({ type, label: imageTypeLabels[type], list })
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setData({
|
|
|
|
|
visitDate: res.visitDate || '',
|
|
|
|
|
nextVisitDate: res.nextVisitDate || '',
|
|
|
|
|
displayIgG4Value: res.displayIgG4Value,
|
|
|
|
|
medicationsLabel,
|
|
|
|
|
oralHormoneDosageMg: res.oralHormoneDosageMg,
|
|
|
|
|
immunosuppressantLabel,
|
|
|
|
|
imageGroups,
|
|
|
|
|
change: res.change,
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getReminderConfig() {
|
|
|
|
|
wx.ajax({
|
|
|
|
|
method: 'GET',
|
|
|
|
|
url: '?r=igg4/medical-visit/get-reminder-config',
|
|
|
|
|
}).then((res: any) => {
|
|
|
|
|
if (!res) return
|
|
|
|
|
this.setData({ reminderEnabled: res.reminderEnabled || 2 })
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
saveReminderConfig(e: any) {
|
|
|
|
|
const val = e.detail.value ? 1 : 2
|
|
|
|
|
this.setData({ reminderEnabled: val })
|
|
|
|
|
wx.ajax({
|
|
|
|
|
method: 'POST',
|
|
|
|
|
url: '?r=igg4/medical-visit/save-reminder-config',
|
|
|
|
|
data: { reminderEnabled: val },
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 操作 ==========
|
|
|
|
|
|
|
|
|
|
handleDelete() {
|
|
|
|
|
wx.showModal({
|
|
|
|
|
title: `删除${this.data.visitDate || ''}记录`,
|
|
|
|
|
content: `删除后将无法恢复`,
|
|
|
|
|
confirmText: '确认删除',
|
|
|
|
|
confirmColor: '#ee0a24',
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (!res.confirm) return
|
|
|
|
|
wx.ajax({
|
|
|
|
|
method: 'POST',
|
|
|
|
|
url: '?r=igg4/medical-visit/delete',
|
|
|
|
|
data: { id: this.data.id },
|
|
|
|
|
}).then((res: any) => {
|
|
|
|
|
if (!res) return
|
|
|
|
|
wx.navigateBack()
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleEdit() {
|
|
|
|
|
wx.navigateTo({ url: `/gift/pages/record/index?id=${this.data.id}` })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handlePreviewImage(e: any) {
|
|
|
|
|
const { url, type } = e.currentTarget.dataset
|
|
|
|
|
const group = this.data.imageGroups.find((g) => g.type === type)
|
|
|
|
|
if (!group) return
|
|
|
|
|
wx.previewImage({
|
|
|
|
|
current: url,
|
|
|
|
|
urls: group.list,
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
export {}
|