diff --git a/src/api/account/notificationRecord.ts b/src/api/account/notificationRecord.ts index 18217d85..58cb612f 100644 --- a/src/api/account/notificationRecord.ts +++ b/src/api/account/notificationRecord.ts @@ -1,7 +1,7 @@ import server from '@/utils/request' // 获取记录列表 -export const getList_api = (data:object): any =>server.get(`/notifications/_query`,encodeParams(data)) +export const getList_api = (data:object): any =>server.post(`/notifications/_query`,data) // 修改记录状态 export const changeStatus_api = (type:'_read'|'_unread',data:string[]): any =>server.post(`/notifications/${type}`,data) diff --git a/src/components/AIcon/index.tsx b/src/components/AIcon/index.tsx index e480afc3..390fe993 100644 --- a/src/components/AIcon/index.tsx +++ b/src/components/AIcon/index.tsx @@ -77,6 +77,7 @@ const iconKeys = [ 'CloudDownloadOutlined', 'PauseCircleOutlined',, 'FormOutlined', + 'EyeInvisibleOutlined', ] const Icon = (props: {type: string}) => { diff --git a/src/components/Layout/components/Notice.vue b/src/components/Layout/components/Notice.vue index 07423bc1..58bba839 100644 --- a/src/components/Layout/components/Notice.vue +++ b/src/components/Layout/components/Notice.vue @@ -26,7 +26,7 @@ import { notification } from 'ant-design-vue'; import { changeStatus_api } from '@/api/account/notificationRecord'; import { useUserInfo } from '@/store/userInfo'; -const updateCount = computed(()=>useUserInfo().$state.alarmUpdateCount); +const updateCount = computed(() => useUserInfo().$state.alarmUpdateCount); const total = ref(0); const list = ref([]); @@ -50,10 +50,20 @@ const subscribeNotice = () => { const getList = () => { loading.value = true; const params = { - 'terms[0].column': 'state', - 'terms[0].value': 'unread', 'sorts[0].name': 'notifyTime', 'sorts[0].order': 'desc', + terms: [ + { + terms: [ + { + type: 'or', + value: 'unread', + termType: 'eq', + column: 'state', + }, + ], + }, + ], }; getList_api(params) .then((resp: any) => { diff --git a/src/views/account/Center/components/EditInfoDialog.vue b/src/views/account/Center/components/EditInfoDialog.vue index fbbbd69d..dc39e839 100644 --- a/src/views/account/Center/components/EditInfoDialog.vue +++ b/src/views/account/Center/components/EditInfoDialog.vue @@ -5,6 +5,7 @@ @ok="handleOk" width="770px" @cancel="emits('update:visible', false)" + :confirmLoading="loading" > @@ -12,7 +13,10 @@ - + - + (); +const loading = ref(false) const form = ref(props.data); const formRef = ref(); const handleOk = () => { formRef.value?.validate().then(() => { + loading.value = true updateMeInfo_api(form.value).then((resp) => { if (resp.status === 200) { message.success('保存成功'); emits('ok'); emits('update:visible', false); } - }); + }).finally(()=>loading.value = false) }); }; diff --git a/src/views/account/Center/components/EditPasswordDialog.vue b/src/views/account/Center/components/EditPasswordDialog.vue index 768d3521..566f2bf0 100644 --- a/src/views/account/Center/components/EditPasswordDialog.vue +++ b/src/views/account/Center/components/EditPasswordDialog.vue @@ -4,6 +4,7 @@ title="重置密码" @ok="handleOk" width="520px" + :confirmLoading="loading" @cancel="emits('update:visible', false)" > @@ -11,7 +12,7 @@ label="旧密码" name="oldPassword" :rules="[ - { required: true }, + { required: true, message: '请输入密码' }, { validator: checkMothods.old, trigger: 'blur' }, ]" > @@ -24,7 +25,7 @@ label="密码" name="newPassword" :rules="[ - { required: true }, + { required: true,message:'请输入密码' }, { validator: checkMothods.new, trigger: 'blur' }, ]" > @@ -37,7 +38,7 @@ label="确认密码" name="confirmPassword" :rules="[ - { required: true }, + { required: true, message: '请输入确认密码' }, { validator: checkMothods.confirm, trigger: 'blur' }, ]" > @@ -63,6 +64,7 @@ const emits = defineEmits(['ok', 'update:visible']); const props = defineProps<{ visible: boolean; }>(); +const loading = ref(false) const formRef = ref(); const form = ref({ oldPassword: '', @@ -72,7 +74,7 @@ const form = ref({ const checkMothods = { old: async (_rule: Rule, value: string) => { - if (!value) return Promise.reject('请输入密码'); + if (!value) return Promise.reject(); try { const resp: any = await checkOldPassword_api(value); if (resp.status === 200 && !resp.result.passed) @@ -83,7 +85,7 @@ const checkMothods = { } }, new: async (_rule: Rule, value: string) => { - if (!value) return Promise.reject('请输入密码'); + if (!value) return Promise.reject(); else if ( form.value.confirmPassword && value !== form.value.confirmPassword @@ -99,7 +101,7 @@ const checkMothods = { } }, confirm: async (_rule: Rule, value: string) => { - if (!value) return Promise.reject('请输入确认密码'); + if (!value) return Promise.reject(); try { const resp: any = await validateField_api('password', value); @@ -114,6 +116,7 @@ const checkMothods = { const handleOk = () => { formRef.value?.validate().then(() => { + loading.value = true const params = { oldPassword: form.value.oldPassword, newPassword: form.value.newPassword, @@ -124,7 +127,7 @@ const handleOk = () => { emits('ok'); emits('update:visible', false); } - }); + }).finally(()=>loading.value = false) }); }; console.clear(); diff --git a/src/views/account/Center/index.vue b/src/views/account/Center/index.vue index 9d0a09ff..f3b392d0 100644 --- a/src/views/account/Center/index.vue +++ b/src/views/account/Center/index.vue @@ -8,10 +8,15 @@ style="width: 350px; justify-content: center" > +
+ +
+
@@ -51,11 +57,17 @@

注册时间

-

{{ moment(userInfo.createTime).format('YYYY-MM-DD HH:mm:ss') }}

+

+ {{ + moment(userInfo.createTime).format( + 'YYYY-MM-DD HH:mm:ss', + ) + }} +

电话

-

{{ userInfo.telephone }}

+

{{ userInfo.telephone || '-' }}

姓名

@@ -117,7 +129,7 @@ type="link" @click="editPasswordVisible = true" > - +
@@ -205,7 +217,7 @@ { + const imageTypes = ['jpg', 'png', 'jfif', 'pjp', 'pjpeg', 'jpeg']; + const typeBool = + imageTypes.filter((typeStr) => type.includes(typeStr)).length > 0; + const sizeBool = size < 4 * 1024 * 1024; + + (typeBool && sizeBool) || message.error('请上传正确格式的图片'); + return typeBool && sizeBool; + }, }); // 首页视图 const isApiUser = ref(); @@ -346,7 +367,7 @@ function getViews() { background-color: #f0f2f5; min-height: 100vh; .card { - margin: 24px; + margin: 16px 0; padding: 24px; background-color: #fff; position: relative; @@ -370,6 +391,18 @@ function getViews() { flex-wrap: wrap; .content-item { margin-right: 24px; + + .default-avatar { + background-color: #ccc; + color: #fff; + border-radius: 50%; + font-size: 70px; + width: 140px; + height: 140px; + display: flex; + justify-content: center; + align-items: center; + } .info-card { width: 25%; diff --git a/src/views/account/NotificationRecord/index.vue b/src/views/account/NotificationRecord/index.vue index 84790dbc..a6d380d3 100644 --- a/src/views/account/NotificationRecord/index.vue +++ b/src/views/account/NotificationRecord/index.vue @@ -1,14 +1,17 @@