| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | <template>    <view class="hc-login-box relative h-full p-4">        <view class="hc-dot-box">            <view un-absolute un-b-rounded-100 class="dot dot-1"/>            <view un-absolute un-b-rounded-100 class="dot dot-2"/>            <view un-absolute un-b-rounded-100 class="dot dot-3"/>        </view>        <web-view name="animationIframe" src="/hybrid/html/animation/index.html" :webview-styles="webStyle" :style="webStyle" @message="handleMessage"/>        <view class="hc-login-container">            <view class="hc-login-center">                <view class="hc-login-title">欢迎登录</view>                <view class="hc-login-text">泓创让每一个数据更具价值</view>                <view class="hc-login-form">                    <view class="hc-login-form-item">                        <input class="hc-login-input" v-model="formData.username" placeholder="请输入登录账户"/>                    </view>                    <view class="hc-login-form-item">                        <input type="password" class="hc-login-input" v-model="formData.password"                               placeholder="请输入登录密码"/>                    </view>                </view>                <button class="mt-16" :type="!formData.username || !formData.password ? 'info' : 'primary'" @click="submitClick">                    <text class="mr-5">登</text>                    <text class="ml-5">录</text>                </button>            </view>        </view>    </view></template><script setup>import {ref, onMounted} from "vue";import {onLoad, onUnload} from '@dcloudio/uni-app'import {getStorage, setStorage} from "@/utils/storage";import {useAppStore} from "@/store";import {userLogin} from "@/store/user";import {getObjVal} from "js-fast-way";const store = useAppStore()const webStyle = ref({    width: '1px',    height: '1px',})onLoad(() => {    const user_info = getStorage('login_user_info');    if (getObjVal(user_info)) {        formData.value = user_info    }    //清除所有缓存    store.clearStoreData()    //关闭引导页    setTimeout(() => {        setStorage('app_guide', true);        if (getObjVal(user_info)) {            setStorage('login_user_info', user_info);        }    }, 1000)})//渲染完成onMounted(() => {    // #ifdef H5    window.addEventListener('message', handleMessage);    // #endif})const handleMessage = (event) => {    let msg = {};    // #ifdef H5    if (event.data && event.data.data && event.data.data.arg) {        msg = event.data.data.arg    }    // #endif    // #ifdef APP-PLUS    msg = event.detail.data[0]    // #endif    if (msg.source === 'animation-web') {        if (msg.type === "on-animation") {            isAnimation(msg.data)        }    }}//判断动画const isAnimation = (data) => {    console.log('动画结束,耗时:', data)    if (data > 1500) {        store.setAnimation(false)    } else {        store.setAnimation(true)    }}//登录表单const formData = ref({    tenantId: "000000",    username: '',    password: '',    type: "account"})//登录const submitClick = () => {    const {username, password} = formData.value    if (!username) {        uni.showToast({            title: '请先输入登录账户',            icon: 'none',            duration: 3000        });    } else if (!password) {        uni.showToast({            title: '请先输入登录密码',            icon: 'none',            duration: 3000        });    } else {        userLogin(formData.value).then((res) => {            uni.showToast({                title: '登录成功',                duration: 2000,                mask: true            });            //跳转登录            setTimeout(() => {                uni.switchTab({                    url: '/pages/index/index'                })            }, 2000);        }).catch(({msg}) => {            uni.showToast({                title: msg,                icon: 'none'            });        })    }}onUnload(()=>{    // #ifdef H5    window.removeEventListener('message', handleMessage);    // #endif})</script><style lang="scss" scoped>page {    height: 100%;}@import "@/style/login/login.scoped.scss";</style><style lang="scss">@import "@/style/login/login.scss";</style>
 |