|
|
- <template>
- <view class="page_view">
-
- <image class="bg" src="@/pages_order/static/auth/bg.png" mode="aspectFill"></image>
-
- <view class="content flex flex-column">
- <!-- todo: 替换为配置项 -->
- <image class="logo" src="@/pages_order/static/auth/logo.png" mode="widthFix"></image>
-
- <view class="box">
- <view class="box-intro">Hi ></view>
-
- <uv-input
- v-model="form.account"
- placeholder="请输入账号"
- border="none"
- shape='circle'
- clearable
- :customStyle="{
- 'margin-top': '64rpx',
- 'padding': '37rpx 52rpx',
- 'background-color': '#FAFAFF',
- 'box-shadow': 'inset -10rpx -10rpx 20rpx 0 rgba(255, 255, 255, 0.77), inset 10rpx 10rpx 20rpx 0 rgba(170, 170, 204, 0.12), inset 4rpx 4rpx 8rpx 0 rgba(170, 170, 204, 0.25), inset -4rpx -4rpx 8rpx 0 rgba(255, 255, 255, 0.5)',
- }"
- >
- <template #prefix>
- <image class="input-prefix-icon" src="@/pages_order/static/auth/account.png" mode="widthFix"></image>
- </template>
- </uv-input>
- <uv-input
- v-model="form.password"
- placeholder="请输入密码"
- :type="passwordInputType"
- border="none"
- shape='circle'
- clearable
- :customStyle="{
- 'margin-top': '24rpx',
- 'padding': '37rpx 52rpx',
- 'background-color': '#FAFAFF',
- 'box-shadow': 'inset -10rpx -10rpx 20rpx 0 rgba(255, 255, 255, 0.77), inset 10rpx 10rpx 20rpx 0 rgba(170, 170, 204, 0.12), inset 4rpx 4rpx 8rpx 0 rgba(170, 170, 204, 0.25), inset -4rpx -4rpx 8rpx 0 rgba(255, 255, 255, 0.5)',
- }"
- >
- <template #prefix>
- <image class="input-prefix-icon" src="@/pages_order/static/auth/account.png" mode="widthFix"></image>
- </template>
- <template #suffix v-if="form.password">
- <image class="input-prefix-icon" src="@/pages_order/static/auth/hide.png" mode="widthFix"
- @click="switchPasswordInputType"
- ></image>
- </template>
- </uv-input>
-
- <button class="btn flex" @click="onAccountLogin" >登 录</button>
-
- <view class="agreement">
- <uv-checkbox-group
- v-model="checkboxValue"
- shape="circle"
- >
- <uv-checkbox
- size="36rpx"
- icon-size="36rpx"
- activeColor="#7451DE"
- :name="1"
- ></uv-checkbox>
- </uv-checkbox-group>
- <view class="desc">
- 我已阅读并同意
- <!-- todo: 替换配置项key -->
- <text class="highlight" @click="$refs.popup.open('config_privacy')">《服务协议与隐私条款》</text>
- 和
- <!-- todo: 替换配置项key -->
- <text class="highlight" @click="$refs.popup.open('config_agreement')">《个人信息保护指引》</text>
- </view>
- </view>
- </view>
-
- <view class="other">
- <view class="title">—其他登录方式—</view>
- <view class="btns">
- <button class="btn flex" @click="onPhoneLogin" >
- <image class="btn-icon" src="@/pages_order/static/auth/phone.png" mode="widthFix"></image>
- </button>
- <button class="btn flex" @click="onWxLogin" >
- <image class="btn-icon" src="@/pages_order/static/auth/wx.png" mode="widthFix"></image>
- </button>
- </view>
- </view>
- </view>
-
- <configPopup ref="popup"></configPopup>
-
- </view>
- </template>
-
- <script>
-
- export default {
- name : 'Login',
- data() {
- return {
- checkboxValue : [],
- form: {
- account: null,
- password: null,
- },
- passwordInputType: 'password',
- }
- },
- components: {
- },
- methods: {
- onAccountLogin() {
- // todo
- },
- onPhoneLogin() {
- // todo
- },
- onWxLogin() {
- // todo
- },
- wxLogin(){
- if(!this.checkboxValue.length){
- return uni.showToast({
- title: '请先同意隐私协议',
- icon:'none'
- })
- }
- this.$store.commit('login')
- },
- openModal() {
- this.$refs.modal.open()
- },
- onConfirmAggrement(confirm) {
- if (confirm) {
- this.checkboxValue = [1]
- } else {
- this.checkboxValue = []
- }
- },
- onCancel() {
- console.log('--onCancel')
- uni.reLaunch({
- url: '/pages/index/index'
- })
- },
- switchPasswordInputType() {
- this.passwordInputType = this.passwordInputType === 'password' ? 'text' : 'password'
- },
- }
- }
- </script>
-
- <style scoped lang="scss">
- .page_view {
- width: 100vw;
- height: 100vh;
- }
-
- .bg,
- .content {
- width: 100%;
- height: 100%;
- }
-
- .content {
- position: absolute;
- top: 0;
- justify-content: flex-start;
- padding: 208rpx 40rpx 0 40rpx;
- box-sizing: border-box;
- }
-
- .logo {
- width: 366rpx;
- height: auto;
- }
-
- .box {
- margin-top: 48rpx;
- width: 100%;
- padding: 64rpx 40rpx;
- box-sizing: border-box;
- background: rgba(255, 255, 255, 0.48);
- border: 1rpx solid #FFFFFF;
- border-radius: 48rpx;
-
- &-intro {
- color: $uni-color;
- font-size: 44rpx;
- line-height: 1.4;
- font-weight: 600;
- font-family: PingFang SC;
- }
-
- .input-prefix-icon {
- width: 32rpx;
- height: auto;
- }
-
- /deep/ .uv-input__content__prefix-icon {
- margin-right: 16rpx;
- }
-
- .btn {
- margin-top: 64rpx;
- border-radius: 44rpx;
- padding: 23rpx 0;
- font-size: 30rpx;
- line-height: 1.4;
- font-weight: 600;
- font-family: PingFang SC;
- color: #FFFFFF;
- background-image: linear-gradient(to right, #007FFF, #644CFF, #BE76F7);
- box-shadow: 12rpx 12rpx 36rpx 0 rgba(0, 0, 0, 0.06),
- -8rpx -8rpx 26rpx 0 #FFFFFF,
- 8rpx 8rpx 14rpx 0 rgba(0, 0, 0, 0.07);
- }
-
- .agreement {
- margin-top: 24rpx;
- display: flex;
-
- .desc {
- font-family: PingFang SC;
- font-size: 24rpx;
- font-weight: 400;
- line-height: 1.4;
- color: #8B8B8B;
- }
-
- .highlight {
- color: $uni-color;
- }
- }
- }
-
- .other {
- margin-top: 48rpx;
- width: 100%;
- padding: 0 57rpx;
- box-sizing: border-box;
-
- .title {
- width: 100%;
- padding: 8rpx 0;
- text-align: center;
- font-weight: 400;
- font-size: 26rpx;
- line-height: 1.4;
- font-family: PingFang SC;
- color: #FFFFFF;
- background-image: linear-gradient(to right, #007FFF00, #644CFF, #BE76F700);
- }
-
- .btns {
- display: flex;
- justify-content: center;
- margin-top: 48rpx;
- }
-
- .btn {
- width: 80rpx;
- height: 80rpx;
- border-radius: 50%;
- background: #EEEEF7;
- box-shadow: -10rpx -10rpx 20rpx 0 #FFFFFFBF,
- 10rpx 10rpx 40rpx 0 #AAAACC80,
- 4rpx 4rpx 10rpx 0 #AAAACC40,
- -4rpx -4rpx 10rpx 0 #FFFFFFED;
-
- &-icon {
- width: 48rpx;
- height: auto;
- }
- }
- .btn + .btn {
- margin-left: 64rpx;
- }
- }
- </style>
|