chore:我的人脉--添加--可以正常保存
This commit is contained in:
@@ -110,10 +110,13 @@ export default {
|
|||||||
},
|
},
|
||||||
save() {
|
save() {
|
||||||
if (this.saving) return;
|
if (this.saving) return;
|
||||||
if (!this.form.name.trim()) {
|
// 防御式取值: 任何非字符串/undefined 都不会让校验误判或抛错
|
||||||
|
const name = String(this.form.name || '').trim();
|
||||||
|
if (!name) {
|
||||||
uni.showToast({ title: '请填写姓名', icon: 'none' });
|
uni.showToast({ title: '请填写姓名', icon: 'none' });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
this.form.name = name;
|
||||||
this.saving = true;
|
this.saving = true;
|
||||||
|
|
||||||
const data = { id: this.id, fields: {} };
|
const data = { id: this.id, fields: {} };
|
||||||
@@ -125,7 +128,9 @@ export default {
|
|||||||
uni.showToast({ title: '保存成功', icon: 'success' });
|
uni.showToast({ title: '保存成功', icon: 'success' });
|
||||||
setTimeout(() => this.backToList(), 600);
|
setTimeout(() => this.backToList(), 600);
|
||||||
} else {
|
} else {
|
||||||
uni.showToast({ title: res.message || '保存失败', icon: 'none' });
|
// 后端错误文案有时放在 message, 有时放在 data(字符串), 两者都兜住
|
||||||
|
const msg = res.message || (typeof res.data === 'string' ? res.data : '') || '保存失败';
|
||||||
|
uni.showToast({ title: msg, icon: 'none' });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const onFail = () => {
|
const onFail = () => {
|
||||||
@@ -133,11 +138,18 @@ export default {
|
|||||||
uni.showToast({ title: '网络异常,请稍后重试', icon: 'none' });
|
uni.showToast({ title: '网络异常,请稍后重试', icon: 'none' });
|
||||||
};
|
};
|
||||||
|
|
||||||
// add/update 都走 JSON body:fields 为嵌套对象,跨端序列化零歧义
|
// add/update 都走 JSON body,跨端序列化零歧义。
|
||||||
|
// ⚠️ 契约差异(见 docs/CARD_API_REFERENCE.md §1.4.2 / §1.4.4):
|
||||||
|
// contact/add → 入参是「顶层平铺字段」, name 必须在 body 顶层;
|
||||||
|
// contact/update→ 额外兼容 fields 对象。
|
||||||
|
// 历史 bug: 新增时也包成 { fields: {...} }, 后端在顶层读不到 name,
|
||||||
|
// 返回「请填写姓名」→ 表现为"明明填了姓名还提示填写姓名"。
|
||||||
|
// 这里新增按契约平铺, 同时保留一份 fields 兼容旧后端(多余键会被白名单忽略)。
|
||||||
if (this.isEdit) {
|
if (this.isEdit) {
|
||||||
this.$cardApi.contactUpdate({ data: data, success: onOk, fail: onFail });
|
this.$cardApi.contactUpdate({ data: data, success: onOk, fail: onFail });
|
||||||
} else {
|
} else {
|
||||||
this.$cardApi.contactAdd({ data: { fields: data.fields }, success: onOk, fail: onFail });
|
const addPayload = Object.assign({}, data.fields, { fields: data.fields });
|
||||||
|
this.$cardApi.contactAdd({ data: addPayload, success: onOk, fail: onFail });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 鸿蒙安全回列表: $util.redirectTo(禁裸 uni.switchTab/uni.navigateBack 兜底)
|
// 鸿蒙安全回列表: $util.redirectTo(禁裸 uni.switchTab/uni.navigateBack 兜底)
|
||||||
|
|||||||
Reference in New Issue
Block a user