Files
2025-10-26 19:29:30 +08:00

137 lines
2.5 KiB
JavaScript

// add-person.js
const storage = require('../../utils/storage')
Page({
data: {
personId: null,
formData: {
avatar: '',
name: '',
nickname: '',
remark: ''
}
},
onLoad(options) {
// 如果是编辑模式
if (options.id) {
this.setData({ personId: options.id })
this.loadPerson(options.id)
}
},
/**
* 加载人员信息(编辑模式)
*/
loadPerson(id) {
const person = storage.getPersonById(id)
if (person) {
this.setData({ formData: person })
wx.setNavigationBarTitle({ title: '编辑人员' })
}
},
/**
* 输入框变化
*/
onInputChange(e) {
const field = e.currentTarget.dataset.field
const value = e.detail.value
this.setData({
[`formData.${field}`]: value
})
},
/**
* 文本框变化
*/
onTextareaChange(e) {
this.setData({
'formData.remark': e.detail.value
})
},
/**
* 选择头像
*/
chooseAvatar() {
wx.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
// 这里可以上传到服务器,暂时使用本地路径
this.setData({
'formData.avatar': res.tempFilePaths[0]
})
}
})
},
/**
* 取消
*/
onCancel() {
wx.navigateBack()
},
/**
* 提交
*/
onSubmit() {
const { formData, personId } = this.data
// 验证姓名
if (!formData.name || formData.name.trim() === '') {
wx.showToast({
title: '请输入姓名',
icon: 'none'
})
return
}
if (personId) {
// 编辑模式
const success = storage.updatePerson(personId, formData)
if (success) {
wx.showToast({
title: '保存成功',
icon: 'success'
})
setTimeout(() => {
wx.navigateBack()
}, 1500)
} else {
wx.showToast({
title: '保存失败',
icon: 'none'
})
}
} else {
// 新增模式
const newPerson = storage.addPerson({
name: formData.name,
nickname: formData.nickname || '',
avatar: formData.avatar || '',
remark: formData.remark || ''
})
if (newPerson) {
wx.showToast({
title: '添加成功',
icon: 'success'
})
setTimeout(() => {
wx.navigateBack()
}, 1500)
} else {
wx.showToast({
title: '添加失败',
icon: 'none'
})
}
}
}
})