Compare commits
2 Commits
6830136957
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
493591c286 | ||
|
|
ec48de4970 |
@@ -184,7 +184,7 @@ onMounted(async () => {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view
|
<view
|
||||||
class="container"
|
class="edit-option"
|
||||||
:style="{
|
:style="{
|
||||||
maxHeight: expand ? '500px' : '50px',
|
maxHeight: expand ? '500px' : '50px',
|
||||||
marginTop: noArrow ? '0' : '10px',
|
marginTop: noArrow ? '0' : '10px',
|
||||||
@@ -207,14 +207,14 @@ onMounted(async () => {
|
|||||||
}}</text>
|
}}</text>
|
||||||
<text v-if="!expand && itemIndex === 3">{{ formatSetAndAmount }}</text>
|
<text v-if="!expand && itemIndex === 3">{{ formatSetAndAmount }}</text>
|
||||||
</block>
|
</block>
|
||||||
<button hover-class="none">
|
<view>
|
||||||
<image
|
<image
|
||||||
v-if="!noArrow"
|
v-if="!noArrow"
|
||||||
src="../static/arrow-grey.png"
|
src="../static/arrow-grey.png"
|
||||||
mode="widthFix"
|
mode="widthFix"
|
||||||
:style="{ transform: expand ? 'rotateX(180deg)' : 'rotateX(0deg)' }"
|
:style="{ transform: expand ? 'rotateX(180deg)' : 'rotateX(0deg)' }"
|
||||||
/>
|
/>
|
||||||
</button>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="itemIndex === 0" class="bow-items">
|
<view v-if="itemIndex === 0" class="bow-items">
|
||||||
<view
|
<view
|
||||||
@@ -342,7 +342,7 @@ onMounted(async () => {
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.container {
|
.edit-option {
|
||||||
width: calc(100% - 20px);
|
width: calc(100% - 20px);
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
@@ -352,25 +352,25 @@ onMounted(async () => {
|
|||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
.container > view:first-child {
|
.edit-option > view:first-child {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
.container > view:first-child > view:first-child {
|
.edit-option > view:first-child > view:first-child {
|
||||||
width: 85px;
|
width: 85px;
|
||||||
}
|
}
|
||||||
.container > view:first-child > text:nth-child(2) {
|
.edit-option > view:first-child > text:nth-child(2) {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.container > view:first-child > button {
|
.edit-option > view:first-child > view {
|
||||||
width: 85px;
|
width: 85px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
.container > view:first-child > button > image {
|
.edit-option > view:first-child > view > image {
|
||||||
transition: all 0.5s ease;
|
transition: all 0.5s ease;
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
|
|||||||
@@ -28,32 +28,27 @@ const hide = ref(true);
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view class="container" :style="{ width }">
|
<view class="input-row" :style="{ width }">
|
||||||
<input
|
<input
|
||||||
:type="type"
|
:type="type"
|
||||||
@change="onChange"
|
@change="onChange"
|
||||||
:placeholder="placeholder"
|
:placeholder="placeholder"
|
||||||
placeholder-style="color: #999;"
|
placeholder-style="color: #999;"
|
||||||
/>
|
/>
|
||||||
<button v-if="btnType === 'code'" hover-class="none" class="get-code">
|
<view v-if="btnType === 'code'" class="get-code">
|
||||||
get verification code
|
get verification code
|
||||||
</button>
|
</view>
|
||||||
<button
|
<view v-if="type === 'password'" class="eye-btn" @click="hide = !hide">
|
||||||
v-if="type === 'password'"
|
|
||||||
hover-class="none"
|
|
||||||
class="eye-btn"
|
|
||||||
@click="hide = !hide"
|
|
||||||
>
|
|
||||||
<image
|
<image
|
||||||
:src="`../static/${hide ? 'eye-close' : 'eye-open'}.png`"
|
:src="`../static/${hide ? 'eye-close' : 'eye-open'}.png`"
|
||||||
mode="widthFix"
|
mode="widthFix"
|
||||||
/>
|
/>
|
||||||
</button>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.container {
|
.input-row {
|
||||||
height: 100rpx;
|
height: 100rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@@ -72,7 +67,8 @@ const hide = ref(true);
|
|||||||
.get-code {
|
.get-code {
|
||||||
color: #287fff;
|
color: #287fff;
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
width: 80%;
|
width: 60%;
|
||||||
|
text-align: right;
|
||||||
}
|
}
|
||||||
.eye-btn {
|
.eye-btn {
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
|
|||||||
@@ -53,9 +53,8 @@ const onBtnClick = debounce(async () => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<button
|
<view
|
||||||
class="sbtn"
|
class="sbtn"
|
||||||
hover-class="none"
|
|
||||||
:style="{
|
:style="{
|
||||||
width: width,
|
width: width,
|
||||||
borderRadius: rounded + 'rpx',
|
borderRadius: rounded + 'rpx',
|
||||||
@@ -71,7 +70,7 @@ const onBtnClick = debounce(async () => {
|
|||||||
<block v-else>
|
<block v-else>
|
||||||
<image src="../static/btn-loading.png" mode="widthFix" class="loading" />
|
<image src="../static/btn-loading.png" mode="widthFix" class="loading" />
|
||||||
</block>
|
</block>
|
||||||
</button>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ watch(
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view
|
<view
|
||||||
class="container"
|
class="s-modal"
|
||||||
v-if="showContainer"
|
v-if="showContainer"
|
||||||
:style="{ opacity: show ? 1 : 0 }"
|
:style="{ opacity: show ? 1 : 0 }"
|
||||||
@click="onClose"
|
@click="onClose"
|
||||||
@@ -68,7 +68,7 @@ watch(
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.container {
|
.s-modal {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
"path": "pages/index"
|
"path": "pages/index"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/signin"
|
"path": "pages/signup"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/signup"
|
"path": "pages/signin"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/create"
|
"path": "pages/create"
|
||||||
@@ -29,7 +29,11 @@
|
|||||||
"navigationBarTextStyle": "white",
|
"navigationBarTextStyle": "white",
|
||||||
"navigationBarBackgroundColor": "#2c3e50",
|
"navigationBarBackgroundColor": "#2c3e50",
|
||||||
"backgroundColor": "#ffffff",
|
"backgroundColor": "#ffffff",
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom",
|
||||||
|
"app-plus": {
|
||||||
|
"softinputMode": "adjustResize",
|
||||||
|
"softinputNavBar": "none"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"condition": {
|
"condition": {
|
||||||
"current": 0,
|
"current": 0,
|
||||||
|
|||||||
@@ -1,111 +0,0 @@
|
|||||||
<script setup>
|
|
||||||
import { ref, computed, onMounted, watch } from "vue";
|
|
||||||
import Score from "@/pages/score.vue";
|
|
||||||
import History from "@/pages/list.vue";
|
|
||||||
import Profile from "@/pages/profile.vue";
|
|
||||||
import Tabbar from "@/components/Tabbar.vue";
|
|
||||||
|
|
||||||
import useStore from "@/store";
|
|
||||||
import { storeToRefs } from "pinia";
|
|
||||||
const { user } = storeToRefs(useStore());
|
|
||||||
|
|
||||||
const isIOS = computed(() => {
|
|
||||||
const systemInfo = uni.getDeviceInfo();
|
|
||||||
return systemInfo.osName === "ios";
|
|
||||||
});
|
|
||||||
|
|
||||||
const tabIndex = ref(0);
|
|
||||||
const onTabChnage = (index) => {
|
|
||||||
tabIndex.value = index;
|
|
||||||
};
|
|
||||||
const editAvatar = ref(false);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<view class="container">
|
|
||||||
<swiper
|
|
||||||
:current="tabIndex"
|
|
||||||
@change="(e) => (tabIndex = e.detail.current)"
|
|
||||||
:style="{
|
|
||||||
height: `calc(100vh - 100rpx - ${isIOS ? '30rpx' : '0rpx'})`,
|
|
||||||
background: '#f5f5f5',
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<swiper-item>
|
|
||||||
<Score />
|
|
||||||
</swiper-item>
|
|
||||||
<swiper-item>
|
|
||||||
<History />
|
|
||||||
</swiper-item>
|
|
||||||
<swiper-item>
|
|
||||||
<Profile :editAvatar="() => (editAvatar = true)" />
|
|
||||||
</swiper-item>
|
|
||||||
</swiper>
|
|
||||||
<view
|
|
||||||
class="edit-avatar"
|
|
||||||
:style="{ height: editAvatar ? '100vh' : '0' }"
|
|
||||||
@click="editAvatar = false"
|
|
||||||
>
|
|
||||||
<image :src="user.avatar" mode="widthFix" />
|
|
||||||
<view>
|
|
||||||
<view>
|
|
||||||
<text>Take a photo</text>
|
|
||||||
<image src="../static/back-grey.png" mode="widthFix" />
|
|
||||||
</view>
|
|
||||||
<view>
|
|
||||||
<text>Choose photo</text>
|
|
||||||
<image src="../static/back-grey.png" mode="widthFix" />
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<Tabbar :selected="tabIndex" :onClick="onTabChnage" />
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.container {
|
|
||||||
width: 100vw;
|
|
||||||
height: 100vw;
|
|
||||||
background: #f5f5f5;
|
|
||||||
}
|
|
||||||
.edit-avatar {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 100vw;
|
|
||||||
background: rgba(0, 0, 0, 0.8);
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
.edit-avatar > image {
|
|
||||||
width: 85vw;
|
|
||||||
height: 85vw;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
.edit-avatar > view {
|
|
||||||
border-radius: 25rpx;
|
|
||||||
margin-top: 100rpx;
|
|
||||||
width: calc(100% - 150rpx);
|
|
||||||
padding: 0 40rpx;
|
|
||||||
background: #404040;
|
|
||||||
}
|
|
||||||
.edit-avatar > view > view {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
font-size: 30rpx;
|
|
||||||
color: #ffffff;
|
|
||||||
padding: 40rpx 0;
|
|
||||||
}
|
|
||||||
.edit-avatar > view > view:not(:last-child) {
|
|
||||||
border-bottom: 1rpx solid #fff3;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
.edit-avatar > view > view > image {
|
|
||||||
width: 28rpx;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
251
src/pages/index/index.vue
Normal file
251
src/pages/index/index.vue
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
<script setup>
|
||||||
|
import { ref, computed, onMounted, watch } from "vue";
|
||||||
|
import Score from "@/pages/score/index.vue";
|
||||||
|
import History from "@/pages/list/index.vue";
|
||||||
|
import Profile from "@/pages/profile/index.vue";
|
||||||
|
import Tabbar from "@/components/Tabbar.vue";
|
||||||
|
import SModal from "@/components/SModal.vue";
|
||||||
|
import EditOption from "@/components/EditOption.vue";
|
||||||
|
import ScreenHint from "@/components/ScreenHint.vue";
|
||||||
|
import { removePointRecord } from "@/api";
|
||||||
|
|
||||||
|
import useStore from "@/store";
|
||||||
|
import { storeToRefs } from "pinia";
|
||||||
|
const { user } = storeToRefs(useStore());
|
||||||
|
|
||||||
|
const isIOS = computed(() => {
|
||||||
|
const systemInfo = uni.getDeviceInfo();
|
||||||
|
return systemInfo.osName === "ios";
|
||||||
|
});
|
||||||
|
|
||||||
|
const tabIndex = ref(0);
|
||||||
|
const editAvatar = ref(false);
|
||||||
|
const selectorIndex = ref(0);
|
||||||
|
const bowType = ref({});
|
||||||
|
const distance = ref(0);
|
||||||
|
const bowtargetType = ref({});
|
||||||
|
const showModal = ref(false);
|
||||||
|
const showTip = ref(false);
|
||||||
|
const removeId = ref("");
|
||||||
|
const dataSeq = ref(0);
|
||||||
|
|
||||||
|
const onTabChnage = (index) => {
|
||||||
|
tabIndex.value = index;
|
||||||
|
};
|
||||||
|
const openSelector = (index) => {
|
||||||
|
selectorIndex.value = index;
|
||||||
|
showModal.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onSelectOption = (itemIndex, value) => {
|
||||||
|
if (itemIndex === 0) {
|
||||||
|
bowType.value = value.name === bowType.value.name ? {} : value;
|
||||||
|
} else if (itemIndex === 1) {
|
||||||
|
distance.value = value === distance.value ? 0 : value;
|
||||||
|
} else if (itemIndex === 2) {
|
||||||
|
bowtargetType.value = value.name === bowtargetType.value.name ? {} : value;
|
||||||
|
}
|
||||||
|
showModal.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onRemoveRecord = (item) => {
|
||||||
|
removeId.value = item.id;
|
||||||
|
showTip.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const confirmRemove = async () => {
|
||||||
|
try {
|
||||||
|
showTip.value = false;
|
||||||
|
await removePointRecord(removeId.value);
|
||||||
|
dataSeq.value += 1;
|
||||||
|
uni.showToast({ title: "Deleted", icon: "none" });
|
||||||
|
} catch (e) {
|
||||||
|
uni.showToast({ title: "Delete failed, please retry", icon: "none" });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<swiper
|
||||||
|
:current="tabIndex"
|
||||||
|
@change="(e) => (tabIndex = e.detail.current)"
|
||||||
|
:style="{
|
||||||
|
height: `calc(100vh - 100rpx - ${isIOS ? '30rpx' : '0rpx'})`,
|
||||||
|
background: '#f5f5f5',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<swiper-item>
|
||||||
|
<Score />
|
||||||
|
</swiper-item>
|
||||||
|
<swiper-item>
|
||||||
|
<History
|
||||||
|
:openSelector="openSelector"
|
||||||
|
:onRemoveRecord="onRemoveRecord"
|
||||||
|
:bowType="bowType"
|
||||||
|
:distance="distance"
|
||||||
|
:bowtargetType="bowtargetType"
|
||||||
|
:seq="dataSeq"
|
||||||
|
/>
|
||||||
|
</swiper-item>
|
||||||
|
<swiper-item>
|
||||||
|
<Profile :editAvatar="() => (editAvatar = true)" />
|
||||||
|
</swiper-item>
|
||||||
|
</swiper>
|
||||||
|
<view
|
||||||
|
class="edit-avatar"
|
||||||
|
:style="{ height: editAvatar ? '100vh' : '0' }"
|
||||||
|
@click="editAvatar = false"
|
||||||
|
>
|
||||||
|
<image :src="user.avatar" mode="widthFix" />
|
||||||
|
<view>
|
||||||
|
<view>
|
||||||
|
<text>Take a photo</text>
|
||||||
|
<image src="../static/back-grey.png" mode="widthFix" />
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
<text>Choose photo</text>
|
||||||
|
<image src="../static/back-grey.png" mode="widthFix" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<SModal
|
||||||
|
:show="showModal"
|
||||||
|
:noBg="true"
|
||||||
|
height="auto"
|
||||||
|
:onClose="() => (showModal = false)"
|
||||||
|
>
|
||||||
|
<view class="selector">
|
||||||
|
<view @click="() => (showModal = false)">
|
||||||
|
<image src="../static/close-grey.png" mode="widthFix" />
|
||||||
|
</view>
|
||||||
|
<EditOption
|
||||||
|
v-show="selectorIndex === 0"
|
||||||
|
:itemIndex="0"
|
||||||
|
:expand="true"
|
||||||
|
:noArrow="true"
|
||||||
|
:onSelect="onSelectOption"
|
||||||
|
:value="bowType.name"
|
||||||
|
/>
|
||||||
|
<EditOption
|
||||||
|
v-show="selectorIndex === 1"
|
||||||
|
:itemIndex="1"
|
||||||
|
:expand="true"
|
||||||
|
:noArrow="true"
|
||||||
|
:onSelect="onSelectOption"
|
||||||
|
:value="distance + ''"
|
||||||
|
/>
|
||||||
|
<EditOption
|
||||||
|
v-show="selectorIndex === 2"
|
||||||
|
:itemIndex="2"
|
||||||
|
:expand="true"
|
||||||
|
:noArrow="true"
|
||||||
|
:onSelect="onSelectOption"
|
||||||
|
:value="bowtargetType.name"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
</SModal>
|
||||||
|
<ScreenHint :show="showTip">
|
||||||
|
<view class="tip-content">
|
||||||
|
<text>Are you sure to delete this record?</text>
|
||||||
|
<view>
|
||||||
|
<view @click="showTip = false">Cancel</view>
|
||||||
|
<view @click="confirmRemove">Confirm</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</ScreenHint>
|
||||||
|
<Tabbar :selected="tabIndex" :onClick="onTabChnage" />
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.container {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vw;
|
||||||
|
background: #f5f5f5;
|
||||||
|
}
|
||||||
|
.edit-avatar {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100vw;
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 999;
|
||||||
|
}
|
||||||
|
.edit-avatar > image {
|
||||||
|
width: 85vw;
|
||||||
|
height: 85vw;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.edit-avatar > view {
|
||||||
|
border-radius: 25rpx;
|
||||||
|
margin-top: 100rpx;
|
||||||
|
width: calc(100% - 150rpx);
|
||||||
|
padding: 0 40rpx;
|
||||||
|
background: #404040;
|
||||||
|
}
|
||||||
|
.edit-avatar > view > view {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 30rpx;
|
||||||
|
color: #ffffff;
|
||||||
|
padding: 40rpx 0;
|
||||||
|
}
|
||||||
|
.edit-avatar > view > view:not(:last-child) {
|
||||||
|
border-bottom: 1rpx solid #fff3;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
.edit-avatar > view > view > image {
|
||||||
|
width: 28rpx;
|
||||||
|
}
|
||||||
|
.selector {
|
||||||
|
padding: 10px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.selector > view {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.selector > view > image {
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
.tip-content {
|
||||||
|
width: 100%;
|
||||||
|
padding: 25px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.tip-content > text {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.tip-content > view {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.tip-content > view > view {
|
||||||
|
width: 48%;
|
||||||
|
background: linear-gradient(180deg, #fbfbfb 0%, #f5f5f5 100%);
|
||||||
|
border-radius: 22px;
|
||||||
|
border: 1px solid #eeeeee;
|
||||||
|
padding: 12px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.tip-content > view > view:last-child {
|
||||||
|
background: #fed847;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,262 +0,0 @@
|
|||||||
<script setup>
|
|
||||||
import { ref, onMounted } from "vue";
|
|
||||||
import SModal from "@/components/SModal.vue";
|
|
||||||
import EditOption from "@/components/EditOption.vue";
|
|
||||||
import PointRecord from "@/components/PointRecord.vue";
|
|
||||||
import ScrollList from "@/components/ScrollList.vue";
|
|
||||||
import ScreenHint from "@/components/ScreenHint.vue";
|
|
||||||
import { getPointBookListAPI, removePointRecord } from "@/api";
|
|
||||||
|
|
||||||
const statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
|
|
||||||
const showTip = ref(false);
|
|
||||||
const bowType = ref({});
|
|
||||||
const distance = ref(0);
|
|
||||||
const bowtargetType = ref({});
|
|
||||||
const showModal = ref(false);
|
|
||||||
const selectorIndex = ref(0);
|
|
||||||
const list = ref([]);
|
|
||||||
const removeId = ref("");
|
|
||||||
|
|
||||||
const onListLoading = async (page) => {
|
|
||||||
const result = await getPointBookListAPI(
|
|
||||||
page,
|
|
||||||
bowType.value.id,
|
|
||||||
distance.value,
|
|
||||||
bowtargetType.value.id
|
|
||||||
);
|
|
||||||
if (page === 1) {
|
|
||||||
list.value = result;
|
|
||||||
} else {
|
|
||||||
list.value = list.value.concat(result);
|
|
||||||
}
|
|
||||||
return result.length;
|
|
||||||
};
|
|
||||||
|
|
||||||
const openSelector = (index) => {
|
|
||||||
selectorIndex.value = index;
|
|
||||||
showModal.value = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
const onRemoveRecord = (item) => {
|
|
||||||
removeId.value = item.id;
|
|
||||||
showTip.value = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
const confirmRemove = async () => {
|
|
||||||
try {
|
|
||||||
showTip.value = false;
|
|
||||||
await removePointRecord(removeId.value);
|
|
||||||
list.value = list.value.filter((it) => it.id !== removeId.value);
|
|
||||||
uni.showToast({ title: "Deleted", icon: "none" });
|
|
||||||
} catch (e) {
|
|
||||||
uni.showToast({ title: "Delete failed, please retry", icon: "none" });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const onSelectOption = (itemIndex, value) => {
|
|
||||||
if (itemIndex === 0) {
|
|
||||||
bowType.value = value.name === bowType.value.name ? {} : value;
|
|
||||||
} else if (itemIndex === 1) {
|
|
||||||
distance.value = value === distance.value ? 0 : value;
|
|
||||||
} else if (itemIndex === 2) {
|
|
||||||
bowtargetType.value = value.name === bowtargetType.value.name ? {} : value;
|
|
||||||
}
|
|
||||||
showModal.value = false;
|
|
||||||
onListLoading(1);
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<view
|
|
||||||
class="list"
|
|
||||||
:style="{
|
|
||||||
paddingTop: statusBarHeight + 'px',
|
|
||||||
backgroundSize: `100% ${statusBarHeight + 50}px`,
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<view class="list-header">
|
|
||||||
<text>History</text>
|
|
||||||
</view>
|
|
||||||
<view class="selectors">
|
|
||||||
<view @click="() => openSelector(0)">
|
|
||||||
<text :style="{ color: bowType.name ? '#000' : '#999' }">{{
|
|
||||||
bowType.name || "Please select"
|
|
||||||
}}</text>
|
|
||||||
<image src="../static/arrow-grey.png" mode="widthFix" />
|
|
||||||
</view>
|
|
||||||
<view @click="() => openSelector(1)">
|
|
||||||
<text :style="{ color: distance ? '#000' : '#999' }">{{
|
|
||||||
distance ? distance + " m" : "Please select"
|
|
||||||
}}</text>
|
|
||||||
<image src="../static/arrow-grey.png" mode="widthFix" />
|
|
||||||
</view>
|
|
||||||
<view @click="() => openSelector(2)">
|
|
||||||
<text :style="{ color: bowtargetType.name ? '#000' : '#999' }">{{
|
|
||||||
bowtargetType.name || "Please select"
|
|
||||||
}}</text>
|
|
||||||
<image src="../static/arrow-grey.png" mode="widthFix" />
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="point-records">
|
|
||||||
<ScrollList :onLoading="onListLoading">
|
|
||||||
<view v-for="(item, index) in list" :key="item.id">
|
|
||||||
<PointRecord :data="item" :onRemove="onRemoveRecord" />
|
|
||||||
<view
|
|
||||||
v-if="index < list.length - 1"
|
|
||||||
:style="{ height: '25rpx' }"
|
|
||||||
></view>
|
|
||||||
</view>
|
|
||||||
<view class="no-data" v-if="list.length === 0">No data</view>
|
|
||||||
</ScrollList>
|
|
||||||
</view>
|
|
||||||
<SModal
|
|
||||||
:show="showModal"
|
|
||||||
:noBg="true"
|
|
||||||
height="auto"
|
|
||||||
:onClose="() => (showModal = false)"
|
|
||||||
>
|
|
||||||
<view class="selector">
|
|
||||||
<button hover-class="none" @click="() => (showModal = false)">
|
|
||||||
<image src="../static/close-grey.png" mode="widthFix" />
|
|
||||||
</button>
|
|
||||||
<EditOption
|
|
||||||
v-show="selectorIndex === 0"
|
|
||||||
:itemIndex="0"
|
|
||||||
:expand="true"
|
|
||||||
:noArrow="true"
|
|
||||||
:onSelect="onSelectOption"
|
|
||||||
:value="bowType.name"
|
|
||||||
/>
|
|
||||||
<EditOption
|
|
||||||
v-show="selectorIndex === 1"
|
|
||||||
:itemIndex="1"
|
|
||||||
:expand="true"
|
|
||||||
:noArrow="true"
|
|
||||||
:onSelect="onSelectOption"
|
|
||||||
:value="distance + ''"
|
|
||||||
/>
|
|
||||||
<EditOption
|
|
||||||
v-show="selectorIndex === 2"
|
|
||||||
:itemIndex="2"
|
|
||||||
:expand="true"
|
|
||||||
:noArrow="true"
|
|
||||||
:onSelect="onSelectOption"
|
|
||||||
:value="bowtargetType.name"
|
|
||||||
/>
|
|
||||||
</view>
|
|
||||||
</SModal>
|
|
||||||
<ScreenHint :show="showTip">
|
|
||||||
<view class="tip-content">
|
|
||||||
<text>Are you sure to delete this record?</text>
|
|
||||||
<view>
|
|
||||||
<button hover-class="none" @click="showTip = false">Cancel</button>
|
|
||||||
<button hover-class="none" @click="confirmRemove">Confirm</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</ScreenHint>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.list {
|
|
||||||
background: url("../static/app-bg3.png") no-repeat top/contain;
|
|
||||||
}
|
|
||||||
.list-header {
|
|
||||||
height: 40px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 30rpx;
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
.selectors {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
padding: 0 15px;
|
|
||||||
margin-top: 40rpx;
|
|
||||||
}
|
|
||||||
.selectors > view {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
background-color: #fff;
|
|
||||||
height: 55px;
|
|
||||||
border-radius: 12px;
|
|
||||||
color: #333;
|
|
||||||
font-size: 13px;
|
|
||||||
width: 26vw;
|
|
||||||
}
|
|
||||||
.selectors > view:last-child {
|
|
||||||
width: 34vw;
|
|
||||||
}
|
|
||||||
.selectors > view > text {
|
|
||||||
width: calc(100% - 11vw);
|
|
||||||
text-align: center;
|
|
||||||
margin-left: 3vw;
|
|
||||||
}
|
|
||||||
.selectors > view > image {
|
|
||||||
width: 5vw;
|
|
||||||
margin-right: 3vw;
|
|
||||||
}
|
|
||||||
.selector {
|
|
||||||
padding: 10px;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 10px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.selector > button {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
.selector > button > image {
|
|
||||||
width: 40px;
|
|
||||||
}
|
|
||||||
.point-records {
|
|
||||||
margin: 0 15px;
|
|
||||||
margin-top: 10px;
|
|
||||||
height: calc(100% - 80px);
|
|
||||||
}
|
|
||||||
.no-data {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
color: #999999;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
.tip-content {
|
|
||||||
width: 100%;
|
|
||||||
padding: 25px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
.tip-content > text {
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 14px;
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
.tip-content > view {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
.tip-content > view > button {
|
|
||||||
width: 48%;
|
|
||||||
background: linear-gradient(180deg, #fbfbfb 0%, #f5f5f5 100%);
|
|
||||||
border-radius: 22px;
|
|
||||||
border: 1px solid #eeeeee;
|
|
||||||
padding: 12px 0;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
.tip-content > view > button:last-child {
|
|
||||||
background: #fed847;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
170
src/pages/list/index.vue
Normal file
170
src/pages/list/index.vue
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
<script setup>
|
||||||
|
import { ref, watch } from "vue";
|
||||||
|
import PointRecord from "@/components/PointRecord.vue";
|
||||||
|
import ScrollList from "@/components/ScrollList.vue";
|
||||||
|
import { getPointBookListAPI } from "@/api";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
openSelector: {
|
||||||
|
type: Function,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
onRemoveRecord: {
|
||||||
|
type: Function,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
bowType: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
distance: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
bowtargetType: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
seq: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
|
||||||
|
const list = ref([]);
|
||||||
|
const scrollListRef = ref(null);
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => [props.bowType, props.distance, props.bowtargetType, props.seq],
|
||||||
|
() => {
|
||||||
|
if (scrollListRef.value) {
|
||||||
|
scrollListRef.value.refresherrefresh();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deep: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const onListLoading = async (page) => {
|
||||||
|
const result = await getPointBookListAPI(
|
||||||
|
page,
|
||||||
|
props.bowType.id,
|
||||||
|
props.distance,
|
||||||
|
props.bowtargetType.id
|
||||||
|
);
|
||||||
|
if (page === 1) {
|
||||||
|
list.value = result;
|
||||||
|
} else {
|
||||||
|
list.value = list.value.concat(result);
|
||||||
|
}
|
||||||
|
return result.length;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<view
|
||||||
|
class="list"
|
||||||
|
:style="{
|
||||||
|
paddingTop: statusBarHeight + 'px',
|
||||||
|
backgroundSize: `100% ${statusBarHeight + 50}px`,
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<view class="list-header">
|
||||||
|
<text>History</text>
|
||||||
|
</view>
|
||||||
|
<view class="selectors">
|
||||||
|
<view @click="() => openSelector(0)">
|
||||||
|
<text :style="{ color: bowType.name ? '#000' : '#999' }">{{
|
||||||
|
bowType.name || "Please select"
|
||||||
|
}}</text>
|
||||||
|
<image src="../static/arrow-grey.png" mode="widthFix" />
|
||||||
|
</view>
|
||||||
|
<view @click="() => openSelector(1)">
|
||||||
|
<text :style="{ color: distance ? '#000' : '#999' }">{{
|
||||||
|
distance ? distance + " m" : "Please select"
|
||||||
|
}}</text>
|
||||||
|
<image src="../static/arrow-grey.png" mode="widthFix" />
|
||||||
|
</view>
|
||||||
|
<view @click="() => openSelector(2)">
|
||||||
|
<text :style="{ color: bowtargetType.name ? '#000' : '#999' }">{{
|
||||||
|
bowtargetType.name || "Please select"
|
||||||
|
}}</text>
|
||||||
|
<image src="../static/arrow-grey.png" mode="widthFix" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="point-records">
|
||||||
|
<ScrollList :onLoading="onListLoading" ref="scrollListRef">
|
||||||
|
<view v-for="(item, index) in list" :key="item.id">
|
||||||
|
<PointRecord :data="item" :onRemove="onRemoveRecord" />
|
||||||
|
<view
|
||||||
|
v-if="index < list.length - 1"
|
||||||
|
:style="{ height: '25rpx' }"
|
||||||
|
></view>
|
||||||
|
</view>
|
||||||
|
<view class="no-data" v-if="list.length === 0">No data</view>
|
||||||
|
</ScrollList>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.list {
|
||||||
|
background: url("../static/app-bg3.png") no-repeat top/contain;
|
||||||
|
}
|
||||||
|
.list-header {
|
||||||
|
height: 40px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 30rpx;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.selectors {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0 15px;
|
||||||
|
margin-top: 40rpx;
|
||||||
|
}
|
||||||
|
.selectors > view {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
background-color: #fff;
|
||||||
|
height: 55px;
|
||||||
|
border-radius: 12px;
|
||||||
|
color: #333;
|
||||||
|
font-size: 13px;
|
||||||
|
width: 26vw;
|
||||||
|
}
|
||||||
|
.selectors > view:last-child {
|
||||||
|
width: 34vw;
|
||||||
|
}
|
||||||
|
.selectors > view > text {
|
||||||
|
width: calc(100% - 11vw);
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 3vw;
|
||||||
|
}
|
||||||
|
.selectors > view > image {
|
||||||
|
width: 5vw;
|
||||||
|
margin-right: 3vw;
|
||||||
|
}
|
||||||
|
.point-records {
|
||||||
|
margin: 0 15px;
|
||||||
|
margin-top: 10px;
|
||||||
|
height: calc(100% - 80px);
|
||||||
|
}
|
||||||
|
.no-data {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: #999999;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -9,8 +9,8 @@ const { user } = storeToRefs(store);
|
|||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
editAvatar: {
|
editAvatar: {
|
||||||
type: String,
|
type: Function,
|
||||||
default: "",
|
default: () => {},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -23,6 +23,10 @@ const toSignInPage = () => {
|
|||||||
<InputRow type="password" placeholder="confirm password" width="80vw" />
|
<InputRow type="password" placeholder="confirm password" width="80vw" />
|
||||||
<view :style="{ height: '20rpx' }"></view>
|
<view :style="{ height: '20rpx' }"></view>
|
||||||
<SButton width="80vw">Submit</SButton>
|
<SButton width="80vw">Submit</SButton>
|
||||||
|
<view class="to-sign-up">
|
||||||
|
<text>have an account? </text>
|
||||||
|
<view hover-class="none" @click.stop="toSignInPage">sign in ></view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -49,4 +53,17 @@ const toSignInPage = () => {
|
|||||||
width: 80vw;
|
width: 80vw;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
}
|
}
|
||||||
|
.to-sign-up {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.to-sign-up > view {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #287fff;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -16,6 +16,10 @@ const toResetPasswordPage = () => {
|
|||||||
url: "/pages/reset-pwd",
|
url: "/pages/reset-pwd",
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const signIn = () => {
|
||||||
|
uni.navigateBack();
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -25,35 +29,29 @@ const toResetPasswordPage = () => {
|
|||||||
<InputRow type="text" placeholder="email" width="80vw" />
|
<InputRow type="text" placeholder="email" width="80vw" />
|
||||||
<InputRow type="password" placeholder="password" width="80vw" />
|
<InputRow type="password" placeholder="password" width="80vw" />
|
||||||
<view class="btn-row">
|
<view class="btn-row">
|
||||||
<button hover-class="none" @click="toResetPasswordPage">
|
<view @click="toResetPasswordPage"> Forgot Password? </view>
|
||||||
Forgot Password?
|
|
||||||
</button>
|
|
||||||
</view>
|
</view>
|
||||||
<SButton width="80vw">login</SButton>
|
<SButton width="80vw" :onClick="signIn">login</SButton>
|
||||||
<button
|
<view @click.stop="checked = !checked" class="agreement">
|
||||||
hover-class="none"
|
|
||||||
@click.stop="checked = !checked"
|
|
||||||
class="agreement"
|
|
||||||
>
|
|
||||||
<image :src="`../static/${checked ? 'checked' : 'unchecked'}.png`" />
|
<image :src="`../static/${checked ? 'checked' : 'unchecked'}.png`" />
|
||||||
<text>i read and accept</text>
|
<text>i read and accept</text>
|
||||||
<button hover-class="none" @click.stop="">user agreement</button>
|
<view @click.stop="">user agreement</view>
|
||||||
<text>and</text>
|
<text>and</text>
|
||||||
<button hover-class="none" @click.stop="">privacy policy</button>
|
<view @click.stop="">privacy policy</view>
|
||||||
</button>
|
</view>
|
||||||
<view class="thrid-signin">
|
<view class="thrid-signin">
|
||||||
<button hover-class="none">
|
<view>
|
||||||
<image src="../static/google-icon.png" mode="widthFix" />
|
<image src="../static/google-icon.png" mode="widthFix" />
|
||||||
<text>login with google</text>
|
<text>login with google</text>
|
||||||
</button>
|
</view>
|
||||||
<button hover-class="none">
|
<view>
|
||||||
<image src="../static/apple-icon.png" mode="widthFix" />
|
<image src="../static/apple-icon.png" mode="widthFix" />
|
||||||
<text>login with apple</text>
|
<text>login with apple</text>
|
||||||
</button>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="to-sign-up">
|
<view class="to-sign-up">
|
||||||
<text>don't have an account? </text>
|
<text>don't have an account? </text>
|
||||||
<button hover-class="none" @click.stop="toSignUpPage">sign up ></button>
|
<view @click.stop="toSignUpPage">sign up ></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@@ -71,6 +69,7 @@ const toResetPasswordPage = () => {
|
|||||||
width: 176rpx;
|
width: 176rpx;
|
||||||
height: 176rpx;
|
height: 176rpx;
|
||||||
margin-top: 40rpx;
|
margin-top: 40rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
}
|
}
|
||||||
.app-name {
|
.app-name {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -83,7 +82,7 @@ const toResetPasswordPage = () => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
.btn-row > button {
|
.btn-row > view {
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #287fff;
|
color: #287fff;
|
||||||
margin-bottom: 25rpx;
|
margin-bottom: 25rpx;
|
||||||
@@ -103,7 +102,7 @@ const toResetPasswordPage = () => {
|
|||||||
height: 32rpx;
|
height: 32rpx;
|
||||||
margin-right: 10rpx;
|
margin-right: 10rpx;
|
||||||
}
|
}
|
||||||
.agreement > button {
|
.agreement > view {
|
||||||
color: #333;
|
color: #333;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
margin: 0 10rpx;
|
margin: 0 10rpx;
|
||||||
@@ -114,7 +113,7 @@ const toResetPasswordPage = () => {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin: 60rpx 0;
|
margin: 60rpx 0;
|
||||||
}
|
}
|
||||||
.thrid-signin > button {
|
.thrid-signin > view {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 88rpx;
|
height: 88rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -126,7 +125,7 @@ const toResetPasswordPage = () => {
|
|||||||
color: #333333;
|
color: #333333;
|
||||||
margin: 20rpx 0;
|
margin: 20rpx 0;
|
||||||
}
|
}
|
||||||
.thrid-signin > button > image {
|
.thrid-signin > view > image {
|
||||||
width: 40rpx;
|
width: 40rpx;
|
||||||
margin-right: 20rpx;
|
margin-right: 20rpx;
|
||||||
}
|
}
|
||||||
@@ -137,7 +136,7 @@ const toResetPasswordPage = () => {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.to-sign-up > button {
|
.to-sign-up > view {
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #287fff;
|
color: #287fff;
|
||||||
margin-left: 20rpx;
|
margin-left: 20rpx;
|
||||||
@@ -21,13 +21,13 @@ const toSignInPage = () => {
|
|||||||
<SButton width="80vw">login</SButton>
|
<SButton width="80vw">login</SButton>
|
||||||
<view class="agreement">
|
<view class="agreement">
|
||||||
<text>By clicking “Sign Up”, you agree to our</text>
|
<text>By clicking “Sign Up”, you agree to our</text>
|
||||||
<button hover-class="none" @click.stop="">user agreement</button>
|
<view hover-class="none" @click.stop="">user agreement</view>
|
||||||
<text>and</text>
|
<text>and</text>
|
||||||
<button hover-class="none" @click.stop="">privacy policy</button>
|
<view hover-class="none" @click.stop="">privacy policy</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="to-sign-up">
|
<view class="to-sign-up">
|
||||||
<text>have an account? </text>
|
<text>have an account? </text>
|
||||||
<button hover-class="none" @click.stop="toSignInPage">sign in ></button>
|
<view hover-class="none" @click.stop="toSignInPage">sign in ></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@@ -70,7 +70,7 @@ const toSignInPage = () => {
|
|||||||
height: 32rpx;
|
height: 32rpx;
|
||||||
margin-right: 10rpx;
|
margin-right: 10rpx;
|
||||||
}
|
}
|
||||||
.agreement > button {
|
.agreement > view {
|
||||||
color: #333;
|
color: #333;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
margin: 0 10rpx;
|
margin: 0 10rpx;
|
||||||
@@ -83,7 +83,7 @@ const toSignInPage = () => {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: 100rpx;
|
margin-top: 100rpx;
|
||||||
}
|
}
|
||||||
.to-sign-up > button {
|
.to-sign-up > view {
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #287fff;
|
color: #287fff;
|
||||||
margin-left: 20rpx;
|
margin-left: 20rpx;
|
||||||
Reference in New Issue
Block a user