194 lines
7.1 KiB
JavaScript
194 lines
7.1 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../../common/vendor.js");
|
|
if (!Array) {
|
|
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
|
_easycom_uni_icons2();
|
|
}
|
|
const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
|
|
if (!Math) {
|
|
_easycom_uni_icons();
|
|
}
|
|
const _sfc_main = {
|
|
__name: "userinfo",
|
|
setup(__props) {
|
|
const { proxy } = common_vendor.getCurrentInstance();
|
|
const instance = common_vendor.getCurrentInstance();
|
|
const $url = instance.appContext.config.globalProperties.$url;
|
|
const loading = common_vendor.ref(false);
|
|
const submitting = common_vendor.ref(false);
|
|
const formData = common_vendor.ref({
|
|
avatar: "",
|
|
patient_name: "",
|
|
phone: "",
|
|
nickname: "",
|
|
sex: 1,
|
|
age: ""
|
|
});
|
|
common_vendor.onMounted(() => {
|
|
loadUserInfo();
|
|
});
|
|
const loadUserInfo = async () => {
|
|
loading.value = true;
|
|
try {
|
|
const res = await proxy.apiUrl({
|
|
url: "/api/user/info",
|
|
method: "GET",
|
|
data: {}
|
|
});
|
|
if (res.code === 1) {
|
|
const userInfo = res.data;
|
|
formData.value = {
|
|
avatar: userInfo.avatar || "",
|
|
patient_name: userInfo.patient_name || userInfo.nickname || "",
|
|
phone: userInfo.phone || "",
|
|
nickname: userInfo.nickname || "",
|
|
sex: userInfo.sex == "男" ? 1 : 2,
|
|
age: userInfo.age || ""
|
|
};
|
|
} else {
|
|
common_vendor.index.showToast({ title: res.msg || "加载失败", icon: "none" });
|
|
}
|
|
} catch (err) {
|
|
common_vendor.index.__f__("error", "at pages/user/userinfo.vue:142", "加载用户信息失败:", err);
|
|
common_vendor.index.showToast({ title: "加载失败", icon: "none" });
|
|
} finally {
|
|
loading.value = false;
|
|
}
|
|
};
|
|
const uploadAvatar = () => {
|
|
common_vendor.index.chooseImage({
|
|
count: 1,
|
|
sizeType: ["compressed"],
|
|
sourceType: ["album", "camera"],
|
|
success: async (res) => {
|
|
const tempFilePath = res.tempFilePaths[0];
|
|
try {
|
|
common_vendor.index.showLoading({ title: "上传中..." });
|
|
const token = common_vendor.index.getStorageSync("token");
|
|
const uploadRes = await new Promise((resolve, reject) => {
|
|
common_vendor.index.uploadFile({
|
|
url: $url + "/api/upload/image",
|
|
filePath: tempFilePath,
|
|
name: "file",
|
|
header: {
|
|
token,
|
|
"content-type": "multipart/form-data"
|
|
},
|
|
success: (res2) => {
|
|
const data = JSON.parse(res2.data);
|
|
resolve(data);
|
|
},
|
|
fail: (err) => {
|
|
reject(err);
|
|
}
|
|
});
|
|
});
|
|
common_vendor.index.hideLoading();
|
|
if (uploadRes.code === 1) {
|
|
formData.value.avatar = uploadRes.data.uri || uploadRes.data;
|
|
common_vendor.index.showToast({ title: "头像上传成功", icon: "success" });
|
|
} else {
|
|
common_vendor.index.showToast({ title: uploadRes.msg || "上传失败", icon: "none" });
|
|
}
|
|
} catch (err) {
|
|
common_vendor.index.hideLoading();
|
|
common_vendor.index.__f__("error", "at pages/user/userinfo.vue:195", "上传头像失败:", err);
|
|
common_vendor.index.showToast({ title: "上传失败", icon: "none" });
|
|
}
|
|
},
|
|
fail: (err) => {
|
|
common_vendor.index.__f__("error", "at pages/user/userinfo.vue:200", "选择图片失败:", err);
|
|
common_vendor.index.showToast({ title: "选择图片失败", icon: "none" });
|
|
}
|
|
});
|
|
};
|
|
const validatePhone = (phone) => {
|
|
if (!phone)
|
|
return true;
|
|
return /^1[3-9]\d{9}$/.test(phone);
|
|
};
|
|
const submitForm = async () => {
|
|
if (!formData.value.patient_name) {
|
|
common_vendor.index.showToast({ title: "姓名不能为空", icon: "none" });
|
|
return;
|
|
}
|
|
if (formData.value.phone && !validatePhone(formData.value.phone)) {
|
|
common_vendor.index.showToast({ title: "手机号格式不正确", icon: "none" });
|
|
return;
|
|
}
|
|
submitting.value = true;
|
|
try {
|
|
const res = await proxy.apiUrl({
|
|
url: "/api/user/setInfo",
|
|
method: "POST",
|
|
data: {
|
|
avatar: formData.value.avatar,
|
|
phone: formData.value.phone,
|
|
nickname: formData.value.nickname,
|
|
sex: formData.value.sex,
|
|
age: formData.value.age,
|
|
patient_name: formData.value.patient_name
|
|
}
|
|
});
|
|
if (res.code === 1) {
|
|
const userData = common_vendor.index.getStorageSync("userData");
|
|
const updatedData = {
|
|
...userData,
|
|
avatar: formData.value.avatar,
|
|
phone: formData.value.phone,
|
|
nickname: formData.value.nickname,
|
|
sex: formData.value.sex,
|
|
age: formData.value.age,
|
|
patient_name: formData.value.patient_name,
|
|
diagnosis: {
|
|
...userData.diagnosis,
|
|
patient_name: formData.value.patient_name
|
|
}
|
|
};
|
|
common_vendor.index.setStorageSync("userData", updatedData);
|
|
common_vendor.index.showToast({ title: "保存成功", icon: "success" });
|
|
setTimeout(() => {
|
|
common_vendor.index.navigateBack();
|
|
}, 1500);
|
|
} else {
|
|
common_vendor.index.showToast({ title: res.msg || "保存失败", icon: "none" });
|
|
}
|
|
} catch (err) {
|
|
common_vendor.index.__f__("error", "at pages/user/userinfo.vue:269", "保存失败:", err);
|
|
common_vendor.index.showToast({ title: "保存失败", icon: "none" });
|
|
} finally {
|
|
submitting.value = false;
|
|
}
|
|
};
|
|
return (_ctx, _cache) => {
|
|
return common_vendor.e({
|
|
a: loading.value
|
|
}, loading.value ? {} : {
|
|
b: formData.value.avatar,
|
|
c: common_vendor.p({
|
|
type: "upload-filled",
|
|
size: "24",
|
|
color: "#FFA500"
|
|
}),
|
|
d: common_vendor.o(uploadAvatar, "bf"),
|
|
e: formData.value.nickname,
|
|
f: common_vendor.o(($event) => formData.value.nickname = $event.detail.value, "6d"),
|
|
g: formData.value.sex === 1 ? 1 : "",
|
|
h: common_vendor.o(($event) => formData.value.sex = 1, "e9"),
|
|
i: formData.value.sex === 2 ? 1 : "",
|
|
j: common_vendor.o(($event) => formData.value.sex = 2, "53"),
|
|
k: formData.value.age,
|
|
l: common_vendor.o(common_vendor.m(($event) => formData.value.age = $event.detail.value, {
|
|
number: true
|
|
}), "cf"),
|
|
m: common_vendor.t(submitting.value ? "保存中..." : "保存修改"),
|
|
n: common_vendor.o(submitForm, "84"),
|
|
o: submitting.value
|
|
});
|
|
};
|
|
}
|
|
};
|
|
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-103261b1"]]);
|
|
wx.createPage(MiniProgramPage);
|
|
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/user/userinfo.js.map
|