init
@ -0,0 +1,2 @@
|
||||
/node_modules
|
||||
/unpackage
|
@ -0,0 +1,27 @@
|
||||
<script>
|
||||
export default {
|
||||
onLaunch: function() {
|
||||
console.log('App Launch')
|
||||
},
|
||||
onShow: function() {
|
||||
console.log('App Show')
|
||||
},
|
||||
onHide: function() {
|
||||
console.log('App Hide')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/* 引入的uview-ui的index.scss放第一行引入 */
|
||||
@import "uview-ui/index.scss";
|
||||
/*每个页面公共css */
|
||||
page{
|
||||
color: #fff;
|
||||
font-size: 28rpx;
|
||||
// background: url('@/static/image/home/bg.png') no-repeat;
|
||||
// background-size: 100% 100%;
|
||||
// background-attachment:fixed;
|
||||
// height: 100vh;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,98 @@
|
||||
/**
|
||||
* 通用消息框
|
||||
* @param content string 消息内容
|
||||
* @param fn function 回调
|
||||
*
|
||||
*/
|
||||
const msgToast = (content,fn,type='none') => {
|
||||
uni.showToast({
|
||||
title: content,
|
||||
duration: 2000,
|
||||
icon: type,
|
||||
success: fn ? ()=>{
|
||||
setTimeout(() => {
|
||||
fn()
|
||||
},1500)
|
||||
} : function() {}
|
||||
});
|
||||
}
|
||||
|
||||
/* 手机号验证 */
|
||||
const vefTel = (key) => {
|
||||
let reg_tel = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/
|
||||
///^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[3-8]{1})|(18[0-9]{1})|(19[0-9]{1})|(14[5-7]{1}))+\d{8})$/; // 11位手机号
|
||||
if (key === '' || key === undefined || key === null) {
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
duration: 2000,
|
||||
icon: 'none'
|
||||
});
|
||||
return false
|
||||
} else if (!reg_tel.test(key)) {
|
||||
|
||||
uni.showToast({
|
||||
title: '手机号码格式不正确',
|
||||
duration: 2000,
|
||||
icon: 'none'
|
||||
});
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
/* 非空验证 */
|
||||
const vefEmpty = (key,msg) => {
|
||||
if (key === '' || key === undefined || key === null) {
|
||||
uni.showToast({
|
||||
title: msg,
|
||||
duration: 2000,
|
||||
icon: 'none'
|
||||
});
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
const logout = () => {
|
||||
msgToast('登录已过期,请重新登录',()=> {
|
||||
uni.removeStorageSync('userInfo');
|
||||
uni.reLaunch({
|
||||
url: '../login/login'
|
||||
})
|
||||
})
|
||||
}
|
||||
/**
|
||||
* @description: H5 App通用方案 解决H5刷新返回失败问题
|
||||
* @param {*} params
|
||||
*/
|
||||
const navigateBack = (params) => {
|
||||
const pages = getCurrentPages()
|
||||
if (pages.length === 1) {
|
||||
if (typeof params === 'number') {
|
||||
history.go(-params)
|
||||
} else {
|
||||
history.back()
|
||||
}
|
||||
} else {
|
||||
uni.navigateBack()
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @description: 获取url参数
|
||||
* @param {*} params
|
||||
*/
|
||||
const getLocationParams = (name) => {
|
||||
const pages = getCurrentPages()
|
||||
const curPage = pages[pages.length-1];
|
||||
return name? curPage.options[name]:curPage.options;
|
||||
}
|
||||
export default {
|
||||
msgToast,
|
||||
vefTel,
|
||||
vefEmpty,
|
||||
logout,
|
||||
navigateBack,
|
||||
getLocationParams
|
||||
}
|
@ -0,0 +1,167 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="status_bar">
|
||||
<!-- 这里是状态栏 -->
|
||||
</view>
|
||||
<view style="height: 110upx">
|
||||
<u-sticky offset-top="0" v-if="stickyShow">
|
||||
<u-navbar
|
||||
:is-back="false"
|
||||
:title="navTitle"
|
||||
:bgColor="background"
|
||||
:titleStyle="titleStyle"
|
||||
:color="color"
|
||||
>
|
||||
<view slot="left">
|
||||
<text
|
||||
v-if="isBack"
|
||||
@click="navigateBack"
|
||||
class="back"
|
||||
:style="{ backgroundColor: `${this._props.backBackGroundColor}` }"
|
||||
>{{ $t("navbar.back") }}</text
|
||||
>
|
||||
<text v-else></text>
|
||||
</view>
|
||||
</u-navbar>
|
||||
</u-sticky>
|
||||
<u-navbar
|
||||
:is-back="false"
|
||||
:title="navTitle"
|
||||
:bgColor="background1"
|
||||
:titleStyle="titleStyle"
|
||||
>
|
||||
<view slot="left">
|
||||
<text
|
||||
v-if="isBack"
|
||||
@click="navigateBack"
|
||||
class="back"
|
||||
:style="{ backgroundColor: `${this._props.backBackGroundColor}` }"
|
||||
>{{ $t("navbar.back") }}</text
|
||||
>
|
||||
<text v-else></text>
|
||||
</view>
|
||||
<view slot="center" v-if="hasLogo">
|
||||
<image
|
||||
style="width: 202upx; height: 60upx"
|
||||
src="../../static/image/home/fontree.png"
|
||||
></image>
|
||||
</view>
|
||||
<view slot="right" v-if="hasRight" @click="clickRight">
|
||||
<image
|
||||
style="width: 80upx; height: 34upx"
|
||||
src="../../static/image/mine/feedback.png"
|
||||
></image>
|
||||
</view>
|
||||
</u-navbar>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "navBar",
|
||||
props: {
|
||||
isBack: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
navTitle: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
stickyShow: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
backToUrl: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
isSwitchTab: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
hasLogo: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
hasRight: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
color: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
backBackGroundColor: {
|
||||
type: String,
|
||||
default: "rgba(255, 255, 255)",
|
||||
},
|
||||
sfBack: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
background: "rgba(255, 255, 255)",
|
||||
background1: "transparent",
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
titleStyle() {
|
||||
return {
|
||||
color: this._props.color ?? "#fff",
|
||||
fontSize: "36upx",
|
||||
};
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
navigateBack(params) {
|
||||
const pages = getCurrentPages();
|
||||
if (this.sfBack) {
|
||||
return this.$emit("triggerSfBack");
|
||||
}
|
||||
if (this.backToUrl.length > 0) {
|
||||
if (this.isSwitchTab) {
|
||||
uni.switchTab({
|
||||
url: this.backToUrl,
|
||||
});
|
||||
} else {
|
||||
console.log("navigateTo");
|
||||
uni.navigateTo({
|
||||
url: this.backToUrl,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (pages.length === 1) {
|
||||
if (typeof params === "number") {
|
||||
history.go(-params);
|
||||
} else {
|
||||
history.back();
|
||||
}
|
||||
} else {
|
||||
uni.navigateBack();
|
||||
}
|
||||
}
|
||||
},
|
||||
clickRight() {
|
||||
this.$emit("clickRight");
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.back {
|
||||
font-size: 28upx;
|
||||
color: #ffffff;
|
||||
padding: 10rpx 32rpx;
|
||||
border-radius: 40rpx;
|
||||
}
|
||||
.status_bar {
|
||||
height: var(--status-bar-height);
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,288 @@
|
||||
<template>
|
||||
<view class="slider-verify-box" v-if="isShow">
|
||||
<view class="verifyBox">
|
||||
<view class="slider-title">{{$t('authentication.title')}}</view>
|
||||
<view class="slide-content">
|
||||
<!-- <view class="slide-tips">拖动下方滑块完成拼图</view> -->
|
||||
<view class="slider-pintu">
|
||||
<u-icon name="reload" size="32" color="#fff" class="reload" @tap="refreshVerify"></u-icon>
|
||||
<image id="pintuImg" :src="'/static/image/slider-verify/' + img + '.jpg'" class="pintu"></image>
|
||||
|
||||
<view class="pintukuai" :style="{ top: top + 'px', left: oldx + 'px' }">
|
||||
<image :src="'/static/image/slider-verify/' + img + '.jpg'"
|
||||
:style="{ top: '-' + top + 'px', left: '-' + left + 'px'}"></image>
|
||||
</view>
|
||||
|
||||
<view class="yinying" :style="{ top: top + 'px', left: left + 'px' }"></view>
|
||||
</view>
|
||||
|
||||
<view class="slider-movearea" @touchend="endTouchMove">
|
||||
<movable-area :animation="true"><movable-view :x="x" direction="horizontal"
|
||||
@change="startMove"></movable-view></movable-area>
|
||||
|
||||
<view class="huadao">{{$t('authentication.content')}}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- <view class="slider-btn-group">
|
||||
<view class="slider-btn" @tap="closeSlider">关闭</view>
|
||||
<view class="slider-btn slide-btn-refresh" @tap="refreshVerify">刷新</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'slider-verify',
|
||||
props: {
|
||||
isShow: true
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
x: 0, //初始距离
|
||||
oldx: 0, //移动的距离
|
||||
img: '1', //显示哪张图片
|
||||
left: 0, //随机拼图的最终X轴距离
|
||||
top: 0, //拼图的top距离
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
// 每次打开重新刷新拼图
|
||||
isShow(newValue, oldValue) {
|
||||
if (newValue) {
|
||||
this.refreshVerify(); //刷新
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
var that = this;
|
||||
that.refreshVerify();
|
||||
},
|
||||
methods: {
|
||||
//刷新验证
|
||||
refreshVerify() {
|
||||
var gl = Math.random().toFixed(2);
|
||||
this.left = uni.upx2px(560) * gl > uni.upx2px(280) ? uni.upx2px(280) : uni.upx2px(560) * gl + uni.upx2px(
|
||||
150); //生成随机X轴最终距离
|
||||
this.top = uni.upx2px(190) * gl; //生成随机Y轴初始距离
|
||||
|
||||
if (gl <= 0.2) {
|
||||
this.img = 1;
|
||||
}
|
||||
if (gl > 0.2 && gl <= 0.4) {
|
||||
this.img = 2;
|
||||
}
|
||||
if (gl > 0.4 && gl <= 0.6) {
|
||||
this.img = 3;
|
||||
}
|
||||
if (gl > 0.6 && gl <= 0.8) {
|
||||
this.img = 4;
|
||||
}
|
||||
if (gl > 0.8 && gl <= 1) {
|
||||
this.img = 5;
|
||||
}
|
||||
|
||||
this.resetMove(); //重置阴影位置
|
||||
},
|
||||
|
||||
/* 滑动中 */
|
||||
startMove(e) {
|
||||
this.oldx = e.detail.x;
|
||||
},
|
||||
|
||||
/* 滑动结束 */
|
||||
endTouchMove() {
|
||||
var that = this;
|
||||
|
||||
if (Math.abs(that.oldx - that.left) <= 5) {
|
||||
that.$emit('touchSliderResult', true);
|
||||
// uni.showToast({
|
||||
// title: '',
|
||||
// duration: 2500,
|
||||
// icon: 'none',
|
||||
// success() {
|
||||
//
|
||||
// }
|
||||
// });
|
||||
} else {
|
||||
that.refreshVerify();
|
||||
}
|
||||
},
|
||||
|
||||
/* 重置阴影位置 */
|
||||
resetMove() {
|
||||
this.x = 1;
|
||||
this.oldx = 1;
|
||||
setTimeout(() => {
|
||||
this.x = 0;
|
||||
this.oldx = 0;
|
||||
}, 300);
|
||||
},
|
||||
|
||||
// 关闭
|
||||
closeSlider() {
|
||||
this.$emit('touchSliderResult', false);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.slider-verify-box {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.verifyBox {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
// width: 85%;
|
||||
background-color: #fff;
|
||||
border-radius: 20upx;
|
||||
box-shadow: 0 0 5upx rgba(0, 0, 0, 1);
|
||||
|
||||
.slider-title {
|
||||
font-size: 36upx;
|
||||
text-align: center;
|
||||
padding: 12rpx 0;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.slide-content {
|
||||
width: 560rpx;
|
||||
padding: 0 1em;
|
||||
margin: 0 auto;
|
||||
|
||||
.slide-tips {
|
||||
font-size: 28rpx;
|
||||
color: rgba(2, 20, 33, 0.45);
|
||||
padding: 0.5em 0;
|
||||
}
|
||||
|
||||
.slider-pintu {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
border-radius: 10rpx;
|
||||
overflow: hidden;
|
||||
|
||||
.reload {
|
||||
position: absolute;
|
||||
right: 10rpx;
|
||||
top: 10rpx;
|
||||
z-index: 101;
|
||||
}
|
||||
|
||||
.pintu {
|
||||
width: 560rpx;
|
||||
height: 315rpx;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.pintukuai {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
z-index: 100;
|
||||
box-shadow: 0 0 5upx rgba(0, 0, 0, 0.3);
|
||||
overflow: hidden;
|
||||
|
||||
image {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 560rpx;
|
||||
height: 315rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.yinying {
|
||||
position: absolute;
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.slider-movearea {
|
||||
position: relative;
|
||||
height: 80upx;
|
||||
width: 100%;
|
||||
margin: 25upx auto;
|
||||
|
||||
movable-area {
|
||||
height: 80upx;
|
||||
width: 100%;
|
||||
|
||||
movable-view {
|
||||
width: 80upx;
|
||||
height: 80upx;
|
||||
border-radius: 50%;
|
||||
// @include slider-movearea-bg();
|
||||
background-color: #37ABEF;
|
||||
background-image: url(../../static/image/slider-verify/icon-button-normal.png);
|
||||
background-repeat: no-repeat;
|
||||
background-size: auto 30upx;
|
||||
background-position: center;
|
||||
position: relative;
|
||||
z-index: 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.huadao {
|
||||
width: 100%;
|
||||
height: 66upx;
|
||||
line-height: 66upx;
|
||||
background: #eee;
|
||||
box-shadow: inset 0 0 5upx #ccc;
|
||||
border-radius: 40rpx;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
top: 7rpx;
|
||||
left: 0;
|
||||
font-size: 28rpx;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.slider-btn-group {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-top: 1px solid rgba(2, 20, 33, 0.15);
|
||||
|
||||
.slider-btn {
|
||||
flex: 1;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
text-align: center;
|
||||
font-size: 36rpx;
|
||||
color: rgba(2, 20, 33, 0.85);
|
||||
|
||||
&:active {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
|
||||
.slide-btn-refresh {
|
||||
color: rgba(14, 107, 176, 1);
|
||||
border-left: 1px solid rgba(2, 20, 33, 0.15);
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,102 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="status_bar">
|
||||
<!-- 这里是状态栏 -->
|
||||
</view>
|
||||
<u-tabbar :value="current" @change="changeTab" :fixed="true" :placeholder="false" :safeAreaInsetBottom="true"
|
||||
:border="false" activeColor="#FFC748" inactiveColor="#1D1D1D">
|
||||
<u-tabbar-item v-for="(item,index) in tabBarList" :key="index" :text="item.text">
|
||||
<image class="u-page__item__slot-icon" slot="inactive-icon" :src="item.iconPath" ></image>
|
||||
<image class="u-page__item__slot-icon" slot="active-icon" :src="item.selectedIconPath"></image>
|
||||
</u-tabbar-item>
|
||||
</u-tabbar>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "tabBar",
|
||||
props: {
|
||||
currentPage: String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
current: 0,
|
||||
tabBarList: [{
|
||||
pagePath: "pages/index/index",
|
||||
iconPath: "../../static/image/tabbar/new_home.png",
|
||||
selectedIconPath: "../../static/image/tabbar/new_home_check.png",
|
||||
text: this.$t('tabbar.home'),
|
||||
customIcon: false,
|
||||
},
|
||||
{
|
||||
pagePath: "pages/mine/index",
|
||||
iconPath: "../../static/image/tabbar/new_mine.png",
|
||||
selectedIconPath: "../../static/image/tabbar/new_mine_check.png",
|
||||
text: this.$t('tabbar.mine'),
|
||||
customIcon: false,
|
||||
}
|
||||
]
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
changeTab(e) {
|
||||
let page = '/' + this.tabBarList[e].pagePath
|
||||
console.log(page);
|
||||
uni.switchTab({
|
||||
url: page,
|
||||
success: (res) => {
|
||||
console.log(res);
|
||||
},
|
||||
fail: (e) => {
|
||||
console.log(e);
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
//隐藏原生tabbar
|
||||
uni.hideTabBar();
|
||||
/* this.tabBarList = [{
|
||||
pagePath: "pages/index/index",
|
||||
iconPath: "../../static/image/tabbar/home.png",
|
||||
selectedIconPath: "../../static/image/tabbar/home_check.png",
|
||||
text: this.$t('tabbar.home'),
|
||||
customIcon: false,
|
||||
},{
|
||||
pagePath: "pages/mine/index",
|
||||
iconPath: "../../static/image/tabbar/mine.png",
|
||||
selectedIconPath: "../../static/image/tabbar/mine_check.png",
|
||||
text: this.$t('tabbar.mine'),
|
||||
customIcon: false,
|
||||
}]; */
|
||||
// 当前选中的菜单
|
||||
this.tabBarList.forEach((i, index) => {
|
||||
if (i.pagePath == this.currentPage) {
|
||||
this.current = index
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.status_bar {
|
||||
height: var(--status-bar-height);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.u-page__item__slot-icon {
|
||||
width: 76rpx;
|
||||
height: 76rpx;
|
||||
|
||||
}
|
||||
|
||||
.u-tabbar /deep/ .u-tabbar--fixed {
|
||||
width: 100%;
|
||||
height: 88rpx;
|
||||
padding: 20px 0;
|
||||
background: #FFFFFF;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,103 @@
|
||||
<template>
|
||||
<view>
|
||||
<u-transition :show="show" mode="fade-down">
|
||||
<view>
|
||||
<image src="@/static/image/home/line.png" mode="" class="line"></image>
|
||||
<image src="@/static/image/home/flower.png" mode="" class="flower"></image>
|
||||
</view>
|
||||
<view class="text">正在跳转至首页</view>
|
||||
</u-transition>
|
||||
<u-transition :show="showTxt" mode="fade-down">
|
||||
|
||||
<view class="title-one">- - -验证成功欢迎来到- - -</view>
|
||||
<image class="img" src="@/static/image/home/fonchain.png"></image>
|
||||
<image class="logo" src="@/static/image/home/logo.png"></image>
|
||||
</u-transition>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
showTxt:false
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
setTimeout(() => {
|
||||
this.show = true;
|
||||
}, 400);
|
||||
setTimeout(() => {
|
||||
this.showTxt = true;
|
||||
}, 500);
|
||||
setTimeout(() => {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}, 2000);
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: url('@/static/image/home/welcomeBg.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-attachment: fixed;
|
||||
height: 100vh;
|
||||
// border: 1px solid red;
|
||||
}
|
||||
.line {
|
||||
width: 2rpx;
|
||||
height: 164rpx;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 0;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.flower {
|
||||
width: 43rpx;
|
||||
height: 43rpx;
|
||||
position: absolute;
|
||||
left: 47%;
|
||||
top: 167rpx;
|
||||
// transform: translateX(-50%);
|
||||
animation: fadenum 1s infinite;
|
||||
}
|
||||
.text {
|
||||
position: absolute;
|
||||
left: 37%;
|
||||
top: 227rpx;
|
||||
|
||||
}
|
||||
.title-one{
|
||||
color: #558BF2;
|
||||
position: absolute;
|
||||
font-size: 33upx;
|
||||
left: 26%;
|
||||
top: 600rpx;
|
||||
}
|
||||
.img{
|
||||
width: 500upx;
|
||||
height: 80upx;
|
||||
position: absolute;
|
||||
left: 16%;
|
||||
top: 650rpx;
|
||||
}
|
||||
.logo{
|
||||
width: 200upx;
|
||||
height: 55upx;
|
||||
position: absolute;
|
||||
left: 36%;
|
||||
bottom: 20rpx;
|
||||
}
|
||||
@keyframes fadenum {
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,67 @@
|
||||
import http from './interface'
|
||||
|
||||
// 个人空投列表
|
||||
export const collectionList = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/push/msgList',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 个人领取空投
|
||||
export const getCollection = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/push/getCollection',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 个人具体空投展示
|
||||
export const collectionSepcific = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/push/collectionSepcific',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 个人领取空投2
|
||||
export const getCollectionStepTwo = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/payment/give',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 个人未点击空投和公告数量
|
||||
export const checkPoint = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/push/unreadNum',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 个人阅读公告
|
||||
export const readMsg = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/push/announcementSepcific',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 直接领取
|
||||
export const directGet = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/collections/redirect/receive',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
export default {
|
||||
collectionList,
|
||||
getCollection,
|
||||
collectionSepcific,
|
||||
getCollectionStepTwo,
|
||||
readMsg,
|
||||
checkPoint,
|
||||
directGet
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
import http from './interface'
|
||||
|
||||
import login from './login'
|
||||
import mine from './mine'
|
||||
import series from './series'
|
||||
import airdrop from './airdrop'
|
||||
export default {
|
||||
login,
|
||||
mine,
|
||||
series,
|
||||
airdrop
|
||||
}
|
||||
|
@ -0,0 +1,51 @@
|
||||
import http from './interface'
|
||||
|
||||
// 登录
|
||||
export const login = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/login',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 验证码
|
||||
export const sendCode = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/login/send',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 再次发送新号码验证码
|
||||
export const sendNewCode = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/phone/send/token',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 确认新手机号
|
||||
export const confirmNew = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/phone/update',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
export const getOpenId = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/openid',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default {
|
||||
login,
|
||||
sendCode,
|
||||
sendNewCode,
|
||||
confirmNew,
|
||||
getOpenId
|
||||
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
import http from './interface'
|
||||
|
||||
// 更改信息
|
||||
export const update = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/my/update',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取信息
|
||||
export const getInfo = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/my/info',
|
||||
method: 'GET',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 发送老手机号验证码
|
||||
export const mineCode = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/send',
|
||||
method: 'GET',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 验证老手机号验证码
|
||||
export const verifyCode = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/phone/send',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 验证操作密码
|
||||
export const verifyPwd = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/user/my/pwd/check',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 反馈
|
||||
export const feedBack = (data) => {
|
||||
return http.request({
|
||||
url: '/mall/feedback/create',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 我的艺术品列表
|
||||
export const paymentList= (data) => {
|
||||
return http.request({
|
||||
url: '/mall/payment/list',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 艺术品详情
|
||||
export const paymentDetail= (data) => {
|
||||
return http.request({
|
||||
url: '/mall/payment/detail',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 申请快递
|
||||
export const paymentApproval= (data) => {
|
||||
return http.request({
|
||||
url: '/mall/payment/material/approval',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取证书
|
||||
export const certDetail= (data) => {
|
||||
return http.request({
|
||||
url: '/mall/cert/detail',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export const logout =(data) => {
|
||||
return http.request({
|
||||
url:'/mall/user/my/delete',
|
||||
method:'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
export default {
|
||||
update,
|
||||
getInfo,
|
||||
mineCode,
|
||||
verifyCode,
|
||||
verifyPwd,
|
||||
feedBack,
|
||||
paymentList,
|
||||
paymentDetail,
|
||||
paymentApproval,
|
||||
certDetail,
|
||||
logout
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
import http from "./interface";
|
||||
|
||||
// 系列列表
|
||||
export const list = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/series/series-list",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
// 藏品列表
|
||||
export const collectionsList = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/collections/list",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
// 藏品详情
|
||||
export const collectionsInfo = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/collections/detail",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
// 购买
|
||||
export const buy = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/payment/create",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
// 生成二维码
|
||||
export const createQrcode = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/payment/offline/create",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
// 获取二维码信息
|
||||
export const getQrcodeInfo = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/payment/info",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
// 确认支付
|
||||
export const confirmPay = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/payment/seller/sure",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
// 取消支付
|
||||
export const cancelPay = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/payment/seller/cancel",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
|
||||
//判断是否领取该藏品
|
||||
export const userHaveDropNo = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/push/userHaveDropNo",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
export const collectionsDetail = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/collections/receive/info",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
export const collectionsReceive = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/collections/receive",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
export const collectionsBuy = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/collections/wx/buy",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
export const getSeriesData = (data) => {
|
||||
return http.request({
|
||||
url: "/mall/series/series-detail",
|
||||
method: "POST",
|
||||
data,
|
||||
});
|
||||
};
|
||||
export default {
|
||||
list,
|
||||
collectionsList,
|
||||
collectionsInfo,
|
||||
buy,
|
||||
createQrcode,
|
||||
getQrcodeInfo,
|
||||
confirmPay,
|
||||
cancelPay,
|
||||
userHaveDropNo,
|
||||
collectionsDetail,
|
||||
collectionsReceive,
|
||||
collectionsBuy,
|
||||
getSeriesData
|
||||
};
|
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script>
|
||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||
CSS.supports('top: constant(a)'))
|
||||
document.write(
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script>
|
||||
<title></title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"><!--app-html--></div>
|
||||
<script type="module" src="/main.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,190 @@
|
||||
{
|
||||
"app.name": "fontree",
|
||||
"tabbar.home": "Home",
|
||||
"tabbar.mine": "Mine",
|
||||
"index.title": "Home",
|
||||
"locale.auto": "System",
|
||||
"locale.en": "English",
|
||||
"locale.zh-hans": "简体中文",
|
||||
"locale.zh-hant": "繁体中文",
|
||||
"api-header": "en",
|
||||
"index.language-change-confirm": "Applying this setting will restart the app",
|
||||
"navbar.back": "Back",
|
||||
"login.title": "Login Registration",
|
||||
"login.input": "Enter your phone number",
|
||||
"login.agree": "Have read and agreed",
|
||||
"login.service": "《Service Agreements》",
|
||||
"login.privacy": "《Privacy Policy》",
|
||||
"login.registration": "《Registration Protocol》",
|
||||
"login.btn": "Send Verification Code",
|
||||
"login.mess": "Please read and tick the agreement",
|
||||
"authentication.title": "Security Verification",
|
||||
"authentication.content": "Drag the slider to fill the puzzle",
|
||||
"sendCode.title": "Enter Verification Code",
|
||||
"sendCode.send": "Already sent to",
|
||||
"sendCode.login": "Login",
|
||||
"sendCode.update": "Update",
|
||||
"sendCode.loading": "Getting verification code",
|
||||
"sendCode.toast": "Send after the countdown",
|
||||
"login.success": "Login successful",
|
||||
"login.error": "Login failed",
|
||||
"sendCode.updateSuccess": "Update successfully,please login again",
|
||||
"sendCode.updateError": "Update failed",
|
||||
"sendCode": "Verification code has been sent",
|
||||
"welcome.toHome": "Jumping to Home",
|
||||
"welcome.title": "Verification success Welcome to",
|
||||
"collection.info": "Colletion Information",
|
||||
"collection.buy": "Buy",
|
||||
"collection.name": "Collection Name",
|
||||
"collection.type": "Collection Type",
|
||||
"collection.size": "Collection Size ",
|
||||
"collection.specs": "Collection Specification",
|
||||
"collection.address": "Collection Origin",
|
||||
"collection.intro": "Collection Introduction",
|
||||
"collection.detail": "Collection Details",
|
||||
"collection.sell": "Collection Selling Point",
|
||||
"collection.sellDec": "Collection Details",
|
||||
"collection.company": "Technology Introduction ",
|
||||
"collection.copyight": "Copyright Notice",
|
||||
"collection.blockchain": "Blockchain Description",
|
||||
"buyVerfy.title": "Real name verification is required to purchase goods",
|
||||
"buyVerfy.username": "Real Name",
|
||||
"buyVerfy.idNum": "ID Number",
|
||||
"buyVerfy.suss": "Authenticates effectively",
|
||||
"buyVerfy.error": "Invalid authentication",
|
||||
"buyVerfy.done": "Complete",
|
||||
"buyVerfy.noGift": "Sell Out",
|
||||
"buyVerfy.cancel": "Cancel",
|
||||
"login.pls": "Please login first",
|
||||
"alipay.payment": "Alipay Payment",
|
||||
"comfirm.num1": "",
|
||||
"comfirm.num2": "piece",
|
||||
"comfirm.total": "Total",
|
||||
"comfirm.pay": "Confirm Payment",
|
||||
"comfirm.copy": "Copy order verification code",
|
||||
"payment.back": "Back to home",
|
||||
"payment.cancel": "Cancel Payment",
|
||||
"payment.check": "View Details",
|
||||
"payment.success": "Payment Successful",
|
||||
"payment.cancelSuccess": "Payment Cancelled",
|
||||
"payment.failed": "Payment Failed",
|
||||
"payInfo.title": "Check order",
|
||||
"payInfo.subtxt1": "Verifying the user",
|
||||
"payInfo.subtxt2": "order information",
|
||||
"payInfo.confirmDate": "verification date",
|
||||
"payInfo.buyerName": "Buyer Nickname",
|
||||
"payInfo.artworkName": "product name",
|
||||
"payInfo.orderPrice": "order amount",
|
||||
"payInfo.payTypeName": "payment method",
|
||||
"payInfo.payImages": "payment voucher",
|
||||
"payInfo.typePrice": "enter payment method",
|
||||
"payInfo.salesperson": "Please contact the salesperson to verify the consumption information offline",
|
||||
"payInfo.waitConfirm": "Wait for the salesperson to confirm",
|
||||
"payInfo.copyCode": "Enter order verification code",
|
||||
"mine.language": "language",
|
||||
"mine.message": "news",
|
||||
"mine.setting": "seting",
|
||||
"mine.scan": "Scanning code",
|
||||
"mine.blockchain": "blockchain",
|
||||
"mine.artwork": "My Collection",
|
||||
"mine.noData": "No collection",
|
||||
"mine.updateLang": "Change Language",
|
||||
"updateLang.done": "Used",
|
||||
"updateLang.change": "Change",
|
||||
"password.title": "Unlock more functions with operation password",
|
||||
"password.set": "set operation password ",
|
||||
"password.name": "user",
|
||||
"password.input": "Enter the password",
|
||||
"password.com": "Confirm the password",
|
||||
"password.get": "Use the password",
|
||||
"password.step": "Next",
|
||||
"password": "Operation Password",
|
||||
"password.vername": "Information on user",
|
||||
"password.username": "'s identity being verified",
|
||||
"comfrim": "Confirm",
|
||||
"password.inputPass": "Please enter the password",
|
||||
"password.messError": "Please confirm two passwords are consistent",
|
||||
"password.setSucc": "Set successfully",
|
||||
"password.setError": "Set failed",
|
||||
"password.verSucc": "Validation successful",
|
||||
"password.verError": "Validation failed",
|
||||
"avatar.def": "Restore default avatar",
|
||||
"avatar.update": "Change the avator",
|
||||
"userInfo.name": "Nickname",
|
||||
"userInfo.updateName": "Change",
|
||||
"userInfo.createTime": "Registration Date",
|
||||
"userInfo.idNum": "ID Number",
|
||||
"userInfo.phone": "Contact Number",
|
||||
"phone.update": "Change",
|
||||
"phone.verInfo": "After certification you can change binding",
|
||||
"user.realName": "Real Name",
|
||||
"user.verfy": "Real Name Authentication",
|
||||
"user.username": "Name",
|
||||
"user.verDone": "Authenticated",
|
||||
"user.idNum": "ID card",
|
||||
"account.logout": "Account Cancellation",
|
||||
"account.signOut": "Log Out",
|
||||
"set.name": "Set Nickname",
|
||||
"set.input": "Please enter content",
|
||||
"problem.feedback": "Problem Feedback",
|
||||
"logout.info": "Are you sure you want to cancel the account?",
|
||||
"logout.btn": "deregister",
|
||||
"signout.info": "Are you sure to log out?",
|
||||
"realname.conduct": "Carry On The Certification",
|
||||
"save.update": "Save Change",
|
||||
"airdrop": "Airdrop",
|
||||
"announcement": "Announcement",
|
||||
"read": "Read",
|
||||
"to.accept": "Accept",
|
||||
"close": "Close",
|
||||
"basic.info": "Basic Information",
|
||||
"series.name": "Series Name",
|
||||
"series.issuer": "Issuer",
|
||||
"series.time": "Transaction Date",
|
||||
"series.price": "Transaction Price",
|
||||
"series.hash": "HASH",
|
||||
"series.No": "Number",
|
||||
"phone.old": "Original phone number",
|
||||
"phone.code": "Verification code",
|
||||
"update.phone.title": "Change of mobile number requires verification of original mobile number",
|
||||
"phone.new": "New phone number",
|
||||
"input.phoneCode": "Please fill in the verification code and new phone number",
|
||||
"apply.logistics": "Apply For Logistics",
|
||||
"logistics.info": "Logistics Information ",
|
||||
"telephone": "Enquiries",
|
||||
"consignee.name": "Consignee Name",
|
||||
"consignee.address": "Consignee Address",
|
||||
"consignee.phone": "Contact Number",
|
||||
"release.info": "Release Information",
|
||||
"release.time": "Release Date",
|
||||
"brand.side": "Brand Side",
|
||||
"circulation.info": "Circulation Information",
|
||||
"possessor": "Holder",
|
||||
"collection.status": "Collection Status",
|
||||
"in.library": "In our warehouse",
|
||||
"been.applied": "Logistics has been applied",
|
||||
"circulation.type": "Circulation Type",
|
||||
"on.line": "On line",
|
||||
"circulation.time": "Circulation Time",
|
||||
"transaction.hash": "Transaction Hash",
|
||||
"apply.tips": "Please consider carefully once the aapplication is irrevocable!",
|
||||
"input.address": "Please Fill In The Address",
|
||||
"input.pla": "Please enter",
|
||||
"apply.btn": "Apply",
|
||||
"error.consignee.name": "Please enter the name of the consignee",
|
||||
"error.consignee.phone": "Please enter the phone number ",
|
||||
"error.consignee.address": "Please enter the consignee address",
|
||||
"apply.succes": "Successful aapplication",
|
||||
"apply.error": "Application failed ",
|
||||
"load.failed": "Load failed",
|
||||
"update.succes": "Modified Successfully",
|
||||
"code.actPass": "Please enter the operation password and verification code",
|
||||
"code.start": "Get the code",
|
||||
"code.change": "X s to reacquire",
|
||||
"code.end": "Retrieve",
|
||||
"error.phone": "The mobile phone number entered is incorrect",
|
||||
"pick.up": "Pick up",
|
||||
"letter.you": "A Letter To You",
|
||||
"letter.all": "A Letter To All Staff"
|
||||
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
{
|
||||
"common": {
|
||||
"uni.app.quit": "再按一次退出应用",
|
||||
"uni.async.error": "连接服务器超时,点击屏幕重试",
|
||||
"uni.showActionSheet.cancel": "取消",
|
||||
"uni.showToast.unpaired": "请注意 showToast 与 hideToast 必须配对使用",
|
||||
"uni.showLoading.unpaired": "请注意 showLoading 与 hideLoading 必须配对使用",
|
||||
"uni.showModal.cancel": "取消",
|
||||
"uni.showModal.confirm": "确定",
|
||||
"uni.chooseImage.cancel": "取消",
|
||||
"uni.chooseImage.sourceType.album": "从相册选择",
|
||||
"uni.chooseImage.sourceType.camera": "拍摄",
|
||||
"uni.chooseVideo.cancel": "取消",
|
||||
"uni.chooseVideo.sourceType.album": "从相册选择",
|
||||
"uni.chooseVideo.sourceType.camera": "拍摄",
|
||||
"uni.previewImage.cancel": "取消",
|
||||
"uni.previewImage.button.save": "保存图像",
|
||||
"uni.previewImage.save.success": "保存图像到相册成功",
|
||||
"uni.previewImage.save.fail": "保存图像到相册失败",
|
||||
"uni.setClipboardData.success": "内容已复制",
|
||||
"uni.scanCode.title": "扫码",
|
||||
"uni.scanCode.album": "相册",
|
||||
"uni.scanCode.fail": "识别失败",
|
||||
"uni.scanCode.flash.on": "轻触照亮",
|
||||
"uni.scanCode.flash.off": "轻触关闭",
|
||||
"uni.startSoterAuthentication.authContent": "指纹识别中...",
|
||||
"uni.picker.done": "完成",
|
||||
"uni.picker.cancel": "取消",
|
||||
"uni.video.danmu": "弹幕",
|
||||
"uni.video.volume": "音量",
|
||||
"uni.button.feedback.title": "问题反馈",
|
||||
"uni.button.feedback.send": "发送"
|
||||
},
|
||||
"ios": {},
|
||||
"android": {}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
{
|
||||
"common": {
|
||||
"uni.app.quit": "再按一次退出应用",
|
||||
"uni.async.error": "连接服务器超时,点击屏幕重试",
|
||||
"uni.showActionSheet.cancel": "取消",
|
||||
"uni.showToast.unpaired": "请注意 showToast 与 hideToast 必须配对使用",
|
||||
"uni.showLoading.unpaired": "请注意 showLoading 与 hideLoading 必须配对使用",
|
||||
"uni.showModal.cancel": "取消",
|
||||
"uni.showModal.confirm": "确定",
|
||||
"uni.chooseImage.cancel": "取消",
|
||||
"uni.chooseImage.sourceType.album": "从相册选择",
|
||||
"uni.chooseImage.sourceType.camera": "拍摄",
|
||||
"uni.chooseVideo.cancel": "取消",
|
||||
"uni.chooseVideo.sourceType.album": "从相册选择",
|
||||
"uni.chooseVideo.sourceType.camera": "拍摄",
|
||||
"uni.previewImage.cancel": "取消",
|
||||
"uni.previewImage.button.save": "保存图像",
|
||||
"uni.previewImage.save.success": "保存图像到相册成功",
|
||||
"uni.previewImage.save.fail": "保存图像到相册失败",
|
||||
"uni.setClipboardData.success": "内容已复制",
|
||||
"uni.scanCode.title": "扫码",
|
||||
"uni.scanCode.album": "相册",
|
||||
"uni.scanCode.fail": "识别失败",
|
||||
"uni.scanCode.flash.on": "轻触照亮",
|
||||
"uni.scanCode.flash.off": "轻触关闭",
|
||||
"uni.startSoterAuthentication.authContent": "指纹识别中...",
|
||||
"uni.picker.done": "完成",
|
||||
"uni.picker.cancel": "取消",
|
||||
"uni.video.danmu": "弹幕",
|
||||
"uni.video.volume": "音量",
|
||||
"uni.button.feedback.title": "问题反馈",
|
||||
"uni.button.feedback.send": "发送"
|
||||
},
|
||||
"ios": {},
|
||||
"android": {}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
{
|
||||
"common": {
|
||||
"uni.app.quit": "再按一次退出应用",
|
||||
"uni.async.error": "连接服务器超时,点击屏幕重试",
|
||||
"uni.showActionSheet.cancel": "取消",
|
||||
"uni.showToast.unpaired": "请注意 showToast 与 hideToast 必须配对使用",
|
||||
"uni.showLoading.unpaired": "请注意 showLoading 与 hideLoading 必须配对使用",
|
||||
"uni.showModal.cancel": "取消",
|
||||
"uni.showModal.confirm": "确定",
|
||||
"uni.chooseImage.cancel": "取消",
|
||||
"uni.chooseImage.sourceType.album": "从相册选择",
|
||||
"uni.chooseImage.sourceType.camera": "拍摄",
|
||||
"uni.chooseVideo.cancel": "取消",
|
||||
"uni.chooseVideo.sourceType.album": "从相册选择",
|
||||
"uni.chooseVideo.sourceType.camera": "拍摄",
|
||||
"uni.previewImage.cancel": "取消",
|
||||
"uni.previewImage.button.save": "保存图像",
|
||||
"uni.previewImage.save.success": "保存图像到相册成功",
|
||||
"uni.previewImage.save.fail": "保存图像到相册失败",
|
||||
"uni.setClipboardData.success": "内容已复制",
|
||||
"uni.scanCode.title": "扫码",
|
||||
"uni.scanCode.album": "相册",
|
||||
"uni.scanCode.fail": "识别失败",
|
||||
"uni.scanCode.flash.on": "轻触照亮",
|
||||
"uni.scanCode.flash.off": "轻触关闭",
|
||||
"uni.startSoterAuthentication.authContent": "指纹识别中...",
|
||||
"uni.picker.done": "完成",
|
||||
"uni.picker.cancel": "取消",
|
||||
"uni.video.danmu": "弹幕",
|
||||
"uni.video.volume": "音量",
|
||||
"uni.button.feedback.title": "问题反馈",
|
||||
"uni.button.feedback.send": "发送"
|
||||
},
|
||||
"ios": {},
|
||||
"android": {}
|
||||
}
|
@ -0,0 +1,193 @@
|
||||
{
|
||||
"app.name": "丰链艺树",
|
||||
"tabbar.home": "首页",
|
||||
"tabbar.mine": "我的",
|
||||
"index.title": "首页",
|
||||
"locale.auto": "系统",
|
||||
"locale.en": "English",
|
||||
"locale.zh-hans": "简体中文",
|
||||
"locale.zh-hant": "繁体中文",
|
||||
"api-header": "zh-CN",
|
||||
"index.language-change-confirm": "应用此设置将重启App",
|
||||
"navbar.back": "返回",
|
||||
"login.title": "登录/注册",
|
||||
"login.input": "在此输入手机号",
|
||||
"login.agree": "已阅读并同意",
|
||||
"login.service": "《平台服务协议》",
|
||||
"login.privacy": "《隐私权政策》",
|
||||
"login.registration": "《平台注册相关协议》",
|
||||
"login.btn": "发送验证码",
|
||||
"login.mess": "请阅读并勾选协议",
|
||||
"authentication.title": "安全验证",
|
||||
"authentication.content": "拖动滑块填充拼图",
|
||||
"sendCode.title": "输入验证码",
|
||||
"sendCode.send": "已发送到",
|
||||
"sendCode.login": "登录",
|
||||
"sendCode.update": "确认修改",
|
||||
"sendCode.loading": "正在获取验证码",
|
||||
"sendCode.toast": "倒计时结束后再发送",
|
||||
"login.success": "登录成功",
|
||||
"login.error": "登录失败",
|
||||
"sendCode.updateSuccess": "修改成功,请重新登录",
|
||||
"sendCode.updateError": "修改失败",
|
||||
"sendCode": "验证码已发送",
|
||||
"welcome.toHome": "正在跳转至首页",
|
||||
"welcome.title": "验证成功欢迎来到",
|
||||
"collection.info": "藏品信息",
|
||||
"collection.buy": "购买",
|
||||
"collection.name": "藏品名称",
|
||||
"collection.type": "藏品类型",
|
||||
"collection.size": "藏品尺寸",
|
||||
"collection.specs": "藏品规格",
|
||||
"collection.address": "藏品产地",
|
||||
"collection.intro": "藏品介绍",
|
||||
"collection.detail": "藏品详情",
|
||||
"collection.sell": "藏品卖点",
|
||||
"collection.sellDec": "藏品细节",
|
||||
"collection.company": "工艺介绍",
|
||||
"collection.copyight": "版权声明",
|
||||
"collection.blockchain": "区块链说明",
|
||||
"buyVerfy.title": "购买商品需要进行实名认证",
|
||||
"buyVerfy.username": "真实姓名",
|
||||
"buyVerfy.idNum": "身份证号",
|
||||
"buyVerfy.suss": "实名认证有效",
|
||||
"buyVerfy.error": "实名认证无效",
|
||||
"buyVerfy.done": "完成",
|
||||
"buyVerfy.cancel": "取消",
|
||||
"buyVerfy.noGift": "售罄",
|
||||
"login.pls": "请先登录",
|
||||
"alipay.payment": "支付宝支付",
|
||||
"comfirm.num1": "共",
|
||||
"comfirm.num2": "件",
|
||||
"comfirm.total": "合计",
|
||||
"comfirm.pay": "生成核验二维码",
|
||||
"confirm.payment":"去确认支付",
|
||||
"comfirm.copy": "复制订单验证码",
|
||||
"payment.back": "返回首页",
|
||||
"payment.cancel": "取消交易",
|
||||
"payment.check": "查看详情",
|
||||
"payment.confirmSuccess": "交易成功",
|
||||
"payment.cancelSuccess": "交易取消",
|
||||
"payment.failed": "交易失败",
|
||||
"payInfo.title": "核对订单",
|
||||
"payInfo.subtxt1": "正在验证用户",
|
||||
"payInfo.subtxt2": "的订单信息",
|
||||
"payInfo.confirmDate": "核验日期",
|
||||
"payInfo.buyerName": "买家昵称",
|
||||
"payInfo.artworkName": "商品名称",
|
||||
"payInfo.orderPrice": "订单金额",
|
||||
"payInfo.payTypeName": "支付方式",
|
||||
"payInfo.payImages": "支付凭证",
|
||||
"payInfo.typePrice": "输入支付方式",
|
||||
"payInfo.salesperson": "请联系工作人员核实消费信息",
|
||||
"payInfo.waitConfirm": "等待销售员确认",
|
||||
"payInfo.copyCode": "输入订单验证码",
|
||||
"mine.language": "语言",
|
||||
"mine.message": "消息",
|
||||
"mine.setting": "设置",
|
||||
"mine.scan": "扫码",
|
||||
"mine.blockchain": "区块链",
|
||||
"mine.artwork": "我的藏品",
|
||||
"mine.noData": "暂无藏品",
|
||||
"mine.updateLang": "更换语言",
|
||||
"updateLang.done": "当前使用",
|
||||
"updateLang.change": "更换",
|
||||
"password.title": "使用操作密码解锁更多功能",
|
||||
"password.set": "设置操作密码",
|
||||
"password.name": "请用户",
|
||||
"password.input": "输入操作密码",
|
||||
"password.com": "确认操作密码",
|
||||
"password.get": "使用操作密码",
|
||||
"password.step": "下一步",
|
||||
"password": "操作密码",
|
||||
"password.vername": "正在验证用户",
|
||||
"password.username": "身份信息",
|
||||
"comfrim": "确认",
|
||||
"password.inputPass": "请输入操作密码",
|
||||
"password.messError": "请确认两次输入的操作密码相同",
|
||||
"password.setSucc": "设置成功",
|
||||
"password.setError": "设置失败",
|
||||
"password.verSucc": "验证成功",
|
||||
"password.verError": "验证失败",
|
||||
"avatar.def": "恢复默认头像",
|
||||
"avatar.update": "更换头像",
|
||||
"userInfo.name": "昵称",
|
||||
"userInfo.updateName": "修改昵称",
|
||||
"userInfo.createTime": "注册日期",
|
||||
"userInfo.idNum": "ID号码",
|
||||
"userInfo.phone": "联系电话",
|
||||
"phone.update": "换绑",
|
||||
"phone.verInfo": "完成实名认证后才可以换绑手机",
|
||||
"user.realName": "实名",
|
||||
"user.verfy": "实名认证",
|
||||
"user.username": "姓名",
|
||||
"user.verDone": "已认证",
|
||||
"user.idNum": "身份证",
|
||||
"account.logout": "注销账号",
|
||||
"account.signOut": "退出登录",
|
||||
"set.name": "设置昵称",
|
||||
"set.input": "请输入内容",
|
||||
"problem.feedback": "问题反馈",
|
||||
"logout.info": "是否确认要注销该账号",
|
||||
"logout.btn": "注销",
|
||||
"signout.info": "是否确认退出登录",
|
||||
"realname.conduct": "进行实名认证",
|
||||
"save.update": "保存修改",
|
||||
"airdrop": "空投",
|
||||
"announcement": "公告",
|
||||
"read": "阅读",
|
||||
"to.accept": "收下",
|
||||
"close": "关闭",
|
||||
"basic.info": "基础信息",
|
||||
"series.name": "系列名称",
|
||||
"series.issuer": "发行方",
|
||||
"series.time": "交易日期",
|
||||
"series.price": "交易价格",
|
||||
"series.hash": "HASH值",
|
||||
"series.No": "编号",
|
||||
"phone.old": "原手机号",
|
||||
"phone.code": "验证码",
|
||||
"update.phone.title": "换绑手机号码需要原手机号验证",
|
||||
"phone.new": "新手机号",
|
||||
"input.phoneCode": "请填写验证码和新手机号",
|
||||
"apply.logistics": "申请物流",
|
||||
"logistics.info": "物流信息",
|
||||
"telephone": "咨询电话",
|
||||
"consignee.name": "收货人姓名",
|
||||
"consignee.address": "收货地址",
|
||||
"consignee.phone": "联系电话",
|
||||
"release.info": "发行信息",
|
||||
"release.time": "发行时间",
|
||||
"brand.side": "品牌方",
|
||||
"circulation.info": "流转信息",
|
||||
"possessor": "持有人",
|
||||
"collection.status": "藏品状态",
|
||||
"in.library": "在库",
|
||||
"been.applied": "已申请物流",
|
||||
"circulation.type": "流转类型",
|
||||
"on.line": "在线",
|
||||
"circulation.time": "流转时间",
|
||||
"transaction.hash": "交易哈希",
|
||||
"apply.tips": "一旦申请,不可撤销,请着重考虑!",
|
||||
"input.address": "请填写地址",
|
||||
"input.pla": "请输入",
|
||||
"apply.btn": "申请",
|
||||
"error.consignee.name": "请输入收货人姓名",
|
||||
"error.consignee.phone": "请输入联系电话",
|
||||
"error.consignee.address": "请输入收货地址",
|
||||
"apply.succes": "申请成功",
|
||||
"apply.error": "申请失败",
|
||||
"load.failed": "加载失败",
|
||||
"update.succes": "修改成功",
|
||||
"code.actPass": "请输入操作密码和验证码",
|
||||
"code.start": "获取验证码",
|
||||
"code.change": "X秒重新获取",
|
||||
"code.end": "重新获取",
|
||||
"error.phone": "手机号码不正确",
|
||||
"pick.up": "领取",
|
||||
"letter.you": "给你的一封信",
|
||||
"letter.all": "给全体员工的一封信",
|
||||
"sumbit":"提交",
|
||||
"realHashTitle":"藏品信息",
|
||||
"realHash":"藏品hash"
|
||||
}
|
@ -0,0 +1,190 @@
|
||||
{
|
||||
"app.name": "豐鏈藝樹",
|
||||
"tabbar.home": "首頁",
|
||||
"tabbar.mine": "我的",
|
||||
"index.title": "首頁",
|
||||
"locale.auto": "系統",
|
||||
"locale.en": "English",
|
||||
"locale.zh-hans": "简体中文",
|
||||
"locale.zh-hant": "繁體中文",
|
||||
"api-header": "zh-TW",
|
||||
"index.language-change-confirm": "應用此設置將重啟App",
|
||||
"navbar.back": "返回",
|
||||
"login.title": "登入/注册",
|
||||
"login.input": "在此輸入手機號",
|
||||
"login.agree": "已閱讀並同意",
|
||||
"login.service": "《平臺服務協議》",
|
||||
"login.privacy": "《隱私權政策》",
|
||||
"login.registration": "《平臺注册相關協議》",
|
||||
"login.btn": "發送驗證碼",
|
||||
"login.mess": "請閱讀並勾選協定",
|
||||
"authentication.title": "安全驗證",
|
||||
"authentication.content": "拖動滑塊填充拼圖",
|
||||
"sendCode.title": "輸入驗證碼",
|
||||
"sendCode.send": "已發送到",
|
||||
"sendCode.login": "登入",
|
||||
"sendCode.update": "確認修改",
|
||||
"sendCode.loading": "正在獲取驗證碼",
|
||||
"sendCode.toast": "倒數計時結束後再發送",
|
||||
"login.success": "登入成功",
|
||||
"login.error": "登入失敗",
|
||||
"sendCode.updateSuccess": "修改成功,請重新登入",
|
||||
"sendCode.updateError": "修改失敗",
|
||||
"sendCode": "驗證碼已發送",
|
||||
"welcome.toHome": "正在跳轉至首頁",
|
||||
"welcome.title": "驗證成功歡迎來到",
|
||||
"collection.info": "藏品資訊",
|
||||
"collection.buy": "購買",
|
||||
"collection.name": "藏品名稱",
|
||||
"collection.type": "藏品類型",
|
||||
"collection.size": "藏品尺寸",
|
||||
"collection.specs": "藏品規格",
|
||||
"collection.address": "藏品產地",
|
||||
"collection.intro": "藏品介紹",
|
||||
"collection.detail": "藏品詳情",
|
||||
"collection.sell": "藏品賣點",
|
||||
"collection.sellDec": "藏品細節",
|
||||
"collection.company": "工藝介紹",
|
||||
"collection.copyight": "版權聲明",
|
||||
"collection.blockchain": "區塊鏈說明",
|
||||
"buyVerfy.title": "購買商品需要進行實名認證",
|
||||
"buyVerfy.username": "真實姓名",
|
||||
"buyVerfy.idNum": "身份證號",
|
||||
"buyVerfy.suss": "實名認證有效",
|
||||
"buyVerfy.error": "實名認證無效",
|
||||
"buyVerfy.done": "完成",
|
||||
"buyVerfy.noGift": "售罄",
|
||||
"buyVerfy.cancel": "取消",
|
||||
"login.pls": "請先登錄",
|
||||
"alipay.payment": "支付寶支付",
|
||||
"comfirm.num1": "共",
|
||||
"comfirm.num2": "件",
|
||||
"comfirm.total": "合計",
|
||||
"comfirm.pay": "生成核驗二維碼",
|
||||
"comfirm.copy": "復製訂單碼驗證",
|
||||
"payment.back": "返回首頁",
|
||||
"payment.cancel": "取消交易",
|
||||
"payment.check": "查看詳情",
|
||||
"payment.confirmSuccess": "交易成功",
|
||||
"payment.cancelSuccess": "交易取消",
|
||||
"payment.failed": "交易失敗",
|
||||
"payInfo.title": "核對訂單",
|
||||
"payInfo.subtxt1": "正在驗證用戶",
|
||||
"payInfo.subtxt2": "的訂單信息",
|
||||
"payInfo.confirmDate": "核驗日期",
|
||||
"payInfo.buyerName": "買家昵稱",
|
||||
"payInfo.artworkName": "商品名稱",
|
||||
"payInfo.orderPrice": "訂單金額",
|
||||
"payInfo.payTypeName": "支付方式",
|
||||
"payInfo.payImages": "支付憑證",
|
||||
"payInfo.typePrice": "輸入支付方式",
|
||||
"payInfo.salesperson": "請聯系業務員線下核實消費信息",
|
||||
"payInfo.waitConfirm": "等待銷售員確認",
|
||||
"payInfo.copyCode": "輸入訂單驗證碼",
|
||||
"mine.language": "語言",
|
||||
"mine.message": "消息",
|
||||
"mine.setting": "設定",
|
||||
"mine.scan": "掃碼",
|
||||
"mine.blockchain": "區塊鏈",
|
||||
"mine.artwork": "我的藏品",
|
||||
"mine.noData": "暫無藏品",
|
||||
"mine.updateLang": "更換語言",
|
||||
"updateLang.done": "當前使用",
|
||||
"updateLang.change": "更換",
|
||||
"password.title": "使用操作密碼解鎖更多功能",
|
||||
"password.set": "設定操作密碼",
|
||||
"password.name": "請用戶",
|
||||
"password.input": "輸入操作密碼",
|
||||
"password.com": "確認操作密碼",
|
||||
"password.get": "使用操作密碼",
|
||||
"password.step": "下一步",
|
||||
"password": "操作密碼",
|
||||
"password.vername": "正在驗證用戶",
|
||||
"password.username": "身份資訊",
|
||||
"comfrim": "確認",
|
||||
"password.inputPass": "請輸入操作密碼",
|
||||
"password.messError": "請確認兩次輸入的操作密碼相同",
|
||||
"password.setSucc": "設定成功",
|
||||
"password.setError": "設定失敗",
|
||||
"password.verSucc": "驗證成功",
|
||||
"password.verError": "驗證失敗",
|
||||
"avatar.def": "恢復默認頭像",
|
||||
"avatar.update": "更換頭像",
|
||||
"userInfo.name": "昵稱",
|
||||
"userInfo.updateName": "修改昵稱",
|
||||
"userInfo.createTime": "注册日期",
|
||||
"userInfo.idNum": "ID號碼",
|
||||
"userInfo.phone": "聯繫電話",
|
||||
"phone.update": "換綁",
|
||||
"phone.verInfo": "完成實名認證後才可以換綁手機",
|
||||
"user.realName": "實名",
|
||||
"user.verfy": "實名認證",
|
||||
"user.username": "姓名",
|
||||
"user.verDone": "已認證",
|
||||
"user.idNum": "身份證",
|
||||
"account.logout": "註銷帳號",
|
||||
"account.signOut": "登出",
|
||||
"set.name": "設定昵稱",
|
||||
"set.input": "請輸入內容",
|
||||
"problem.feedback": "問題迴響",
|
||||
"logout.info": "是否確認要註銷該帳號",
|
||||
"logout.btn": "註銷",
|
||||
"signout.info": "是否確認登出",
|
||||
"realname.conduct": "進行實名認證",
|
||||
"save.update": "保存修改",
|
||||
"airdrop": "空投",
|
||||
"announcement": "公告",
|
||||
"read": "閱讀",
|
||||
"to.accept": "收下",
|
||||
"close": "關閉",
|
||||
"basic.info": "基礎資訊",
|
||||
"series.name": "系列名稱",
|
||||
"series.issuer": "發行方",
|
||||
"series.time": "交易日期",
|
||||
"series.price": "交易價格",
|
||||
"series.hash": "HASH值",
|
||||
"series.No": "編號",
|
||||
"phone.old": "原手機號",
|
||||
"phone.code": "驗證碼",
|
||||
"update.phone.title": "換綁手機號碼需要原手機號驗證",
|
||||
"phone.new": "新手機號",
|
||||
"input.phoneCode": "請填寫驗證碼和新手機號",
|
||||
"apply.logistics": "申請物流",
|
||||
"logistics.info": "物流資訊",
|
||||
"telephone": "諮詢電話",
|
||||
"consignee.name": "收貨人姓名",
|
||||
"consignee.address": "收貨地址",
|
||||
"consignee.phone": "聯繫電話",
|
||||
"release.info": "發行資訊",
|
||||
"release.time": "發行時間",
|
||||
"brand.side": "品牌方",
|
||||
"circulation.info": "流轉資訊",
|
||||
"possessor": "持有人",
|
||||
"collection.status": "藏品狀態",
|
||||
"in.library": "在庫",
|
||||
"been.applied": "已經申請物流",
|
||||
"circulation.type": "流轉類型",
|
||||
"on.line": "線上",
|
||||
"circulation.time": "流轉時間",
|
||||
"transaction.hash": "交易雜湊",
|
||||
"apply.tips": "一旦申請,不可撤銷,請著重考慮!",
|
||||
"input.address": "請填寫地址",
|
||||
"input.pla": "請輸入",
|
||||
"apply.btn": "申請",
|
||||
"error.consignee.name": "請輸入收貨人姓名",
|
||||
"error.consignee.phone": "請輸入聯繫電話",
|
||||
"error.consignee.address": "請輸入收貨地址",
|
||||
"apply.succes": "申請成功",
|
||||
"apply.error": "申請失敗",
|
||||
"load.failed": "加載失敗",
|
||||
"update.succes": "修改成功",
|
||||
"code.actPass": "請輸入操作密碼和驗證碼",
|
||||
"code.start": "獲取驗證碼",
|
||||
"code.change": "X秒重新獲取",
|
||||
"code.end": "重新獲取",
|
||||
"error.phone": "手機號碼不正確",
|
||||
"pick.up": "領取",
|
||||
"letter.you": "給你的一封信",
|
||||
"letter.all": "給全體員工的一封信"
|
||||
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
import App from "./App";
|
||||
|
||||
import en from "./locale/en.json";
|
||||
import zhHans from "./locale/zh-Hans.json";
|
||||
import zhHant from "./locale/zh-Hant.json";
|
||||
const messages = {
|
||||
en,
|
||||
"zh-Hans": zhHans,
|
||||
"zh-Hant": zhHant,
|
||||
};
|
||||
|
||||
let i18nConfig = {
|
||||
locale: uni.getLocale(), // 获取已设置的语言
|
||||
messages,
|
||||
};
|
||||
|
||||
//弹出框禁止滑动
|
||||
Vue.prototype.stopScroll = function () {
|
||||
var mo = function (e) {
|
||||
e.preventDefault();
|
||||
};
|
||||
document.body.style.overflow = "hidden";
|
||||
document.addEventListener("touchmove", mo, false); // 禁止页面滑动
|
||||
};
|
||||
|
||||
//弹出框可以滑动
|
||||
Vue.prototype.canScroll = function () {
|
||||
var mo = function (e) {
|
||||
e.preventDefault();
|
||||
};
|
||||
document.body.style.overflow = ""; // 出现滚动条
|
||||
document.removeEventListener("touchmove", mo, false);
|
||||
};
|
||||
import Vue from "vue";
|
||||
import VueI18n from "vue-i18n"; // v8.x
|
||||
import uView from "uview-ui";
|
||||
import common from "./common/index.js";
|
||||
import api from "@/http/";
|
||||
Vue.use(VueI18n);
|
||||
Vue.use(uView);
|
||||
Vue.prototype.$common = common;
|
||||
Vue.prototype.$api = api;
|
||||
// Vue.prototype.$baseUrl = "http://114.218.158.24:9022";
|
||||
Vue.prototype.$baseUrl = "https://shop.szjixun.cn";
|
||||
const i18n = new VueI18n(i18nConfig);
|
||||
Vue.config.productionTip = false;
|
||||
App.mpType = "app";
|
||||
const app = new Vue({
|
||||
i18n,
|
||||
...App,
|
||||
});
|
||||
app.$mount();
|
@ -0,0 +1,122 @@
|
||||
{
|
||||
"name" : "艺术商城",
|
||||
"appid" : "__UNI__7D47507",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : 101,
|
||||
"locale" : "zh-Hans",
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
"safearea" : {
|
||||
"bottom" : "none"
|
||||
},
|
||||
"usingComponents" : true,
|
||||
"nvueStyleCompiler" : "uni-app",
|
||||
"compilerVersion" : 3,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : true,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules" : {
|
||||
"Payment" : {},
|
||||
"Camera" : {}
|
||||
},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android" : {
|
||||
"permissions" : [
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {
|
||||
"dSYMs" : false
|
||||
},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {
|
||||
"payment" : {
|
||||
"alipay" : {
|
||||
"__platform__" : [ "ios", "android" ]
|
||||
}
|
||||
},
|
||||
"ad" : {}
|
||||
},
|
||||
"splashscreen" : {
|
||||
"androidStyle" : "common"
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios" : {
|
||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||
"ipad" : {
|
||||
"app" : "unpackage/res/icons/76x76.png",
|
||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||
"notification" : "unpackage/res/icons/20x20.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||
"settings" : "unpackage/res/icons/29x29.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone" : {
|
||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "",
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-alipay" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-baidu" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-toutiao" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : false
|
||||
},
|
||||
"vueVersion" : "2",
|
||||
"h5" : {
|
||||
"title" : "艺树商城"
|
||||
}
|
||||
}
|
@ -0,0 +1,480 @@
|
||||
{
|
||||
"name": "mall-app",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"jweixin-module": "^1.6.0",
|
||||
"vue-3d-model": "^1.4.1",
|
||||
"weixin-js-sdk": "^1.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.20.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz",
|
||||
"integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
|
||||
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
|
||||
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/reactivity-transform": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7",
|
||||
"postcss": "^8.1.10",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
|
||||
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz",
|
||||
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity-transform": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
|
||||
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
|
||||
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/runtime-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"csstype": "^2.6.8"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
|
||||
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/csstype": {
|
||||
"version": "2.6.21",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
|
||||
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/jweixin-module": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
|
||||
"integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
|
||||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"sourcemap-codec": "^1.4.8"
|
||||
}
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"nanoid": "bin/nanoid.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.21",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
|
||||
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||
}
|
||||
],
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.4",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/sourcemap-codec": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
|
||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||
"deprecated": "Please use @jridgewell/sourcemap-codec instead",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/three": {
|
||||
"version": "0.135.0",
|
||||
"resolved": "https://registry.npmjs.org/three/-/three-0.135.0.tgz",
|
||||
"integrity": "sha512-kuEpuuxRzLv0MDsXai9huCxOSQPZ4vje6y0gn80SRmQvgz6/+rI0NAvCRAw56zYaWKMGMfqKWsxF9Qa2Z9xymQ=="
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz",
|
||||
"integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-sfc": "3.2.45",
|
||||
"@vue/runtime-dom": "3.2.45",
|
||||
"@vue/server-renderer": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-3d-model": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-3d-model/-/vue-3d-model-1.4.1.tgz",
|
||||
"integrity": "sha512-IQjpqEjK1OLF/0XgF6O++IvOPLinLQ2aWZQFHxPFoTfPlB4vQW2sgv8EJSqpsIYC/wSCdGlP3CEnv9L3aZHlow==",
|
||||
"dependencies": {
|
||||
"three": "^0.135.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": ">=2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/weixin-js-sdk": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz",
|
||||
"integrity": "sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ=="
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/parser": {
|
||||
"version": "7.20.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz",
|
||||
"integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==",
|
||||
"peer": true
|
||||
},
|
||||
"@vue/compiler-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
|
||||
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-sfc": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
|
||||
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/reactivity-transform": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7",
|
||||
"postcss": "^8.1.10",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-ssr": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
|
||||
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/reactivity": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz",
|
||||
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/reactivity-transform": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
|
||||
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7"
|
||||
}
|
||||
},
|
||||
"@vue/runtime-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
|
||||
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/reactivity": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/runtime-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/runtime-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"csstype": "^2.6.8"
|
||||
}
|
||||
},
|
||||
"@vue/server-renderer": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
|
||||
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
|
||||
"peer": true
|
||||
},
|
||||
"csstype": {
|
||||
"version": "2.6.21",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
|
||||
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
|
||||
"peer": true
|
||||
},
|
||||
"estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||
"peer": true
|
||||
},
|
||||
"jweixin-module": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
|
||||
"integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
|
||||
},
|
||||
"magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
|
||||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"sourcemap-codec": "^1.4.8"
|
||||
}
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"peer": true
|
||||
},
|
||||
"picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||
"peer": true
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.4.21",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
|
||||
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"nanoid": "^3.3.4",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"peer": true
|
||||
},
|
||||
"source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||
"peer": true
|
||||
},
|
||||
"sourcemap-codec": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
|
||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||
"peer": true
|
||||
},
|
||||
"three": {
|
||||
"version": "0.135.0",
|
||||
"resolved": "https://registry.npmjs.org/three/-/three-0.135.0.tgz",
|
||||
"integrity": "sha512-kuEpuuxRzLv0MDsXai9huCxOSQPZ4vje6y0gn80SRmQvgz6/+rI0NAvCRAw56zYaWKMGMfqKWsxF9Qa2Z9xymQ=="
|
||||
},
|
||||
"vue": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz",
|
||||
"integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-sfc": "3.2.45",
|
||||
"@vue/runtime-dom": "3.2.45",
|
||||
"@vue/server-renderer": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"vue-3d-model": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-3d-model/-/vue-3d-model-1.4.1.tgz",
|
||||
"integrity": "sha512-IQjpqEjK1OLF/0XgF6O++IvOPLinLQ2aWZQFHxPFoTfPlB4vQW2sgv8EJSqpsIYC/wSCdGlP3CEnv9L3aZHlow==",
|
||||
"requires": {
|
||||
"three": "^0.135.0"
|
||||
}
|
||||
},
|
||||
"weixin-js-sdk": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz",
|
||||
"integrity": "sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ=="
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"jweixin-module": "^1.6.0",
|
||||
"vue-3d-model": "^1.4.1",
|
||||
"weixin-js-sdk": "^1.6.0"
|
||||
}
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
<template>
|
||||
<view>
|
||||
<!-- <navBar navTitle="" :stickyShow="stickyShow" :backBackGroundColor="'rgba(255, 255, 255, 0.4)'"></navBar> -->
|
||||
<view class="top">
|
||||
<button class="back" @click="back">返回</button>
|
||||
<image src="@/static/image/home/activity/series.png" mode="" class="cover"></image>
|
||||
<button class="btn" @click="detail">查看详情
|
||||
<image src="@/static/image/home/activity/right.png" mode="scaleToFill" class="img" />
|
||||
</button>
|
||||
</view>
|
||||
<view class="article-box">
|
||||
<image src="@/static/image/home/activity/article.png" mode="" class="article"></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
stickyShow: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
back() {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
});
|
||||
},
|
||||
detail() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/detail/detail'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.top {
|
||||
position: relative;
|
||||
|
||||
.btn {
|
||||
width: 240rpx;
|
||||
height: 58rpx;
|
||||
position: absolute;
|
||||
color: #FFFFFF;
|
||||
background: #3E0007;
|
||||
border-radius: 40rpx;
|
||||
font-size: 24rpx;
|
||||
bottom: 44rpx;
|
||||
left: 254rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
.img {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
margin-left: 14rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.cover {
|
||||
width: 100%;
|
||||
height: 1624rpx;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.back {
|
||||
position: absolute;
|
||||
width: 128rpx;
|
||||
height: 56rpx;
|
||||
background: rgba(255, 255, 255, 0.4);
|
||||
color: #FFFFFF;
|
||||
z-index: 999;
|
||||
border-radius: 40rpx;
|
||||
font-size: 32rpx;
|
||||
line-height: 56rpx;
|
||||
left: 26rpx;
|
||||
top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.article-box {
|
||||
background: url('@/static/image/home/activity/container.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
width: 100%;
|
||||
height: 1382rpx;
|
||||
padding: 72rpx 44rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.article {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,154 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="container">
|
||||
<view class="top-back">
|
||||
<text @click="navigateBack">{{$t('navbar.back')}}</text>
|
||||
</view>
|
||||
<image src="@/static/image/home/activity/series.png" mode="widthFix" class="image1"></image>
|
||||
<view class="click" @click="goDetail"></view>
|
||||
<view class="btn" @click="goDetail">
|
||||
查看详情
|
||||
<image src="@/static/image/home/activity/right.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="info">
|
||||
<view class="content">
|
||||
<image src="@/static/image/home/title.png" mode="widthFix" class="title"></image>
|
||||
<image src="http://cdn2.tyfon.com.cn/activity/wen_an.png" mode="widthFix" class="wenan"></image>
|
||||
<image src="@/static/image/home/activity/from.png" mode="widthFix" class="from"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
collectionsData: [],
|
||||
CollectionUID: ''
|
||||
};
|
||||
},
|
||||
onLoad: function(option) {
|
||||
this.seriesItem = JSON.parse(decodeURIComponent(option.detail));
|
||||
this.getCollections()
|
||||
},
|
||||
methods: {
|
||||
navigateBack() {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
});
|
||||
},
|
||||
goDetail() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/activity/detail?CollectionUID=' + this.CollectionUID + '&SeriesName=' + this.seriesItem.SeriesName
|
||||
})
|
||||
},
|
||||
async getCollections(){
|
||||
let data = {
|
||||
Page: 1,
|
||||
PageSize: 99999,
|
||||
SeriesUID:this.seriesItem.SeriesUuid
|
||||
};
|
||||
let res = await this.$api.series.collectionsList(data);
|
||||
if (res.status === 0) {
|
||||
// this.collectionsData = res.data.Data;
|
||||
res.data.Data.forEach(i =>{
|
||||
if(i.CollectionUID == 'd00c6694-f223-48e7-a9fc-a08d7fe18b1e' || i.Name == '泰丰十周年纪念胸章') {
|
||||
this.CollectionUID = i.CollectionUID
|
||||
}
|
||||
})
|
||||
} else {
|
||||
uni.$u.toast(this.$t('load.failed'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
image{
|
||||
display: block;
|
||||
}
|
||||
.image1{
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.info{
|
||||
width: 100%;
|
||||
background:url('@/static/image/home/activity/bg.png'), #5F000B;
|
||||
background-position: bottom right;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
padding: 72upx 34upx 52upx 34upx;
|
||||
box-sizing: border-box;
|
||||
.content{
|
||||
width: 100%;
|
||||
background: rgba(11,0,0,0.4);
|
||||
border-radius: 8upx;
|
||||
padding: 40upx 26upx 80upx 26upx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.title{
|
||||
margin: auto;
|
||||
width: 300upx;
|
||||
}
|
||||
.wenan{
|
||||
width: 618upx;
|
||||
margin-top: 24upx;
|
||||
}
|
||||
.from{
|
||||
width: 356upx;
|
||||
position: absolute;
|
||||
right: 26upx;
|
||||
bottom: 52upx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.container{
|
||||
position: relative;
|
||||
.top-back{
|
||||
width: 68upx;
|
||||
background: rgba(255, 255, 255, 0.4);
|
||||
padding: 6upx 32upx;
|
||||
border-radius: 40upx;
|
||||
font-size: 28upx;
|
||||
color: #ffffff;
|
||||
position: absolute;
|
||||
top: 50upx;
|
||||
left: 46upx;
|
||||
z-index: 2;
|
||||
}
|
||||
.click{
|
||||
position: absolute;
|
||||
width: 240upx;
|
||||
height: 304upx;
|
||||
bottom: 410upx;
|
||||
left: 50%;
|
||||
transform: rotateZ(-17deg) translateX(-58%);
|
||||
}
|
||||
.btn{
|
||||
position: absolute;
|
||||
width: 240upx;
|
||||
height: 58upx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: rgba(62, 0, 7, 1);
|
||||
|
||||
border-radius: 40upx;
|
||||
bottom: 30upx;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
image{
|
||||
width: 10upx;
|
||||
margin-left: 10upx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
@ -0,0 +1,124 @@
|
||||
<template>
|
||||
<view class="butttonGroup" :class="{ bg: isShow }">
|
||||
<view class="onlineBox">
|
||||
<view class="title">{{ selectPayMode }}</view>
|
||||
<image
|
||||
v-show="!isShow"
|
||||
src="@/static/image/home/down-icon.png"
|
||||
mode="scaleToFill"
|
||||
class="img"
|
||||
@click="showPay('up')"
|
||||
/>
|
||||
<image
|
||||
v-show="isShow"
|
||||
src="@/static/image/home/up-icon.png"
|
||||
mode="scaleToFill"
|
||||
class="img"
|
||||
@click="showPay('down')"
|
||||
/>
|
||||
</view>
|
||||
<view class="mode" v-show="isShow">
|
||||
<view v-for="(item, index) in modeList" :key="item.id" class="pay">
|
||||
<view
|
||||
:class="['name', currect === index ? 'active' : '']"
|
||||
@click="checkPay(item, index)"
|
||||
>{{ item.name }}</view
|
||||
>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
modeList: [
|
||||
// { id: "1", name: "线上支付" },// 暂时去除线上支付
|
||||
{ id: "2", name: "线下支付" },
|
||||
],
|
||||
isShow: false,
|
||||
currect: 0,
|
||||
selectPayMode: "线下支付", // 暂时去除线上支付
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
showPay(type) {
|
||||
if (type === "up") {
|
||||
this.isShow = true;
|
||||
} else {
|
||||
this.isShow = false;
|
||||
}
|
||||
},
|
||||
checkPay(item, index) {
|
||||
this.currect = index;
|
||||
if (this.selectPayMode === item.name) {
|
||||
return this.selectPayMode;
|
||||
}
|
||||
this.selectPayMode = item.name;
|
||||
this.$emit("payModeHandel", this.selectPayMode);
|
||||
this.isShow = false;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.bg {
|
||||
background: #f5f5f5;
|
||||
}
|
||||
.butttonGroup {
|
||||
width: 198rpx;
|
||||
border-radius: 30rpx 30rpx 0 0;
|
||||
position: relative;
|
||||
border: 0;
|
||||
.onlineBox {
|
||||
width: 198rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 60rpx;
|
||||
background-color: #e4e4e4;
|
||||
border-radius: 30rpx;
|
||||
color: #434343;
|
||||
font-size: 20rpx;
|
||||
border: 0;
|
||||
justify-content: space-around;
|
||||
|
||||
.title {
|
||||
// margin-left: 40rpx;
|
||||
// margin-right: 30rpx;
|
||||
}
|
||||
|
||||
.img {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
}
|
||||
.mode {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 150rpx;
|
||||
height: 80rpx; // 暂时去除线上支付
|
||||
border-radius: 0 0 30rpx 30rpx;
|
||||
z-index: 1;
|
||||
color: #434343;
|
||||
font-size: 20rpx;
|
||||
background: #f5f5f5;
|
||||
top: 57rpx;
|
||||
.pay {
|
||||
padding: 0 20rpx;
|
||||
.name {
|
||||
height: 42rpx;
|
||||
padding: 8rpx 0;
|
||||
margin-top: 14rpx;
|
||||
line-height: 42rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.active {
|
||||
background: rgba(157, 208, 164, 0.2);
|
||||
border-radius: 30rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,50 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="ThreeJSCity">
|
||||
<!-- <model-obj class="ThreeDShow" src="../../static/5.obj" mtl="../../static/5.mtl" ></model-obj> -->
|
||||
<!-- :background-alpha="alpha" :lights="lights"-->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import { ModelStl,ModelObj } from 'vue-3d-model'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
alpha: 0,
|
||||
lights: [{
|
||||
type: 'HemisphereLight',
|
||||
position: {x: 0, y: 1, z: 0},
|
||||
skyColor: 0xffffff,
|
||||
// groundColor: 0xFF0000, // 此代码为灯光后颜色
|
||||
intensity: 1,
|
||||
},
|
||||
{
|
||||
type: 'DirectionalLight',
|
||||
position: {x: 1, y: 1, z: 1},
|
||||
color: 0xffffff,
|
||||
intensity: .7,
|
||||
}]
|
||||
};
|
||||
},
|
||||
components: { ModelStl ,ModelObj},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.ThreeJSCity {
|
||||
width: 750upx;
|
||||
height: 100vh;
|
||||
// border:1px solid red;
|
||||
background: url('../../../../static/bg-3d.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
// z-index:0;
|
||||
// background: #fff;
|
||||
.ThreeDShow {
|
||||
width: 750upx;
|
||||
height: 750upx;
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,171 @@
|
||||
<template>
|
||||
<div>
|
||||
<u-popup :show="show" mode="center" bgColor="transparent">
|
||||
<view class="popupLocale-box">
|
||||
<view class="item">
|
||||
<image style="width: 600upx; height: 600upx" :src="detail.collectionImg"></image>
|
||||
</view>
|
||||
<view style="
|
||||
color: rgb(0, 0, 0);
|
||||
margin-top: 10upx;
|
||||
margin-bottom: 10upx;
|
||||
font-size: 40upx;
|
||||
">
|
||||
{{ detail.name }}
|
||||
</view>
|
||||
<view style="color: #6c6c6c; margin-top: 10upx; margin-bottom: 10upx" v-html="detail.intro">
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn-box">
|
||||
<u-button :text="detail.isReceive
|
||||
? '已被领取'
|
||||
: detail.saleType === 'homebuy'
|
||||
? '¥' + detail.price + '购买'
|
||||
: $t('to.accept')
|
||||
" @click="recive" style="
|
||||
width: 460rpx;
|
||||
height: 56rpx;
|
||||
border-radius: 40rpx;
|
||||
margin-top: 30rpx;
|
||||
background: #699a70;
|
||||
border: none;
|
||||
color: #fff;
|
||||
"></u-button>
|
||||
<view style="margin-top: 30rpx; text-align: center" @click="close">{{
|
||||
$t("buyVerfy.cancel")
|
||||
}}</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
// const jweixin = require("jweixin-module");
|
||||
// import jweixin from "weixin-js-sdk";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
isShow: {
|
||||
immediate: true,
|
||||
handler(newValue) {
|
||||
this.show = newValue;
|
||||
},
|
||||
},
|
||||
},
|
||||
props: ["detail", "collectionsUID", "num", "isShow"],
|
||||
methods: {
|
||||
close() {
|
||||
this.show = false;
|
||||
},
|
||||
|
||||
async recive() {
|
||||
if (this.detail.isReceive) return;
|
||||
if (this.detail.saleType === 'homebuy') {
|
||||
this.payHandle()
|
||||
} else {
|
||||
await this.$api.series
|
||||
.collectionsReceive({
|
||||
collectionsUID: this.collectionsUID,
|
||||
num: this.num,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
if (res.status === 0) {
|
||||
this.show = false;
|
||||
} else {
|
||||
this.$common.msgToast(res.msg, null, "error");
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
uni.showToast({
|
||||
title: this.$t("load.failed"),
|
||||
icon: "none",
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
async payHandle() {
|
||||
await this.$api.series
|
||||
.collectionsBuy({
|
||||
collectionsUID: this.collectionsUID,
|
||||
num: this.num,
|
||||
openId: uni.getStorageSync("openId"),
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.status === 0) {
|
||||
this.vxPay(res.data);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
uni.showToast({
|
||||
title: this.$t("load.failed"),
|
||||
icon: "none",
|
||||
});
|
||||
});
|
||||
},
|
||||
vxPay(data) {
|
||||
jweixin.config({
|
||||
debug: false,
|
||||
appId: "wx72ffc6670d5ddb12",
|
||||
timestamp: 1682402430,
|
||||
nonceStr: "123",
|
||||
signature: "123",
|
||||
jsApiList: ["chooseWXPay"],
|
||||
});
|
||||
jweixin.chooseWXPay({
|
||||
prepay_id: data.prepay_id,
|
||||
appId: data.appId,
|
||||
timestamp: data.timeStamp,
|
||||
nonceStr: data.nonceStr,
|
||||
package: data.package,
|
||||
signType: data.signType,
|
||||
paySign: data.paySign,
|
||||
success: () => {
|
||||
this.$common.msgToast("支付成功", null, "success");
|
||||
this.close();
|
||||
},
|
||||
fail: (res) => {
|
||||
this.$common.msgToast(res.errMsg, null, "error");
|
||||
},
|
||||
});
|
||||
jweixin.error(function (res) {
|
||||
this.$common.msgToast("用户取消支付", null, "error");
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.popupLocale-box {
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
width: 582rpx;
|
||||
overflow: hidden;
|
||||
padding: 30rpx 42rpx;
|
||||
|
||||
.u-button {
|
||||
width: 260rpx;
|
||||
height: 56rpx;
|
||||
border-radius: 40rpx;
|
||||
}
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.btn-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,76 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar navTitle="" :hasLogo="true" :backToUrl="'/pages/index/index'" :isSwitchTab="true"></navBar>
|
||||
<view class="" style="text-align: center;margin-top: 60upx;">
|
||||
<image src="@/static/image/home/ok-logo.png" mode="" class="pay-Img"></image>
|
||||
<image src="@/static/image/home/ok.png" mode="" class="payImg"></image>
|
||||
</view>
|
||||
<view class="btns">
|
||||
<view class="item">
|
||||
<u-button :text="$t('payment.back')" color="#EDC466" @click="goHome" style="width: 260rpx;height: 56rpx;border-radius: 40rpx;margin-top: 30rpx;"></u-button>
|
||||
<!-- <u-button :text="$t('payment.check')" color="#558BF2" @click="goDetail" style="width: 260rpx;height: 56rpx;border-radius: 40rpx;margin-top: 30rpx;"></u-button> -->
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
artworkUid:'',
|
||||
ID: '',
|
||||
};
|
||||
},
|
||||
onLoad: function (option) {
|
||||
this.ID = option.ID
|
||||
this.artworkUid = option.artworkUid
|
||||
},
|
||||
methods: {
|
||||
goHome() {
|
||||
uni.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
},
|
||||
goDetail() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/mine/detail/detail?ID=' + this.ID + '&artworkUid=' + this.artworkUid
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page{
|
||||
background: url('@/static/image/home/bg.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-attachment:fixed;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.pay-Img{
|
||||
width: 608upx;
|
||||
height: 576upx;
|
||||
margin-top: 30upx;
|
||||
}
|
||||
.payImg{
|
||||
width: 218rpx;
|
||||
height: 56rpx;
|
||||
margin-top: 20upx;
|
||||
/* position: absolute;
|
||||
left: 50%;
|
||||
top: 40%;
|
||||
transform: translate(-50%,-50%); */
|
||||
}
|
||||
.btns{
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 200rpx;
|
||||
.item{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,76 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar navTitle="" :hasLogo="true" :backToUrl="'/pages/index/index'" :isSwitchTab="true"></navBar>
|
||||
<view class="" style="text-align: center;margin-top: 60upx;">
|
||||
<image src="@/static/image/home/ok-logo.png" mode="" class="pay-Img"></image>
|
||||
<image src="@/static/image/home/recive.png" mode="" class="payImg"></image>
|
||||
</view>
|
||||
<view class="btns">
|
||||
<view class="item">
|
||||
<u-button :text="$t('payment.back')" color="#EDC466" @click="goHome" style="width: 260rpx;height: 56rpx;border-radius: 40rpx;margin-top: 30rpx;"></u-button>
|
||||
<!-- <u-button :text="$t('payment.check')" color="#558BF2" @click="goDetail" style="width: 260rpx;height: 56rpx;border-radius: 40rpx;margin-top: 30rpx;"></u-button> -->
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
artworkUid:'',
|
||||
ID: '',
|
||||
};
|
||||
},
|
||||
onLoad: function (option) {
|
||||
this.ID = option.ID
|
||||
this.artworkUid = option.artworkUid
|
||||
},
|
||||
methods: {
|
||||
goHome() {
|
||||
uni.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
},
|
||||
goDetail() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/mine/detail/detail?ID=' + this.ID + '&artworkUid=' + this.artworkUid
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page{
|
||||
background: url('@/static/image/home/bg.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-attachment:fixed;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.pay-Img{
|
||||
width: 608upx;
|
||||
height: 576upx;
|
||||
margin-top: 30upx;
|
||||
}
|
||||
.payImg{
|
||||
width: 218rpx;
|
||||
height: 56rpx;
|
||||
margin-top: 20upx;
|
||||
/* position: absolute;
|
||||
left: 50%;
|
||||
top: 40%;
|
||||
transform: translate(-50%,-50%); */
|
||||
}
|
||||
.btns{
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 200rpx;
|
||||
.item{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,292 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<navBar
|
||||
navTitle=""
|
||||
:stickyShow="stickyShow"
|
||||
:backBackGroundColor="'#699A70'"
|
||||
></navBar>
|
||||
|
||||
<image :src="seriesItem.CoverImg" mode="" class="cover"></image>
|
||||
<view class="designation">
|
||||
<view class="left-x">
|
||||
<view class="name">{{ seriesItem.SeriesName }}</view>
|
||||
<view class="line"></view>
|
||||
<view class="des">
|
||||
{{ seriesItem.Desc }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="right-x">
|
||||
<image :src="seriesItem.BrandImg" mode="" class="img"></image>
|
||||
{{ seriesItem.BrandName }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="order-box">
|
||||
<view
|
||||
class="item"
|
||||
v-for="i in collectionsData"
|
||||
:key="i.CollectionUID"
|
||||
@click="goDetail(i.CollectionUID)"
|
||||
>
|
||||
<image :src="i.CollectionImg" mode="" class="img"> </image>
|
||||
<view class="content">
|
||||
<view class="title">{{ i.Name }}</view>
|
||||
<view class="price">
|
||||
<text v-if="i.CurrencyType === 'normal'">¥</text>
|
||||
<image
|
||||
src="@/static/image/home/jifen.png"
|
||||
mode="scaleToFill"
|
||||
style="width: 24rpx; height: 24rpx"
|
||||
v-else
|
||||
/>
|
||||
{{ i.Price }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bot-text">
|
||||
<view class="text-line"></view>
|
||||
<image
|
||||
src="@/static/image/home/fontree.png"
|
||||
mode="aspectFit"
|
||||
class="logo"
|
||||
></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
stickyShow: false,
|
||||
seriesItem: {},
|
||||
collectionsData: [],
|
||||
};
|
||||
},
|
||||
|
||||
onLoad: function (option) {
|
||||
Object.assign(this.seriesItem, { SeriesUuid: option.SeriesUID });
|
||||
this.getPageData();
|
||||
this.getCollections();
|
||||
},
|
||||
onPageScroll(e) {
|
||||
this.stickyShow = e.scrollTop > 5 ? true : false;
|
||||
},
|
||||
methods: {
|
||||
async getPageData() {
|
||||
let params = {
|
||||
seriesUuid: this.seriesItem.SeriesUuid,
|
||||
};
|
||||
let res = await this.$api.series.getSeriesData(params);
|
||||
if (res.status === 0) {
|
||||
this.seriesItem = res.data;
|
||||
} else {
|
||||
uni.$u.toast(this.$t("load.failed"));
|
||||
}
|
||||
},
|
||||
navigateBack() {
|
||||
uni.switchTab({
|
||||
url: "/pages/index/index",
|
||||
});
|
||||
},
|
||||
goDetail(CollectionUID) {
|
||||
const price = this.collectionsData.find(
|
||||
(item) => item.CollectionUID === CollectionUID
|
||||
).Price;
|
||||
uni.navigateTo({
|
||||
url:
|
||||
"/pages/index/detail/detail?CollectionUID=" +
|
||||
CollectionUID +
|
||||
"&SeriesName=" +
|
||||
this.seriesItem.SeriesName +
|
||||
"&Price=" +
|
||||
price,
|
||||
});
|
||||
},
|
||||
async getCollections() {
|
||||
let data = {
|
||||
Page: 1,
|
||||
PageSize: 99999,
|
||||
SeriesUID: this.seriesItem.SeriesUuid,
|
||||
};
|
||||
let res = await this.$api.series.collectionsList(data);
|
||||
if (res.status === 0) {
|
||||
this.collectionsData = res.data.Data;
|
||||
} else {
|
||||
uni.$u.toast(this.$t("load.failed"));
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: url("@/static/image/home/detail-kind-bg.png?x-oss-process=image/resize,w_750,h_1580")
|
||||
no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: top center;
|
||||
background-attachment: fixed;
|
||||
height: 100vh;
|
||||
// border: 1px solid red;
|
||||
}
|
||||
|
||||
.container {
|
||||
padding-bottom: 1upx;
|
||||
}
|
||||
|
||||
.text-box {
|
||||
margin: 72upx 45upx;
|
||||
background: rgba(11, 0, 0, 0.4);
|
||||
border-radius: 8upx;
|
||||
padding: 36upx;
|
||||
text-align: center;
|
||||
|
||||
.title-img {
|
||||
width: 300upx;
|
||||
height: 44upx;
|
||||
margin-bottom: 24upx;
|
||||
}
|
||||
|
||||
.content-img {
|
||||
width: 594upx;
|
||||
height: 1074upx;
|
||||
}
|
||||
|
||||
.from-img {
|
||||
width: 356upx;
|
||||
height: 44upx;
|
||||
}
|
||||
}
|
||||
|
||||
.cover {
|
||||
width: 100%;
|
||||
height: 772rpx;
|
||||
object-fit: cover;
|
||||
margin-top: -110rpx;
|
||||
}
|
||||
|
||||
.designation {
|
||||
margin: 20rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 8rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 28rpx 26rpx;
|
||||
|
||||
.left-x {
|
||||
width: 460rpx;
|
||||
|
||||
.name {
|
||||
color: #000000;
|
||||
font-size: 32rpx;
|
||||
width: 100%;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
|
||||
.line {
|
||||
width: 100%;
|
||||
background: #878787;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.des {
|
||||
padding-top: 30rpx;
|
||||
width: 100%;
|
||||
font-size: 20rpx;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
overflow: hidden;
|
||||
color: #878787;
|
||||
}
|
||||
}
|
||||
|
||||
.right-x {
|
||||
color: #878787;
|
||||
font-size: 24rpx;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.img {
|
||||
width: 128rpx;
|
||||
height: 128rpx;
|
||||
border-radius: 50%;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.order-box {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0 24rpx;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.item {
|
||||
width: 332rpx;
|
||||
height: 418rpx;
|
||||
background: #797979;
|
||||
border-radius: 8rpx;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
margin-top: 20rpx;
|
||||
|
||||
.img {
|
||||
width: 332rpx;
|
||||
height: 318rpx;
|
||||
// object-fit: cover;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
height: 74rpx;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
text-align: center;
|
||||
// border-radius: 8rpx;
|
||||
padding: 10rpx 0;
|
||||
|
||||
.title {
|
||||
font-size: 32rpx;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.price {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bot-text {
|
||||
margin-top: 40rpx;
|
||||
padding-bottom: 50rpx;
|
||||
text-align: center;
|
||||
|
||||
.text-line {
|
||||
width: 90%;
|
||||
height: 1rpx;
|
||||
background: #878787;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
font-size: 24rpx;
|
||||
color: #878787;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.logo {
|
||||
margin-top: 10rpx;
|
||||
width: 252rpx;
|
||||
height: 76rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,193 @@
|
||||
<template>
|
||||
<view class="main">
|
||||
<navBar navTitle="" :backToUrl="'/pages/index/index'" :isSwitchTab="true" :color="'#000000'"
|
||||
:backBackGroundColor="'#3D553D'"></navBar>
|
||||
<view class="hint">*登录/注册后才可以体验所有功能</view>
|
||||
<view style="margin-top: 446upx; font-size: 40upx">{{ $t('login.title') }}</view>
|
||||
<view class="input-box">
|
||||
<u-input v-model="TelNum" :placeholder="$t('login.input')" shape="circle" type="number" border="none"
|
||||
class="login-input"></u-input>
|
||||
<u-checkbox-group v-model="checked" iconPlacement="left" placement="row" @change="changechec">
|
||||
<u-checkbox name="yes" shape="circle"></u-checkbox>
|
||||
<view class="know">
|
||||
{{ $t('login.agree') }}
|
||||
<text>{{ $t('login.service') }}</text>
|
||||
<text>{{ $t('login.privacy') }}</text>
|
||||
<text>{{ $t('login.registration') }}</text>
|
||||
</view>
|
||||
</u-checkbox-group>
|
||||
</view>
|
||||
<u-button :loading="loading" @click="goSendCode" class="btn" :text="$t('login.btn')" shape="circle"
|
||||
color="#699A70"></u-button>
|
||||
<slider-verify :isShow="sliderVerifyFLag" @touchSliderResult="verifyResult" ref="verifyElement"></slider-verify>
|
||||
<image class="logo" src="../../static/image/home/fontree-white.png"></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
TelNum: "",
|
||||
Password: "",
|
||||
checkKnow: "",
|
||||
loading: false,
|
||||
sliderVerifyFLag: false,
|
||||
count: 120,
|
||||
timer: null,
|
||||
checked: [],
|
||||
};
|
||||
},
|
||||
onLoad(e) {
|
||||
if (Object.keys(e).length) {
|
||||
const { collectionsUID, num } = e
|
||||
uni.setStorageSync('collectionsUID', collectionsUID);
|
||||
uni.setStorageSync('num', num);
|
||||
if (uni.getStorageSync("mall-user-info") && uni.getStorageSync("mall_token")) {
|
||||
uni.navigateTo({
|
||||
url: "/pages/login/welcome/welcome",
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
goSendCode() {
|
||||
if (!uni.$u.test.mobile(this.TelNum)) {
|
||||
this.$u.toast(this.$t('error.phone'));
|
||||
return false
|
||||
}
|
||||
if (this.checked.length > 0) {
|
||||
this.sliderVerifyFLag = true;
|
||||
} else {
|
||||
this.$u.toast(this.$t('login.mess'));
|
||||
}
|
||||
},
|
||||
changechec() {
|
||||
console.log(this.checked);
|
||||
},
|
||||
countdown() {
|
||||
this.timer = setInterval(() => {
|
||||
this.count--;
|
||||
if (this.count === 0) {
|
||||
clearInterval(this.timer);
|
||||
// this.isReset = false;
|
||||
}
|
||||
}, 1000);
|
||||
},
|
||||
// 滑块验证结果回调函数
|
||||
verifyResult(res) {
|
||||
console.log(res);
|
||||
setTimeout(() => {
|
||||
this.sliderVerifyFLag = false;
|
||||
this.countdown();
|
||||
if (res) {
|
||||
uni.navigateTo({
|
||||
url: "../login/sendCode/sendCode?telNum=" + this.TelNum,
|
||||
});
|
||||
}
|
||||
}, 1000);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/deep/ .u-input__content__field-wrapper__field {
|
||||
font-size: 24upx !important;
|
||||
margin-left: 10upx;
|
||||
}
|
||||
|
||||
/deep/.u-checkbox__icon-wrap--circle {
|
||||
width: 25upx !important;
|
||||
height: 25upx !important;
|
||||
}
|
||||
|
||||
/deep/ .u-checkbox-label--left {
|
||||
margin-top: -20rpx;
|
||||
}
|
||||
|
||||
page {
|
||||
background: url("@/static/image/home/login-bg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-attachment: fixed;
|
||||
height: 100vh;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.main {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
.hint {
|
||||
width: 588rpx;
|
||||
height: 72rpx;
|
||||
background-color: rgba(157, 208, 164, 0.3);
|
||||
font-size: 28rpx;
|
||||
line-height: 72rpx;
|
||||
text-align: center;
|
||||
border-radius: 20rpx;
|
||||
position: absolute;
|
||||
top: 216rpx;
|
||||
}
|
||||
|
||||
.know {
|
||||
margin-top: 20upx;
|
||||
font-size: 28upx;
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
|
||||
text {
|
||||
color: #699A70;
|
||||
}
|
||||
}
|
||||
|
||||
.input-box {
|
||||
position: absolute;
|
||||
top: 658upx;
|
||||
width: 638upx;
|
||||
|
||||
.login-input {
|
||||
height: 68upx;
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
margin-bottom: 17upx;
|
||||
padding: 0 20rpx;
|
||||
|
||||
/deep/ .uni-input-placeholder {
|
||||
padding: 0 20rpx;
|
||||
}
|
||||
|
||||
/deep/ .uni-input-input {
|
||||
color: #fff;
|
||||
padding: 0 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.close {
|
||||
width: 24upx;
|
||||
height: 24upx;
|
||||
margin-right: 20upx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 344upx;
|
||||
height: 60upx;
|
||||
position: absolute;
|
||||
top: 942upx;
|
||||
}
|
||||
|
||||
.change-way {
|
||||
color: #fcb462;
|
||||
font-size: 28upx;
|
||||
position: absolute;
|
||||
top: 1068upx;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 202upx;
|
||||
height: 56upx;
|
||||
position: absolute;
|
||||
bottom: 40upx;
|
||||
}</style>
|
@ -0,0 +1,201 @@
|
||||
<template>
|
||||
<view class="main">
|
||||
<navBar navTitle="" :isSwitchTab="true" :color="'#000000'" :backBackGroundColor="'#3D553D'"></navBar>
|
||||
<u-code :seconds="seconds" @start="start" ref="uCode"
|
||||
:start-text="$t('code.start')"
|
||||
:change-text="$t('code.change')"
|
||||
:end-text="$t('code.end')"
|
||||
@change="codeChange"></u-code>
|
||||
<view class="main-word">{{$t('sendCode.title')}}</view>
|
||||
<view class="sec">
|
||||
<view>{{$t('sendCode.send')}}</view>
|
||||
<u--text mode="phone" color="#fff" :text="telNum || newNum" format="encrypt"></u--text>
|
||||
<view class="resend" @tap="getCode">{{ tips }}</view>
|
||||
</view>
|
||||
<view class="code-box"><u-code-input v-model="Code" :focus="focus"></u-code-input></view>
|
||||
<u-button v-if="!this.token" class="btn" :text="$t('sendCode.login')" shape="circle" color="#699A70" @click="gologin" ></u-button>
|
||||
<u-button v-else class="btn" :text="$t('sendCode.update')" shape="circle" color="#558BF2" @click="confirmChange" ></u-button>
|
||||
<image class="logo" src="../../../static/image/home/fontree-white.png"></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tips: "",
|
||||
// refCode: null,
|
||||
seconds: 60,
|
||||
wathTime: 10,
|
||||
Code: "",
|
||||
focus: false,
|
||||
telNum: "",
|
||||
token: "",
|
||||
newNum: "",
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
if (this.telNum) {
|
||||
this.getCode();
|
||||
} else {
|
||||
this.getNewCode();
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
this.telNum = options.telNum;
|
||||
this.token = options.token;
|
||||
this.newNum = options.newNum;
|
||||
},
|
||||
methods: {
|
||||
codeChange(text) {
|
||||
this.tips = text;
|
||||
},
|
||||
async getCode() {
|
||||
if (this.$refs.uCode.canGetCode) {
|
||||
uni.showLoading({
|
||||
title: this.$t("sendCode.loading"),
|
||||
});
|
||||
|
||||
let res = await this.$api.login.sendCode({ telNum: this.telNum });
|
||||
if (res.status === 0) {
|
||||
uni.hideLoading();
|
||||
// 这里此提示会被this.start()方法中的提示覆盖
|
||||
this.focus = true;
|
||||
this.$refs.uCode.start();
|
||||
// 通知验证码组件内部开始倒计时
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast(this.$t("sendCode.toast"));
|
||||
}
|
||||
},
|
||||
async getNewCode() {
|
||||
if (this.$refs.uCode.canGetCode) {
|
||||
uni.showLoading({
|
||||
title: this.$t("sendCode.loading"),
|
||||
});
|
||||
|
||||
let res = await this.$api.login.sendNewCode({ token: this.token });
|
||||
if (res.status === 0) {
|
||||
uni.hideLoading();
|
||||
// 这里此提示会被this.start()方法中的提示覆盖
|
||||
this.focus = true;
|
||||
this.$refs.uCode.start();
|
||||
// 通知验证码组件内部开始倒计时
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast(this.$t("sendCode.toast"));
|
||||
}
|
||||
},
|
||||
|
||||
async gologin() {
|
||||
let data = {
|
||||
telNum: this.telNum,
|
||||
password: "",
|
||||
code: this.Code,
|
||||
};
|
||||
let res = await this.$api.login.login(data);
|
||||
if (res.status === 0) {
|
||||
this.$common.msgToast(this.$t("login.success"), null, "success");
|
||||
uni.setStorageSync("mall-user-info", res.data.accountInfo);
|
||||
uni.setStorageSync("mall_token", res.data.token);
|
||||
let returnUrl = uni.getStorageSync("return_url");
|
||||
if (returnUrl) {
|
||||
uni.reLaunch({
|
||||
url: returnUrl,
|
||||
});
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: "/pages/login/welcome/welcome",
|
||||
});
|
||||
} else {
|
||||
this.$common.msgToast(res.msg || this.$t("login.error"), null, "error");
|
||||
}
|
||||
},
|
||||
async confirmChange() {
|
||||
let data = {
|
||||
code: this.Code,
|
||||
};
|
||||
let res = await this.$api.login.confirmNew(data);
|
||||
if (res.status === 0) {
|
||||
this.$common.msgToast(
|
||||
this.$t("sendCode.updateSuccess"),
|
||||
null,
|
||||
"success"
|
||||
);
|
||||
uni.removeStorageSync("mall-user-info");
|
||||
uni.removeStorageSync("mall_token");
|
||||
setTimeout(() => {
|
||||
uni.reLaunch({
|
||||
url: "/pages/login/login",
|
||||
});
|
||||
}, 1000);
|
||||
} else {
|
||||
uni.$u.toast(res.msg || this.$t("sendCode.updateError"));
|
||||
}
|
||||
},
|
||||
start() {
|
||||
uni.$u.toast(this.$t("sendCode"));
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: url('@/static/image/home/login-bg.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-attachment: fixed;
|
||||
height: 100vh;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.main {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.main-word {
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
font-size: 40upx;
|
||||
font-weight: bold;
|
||||
top: 274upx;
|
||||
}
|
||||
.sec {
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
display: flex;
|
||||
top: 380upx;
|
||||
.resend {
|
||||
margin-left: 20upx;
|
||||
color: #fcb462;
|
||||
}
|
||||
}
|
||||
.code-box {
|
||||
position: absolute;
|
||||
top: 554upx;
|
||||
}
|
||||
.btn {
|
||||
width: 344upx;
|
||||
height: 60upx;
|
||||
position: absolute;
|
||||
top: 742upx;
|
||||
}
|
||||
/deep/ .u-code-input__item {
|
||||
border: 0;
|
||||
border-radius: 20upx;
|
||||
background-color: rgba(255, 255, 255, 0.65);
|
||||
}
|
||||
.logo {
|
||||
width: 202upx;
|
||||
height: 56upx;
|
||||
position: absolute;
|
||||
bottom: 40upx;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,134 @@
|
||||
<template>
|
||||
<view>
|
||||
<image src="@/static/image/home/new_line.png" mode="" class="line"></image>
|
||||
<image
|
||||
src="@/static/image/home/new_flower.png"
|
||||
mode=""
|
||||
class="flower"
|
||||
></image>
|
||||
<view class="text">{{ $t("welcome.toHome") }}</view>
|
||||
<!-- <view class="title-one">- - -{{$t('welcome.title')}}- - -</view> -->
|
||||
<!-- <image class="img" src="@/static/image/home/fonchain.png"></image> -->
|
||||
<image class="logo" src="@/static/image/home/fontree-white.png"></image>
|
||||
<u-loading-page
|
||||
loading-text="请在微信浏览器中打开"
|
||||
:loading="loading"
|
||||
></u-loading-page>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
// if (this.loading) return;
|
||||
setTimeout(() => {
|
||||
uni.reLaunch({
|
||||
url: uni.getStorageSync("login-redirect") || "/pages/index/index",
|
||||
success: () => {
|
||||
uni.setStorageSync("collectionsDetail", true);
|
||||
if (uni.getStorageSync("login-redirect")) {
|
||||
uni.removeStorageSync("login-redirect");
|
||||
}
|
||||
},
|
||||
});
|
||||
}, 3000);
|
||||
},
|
||||
onLoad(params) {
|
||||
// 获取openid
|
||||
if (params) {
|
||||
uni.setStorageSync("openid_code", params.code);
|
||||
uni.setStorageSync("openid_state", params.state);
|
||||
}
|
||||
let ua = navigator.userAgent.toLowerCase();
|
||||
if (ua.match(/MicroMessenger/i) == "micromessenger") {
|
||||
let openid_code = uni.getStorageSync("openid_code");
|
||||
if (!openid_code) {
|
||||
const apiUrl = "https://appointteam.szjixun.cn/";
|
||||
window.location.href = `${apiUrl}api/appointment/auth/wx?time=${Math.random()}¬ifyUrl=${encodeURIComponent(
|
||||
window.location.href
|
||||
)}`;
|
||||
} else {
|
||||
this.handleOpenId();
|
||||
}
|
||||
} else {
|
||||
this.loading = true;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async handleOpenId() {
|
||||
let params = {
|
||||
code: uni.getStorageSync("openid_code"),
|
||||
state: uni.getStorageSync("openid_state"),
|
||||
};
|
||||
await this.$api.login
|
||||
.getOpenId(params)
|
||||
.then((res) => {
|
||||
if (res.status === 0) {
|
||||
uni.setStorageSync("openId", res.data.openId);
|
||||
}
|
||||
})
|
||||
.catch((err) => {});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: url("@/static/image/home/welcome-bg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-attachment: fixed;
|
||||
height: 100vh;
|
||||
// border: 1px solid red;
|
||||
}
|
||||
.line {
|
||||
width: 2rpx;
|
||||
height: 164rpx;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 0;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.flower {
|
||||
width: 43rpx;
|
||||
height: 43rpx;
|
||||
position: absolute;
|
||||
left: 47%;
|
||||
top: 167rpx;
|
||||
// transform: translateX(-50%);
|
||||
animation: fadenum 1s infinite;
|
||||
}
|
||||
@keyframes fadenum {
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
.text {
|
||||
position: absolute;
|
||||
// left: 37%;
|
||||
top: 227rpx;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.title-one {
|
||||
color: #558bf2;
|
||||
position: absolute;
|
||||
font-size: 33upx;
|
||||
// left: 26%;
|
||||
top: 600rpx;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.logo {
|
||||
width: 202rpx;
|
||||
height: 56rpx;
|
||||
position: absolute;
|
||||
top: 92rpx;
|
||||
left: 46rpx;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,189 @@
|
||||
<template>
|
||||
<view class="main">
|
||||
<navBar navTitle="" :hasLogo="true" :hasRight="true" :backToUrl="'/pages/mine/setting/setting'"
|
||||
@clickRight="clickRight" :color="'#000000'" :backBackGroundColor="'#3D553D'" />
|
||||
<u-code :seconds="seconds" @start="start" ref="uCode"
|
||||
:start-text="$t('code.start')"
|
||||
:change-text="$t('code.change')"
|
||||
:end-text="$t('code.end')"
|
||||
@change="codeChange"></u-code>
|
||||
<view class="info">
|
||||
<view class="item">
|
||||
<view class="lable">{{$t('phone.old')}}</view>
|
||||
<view class="gray">{{ telNum }}</view>
|
||||
</view>
|
||||
<u-divider></u-divider>
|
||||
<view class="item">
|
||||
<view class="lable">{{$t('phone.code')}}</view>
|
||||
<view style="margin-left: 30upx;">
|
||||
<u--input style="width: 130upx;" border="none" v-model="code" type="number"></u--input>
|
||||
</view>
|
||||
<view class="resend" @tap="getCode">{{ tips }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view style="color: #717171; text-align: right;font-size: 10rpx;margin-right:56rpx;margin-top:16rpx">*{{$t('update.phone.title')}}</view>
|
||||
<view class="info" style="height: 120upx;">
|
||||
<view class="item">
|
||||
<view class="lable">{{$t('phone.new')}}</view>
|
||||
<view style="margin-left: 30upx;">
|
||||
<u--input style="width: 200upx; color:#878787" :placeholder="$t('input.pla')" border="none" v-model="newTelNum" type="number"></u--input>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<u-button :text="$t('save.update')" color="#699A70" @click="changePhone" class="btn" style=""></u-button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tips: '',
|
||||
// refCode: null,
|
||||
seconds: 60,
|
||||
wathTime: 10,
|
||||
code: '',
|
||||
focus: false,
|
||||
telNum: '',
|
||||
newTelNum: ''
|
||||
};
|
||||
},
|
||||
onLoad(opt) {
|
||||
this.telNum = opt.telNum
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/mine/setting/setting'
|
||||
});
|
||||
},
|
||||
codeChange(text) {
|
||||
this.tips = text;
|
||||
},
|
||||
async getCode() {
|
||||
if (this.$refs.uCode.canGetCode) {
|
||||
uni.showLoading({
|
||||
title: this.$t('sendCode.loading')
|
||||
});
|
||||
|
||||
let res = await this.$api.mine.mineCode();
|
||||
if (res.status === 0) {
|
||||
uni.hideLoading();
|
||||
// 这里此提示会被this.start()方法中的提示覆盖
|
||||
this.focus = true;
|
||||
this.$refs.uCode.start();
|
||||
// 通知验证码组件内部开始倒计时
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast(this.$t('sendCode.toast'));
|
||||
}
|
||||
},
|
||||
start() {
|
||||
uni.$u.toast(this.$t('sendCode'));
|
||||
},
|
||||
async changePhone(){
|
||||
if(!this.code || !this.newTelNum){
|
||||
uni.$u.toast(this.$t('input.phoneCode'));
|
||||
return
|
||||
}
|
||||
let data = {code:this.code,newTelNum:this.newTelNum}
|
||||
let res = await this.$api.mine.verifyCode(data);
|
||||
if (res.status === 0) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/sendCode/sendCode?token='+res.data.token+'&newNum='+this.newTelNum
|
||||
});
|
||||
} else {
|
||||
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: url('@/static/image/home/new_bg.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-attachment: fixed;
|
||||
height: 100vh;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
}
|
||||
.main {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
/deep/.uni-input-input{
|
||||
color: #878787;
|
||||
}
|
||||
.title {
|
||||
margin-top: 40upx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
image {
|
||||
width: 201upx;
|
||||
height: 60upx;
|
||||
}
|
||||
}
|
||||
.btn {
|
||||
height: 56rpx;
|
||||
width: 600upx;
|
||||
border-radius: 40rpx;
|
||||
margin-top: 30rpx;
|
||||
position: absolute;
|
||||
bottom: 120upx;
|
||||
left: 10%;
|
||||
}
|
||||
.cancel {
|
||||
text-align: center;
|
||||
height: 56rpx;
|
||||
width: 600upx;
|
||||
border-radius: 40rpx;
|
||||
margin-top: 30rpx;
|
||||
position: absolute;
|
||||
bottom: 40upx;
|
||||
left: 10%;
|
||||
}
|
||||
}
|
||||
.info {
|
||||
box-sizing: border-box;
|
||||
border-radius: 8rpx;
|
||||
width: 650upx;
|
||||
height: 218upx;
|
||||
background: #FFFFFF;
|
||||
margin: 65rpx 50rpx 0 50rpx;
|
||||
|
||||
padding: 0 65rpx 0 65rpx;
|
||||
.item {
|
||||
font-size: 30upx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 40upx;
|
||||
.rz {
|
||||
margin-left: 10upx;
|
||||
font-size: 28rpx;
|
||||
background-color: #558bf2;
|
||||
width: 60upx;
|
||||
|
||||
border-radius: 40upx;
|
||||
padding: 0upx 20upx 4upx 20upx;
|
||||
}
|
||||
}
|
||||
.lable{
|
||||
color: #434343;
|
||||
}
|
||||
.gray {
|
||||
color: #878787;
|
||||
}
|
||||
/deep/ .u-input__content__field-wrapper__field {
|
||||
color: #fff !important;
|
||||
}
|
||||
.resend {
|
||||
color: #699A70;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,405 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar
|
||||
:navTitle="collectionsDetail.name"
|
||||
:stickyShow="stickyShow"
|
||||
:color="'#000000'"
|
||||
:backBackGroundColor="'#699A70'"
|
||||
></navBar>
|
||||
|
||||
<view class="top-img">
|
||||
<image :src="collectionsDetail.coverImg"></image>
|
||||
</view>
|
||||
<view
|
||||
class="title-t"
|
||||
:style="{ fontSize: '36rpx', color: '#434343', fontWeight: 600 }"
|
||||
>{{ $t("basic.info") }}</view
|
||||
>
|
||||
<view class="info-box" style="padding: 28rpx 32rpx 4rpx 32rpx">
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("series.name") }}</text>
|
||||
<text class="value">{{ payDetail.seriesName }}</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("series.issuer") }}</text>
|
||||
<text class="value">{{ payDetail.senderName }}</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("series.time") }}</text>
|
||||
<text class="value">{{ payDetail.createdAt }}</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("series.price") }}</text>
|
||||
<text class="value">
|
||||
<text v-if="collectionsDetail.currencyType === 'normal'">{{
|
||||
symbol
|
||||
}}</text>
|
||||
<image
|
||||
src="@/static/image/home/jifen.png"
|
||||
mode="scaleToFill"
|
||||
style="width: 24rpx; height: 24rpx"
|
||||
v-else
|
||||
/>
|
||||
{{ payDetail.price }}
|
||||
<!-- <text v-if="payDetail.payType === 6">{{
|
||||
$t("airdrop")
|
||||
}}</text> -->
|
||||
</text>
|
||||
</view>
|
||||
<!-- <view class="item">
|
||||
<text class="label">{{$t('series.No')}}</text>
|
||||
<text class="value">{{payDetail.payNum}}</text>
|
||||
</view> -->
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("series.hash") }}</text>
|
||||
<text class="value">{{ payDetail.artworkHash }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="title-t">{{ $t("collection.info") }}</view>
|
||||
<view class="info-box" style="padding: 28rpx 32rpx">
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("collection.name") }}</text>
|
||||
<text class="value">{{ collectionsDetail.name || "-" }}</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("collection.type") }}</text>
|
||||
<text class="value">{{ collectionsDetail.collectionType || "-" }}</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("collection.size") }}</text>
|
||||
<text class="value">{{ collectionsDetail.size || "-" }}</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("collection.specs") }}</text>
|
||||
<text class="value">{{ collectionsDetail.specs || "-" }}</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("collection.address") }}</text>
|
||||
<text class="value">{{ collectionsDetail.address || "-" }}</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<text class="label">{{ $t("collection.intro") }}</text>
|
||||
<view class="des">{{ collectionsDetail.intro || "-" }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
class="title-t"
|
||||
:style="{ fontSize: '36rpx', color: '#434343', fontWeight: 600 }"
|
||||
>{{ $t("collection.detail") }}</view
|
||||
>
|
||||
<view class="detail-info">
|
||||
<!-- <view class="title-t">{{$t('collection.sell')}}</view>
|
||||
<view class="box-item">
|
||||
<image v-for="item in sellPoint" :key="item" :src="item" mode="widthFix"></image>
|
||||
</view> -->
|
||||
<view v-if="collDetails.length > 0" class="title-t">{{
|
||||
$t("collection.sellDec")
|
||||
}}</view>
|
||||
<view v-if="collDetails.length > 0" class="box">
|
||||
<image
|
||||
v-for="item in collDetails"
|
||||
:src="item"
|
||||
:key="item"
|
||||
mode="widthFix"
|
||||
class="img"
|
||||
></image>
|
||||
</view>
|
||||
<view v-if="companyInfo.length > 0" class="title-t">{{
|
||||
$t("collection.company")
|
||||
}}</view>
|
||||
<view v-if="companyInfo.length > 0" class="box">
|
||||
<image
|
||||
v-for="item in companyInfo"
|
||||
:src="item"
|
||||
:key="item"
|
||||
mode="widthFix"
|
||||
class="img"
|
||||
></image>
|
||||
</view>
|
||||
<view v-if="copyright.length > 0" class="title-t">{{
|
||||
$t("collection.copyight")
|
||||
}}</view>
|
||||
<view v-if="copyright.length > 0" class="box">
|
||||
<image
|
||||
v-for="item in copyright"
|
||||
:src="item"
|
||||
:key="item"
|
||||
mode="widthFix"
|
||||
class="img"
|
||||
></image>
|
||||
</view>
|
||||
<view v-if="Blockchain.length > 0" class="title-t">{{
|
||||
$t("collection.blockchain")
|
||||
}}</view>
|
||||
<view v-if="Blockchain.length > 0" class="box">
|
||||
<image
|
||||
v-for="item in Blockchain"
|
||||
:src="item"
|
||||
:key="item"
|
||||
mode="widthFix"
|
||||
class="img"
|
||||
></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="" style="text-align: center; margin-top: 30rpx">
|
||||
<image
|
||||
src="@/static/image/home/fontree.png"
|
||||
mode="aspectFit"
|
||||
class="logo"
|
||||
></image>
|
||||
</view>
|
||||
<image
|
||||
src="../../../static/image/mine/cert.png"
|
||||
@click="goCert"
|
||||
mode=""
|
||||
class="cert-img"
|
||||
></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
stickyShow: false,
|
||||
ID: 0,
|
||||
collectionsDetail: {},
|
||||
sellPoint: [],
|
||||
collDetails: [],
|
||||
companyInfo: [],
|
||||
copyright: [],
|
||||
Blockchain: [],
|
||||
payDetail: {},
|
||||
allImgList: [],
|
||||
symbol:
|
||||
uni.getLocale() === "en"
|
||||
? "$"
|
||||
: uni.getLocale() === "zh-Hant"
|
||||
? "HK$"
|
||||
: "¥",
|
||||
};
|
||||
},
|
||||
onPageScroll(e) {
|
||||
this.stickyShow = e.scrollTop > 5 ? true : false;
|
||||
},
|
||||
methods: {
|
||||
goCert() {
|
||||
console.log(this.collectionsDetail.coverImg);
|
||||
let data = {
|
||||
CollectionsUID: this.collectionsDetail.collectionUID,
|
||||
collectionImg: this.collectionsDetail.coverImg,
|
||||
seriesName: this.collectionsDetail.name,
|
||||
physical: this.collectionsDetail.physical,
|
||||
payDetail: this.payDetail,
|
||||
};
|
||||
uni.navigateTo({
|
||||
url:
|
||||
"/pages/mine/cert/cert?data=" +
|
||||
encodeURIComponent(JSON.stringify(data)),
|
||||
});
|
||||
},
|
||||
async getDetail() {
|
||||
let data = {
|
||||
ID: Number(this.ID),
|
||||
};
|
||||
let res = await this.$api.mine.paymentDetail(data);
|
||||
if (res.status === 0) {
|
||||
this.collectionsDetail = res.data.collections;
|
||||
this.payDetail = res.data.pay;
|
||||
(this.allImgList = this.collectionsDetail.cutImg
|
||||
? JSON.parse(this.collectionsDetail.cutImg)
|
||||
: []),
|
||||
this.cutImg();
|
||||
} else {
|
||||
uni.$u.toast(this.$t("load.failed"));
|
||||
}
|
||||
},
|
||||
cutImg() {
|
||||
this.allImgList.forEach((v) => {
|
||||
if (Array.isArray(v.imgs)) {
|
||||
v.imgs = v.imgs.filter((img) => {
|
||||
if (img) {
|
||||
return img;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
this.allImgList.forEach((v) => {
|
||||
if (v.label === "卖点") {
|
||||
this.sellPoint = v.imgs;
|
||||
} else if (v.label === "藏品细节") {
|
||||
this.collDetails = v.imgs;
|
||||
} else if (v.label === "工艺/公司介绍") {
|
||||
this.companyInfo = v.imgs;
|
||||
} else if (v.label === "版权声明") {
|
||||
this.copyright = v.imgs;
|
||||
} else if (v.label === "区块链说明") {
|
||||
this.Blockchain = v.imgs;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
onLoad(option) {
|
||||
this.ID = option.ID;
|
||||
this.artworkUid = option.artworkUid;
|
||||
},
|
||||
onShow() {
|
||||
this.getDetail();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: url("@/static/image/home/detail-kind-bg.png") no-repeat;
|
||||
// background-size: 100% 100%;
|
||||
// background-attachment:fixed;
|
||||
// height: 100vh;
|
||||
}
|
||||
.fixed-box {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 172rpx;
|
||||
background: #3e3e3e;
|
||||
z-index: 10;
|
||||
.btn {
|
||||
display: flex;
|
||||
padding: 42rpx 38rpx;
|
||||
}
|
||||
.back {
|
||||
width: 172rpx;
|
||||
height: 56rpx;
|
||||
border-radius: 40rpx;
|
||||
background: #efba42;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
.buyer {
|
||||
width: 484rpx;
|
||||
height: 56rpx;
|
||||
border-radius: 40rpx;
|
||||
background: #558bf2;
|
||||
}
|
||||
}
|
||||
.top-img {
|
||||
// background: url('../../../static/image/home/box.png') no-repeat;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
width: 660rpx;
|
||||
height: 660rpx;
|
||||
border-radius: 8rpx;
|
||||
margin: 44rpx 44rpx 32rpx 46rpx;
|
||||
position: relative;
|
||||
.price {
|
||||
font-size: 48rpx;
|
||||
position: absolute;
|
||||
bottom: 10rpx;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.box-item {
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
// margin: 0 44rpx 0 46rpx;
|
||||
image {
|
||||
width: 100%;
|
||||
// height: 198rpx;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.detail-info {
|
||||
// background: rgba(0,0,0,0.8);
|
||||
background: #ffffff;
|
||||
border-radius: 8rpx;
|
||||
margin: 30rpx;
|
||||
padding: 23rpx;
|
||||
.box {
|
||||
// margin: 0 44rpx 0 46rpx;
|
||||
margin-bottom: 46rpx;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
border-radius: 8rpx;
|
||||
// padding: 38rpx 32rpx;
|
||||
position: relative;
|
||||
.item-img {
|
||||
width: 234rpx;
|
||||
height: 234rpx;
|
||||
border-radius: 8rpx;
|
||||
position: absolute;
|
||||
top: 38rpx;
|
||||
right: 32rpx;
|
||||
}
|
||||
|
||||
.img {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
.title-t {
|
||||
text-align: center;
|
||||
margin: 40rpx 0 16rpx 0;
|
||||
color: #434343;
|
||||
}
|
||||
.info-box {
|
||||
margin: 0 44rpx 0 46rpx;
|
||||
margin-bottom: 46rpx;
|
||||
background: #ffffff;
|
||||
// background: rgba(11, 0, 0, 0.3);
|
||||
border-radius: 8rpx;
|
||||
// padding: 38rpx 32rpx;
|
||||
position: relative;
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
font-size: 20rpx;
|
||||
margin-bottom: 32rpx;
|
||||
.label {
|
||||
color: #434343;
|
||||
padding-right: 40rpx;
|
||||
width: 130rpx;
|
||||
}
|
||||
.value {
|
||||
color: #878787;
|
||||
width: 450rpx;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
white-space: normal;
|
||||
}
|
||||
.des {
|
||||
color: #878787;
|
||||
width: 450rpx;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
white-space: normal;
|
||||
font-size: 20rpx;
|
||||
}
|
||||
}
|
||||
.img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.logo {
|
||||
margin-top: 10rpx;
|
||||
width: 202rpx;
|
||||
height: 56rpx;
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
.cert-img {
|
||||
position: fixed;
|
||||
right: 40rpx;
|
||||
bottom: 25vh;
|
||||
width: 84rpx;
|
||||
height: 84rpx;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,100 @@
|
||||
<template>
|
||||
<u-popup :show="isShow" mode="center" bgColor="transparent" @close="close">
|
||||
<view class="popupLocale-box">
|
||||
<view class="title">{{ $t('problem.feedback') }}</view>
|
||||
<view class="item">
|
||||
<u--textarea height="340" v-model="content" :placeholder="$t('set.input')" maxlength="200" count
|
||||
border="none"></u--textarea>
|
||||
</view>
|
||||
</view>
|
||||
<view style="display: flex;">
|
||||
<u-button :text="$t('navbar.back')" color="#EDC466" @click="close"
|
||||
style="width: 260rpx;height: 56rpx;border-radius: 40rpx;margin-top: 30rpx;"></u-button>
|
||||
<u-button :text="$t('sumbit')" color="#699A70" @click="sendFeedBack"
|
||||
style="width: 260rpx;height: 56rpx;border-radius: 40rpx;margin-top: 30rpx;"></u-button>
|
||||
</view>
|
||||
</u-popup>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
content: '',
|
||||
isShow: false
|
||||
}
|
||||
},
|
||||
props: ['showQa'],
|
||||
watch: {
|
||||
showQa() {
|
||||
this.isShow = this.showQa
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async sendFeedBack() {
|
||||
let res = await this.$api.mine.feedBack({
|
||||
content: this.content
|
||||
});
|
||||
if (res.status === 0) {
|
||||
this.$common.msgToast(res.msg, null, 'success');
|
||||
this.show = false
|
||||
this.content = ''
|
||||
} else {
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
},
|
||||
close() {
|
||||
this.$emit('closeFeed', false)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" >
|
||||
.popupLocale-box {
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
width: 582rpx;
|
||||
overflow: hidden;
|
||||
padding: 30rpx 42rpx;
|
||||
|
||||
.title {
|
||||
font-size: 40rpx;
|
||||
text-align: center;
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.u-button {
|
||||
width: 260rpx;
|
||||
height: 56rpx;
|
||||
border-radius: 40rpx;
|
||||
}
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 34rpx 0 38rpx 0;
|
||||
}
|
||||
|
||||
.tips {
|
||||
color: #DC0023;
|
||||
font-size: 20rpx;
|
||||
text-align: center;
|
||||
margin-top: 80rpx;
|
||||
}
|
||||
|
||||
/deep/ .u-textarea__count {
|
||||
background-color: transparent !important;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
/deep/ .uni-textarea-textarea {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/deep/ .u-textarea {
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,367 @@
|
||||
<template>
|
||||
<view class="main">
|
||||
<feedback :showQa="showQa" @closeFeed ='closeFeed'/>
|
||||
<navBar :navTitle="'消息'" :hasRight="true" :stickyShow="stickyShow" :currentPage="'pages/mine/index'" :backBackGroundColor="'#699A70'" @clickRight="clickRight"/>
|
||||
<view class="list">
|
||||
<scroll-view style="width: 100%; height: calc(100vh - 200upx); position: relative" scroll-y="true">
|
||||
<view
|
||||
class="card"
|
||||
v-for="item in indexList"
|
||||
:key="item.Uuid"
|
||||
:style="!item.Clicked ||!item.Claimed? 'background-color: #E4E4E4;':'background-color: #FFFFFF;' "
|
||||
@click="openKt(item)"
|
||||
>
|
||||
<view class="avtor"><image class="avtimg" :src="item.PicUrl"></image></view>
|
||||
<view class="item">
|
||||
<view class="item-txt">
|
||||
<view v-if="item.DropOrAnnounce === 0" class="kt">{{$t('airdrop')}}</view>
|
||||
<view v-else class="gonggao">{{$t('announcement')}}</view>
|
||||
<view v-if="item.DropOrAnnounce === 0" class="title">{{ item.Series }}</view>
|
||||
<view v-else class="title">{{ item.Title }}</view>
|
||||
<image
|
||||
v-if="!item.Clicked&& item.DropOrAnnounce === 0"
|
||||
class="dian"
|
||||
src="../../../static/image/mine/dian.png"
|
||||
></image>
|
||||
</view>
|
||||
<view class="item-txt" style="margin-top: 10upx">
|
||||
<view v-if="item.DropOrAnnounce === 0" class="content">{{ item.Desc }}</view>
|
||||
<view v-else class="content" v-html="item.Content"></view>
|
||||
<!-- <view style="font-size: 12upx;color: rgba(255, 255, 255, 0.3);">{{ item.TimeFormat }}</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<u-popup :show="showKt" mode="center" @close="closePop" bgColor="transparent">
|
||||
<view class="popupLocale-box">
|
||||
<view style="padding-left: 190upx; padding-right: 190upx">
|
||||
<view v-if="!this.isMsgDetail" class="title">{{$t('airdrop')}}</view>
|
||||
<view v-else style="background-color: #EDC466;" class="title">{{$t('announcement')}}</view>
|
||||
</view>
|
||||
<view class="item"><image style="width: 600upx; height: 600upx" :src="listItem.PicUrl"></image></view>
|
||||
<view
|
||||
style="
|
||||
color: #000;
|
||||
margin-top: 10upx;
|
||||
margin-bottom: 10upx;
|
||||
font-size: 40upx;
|
||||
"
|
||||
>
|
||||
{{ this.isMsgDetail ? listItem.Title : listItem.Collection }}
|
||||
</view>
|
||||
<view v-if="!this.isMsgDetail" style="color: #6c6c6c; margin-top: 10upx; margin-bottom: 10upx">
|
||||
{{ listItem.Desc }}
|
||||
</view>
|
||||
<view v-else style="color: #6c6c6c; margin-top: 10upx; margin-bottom: 10upx" v-html="listItem.Content"></view>
|
||||
</view>
|
||||
<view style="display: flex">
|
||||
<u-button
|
||||
v-if="listItem.Claimed === 0 && !this.isMsgDetail"
|
||||
:text="$t('to.accept')"
|
||||
|
||||
@click="recive"
|
||||
style="width: 460rpx;height: 56rpx;border-radius: 40rpx;margin-top: 30rpx;background: #699A70;
|
||||
border: none;
|
||||
color:#fff;"
|
||||
></u-button>
|
||||
<u-button
|
||||
v-if="listItem.Clicked === 0 && this.isMsgDetail"
|
||||
:text="$t('read')"
|
||||
@click="readMsg"
|
||||
style="
|
||||
width: 460rpx;
|
||||
height: 56rpx;
|
||||
border-radius: 40rpx;
|
||||
margin-top: 30rpx;
|
||||
background: #699A70;
|
||||
border: none;
|
||||
color:#fff;
|
||||
"
|
||||
></u-button>
|
||||
<u-button
|
||||
v-if="listItem.Clicked === 1 && this.isMsgDetail"
|
||||
:text="$t('close')"
|
||||
|
||||
@click="closePop"
|
||||
style="
|
||||
width: 460rpx;
|
||||
height: 56rpx;
|
||||
border-radius: 40rpx;
|
||||
margin-top: 30rpx;
|
||||
background: #699A70;
|
||||
border: none;
|
||||
color:#fff;
|
||||
"
|
||||
></u-button>
|
||||
<u-button
|
||||
v-if="listItem.Claimed === 1 && !this.isMsgDetail"
|
||||
:text="$t('close')"
|
||||
|
||||
@click="closePop"
|
||||
style="width: 460rpx;height: 56rpx;border-radius: 40rpx;margin-top: 30rpx;background: #699A70;
|
||||
border: none;
|
||||
color:#fff;"
|
||||
></u-button>
|
||||
</view>
|
||||
</u-popup>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import feedback from '../feedback/feedback.vue';
|
||||
|
||||
export default {
|
||||
components:{
|
||||
feedback
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showKt: false,
|
||||
stickyShow: false,
|
||||
indexList: [],
|
||||
listItem: {},
|
||||
isMsgDetail: false,
|
||||
showQa:false
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
this.loadmore();
|
||||
},
|
||||
onPageScroll(e) {
|
||||
this.stickyShow = e.scrollTop > 5 ? true : false;
|
||||
},
|
||||
methods: {
|
||||
closePop() {
|
||||
this.showKt = false;
|
||||
this.loadmore();
|
||||
this.canScroll();
|
||||
},
|
||||
// 打开空头详情
|
||||
async openKt(item) {
|
||||
this.listItem = item;
|
||||
// console.log(this.listItem);
|
||||
if (this.listItem.DropOrAnnounce === 0) {
|
||||
this.isMsgDetail = false;
|
||||
await this.clickDetail();
|
||||
} else {
|
||||
this.isMsgDetail = true;
|
||||
}
|
||||
|
||||
this.showKt = true;
|
||||
this.stopScroll();
|
||||
},
|
||||
// 阅读
|
||||
async readMsg(){
|
||||
let data = {
|
||||
Uuid: this.listItem.Uuid,
|
||||
Clicked: this.listItem.Clicked
|
||||
};
|
||||
let res = await this.$api.airdrop.readMsg(data);
|
||||
if (res.status === 0) {
|
||||
this.showKt = false;
|
||||
this.canScroll();
|
||||
this.loadmore();
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
},
|
||||
// 查看详情
|
||||
async clickDetail() {
|
||||
let data = {
|
||||
Collection: this.listItem.Collection,
|
||||
Desc: this.listItem.Desc,
|
||||
PicUrl: this.listItem.PicUrl,
|
||||
Series: this.listItem.Series,
|
||||
Uuid: this.listItem.Uuid,
|
||||
Clicked: this.listItem.Clicked
|
||||
};
|
||||
let res = await this.$api.airdrop.collectionSepcific(data);
|
||||
if (res.status === 0) {
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
},
|
||||
// 加载空投列表
|
||||
async loadmore() {
|
||||
let res = await this.$api.airdrop.collectionList();
|
||||
if (res.status === 0) {
|
||||
this.indexList = res.data.Data;
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
},
|
||||
|
||||
// 接受1
|
||||
async recive() {
|
||||
let data = {
|
||||
UserId: uni.getStorageSync('mall-user-info').ID,
|
||||
Uuid: this.listItem.Uuid
|
||||
};
|
||||
|
||||
let res = await this.$api.airdrop.getCollection(data);
|
||||
if (res.status === 0) {
|
||||
this.step2(this.listItem.CollectionUid);
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
},
|
||||
// 接受1
|
||||
async step2(id) {
|
||||
let data = {
|
||||
collectionsUID: id,
|
||||
userAirdropUuid: this.listItem.Uuid
|
||||
};
|
||||
let res = await this.$api.airdrop.getCollectionStepTwo(data);
|
||||
if (res.status === 0) {
|
||||
this.showKt = false;
|
||||
this.canScroll();
|
||||
this.loadmore();
|
||||
} else {
|
||||
uni.hideLoading();
|
||||
uni.$u.toast(res.msg);
|
||||
}
|
||||
},
|
||||
clickRight() {
|
||||
this.showQa = true;
|
||||
},
|
||||
closeFeed(isShow){
|
||||
this.showQa = isShow
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: #F5F5F5;
|
||||
// background-size: 100% 100%;
|
||||
// background-attachment: fixed;
|
||||
height: 100vh;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.main {
|
||||
height: 100%;
|
||||
padding: 36upx 32upx;
|
||||
.list {
|
||||
height: 100%;
|
||||
}
|
||||
// .u-popup /deep/ .u-transition {
|
||||
// background-color: rgba(0, 0, 0, 0.9) !important;
|
||||
// }
|
||||
.popupLocale-box {
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
width: 582rpx;
|
||||
overflow: hidden;
|
||||
padding: 30rpx 42rpx;
|
||||
.title {
|
||||
// background-color: rgba(88, 146, 255, 0.6);
|
||||
background: rgba(105,154,112, 0.6);
|
||||
font-size: 40rpx;
|
||||
|
||||
border-radius: 40upx;
|
||||
text-align: center;
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
.u-button {
|
||||
width: 260rpx;
|
||||
height: 56rpx;
|
||||
border-radius: 40rpx;
|
||||
}
|
||||
.item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
.card {
|
||||
width: 100%;
|
||||
height: 200upx;
|
||||
border-radius: 8upx;
|
||||
text-align: center;
|
||||
margin-bottom: 20upx;
|
||||
display: inline-flex;
|
||||
// background: #FFFFFF;
|
||||
.avtor {
|
||||
width: 220upx;
|
||||
margin-top: 30upx;
|
||||
height: 100%;
|
||||
display: block;
|
||||
align-items: center;
|
||||
.avtimg {
|
||||
width: 144upx;
|
||||
height: 144upx;
|
||||
}
|
||||
}
|
||||
.item {
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
padding-right: 20upx;
|
||||
position: relative;
|
||||
.happy {
|
||||
position: absolute;
|
||||
width: 181upx;
|
||||
height: 176upx;
|
||||
right: 0;
|
||||
}
|
||||
.item-txt {
|
||||
margin-top: 30upx;
|
||||
display: inline-flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
.kt {
|
||||
padding: 4upx 16upx ;
|
||||
// background-color: #558bf2;
|
||||
background: #699A70;
|
||||
border-radius: 30upx;
|
||||
margin-right: 10upx;
|
||||
font-size: 24upx;
|
||||
}
|
||||
.gonggao {
|
||||
padding: 4upx 16upx ;
|
||||
background-color: #edc466;
|
||||
border-radius: 30upx;
|
||||
margin-right: 10upx;
|
||||
font-size: 24upx;
|
||||
}
|
||||
.title {
|
||||
width: 290upx;
|
||||
font-size: 34upx;
|
||||
line-height: 1;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
word-break: break-all;
|
||||
color: #434343;
|
||||
text-align: left;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
.dian {
|
||||
width: 40upx;
|
||||
height: 40upx;
|
||||
position: absolute;
|
||||
right: 20upx;
|
||||
}
|
||||
.content {
|
||||
width: 300upx;
|
||||
height: 80upx;
|
||||
word-break: break-all;
|
||||
text-align: left;
|
||||
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2; //这儿的数字代表的就是你所需要实现效果的第N行
|
||||
-webkit-box-orient: vertical;
|
||||
color: #878787;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,46 @@
|
||||
<template>
|
||||
<view>
|
||||
<!-- <image src="../../static/image/start/logo.png" mode="" class="logo"></image> -->
|
||||
<!-- <image src="../../static/image/start/welcome.png" mode="" class="welcome"></image> -->
|
||||
<!-- <image src="../../static/image/start/bt-bg.png" mode="" class="btBg"></image> -->
|
||||
<!-- <view class="btn" @click="goHome">
|
||||
点击进入
|
||||
</view> -->
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
/* goHome() {
|
||||
console.log(1111);
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
} */
|
||||
},
|
||||
onShow() {
|
||||
setTimeout(() => {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page{
|
||||
height: 100vh;
|
||||
background:url('../../static/image/start/new_bg.png') no-repeat center center fixed;
|
||||
background-size: cover;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
</style>
|
@ -0,0 +1,14 @@
|
||||
#
|
||||
## Alias OBJ Material File
|
||||
# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited
|
||||
|
||||
newmtl Color_D06
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.894118 0.752941 0.329412
|
||||
Ks 0.330000 0.330000 0.330000
|
||||
|
||||
newmtl Color_D07
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.650980 0.513725 0.105882
|
||||
Ks 0.330000 0.330000 0.330000
|
||||
|
@ -0,0 +1,19 @@
|
||||
#
|
||||
## Alias OBJ Material File
|
||||
# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited
|
||||
|
||||
newmtl Color_D06
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.894118 0.752941 0.329412
|
||||
Ks 0.330000 0.330000 0.330000
|
||||
|
||||
newmtl ForegroundColor
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.000000 0.000000 0.000000
|
||||
Ks 0.330000 0.330000 0.330000
|
||||
|
||||
newmtl Color_D07
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.650980 0.513725 0.105882
|
||||
Ks 0.330000 0.330000 0.330000
|
||||
|
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 403 KiB |
@ -0,0 +1,5 @@
|
||||
安卓证书
|
||||
|
||||
证书别名: mallapp
|
||||
秘钥密码: 12345678
|
||||
证明文件: <同目录的mall-app.keystore>SDSSS
|
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 451 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 134 B |
After Width: | Height: | Size: 3.5 MiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 382 KiB |
After Width: | Height: | Size: 465 KiB |
After Width: | Height: | Size: 578 KiB |
After Width: | Height: | Size: 244 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 280 B |
After Width: | Height: | Size: 3.1 MiB |
After Width: | Height: | Size: 3.0 MiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 630 KiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 777 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 382 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 7.1 MiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 623 B |
After Width: | Height: | Size: 5.1 MiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 7.6 KiB |