From a90ad2cbf24495bcdd0c0df77ee3f415759c70fd Mon Sep 17 00:00:00 2001 From: Dragon <> Date: Sat, 16 Mar 2024 10:26:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/login/login.ts | 44 +++++ src/assets/images/message/time.png | Bin 0 -> 1236 bytes src/assets/images/message/user.png | Bin 0 -> 1390 bytes src/views/login/components/Forget.vue | 61 ++++-- src/views/login/components/Login.vue | 102 ++++++++-- src/views/message/content/Content.vue | 12 +- src/views/message/content/Detail.vue | 264 +------------------------- src/views/message/index.vue | 14 +- 8 files changed, 202 insertions(+), 295 deletions(-) create mode 100644 src/api/login/login.ts create mode 100644 src/assets/images/message/time.png create mode 100644 src/assets/images/message/user.png diff --git a/src/api/login/login.ts b/src/api/login/login.ts new file mode 100644 index 0000000..df61ae0 --- /dev/null +++ b/src/api/login/login.ts @@ -0,0 +1,44 @@ +import { http } from '@/utils/http/axios' +import type { PageParam, PictureSortParam, SetTFParam } from '/#/api' +import { ContentTypeEnum } from '@/enums/httpEnum' + +/** + * 获得手机号验证码 + * @returns + */ +export async function getCode(params: PageParam) { + const res = await http.request({ + url: `/web/smslogin/sendcode`, + method: 'get', + params, + }) + + const { data: { records, pages } } = res + return { + pageCount: pages, + data: records, + } +} + +/** + * 手机号登录 + */ +export async function smsLogin(params: any) { + return http.request({ + url: `/web/smslogin/login`, + method: 'post', + params, + headers: { 'Content-Type': ContentTypeEnum.FORM_DATA }, + }) +} + +/** + * 忘记密码第一步 + */ +export async function forgetPassword(params: any) { + return http.request({ + url: `/ocr/sUser/selectSUser`, + method: 'post', + params, + }) +} diff --git a/src/assets/images/message/time.png b/src/assets/images/message/time.png new file mode 100644 index 0000000000000000000000000000000000000000..13ee839199b8454fdb0a070e93031cb4e12b8022 GIT binary patch literal 1236 zcmV;_1S|WAP)Px(j!8s8RA@u(Sxtx>MHGIoXZEZZ5CoGLe-47igMxwz$t7T7j^?aO*BhLe9E=ye zs29CtJtXc*ziM_pn`2CrToO>hfF4XV9*i2J5Kvt7JhSzjTDq5--sD2q&5K} zN&GpjK0G60}DRe;Bj)+bGfUWlw+TUd6-64Gj5g;P* zbhd1aSxVFN=a7NQY~ncH6Gf3FakOZ|%$4{m4U|&fAmZM!osW1TNs{+w0bXp|>-An0 zkugt-$Q7;iW0S_2NPvhw0)Q6^9qeW1t4)H>`y!%80pLoZ?=#GNq-?xW0={TtjM2Ga-&-;wy_}(ariiccjbn+6&;`~mQ;48vt+eyWtf;^N}{-EQ~C+yD_jOp@fK|B^tj*IN^j7jq25;qZag)zzQ2FuLHB zQpZL~*D2?}T9KzE4~*@rQIdFEYkk^FfQVKA;N|>d$WiW2KpO z`*+N2m5kC-X9+dBi315hRkS0b;7vSJ7>(n2Ulc_bLxG2e>%xt&Jd7%(`iQukcPt_Y zt1jt9uvs#AxP*l7YI?|)!UZLDWxvvD%&(?L6hKZU+xCBYM$15zdMGH!0U+kj$;&@ zPB#s{m`;nx8(QmkClZ+DLenIHsV_7Z#9Ut~Edk%99$V0Y$~@-Nh-zKxOT1wJZcP)) z$&_eA^<)*Nvu$E-o7zx`CNxp(t&|o^MBQ39wUEtSR5Y?Sl_GB?fowU=ueh7fo=@Zj zfL7%75K-5gN>sVJMC`TAZj4UvOCoZPx)C`m*?RA@u(n16^BRTRg+XLek)qS}79kqRl1m4qo#V(1@1N>)m*{)?@hx$|5V z3L>H(^n`v8Q9Ney&jDl10nhW!6OjcXayftp0GyQq zE(DPaU~q77PESwIhXCwH8_RD12AO$VyNZ;{<+;X~R{&g-)bTuT_3-fUjy#pj1rSBi z(;{+TBH%t|z9MS^N~vc7+?&wfesp!ZIjenA&lzCdx^)XDCnxRb&x{@UzCXKKt&X`Q zpp^Omz_qbW-YPf)D5ahPaDO7%jm&J9Mkgtk%S(+h?@rIpfWH9DYDU<@%u6yyODU!o10q^dtJU_n_{#(EBY=x+5D__~wVv-1 zFsZAQ(g1?^zsbqT`6DAEhg|$Q1B79?i-?vdf}G0Cwkpn&@-@-l-+#(dYLv29Ba=qli48u*>Dg8DRbT z^=D5^OxTU=k~p}C+@-Z1%?dFvFmPsXZ}0CZ{bkIY+!r#ra|W@<>L7_KCuTkUGxLhmyGw=nY$S*wv5Kq++&5p5HZr77oZjNy8{{z=xLRxb#G zt3A)N5XXTK(R;q{ui3nLv%PxhDwzOErP8dvzP{H1+?euM=tiNr2-vp7wkJv1IX*tV zc64;~?`{N{0KzcbLPWPEor%b*Zqub(@c4amTG_+RF%gkWyK`57a=CnyF=l(p`C6^@ z8(9;~q8EnYnxnUSw#vsO%R#>@fKtkSw8cbgKzj6zF)Qlz`tH2RWw8r_V7cdcyArw`tI!r;XlQ6&qtQ4RJF?4Ltya4} zOAWexV-((=6)JjDV1JY+ctfj03HYMVC>u&v)FaB z%3FyjiWZB=#|ir4G5`Po literal 0 HcmV?d00001 diff --git a/src/views/login/components/Forget.vue b/src/views/login/components/Forget.vue index 0b35f4c..6eab28c 100644 --- a/src/views/login/components/Forget.vue +++ b/src/views/login/components/Forget.vue @@ -9,6 +9,8 @@ import { useUserStore } from '@/store/modules/user' import { ResultEnum } from '@/enums/httpEnum' import { getFilter, setFilter } from '@/api/home/filter' import { getConfig } from '@/api/system/user' +import { forgetPassword, getCode } from '@/api/login/login' + import { asideMap } from '@/config/aside' const emit = defineEmits(['close', 'forget']) @@ -19,6 +21,13 @@ interface FormState { captcha: string } +interface FormForget { + agentcode: string + loginname: string + phone: string + phonecode: string +} + const formRef = ref() const message = useMessage() const loading = ref(false) @@ -29,17 +38,23 @@ const router = useRouter() const route = useRoute() const show = ref(false) const flag = ref(false) +const formForget: FormForget = reactive({ + agentcode: '三方系统标识8', + loginname: '13311111111', + phone: '13311111111', + phonecode: '', +}) const formInline: FormState = reactive({ enterprisecode: '三方系统标识8', username: '13311111111', password: '123456', captcha: '', }) -const tab = ref(1) +const tab = ref(0) const countTime = ref('获取验证码') const rules = { enterprisecode: { required: true, message: '请输入企业编码', trigger: 'blur' }, - username: { required: true, message: '请输入用户名', trigger: 'blur' }, + loginname: { required: true, message: '请输入用户名', trigger: 'blur' }, password: { required: true, message: '请输入密码', trigger: 'blur' }, captcha: { required: true, message: '请输入验证码', trigger: 'blur' }, reenteredPassword: [ @@ -64,19 +79,20 @@ function handleSubmit(e) { e.preventDefault() formRef.value.validate(async (errors) => { if (!errors) { - const { username, password, enterprisecode, captcha } = formInline + const { loginname, phone, phonecode, agentcode } = formForget message.loading('登录中...') loading.value = true const params = { - logincode: captcha, - username, - password, - codetoken: userStore.getCapToken, - agentcode: enterprisecode, + loginname, + phone, + phonecode, + agentcode, } try { + const res = await forgetPassword(params) + console.log(res) const { code, message: msg } = await userStore.login(params) await userStore.getInformation() const response = await getFilter() @@ -127,6 +143,15 @@ function computedForm() { return !formInline.enterprisecode || !formInline.username || !formInline.password } +async function sendCode(value) { + const res = await getCode({ + phone: 13311111111, + agentcode: '三方系统标识8', + }) + console.log(res) + startCount() +} + function startCount() { let time = 60 countTime.value = '60s' @@ -157,35 +182,35 @@ function forget() {
- - - + + + - - + + - - + + - - + + diff --git a/src/views/login/components/Login.vue b/src/views/login/components/Login.vue index a086192..8f2a267 100644 --- a/src/views/login/components/Login.vue +++ b/src/views/login/components/Login.vue @@ -10,16 +10,23 @@ import { ResultEnum } from '@/enums/httpEnum' import { getFilter, setFilter } from '@/api/home/filter' import { getConfig } from '@/api/system/user' import { asideMap } from '@/config/aside' +import { getCode, smsLogin } from '@/api/login/login' const emit = defineEmits(['close', 'forget']) interface FormState { enterprisecode?: string username: string password: string - captcha: string +} + +interface FormSms { + agentcode: string + phone: string + phonecode: string } const formRef = ref() +const formRefSms = ref() const message = useMessage() const loading = ref(false) const autoLogin = ref(true) @@ -32,12 +39,20 @@ const formInline: FormState = reactive({ enterprisecode: '三方系统标识8', username: '13311111111', password: '123456', - captcha: '', +}) + +const formSms: FormSms = reactive({ + agentcode: '三方系统标识8', + phone: '13311111111', + phonecode: '', }) const tab = ref(0) const countTime = ref('获取验证码') const rules = { enterprisecode: { required: true, message: '请输入企业编码', trigger: 'blur' }, + agentcode: { required: true, message: '请输入企业编码', trigger: 'blur' }, + phone: { required: true, message: '请输入手机号', trigger: 'blur' }, + phonecode: { required: true, message: '请输入验证码', trigger: 'blur' }, username: { required: true, message: '请输入用户名', trigger: 'blur' }, password: { required: true, message: '请输入密码', trigger: 'blur' }, captcha: { required: true, message: '请输入验证码', trigger: 'blur' }, @@ -47,12 +62,11 @@ function handleSubmit(e) { e.preventDefault() formRef.value.validate(async (errors) => { if (!errors) { - const { username, password, enterprisecode, captcha } = formInline + const { username, password, enterprisecode } = formInline message.loading('登录中...') loading.value = true const params = { - logincode: captcha, username, password, codetoken: userStore.getCapToken, @@ -98,6 +112,59 @@ function handleSubmit(e) { }) } +function handleSmsSubmit(e) { + e.preventDefault() + formRefSms.value.validate(async (errors) => { + if (!errors) { + const { phone, agentcode, phonecode } = formSms + message.loading('登录中...') + loading.value = true + + try { + const res = await smsLogin({ + phone, + agentcode, + phonecode, + }) + console.log(res) + // const { code, message: msg } = await userStore.login(params) + await userStore.getInformation() + const response = await getFilter() + + // 添加个默认显示配置 + if (response.data === null) { + const systemConfig = await getConfig() + const onList: string[] = [] + Object.keys(systemConfig.data).forEach((key) => { + // 系统配置开启且个人配置开启 + if (key.startsWith('iz') && systemConfig.data[key] === 'Y' && asideMap[key]?.isDefaultFilter) + onList.push(key) + }) + await setFilter({ searchcount: onList.join(',') }) + } + + message.destroyAll() + if (code === ResultEnum.SUCCESS) { + const toPath = decodeURIComponent((route.query?.redirect || '/') as string) + message.success('登录成功,即将进入系统') + if (route.name === LOGIN_NAME) + router.replace('/') + else router.replace(toPath) + } + else { + message.info(msg || '登录失败') + } + } + finally { + loading.value = false + } + } + else { + message.error('请填写完整信息,并且进行验证码校验') + } + }) +} + function close() { emit('close') } @@ -110,6 +177,15 @@ function computedForm() { return !formInline.enterprisecode || !formInline.username || !formInline.password } +async function sendCode(value) { + const res = await getCode({ + phone: 13311111111, + agentcode: '三方系统标识8', + }) + console.log(res) + startCount() +} + function startCount() { let time = 60 countTime.value = '60s' @@ -184,35 +260,35 @@ function forget() {
- - - + + + - - + + - - + + - + 登录 diff --git a/src/views/message/content/Content.vue b/src/views/message/content/Content.vue index ee01c72..86fad2c 100644 --- a/src/views/message/content/Content.vue +++ b/src/views/message/content/Content.vue @@ -56,17 +56,17 @@ const taskDetailPictureList = ref([]) const tab = ref(0) -async function getList() { +async function getList(value) { const res = await getMessageList({ pageNo: '1', pageSize: '10', - msgCategory: '1', + msgCategory: value, }) const { data } = res state.list = data } -getList() +getList('1') watch(() => workStore.activeId, async (newValue, oldValue) => { const res = await getPackageTaskList(newValue, packagepagination) @@ -87,16 +87,12 @@ async function handleSelect(item: any) { totalCount.value = total } -onUnmounted(() => { - workStore.reset() -}) - function switchTab(type: number) { tab.value = type + getList(type) } function goDetail(id) { - // console.log(id) emit('goDetail', id) } diff --git a/src/views/message/content/Detail.vue b/src/views/message/content/Detail.vue index 2caa72d..45df479 100644 --- a/src/views/message/content/Detail.vue +++ b/src/views/message/content/Detail.vue @@ -1,232 +1,18 @@