754 lines
34 KiB
JavaScript
754 lines
34 KiB
JavaScript
import { U as ElRow, V as ElCol, T as ElCard, a0 as ElAlert, a1 as ElUpload, h as ElButton, a2 as camera_default, r as ElText, s as ElDivider, a3 as ElDescriptions, a4 as ElDescriptionsItem, i as ElIcon, a5 as ElTabs, a6 as ElTabPane, w as ElForm, x as ElFormItem, y as ElInput, P as ElRadioGroup, E as ElMessage, a as ElNotification, C as ElAvatar, Q as ElRadio } from "./element-plus.CkEW9frc.js";
|
|
import { f as useUserStore, j as useDictStore, U as UserAPI, k as useUserStoreHook, r as router } from "./index.CMd5bD1r.js";
|
|
import { J as defineComponent, e9 as useI18n, t as onMounted, _ as createElementBlock, $ as createVNode, a0 as withCtx, ak as reactive, S as openBlock, o as unref, a1 as createBaseVNode, T as createBlock, z as isRef, aa as toDisplayString, a9 as createTextVNode, a2 as normalizeStyle, H as Fragment, ay as renderList, r as ref, j as computed, n as nextTick, aO as resolveComponent } from "./.pnpm.BW3P1y8f.js";
|
|
import { _ as _export_sfc } from "./_plugin-vue_export-helper.1tPrXgE0.js";
|
|
import "./codemirror.CvJAcn2d.js";
|
|
const _hoisted_1 = { class: "app-container" };
|
|
const _hoisted_2 = { class: "user-info-header" };
|
|
const _hoisted_3 = { class: "avatar-alert mb-10px" };
|
|
const _hoisted_4 = { class: "avatar-wrapper" };
|
|
const _hoisted_5 = { class: "user-name" };
|
|
const _hoisted_6 = { class: "cell-item" };
|
|
const _hoisted_7 = { class: "cell-item" };
|
|
const _hoisted_8 = { class: "cell-item" };
|
|
const _hoisted_9 = { class: "cell-item" };
|
|
const _hoisted_10 = { class: "cell-item" };
|
|
const _hoisted_11 = { class: "cell-item" };
|
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
__name: "profile",
|
|
setup(__props) {
|
|
const { t } = useI18n();
|
|
const userStore = useUserStore();
|
|
const dictStore = useDictStore();
|
|
const infoFormRef = ref();
|
|
const passwordFormRef = ref();
|
|
const loading = ref(false);
|
|
const dictDataStore = computed(() => dictStore.dictData);
|
|
const size = ref("default");
|
|
const iconStyle = computed(() => {
|
|
const marginMap = {
|
|
large: "8px",
|
|
default: "6px",
|
|
small: "4px"
|
|
};
|
|
return {
|
|
marginRight: marginMap[size.value || "default"]
|
|
};
|
|
});
|
|
const getOptions = async () => {
|
|
return await dictStore.getDict(["sys_user_sex"]);
|
|
};
|
|
const passwordChanging = ref(false);
|
|
const infoSubmitting = ref(false);
|
|
const infoFormState = reactive({
|
|
name: void 0,
|
|
gender: 1,
|
|
mobile: void 0,
|
|
email: void 0,
|
|
username: void 0,
|
|
dept_name: void 0,
|
|
dept: {},
|
|
positions: [],
|
|
roles: [],
|
|
avatar: void 0,
|
|
created_time: void 0
|
|
});
|
|
const passwordFormState = reactive({
|
|
old_password: "",
|
|
new_password: "",
|
|
confirm_password: ""
|
|
});
|
|
const fileList = ref([]);
|
|
const uploadRef = ref();
|
|
const handleBeforeUpload = (file) => {
|
|
const isImage = file.type.startsWith("image/");
|
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
|
if (!isImage) {
|
|
ElMessage.error("只能上传图片文件");
|
|
return false;
|
|
}
|
|
if (!isLt2M) {
|
|
ElMessage.error("上传图片大小不能超过 2MB!");
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
const handleUpload = async (options) => {
|
|
try {
|
|
const file = options.file;
|
|
const formData = new FormData();
|
|
formData.append("file", file);
|
|
const response = await UserAPI.uploadCurrentUserAvatar(formData);
|
|
if (response.data.code === 0 && response.data.data) {
|
|
const fileUrl = response.data.data.file_url;
|
|
updateAvatar(fileUrl);
|
|
options.onSuccess(response);
|
|
if (uploadRef.value) {
|
|
uploadRef.value.clearFiles();
|
|
}
|
|
fileList.value = [];
|
|
} else {
|
|
const errorMsg = response.data.msg || "上传失败";
|
|
ElMessage.error(errorMsg);
|
|
options.onError({
|
|
...new Error(errorMsg),
|
|
status: response.status || 500,
|
|
method: "POST",
|
|
url: "/system/user/current/avatar/upload"
|
|
});
|
|
}
|
|
} catch (error) {
|
|
ElMessage.error("头像上传失败,请重试");
|
|
const errorObj = error instanceof Error ? error : new Error(String(error));
|
|
options.onError({
|
|
...errorObj,
|
|
status: 500,
|
|
method: "POST",
|
|
url: "/system/user/current/avatar/upload"
|
|
});
|
|
console.error("Upload error:", error);
|
|
}
|
|
};
|
|
const handleFileChange = (file, files) => {
|
|
if (file) {
|
|
fileList.value = [...files];
|
|
if (uploadRef.value) {
|
|
uploadRef.value.submit();
|
|
}
|
|
}
|
|
};
|
|
const updateAvatar = (fileUrl) => {
|
|
if (fileUrl) {
|
|
infoFormState.avatar = fileUrl;
|
|
nextTick(() => {
|
|
console.log("头像已更新:", infoFormState.avatar);
|
|
});
|
|
} else {
|
|
ElMessage.error("无效的头像URL");
|
|
console.error("Invalid fileUrl:", fileUrl);
|
|
}
|
|
};
|
|
const rules = {
|
|
name: [{ required: true, message: "请输入用户名", trigger: "blur" }],
|
|
mobile: [
|
|
{
|
|
pattern: /^1[3-9]\d{9}$/,
|
|
message: "请输入有效的手机号格式",
|
|
trigger: "blur"
|
|
}
|
|
],
|
|
email: [
|
|
{
|
|
pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/,
|
|
message: "请输入有效的邮箱格式",
|
|
trigger: "blur"
|
|
}
|
|
]
|
|
};
|
|
const resetPasswordRules = {
|
|
old_password: [
|
|
{
|
|
required: true,
|
|
trigger: "blur",
|
|
message: t("login.password")
|
|
}
|
|
],
|
|
new_password: [
|
|
{
|
|
required: true,
|
|
trigger: "blur",
|
|
message: t("login.message.password.required")
|
|
},
|
|
{
|
|
min: 6,
|
|
message: t("login.message.password.min"),
|
|
trigger: "blur"
|
|
}
|
|
],
|
|
confirm_password: [
|
|
{
|
|
required: true,
|
|
trigger: "blur",
|
|
message: t("login.message.password.required")
|
|
},
|
|
{
|
|
min: 6,
|
|
message: t("login.message.password.min"),
|
|
trigger: "blur"
|
|
},
|
|
{
|
|
validator: (_, value) => {
|
|
return value === passwordFormState.new_password;
|
|
},
|
|
trigger: "blur",
|
|
message: t("login.message.password.inconformity")
|
|
}
|
|
]
|
|
};
|
|
const initInfoForm = () => {
|
|
const basicInfo = userStore.basicInfo;
|
|
Object.assign(infoFormState, { ...basicInfo });
|
|
};
|
|
const initPasswordForm = () => {
|
|
Object.assign(passwordFormState, {
|
|
old_password: "",
|
|
new_password: "",
|
|
confirm_password: ""
|
|
});
|
|
};
|
|
const handleSave = async () => {
|
|
var _a;
|
|
try {
|
|
infoSubmitting.value = true;
|
|
const valid = await ((_a = infoFormRef.value) == null ? void 0 : _a.validate().catch(() => false));
|
|
if (!valid) {
|
|
return;
|
|
}
|
|
const response = await UserAPI.updateCurrentUserInfo({ ...infoFormState });
|
|
await userStore.setUserInfo(response.data.data);
|
|
ElMessage.success("个人资料已保存");
|
|
} finally {
|
|
infoSubmitting.value = false;
|
|
}
|
|
};
|
|
const handlePasswordChange = async () => {
|
|
var _a;
|
|
try {
|
|
passwordChanging.value = true;
|
|
const valid = await ((_a = passwordFormRef.value) == null ? void 0 : _a.validate().catch(() => false));
|
|
if (!valid) {
|
|
return;
|
|
}
|
|
const response = await UserAPI.changeCurrentUserPassword(passwordFormState);
|
|
initPasswordForm();
|
|
await redirectToLogin(response.data.msg);
|
|
} catch (error) {
|
|
console.error(error);
|
|
} finally {
|
|
passwordChanging.value = false;
|
|
}
|
|
};
|
|
async function redirectToLogin(message = "请重新登录") {
|
|
try {
|
|
ElNotification({
|
|
title: "提示",
|
|
message,
|
|
type: "warning",
|
|
duration: 3e3
|
|
});
|
|
await useUserStoreHook().resetAllState();
|
|
const currentPath = router.currentRoute.value.fullPath;
|
|
await router.push(`/login?redirect=${encodeURIComponent(currentPath)}`);
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
}
|
|
onMounted(async () => {
|
|
await getOptions();
|
|
initInfoForm();
|
|
});
|
|
return (_ctx, _cache) => {
|
|
const _component_el_alert = ElAlert;
|
|
const _component_el_avatar = ElAvatar;
|
|
const _component_el_button = ElButton;
|
|
const _component_el_upload = ElUpload;
|
|
const _component_el_text = ElText;
|
|
const _component_el_divider = ElDivider;
|
|
const _component_User = resolveComponent("User");
|
|
const _component_el_icon = ElIcon;
|
|
const _component_el_descriptions_item = ElDescriptionsItem;
|
|
const _component_Coordinate = resolveComponent("Coordinate");
|
|
const _component_OfficeBuilding = resolveComponent("OfficeBuilding");
|
|
const _component_Phone = resolveComponent("Phone");
|
|
const _component_Message = resolveComponent("Message");
|
|
const _component_Clock = resolveComponent("Clock");
|
|
const _component_el_descriptions = ElDescriptions;
|
|
const _component_el_card = ElCard;
|
|
const _component_el_col = ElCol;
|
|
const _component_el_input = ElInput;
|
|
const _component_el_form_item = ElFormItem;
|
|
const _component_el_radio = ElRadio;
|
|
const _component_el_radio_group = ElRadioGroup;
|
|
const _component_el_form = ElForm;
|
|
const _component_el_tab_pane = ElTabPane;
|
|
const _component_Lock = resolveComponent("Lock");
|
|
const _component_Key = resolveComponent("Key");
|
|
const _component_Check = resolveComponent("Check");
|
|
const _component_el_tabs = ElTabs;
|
|
const _component_el_row = ElRow;
|
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
createVNode(_component_el_row, { gutter: 12 }, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_col, {
|
|
span: 6,
|
|
class: "mb-4"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_card, {
|
|
loading: unref(loading),
|
|
shadow: "hover"
|
|
}, {
|
|
header: withCtx(() => [..._cache[8] || (_cache[8] = [
|
|
createBaseVNode("div", { class: "card-header" }, [
|
|
createBaseVNode("span", null, "基本信息")
|
|
], -1)
|
|
])]),
|
|
default: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_2, [
|
|
createBaseVNode("div", _hoisted_3, [
|
|
createVNode(_component_el_alert, {
|
|
type: "info",
|
|
"show-icon": "",
|
|
closable: false,
|
|
title: "头像上传,点击“保存更改”按钮使其生效"
|
|
})
|
|
]),
|
|
createBaseVNode("div", _hoisted_4, [
|
|
unref(infoFormState).avatar ? (openBlock(), createBlock(_component_el_avatar, {
|
|
key: 0,
|
|
src: unref(infoFormState).avatar,
|
|
size: 120
|
|
}, null, 8, ["src"])) : (openBlock(), createBlock(_component_el_avatar, {
|
|
key: 1,
|
|
icon: "UserFilled",
|
|
size: 120
|
|
})),
|
|
createVNode(_component_el_upload, {
|
|
ref_key: "uploadRef",
|
|
ref: uploadRef,
|
|
"file-list": unref(fileList),
|
|
"onUpdate:fileList": _cache[0] || (_cache[0] = ($event) => isRef(fileList) ? fileList.value = $event : null),
|
|
class: "el-upload",
|
|
name: "file",
|
|
"show-file-list": false,
|
|
"before-upload": handleBeforeUpload,
|
|
"http-request": handleUpload,
|
|
disabled: unref(loading),
|
|
limit: 1,
|
|
"auto-upload": false,
|
|
onChange: handleFileChange
|
|
}, {
|
|
trigger: withCtx(() => [
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
icon: unref(camera_default),
|
|
class: "upload-trigger"
|
|
}, null, 8, ["icon"])
|
|
]),
|
|
_: 1
|
|
}, 8, ["file-list", "disabled"])
|
|
]),
|
|
createBaseVNode("span", _hoisted_5, toDisplayString(unref(infoFormState).name), 1),
|
|
createVNode(_component_el_text, null, {
|
|
default: withCtx(() => {
|
|
var _a;
|
|
return [
|
|
createTextVNode(toDisplayString((_a = unref(infoFormState).roles) == null ? void 0 : _a.map((item) => item.name).join("、")), 1)
|
|
];
|
|
}),
|
|
_: 1
|
|
})
|
|
]),
|
|
createVNode(_component_el_divider),
|
|
createVNode(_component_el_descriptions, {
|
|
column: 1,
|
|
border: ""
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_descriptions_item, null, {
|
|
label: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_6, [
|
|
createVNode(_component_el_icon, {
|
|
style: normalizeStyle(unref(iconStyle))
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_User)
|
|
]),
|
|
_: 1
|
|
}, 8, ["style"]),
|
|
_cache[9] || (_cache[9] = createBaseVNode("span", null, "账号", -1))
|
|
])
|
|
]),
|
|
default: withCtx(() => [
|
|
createBaseVNode("span", null, toDisplayString(unref(infoFormState).username), 1)
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_descriptions_item, null, {
|
|
label: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_7, [
|
|
createVNode(_component_el_icon, {
|
|
style: normalizeStyle(unref(iconStyle))
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_Coordinate)
|
|
]),
|
|
_: 1
|
|
}, 8, ["style"]),
|
|
_cache[10] || (_cache[10] = createBaseVNode("span", null, "部门", -1))
|
|
])
|
|
]),
|
|
default: withCtx(() => {
|
|
var _a;
|
|
return [
|
|
createBaseVNode("span", null, toDisplayString((_a = unref(infoFormState).dept) == null ? void 0 : _a.name), 1)
|
|
];
|
|
}),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_descriptions_item, null, {
|
|
label: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_8, [
|
|
createVNode(_component_el_icon, {
|
|
style: normalizeStyle(unref(iconStyle))
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_OfficeBuilding)
|
|
]),
|
|
_: 1
|
|
}, 8, ["style"]),
|
|
_cache[11] || (_cache[11] = createBaseVNode("span", null, "岗位", -1))
|
|
])
|
|
]),
|
|
default: withCtx(() => {
|
|
var _a;
|
|
return [
|
|
createBaseVNode("span", null, toDisplayString((_a = unref(infoFormState).positions) == null ? void 0 : _a.map((item) => item.name).join("、")), 1)
|
|
];
|
|
}),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_descriptions_item, null, {
|
|
label: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_9, [
|
|
createVNode(_component_el_icon, {
|
|
style: normalizeStyle(unref(iconStyle))
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_Phone)
|
|
]),
|
|
_: 1
|
|
}, 8, ["style"]),
|
|
_cache[12] || (_cache[12] = createBaseVNode("span", null, "手机", -1))
|
|
])
|
|
]),
|
|
default: withCtx(() => [
|
|
createBaseVNode("span", null, toDisplayString(unref(infoFormState).mobile), 1)
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_descriptions_item, null, {
|
|
label: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_10, [
|
|
createVNode(_component_el_icon, {
|
|
style: normalizeStyle(unref(iconStyle))
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_Message)
|
|
]),
|
|
_: 1
|
|
}, 8, ["style"]),
|
|
_cache[13] || (_cache[13] = createBaseVNode("span", null, "邮箱", -1))
|
|
])
|
|
]),
|
|
default: withCtx(() => [
|
|
createBaseVNode("span", null, toDisplayString(unref(infoFormState).email), 1)
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_descriptions_item, null, {
|
|
label: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_11, [
|
|
createVNode(_component_el_icon, {
|
|
style: normalizeStyle(unref(iconStyle))
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_Clock)
|
|
]),
|
|
_: 1
|
|
}, 8, ["style"]),
|
|
_cache[14] || (_cache[14] = createBaseVNode("span", null, "加入时间", -1))
|
|
])
|
|
]),
|
|
default: withCtx(() => [
|
|
createBaseVNode("span", null, toDisplayString(unref(infoFormState).created_time), 1)
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["loading"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_col, {
|
|
span: 18,
|
|
class: "mb-4"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_card, {
|
|
loading: unref(loading),
|
|
shadow: "hover"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_tabs, { type: "border-card" }, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_tab_pane, null, {
|
|
label: withCtx(() => [
|
|
createVNode(_component_el_icon, null, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_User)
|
|
]),
|
|
_: 1
|
|
}),
|
|
_cache[15] || (_cache[15] = createBaseVNode("span", null, "基本设置", -1))
|
|
]),
|
|
default: withCtx(() => [
|
|
createBaseVNode("div", null, [
|
|
createVNode(_component_el_form, {
|
|
ref_key: "infoFormRef",
|
|
ref: infoFormRef,
|
|
model: unref(infoFormState),
|
|
rules,
|
|
"label-width": "80px",
|
|
"label-suffix": ":"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_form_item, {
|
|
label: "用户名",
|
|
prop: "name"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: unref(infoFormState).name,
|
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => unref(infoFormState).name = $event),
|
|
placeholder: "请输入用户名",
|
|
"prefix-icon": "User",
|
|
clearable: "",
|
|
style: { "width": "240px" }
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "手机号",
|
|
prop: "mobile"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: unref(infoFormState).mobile,
|
|
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => unref(infoFormState).mobile = $event),
|
|
placeholder: "请输入手机号码",
|
|
"prefix-icon": "Phone",
|
|
clearable: "",
|
|
style: { "width": "240px" }
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "邮箱",
|
|
prop: "email"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: unref(infoFormState).email,
|
|
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => unref(infoFormState).email = $event),
|
|
placeholder: "请输入邮箱",
|
|
"prefix-icon": "Message",
|
|
clearable: "",
|
|
style: { "width": "240px" }
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "性别",
|
|
prop: "gender"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_radio_group, {
|
|
modelValue: unref(infoFormState).gender,
|
|
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => unref(infoFormState).gender = $event)
|
|
}, {
|
|
default: withCtx(() => [
|
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(dictDataStore)["sys_user_sex"], (item) => {
|
|
return openBlock(), createBlock(_component_el_radio, {
|
|
key: item.dict_value,
|
|
value: item.dict_value
|
|
}, {
|
|
default: withCtx(() => [
|
|
createTextVNode(toDisplayString(item.dict_label), 1)
|
|
]),
|
|
_: 2
|
|
}, 1032, ["value"]);
|
|
}), 128))
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, null, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
loading: unref(infoSubmitting),
|
|
icon: "edit",
|
|
onClick: handleSave
|
|
}, {
|
|
default: withCtx(() => [..._cache[16] || (_cache[16] = [
|
|
createTextVNode(" 保存更改 ", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["loading"])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["model"])
|
|
])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_tab_pane, null, {
|
|
label: withCtx(() => [
|
|
createVNode(_component_el_icon, null, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_Lock)
|
|
]),
|
|
_: 1
|
|
}),
|
|
_cache[17] || (_cache[17] = createBaseVNode("span", null, "安全设置", -1))
|
|
]),
|
|
default: withCtx(() => [
|
|
createBaseVNode("div", null, [
|
|
createVNode(_component_el_form, {
|
|
ref_key: "passwordFormRef",
|
|
ref: passwordFormRef,
|
|
model: unref(passwordFormState),
|
|
rules: resetPasswordRules,
|
|
"label-width": "120px",
|
|
"label-suffix": ":"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_form_item, {
|
|
label: "当前密码",
|
|
prop: "old_password"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: unref(passwordFormState).old_password,
|
|
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => unref(passwordFormState).old_password = $event),
|
|
modelModifiers: { trim: true },
|
|
placeholder: unref(t)("login.password"),
|
|
type: "password",
|
|
"prefix-icon": "Unlock",
|
|
"show-password": "",
|
|
clearable: "",
|
|
style: { "width": "240px" }
|
|
}, {
|
|
prefix: withCtx(() => [
|
|
createVNode(_component_Lock)
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue", "placeholder"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "新密码",
|
|
prop: "new_password"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: unref(passwordFormState).new_password,
|
|
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => unref(passwordFormState).new_password = $event),
|
|
modelModifiers: { trim: true },
|
|
type: "password",
|
|
placeholder: unref(t)("login.newPassword"),
|
|
"prefix-icon": "Unlock",
|
|
"show-password": "",
|
|
clearable: "",
|
|
style: { "width": "240px" }
|
|
}, {
|
|
prefix: withCtx(() => [
|
|
createVNode(_component_Key)
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue", "placeholder"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "确认新密码",
|
|
prop: "confirm_password"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: unref(passwordFormState).confirm_password,
|
|
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => unref(passwordFormState).confirm_password = $event),
|
|
modelModifiers: { trim: true },
|
|
type: "password",
|
|
placeholder: unref(t)("login.message.password.confirm"),
|
|
"prefix-icon": "Lock",
|
|
"show-password": "",
|
|
clearable: "",
|
|
style: { "width": "240px" }
|
|
}, {
|
|
prefix: withCtx(() => [
|
|
createVNode(_component_Check)
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue", "placeholder"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, null, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
loading: unref(passwordChanging),
|
|
icon: "edit",
|
|
onClick: handlePasswordChange
|
|
}, {
|
|
default: withCtx(() => [..._cache[18] || (_cache[18] = [
|
|
createTextVNode(" 更新密码 ", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["loading"])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["model"])
|
|
])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["loading"])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
})
|
|
]);
|
|
};
|
|
}
|
|
});
|
|
const profile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-05cb52ed"]]);
|
|
export {
|
|
profile as default
|
|
};
|