2
This commit is contained in:
196
frontend/unpackage/dist/dev/mp-weixin/pages/my/security.js
vendored
Normal file
196
frontend/unpackage/dist/dev/mp-weixin/pages/my/security.js
vendored
Normal file
@@ -0,0 +1,196 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const common_http = require("../../common/http.js");
|
||||
const common_config = require("../../common/config.js");
|
||||
const _sfc_main = {
|
||||
data() {
|
||||
return {
|
||||
form: { name: "", avatarUrl: "" },
|
||||
pwd: { oldPassword: "", newPassword: "" },
|
||||
phone: { phone: "" },
|
||||
savingProfile: false,
|
||||
savingPwd: false,
|
||||
savingPhone: false,
|
||||
sendingCode: false,
|
||||
originalAvatarUrl: ""
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
this.loadProfile();
|
||||
},
|
||||
computed: {
|
||||
avatarPreview() {
|
||||
return this.normalizeAvatar(this.form.avatarUrl);
|
||||
},
|
||||
canSendPhone() {
|
||||
const p = String(this.phone.phone || "").trim();
|
||||
return /^1\d{10}$/.test(p);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async loadProfile() {
|
||||
try {
|
||||
const data = await common_http.get("/api/user/me");
|
||||
const rawAvatar = (data == null ? void 0 : data.avatarUrl) || (common_vendor.index.getStorageSync("USER_AVATAR_RAW") || "");
|
||||
this.originalAvatarUrl = rawAvatar;
|
||||
this.form.name = (data == null ? void 0 : data.name) || (common_vendor.index.getStorageSync("USER_NAME") || "");
|
||||
this.form.avatarUrl = rawAvatar;
|
||||
} catch (e) {
|
||||
}
|
||||
},
|
||||
normalizeAvatar(url) {
|
||||
if (!url)
|
||||
return "/static/icons/icons8-mitt-24.png";
|
||||
const s = String(url);
|
||||
if (/^https?:\/\//i.test(s))
|
||||
return s;
|
||||
const base = common_config.API_BASE_URL || "";
|
||||
if (!base)
|
||||
return s;
|
||||
if (s.startsWith("/"))
|
||||
return `${base}${s}`;
|
||||
return `${base}/${s}`;
|
||||
},
|
||||
openAvatarDialog() {
|
||||
common_vendor.index.showActionSheet({
|
||||
itemList: ["粘贴图片URL", "从相册选择并上传"],
|
||||
success: (res) => {
|
||||
if (res.tapIndex === 0) {
|
||||
common_vendor.index.showModal({
|
||||
title: "头像URL",
|
||||
editable: true,
|
||||
placeholderText: "https://...",
|
||||
success: async (m) => {
|
||||
if (m.confirm && m.content) {
|
||||
this.form.avatarUrl = m.content.trim();
|
||||
await this.saveProfile({ auto: true });
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (res.tapIndex === 1) {
|
||||
common_vendor.index.chooseImage({ count: 1, sizeType: ["compressed"], success: (ci) => {
|
||||
const filePath = ci.tempFilePaths && ci.tempFilePaths[0] || "";
|
||||
if (!filePath)
|
||||
return;
|
||||
common_vendor.index.showLoading({ title: "上传中..." });
|
||||
common_http.upload("/api/attachments", filePath, { ownerType: "user_avatar", ownerId: 0 }).then(async (data) => {
|
||||
const url = data && (data.url || data.path);
|
||||
if (url) {
|
||||
this.form.avatarUrl = url;
|
||||
await this.saveProfile({ auto: true });
|
||||
}
|
||||
common_vendor.index.showToast({ title: "已上传", icon: "success" });
|
||||
}).catch((e) => {
|
||||
common_vendor.index.showToast({ title: e && e.message || "上传失败", icon: "none" });
|
||||
}).finally(() => {
|
||||
common_vendor.index.hideLoading();
|
||||
});
|
||||
} });
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
async saveProfile(opts = {}) {
|
||||
const auto = opts && opts.auto;
|
||||
const payload = {};
|
||||
if (this.form.name && this.form.name !== common_vendor.index.getStorageSync("USER_NAME"))
|
||||
payload.name = this.form.name;
|
||||
if (this.form.avatarUrl && this.form.avatarUrl !== this.originalAvatarUrl)
|
||||
payload.avatarUrl = this.form.avatarUrl;
|
||||
if (Object.keys(payload).length === 0) {
|
||||
if (!auto)
|
||||
common_vendor.index.showToast({ title: "无需修改", icon: "none" });
|
||||
return;
|
||||
}
|
||||
if (this.savingProfile)
|
||||
return;
|
||||
this.savingProfile = true;
|
||||
try {
|
||||
await common_http.put("/api/user/me", payload);
|
||||
try {
|
||||
if (payload.name)
|
||||
common_vendor.index.setStorageSync("USER_NAME", payload.name);
|
||||
if (payload.avatarUrl) {
|
||||
const rawUrl = payload.avatarUrl;
|
||||
const displayUrl = `${rawUrl}${rawUrl.includes("?") ? "&" : "?"}t=${Date.now()}`;
|
||||
common_vendor.index.setStorageSync("USER_AVATAR_RAW", rawUrl);
|
||||
common_vendor.index.setStorageSync("USER_AVATAR", rawUrl);
|
||||
this.originalAvatarUrl = rawUrl;
|
||||
this.form.avatarUrl = rawUrl;
|
||||
}
|
||||
} catch (_) {
|
||||
}
|
||||
if (!payload.avatarUrl && this.form.avatarUrl) {
|
||||
common_vendor.index.setStorageSync("USER_AVATAR_RAW", this.form.avatarUrl);
|
||||
common_vendor.index.setStorageSync("USER_AVATAR", this.form.avatarUrl);
|
||||
}
|
||||
common_vendor.index.showToast({ title: auto ? "头像已更新" : "已保存", icon: "success" });
|
||||
} catch (e) {
|
||||
const msg = e && e.message || "保存失败";
|
||||
common_vendor.index.showToast({ title: msg, icon: "none" });
|
||||
} finally {
|
||||
this.savingProfile = false;
|
||||
}
|
||||
},
|
||||
async changePassword() {
|
||||
if (!this.pwd.newPassword || this.pwd.newPassword.length < 6)
|
||||
return common_vendor.index.showToast({ title: "新密码至少6位", icon: "none" });
|
||||
this.savingPwd = true;
|
||||
try {
|
||||
await common_http.put("/api/user/me/password", { oldPassword: this.pwd.oldPassword || void 0, newPassword: this.pwd.newPassword });
|
||||
this.pwd.oldPassword = "";
|
||||
this.pwd.newPassword = "";
|
||||
common_vendor.index.showToast({ title: "密码已修改", icon: "success" });
|
||||
} catch (e) {
|
||||
common_vendor.index.showToast({ title: e && e.message || "修改失败", icon: "none" });
|
||||
} finally {
|
||||
this.savingPwd = false;
|
||||
}
|
||||
},
|
||||
async changePhoneDirect() {
|
||||
if (!this.canSendPhone)
|
||||
return common_vendor.index.showToast({ title: "请输入正确手机号", icon: "none" });
|
||||
this.savingPhone = true;
|
||||
try {
|
||||
await common_http.put("/api/user/me/phone", { phone: this.phone.phone });
|
||||
common_vendor.index.setStorageSync("USER_MOBILE", this.phone.phone);
|
||||
common_vendor.index.showToast({ title: "手机号已保存", icon: "success" });
|
||||
} catch (e) {
|
||||
common_vendor.index.showToast({ title: e && e.message || "保存失败", icon: "none" });
|
||||
} finally {
|
||||
this.savingPhone = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return {
|
||||
a: $options.avatarPreview,
|
||||
b: common_vendor.o((...args) => $options.openAvatarDialog && $options.openAvatarDialog(...args)),
|
||||
c: $data.form.name,
|
||||
d: common_vendor.o(common_vendor.m(($event) => $data.form.name = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
e: $data.savingProfile,
|
||||
f: common_vendor.o((...args) => $options.saveProfile && $options.saveProfile(...args)),
|
||||
g: $data.pwd.oldPassword,
|
||||
h: common_vendor.o(common_vendor.m(($event) => $data.pwd.oldPassword = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
i: $data.pwd.newPassword,
|
||||
j: common_vendor.o(common_vendor.m(($event) => $data.pwd.newPassword = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
k: $data.savingPwd,
|
||||
l: common_vendor.o((...args) => $options.changePassword && $options.changePassword(...args)),
|
||||
m: $data.phone.phone,
|
||||
n: common_vendor.o(common_vendor.m(($event) => $data.phone.phone = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
o: $data.savingPhone,
|
||||
p: common_vendor.o((...args) => $options.changePhoneDirect && $options.changePhoneDirect(...args))
|
||||
};
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
wx.createPage(MiniProgramPage);
|
||||
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/my/security.js.map
|
||||
Reference in New Issue
Block a user