提交
@ -4,11 +4,11 @@ if (process.env.NODE_ENV === 'development') {
|
|||||||
// 开发环境
|
// 开发环境
|
||||||
// baseUrl = "http://localhost:7001/";
|
// baseUrl = "http://localhost:7001/";
|
||||||
// socketUrl = "ws://localhost:6001/";
|
// socketUrl = "ws://localhost:6001/";
|
||||||
baseUrl = "http://q.sjqqzc.top";
|
baseUrl = "http://api.dxmt.io";
|
||||||
//socketUrl = "ws://8.129.186.35:6001/";
|
//socketUrl = "ws://8.129.186.35:6001/";
|
||||||
} else if (process.env.NODE_ENV === 'production') {
|
} else if (process.env.NODE_ENV === 'production') {
|
||||||
// 生产环境
|
// 生产环境
|
||||||
baseUrl = "http://q.sjqqzc.top";
|
baseUrl = "http://api.dxmt.io";
|
||||||
//socketUrl = "ws://8.129.186.35:6001/";
|
//socketUrl = "ws://8.129.186.35:6001/";
|
||||||
}
|
}
|
||||||
const courtConfig = {
|
const courtConfig = {
|
||||||
|
5
main.js
@ -18,10 +18,7 @@ Vue.prototype.wxShare = wxShare;
|
|||||||
import { judgeLogin } from '@/config/login';
|
import { judgeLogin } from '@/config/login';
|
||||||
Vue.prototype.judgeLogin = judgeLogin;
|
Vue.prototype.judgeLogin = judgeLogin;
|
||||||
Vue.config.productionTip = false;
|
Vue.config.productionTip = false;
|
||||||
// #ifdef H5
|
|
||||||
//微信SDK
|
|
||||||
import '@/plugins/wxJsSDK.js';
|
|
||||||
// #endif
|
|
||||||
import VueI18n from 'vue-i18n';
|
import VueI18n from 'vue-i18n';
|
||||||
import en from './locales/en.json'; // 引入英文语言包
|
import en from './locales/en.json'; // 引入英文语言包
|
||||||
import zh from './locales/zh.json'; // 引入中文语言包
|
import zh from './locales/zh.json'; // 引入中文语言包
|
||||||
|
7
package-lock.json
generated
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "uni-app-demo-master",
|
"name": "unapp",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
@ -51,8 +51,9 @@
|
|||||||
},
|
},
|
||||||
"node_modules/tki-qrcode": {
|
"node_modules/tki-qrcode": {
|
||||||
"version": "0.1.6",
|
"version": "0.1.6",
|
||||||
"resolved": "https://registry.npmmirror.com/tki-qrcode/-/tki-qrcode-0.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/tki-qrcode/-/tki-qrcode-0.1.6.tgz",
|
||||||
"integrity": "sha512-EnnlS8psowC7PsW3MDYcxvJYkuklX3WAZ/BYanR4TdBHTu74GfjTBX8Y16REP+AeDENiVtBPh4jtTRL2P736hQ=="
|
"integrity": "sha512-EnnlS8psowC7PsW3MDYcxvJYkuklX3WAZ/BYanR4TdBHTu74GfjTBX8Y16REP+AeDENiVtBPh4jtTRL2P736hQ==",
|
||||||
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/vue-clipboard2": {
|
"node_modules/vue-clipboard2": {
|
||||||
"version": "0.3.3",
|
"version": "0.3.3",
|
||||||
|
@ -564,6 +564,12 @@
|
|||||||
"enablePullDownRefresh": false
|
"enablePullDownRefresh": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
},{
|
||||||
|
"path" : "pages/questionnaire/select",
|
||||||
|
"style" :
|
||||||
|
{
|
||||||
|
"navigationBarTitleText": "select"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"globalStyle": {
|
"globalStyle": {
|
||||||
@ -582,7 +588,7 @@
|
|||||||
"pagePath": "pages/index/index",
|
"pagePath": "pages/index/index",
|
||||||
"iconPath": "static/images/home.png",
|
"iconPath": "static/images/home.png",
|
||||||
"selectedIconPath": "static/images/home1.png",
|
"selectedIconPath": "static/images/home1.png",
|
||||||
"text": "Home Page",
|
"text": "Home",
|
||||||
"iconSize": 48
|
"iconSize": 48
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1,13 +1,152 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="page">
|
<view class="page">
|
||||||
<nav-bar title="Wallet fund records" bgColor="#fff"></nav-bar>
|
<view style="margin-top: 60rpx;">
|
||||||
<view>{{init.name}}</view>
|
<image src="/static/images/logo.png" style="width: 140rpx; height: 60rpx; float: left; margin-left: 20rpx;"></image>
|
||||||
|
<view class="v1">
|
||||||
|
<!-- <uni-icons size="20" type="gift"></uni-icons> -->
|
||||||
|
<uni-badge @click="onPageJump('/pages/mine/notice')" class="uni-badge-left-margin" :is-dot="true" text="0" :offset="[5, 10]" absolute="rightTop" size="small">
|
||||||
|
<uni-icons size="20" type="notification" style="margin-left: 40rpx;"></uni-icons>
|
||||||
|
</uni-badge>
|
||||||
|
</view>
|
||||||
|
<view style="clear: both;"></view>
|
||||||
|
</view>
|
||||||
|
<view style="margin-top: 20rpx;">
|
||||||
|
<uni-search-bar class="uni-mt-10" radius="10" v-model="kw"
|
||||||
|
placeholder="Search the questionnaire" clearButton="auto" cancelButton="none" @confirm="search" />
|
||||||
|
</view>
|
||||||
|
<view class="num">
|
||||||
|
<view style="font-size: 30rpx; color: #999;">Total assets</view>
|
||||||
|
<view>
|
||||||
|
<span style="font-size: 60rpx; font-weight: bold; float: left;">{{parseFloat(user.money).toFixed(4)}}</span>
|
||||||
|
<span style="font-size: 40rpx; font-weight: 600; margin: 20rpx 10rpx auto 10rpx; float: left;">USDT</span>
|
||||||
|
<image src="/static/images/index2.png" style="width: 14rpx; height: 10rpx; float: left; margin-top: 42rpx;"></image>
|
||||||
|
<view style="clear: both;"></view>
|
||||||
|
</view>
|
||||||
|
<view style="font-size: 30rpx; color: #999;">
|
||||||
|
<span>Today's earnings</span>
|
||||||
|
<span style="margin-left: 20rpx;">$ 0.00</span>
|
||||||
|
</view>
|
||||||
|
<view style="clear: both;"></view>
|
||||||
|
</view>
|
||||||
|
<view style="width: 94%; margin: auto;">
|
||||||
|
<uni-row>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<button @click="onTokenJump('/pages/wallet/putforward')" style="background-color: #fff; border: 1px solid #1D61E7; border-radius: 40rpx; width: 93%; margin-top: 30rpx;">
|
||||||
|
<image src="/static/images/index4.png" style="width: 30rpx; height: 30rpx; float: left; margin-left: 18%; margin-top: 30rpx;"></image>
|
||||||
|
<span style="float: left; color: #1D61E7; margin-left: 10rpx;">Cash out</span>
|
||||||
|
</button>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<button @click="onTokenJump('/pages/wallet/recharge')" style="background-color: #1D61E7; border: 1px solid #1D61E7; border-radius: 40rpx; width: 93%; float: right; margin-top: 30rpx;">
|
||||||
|
<image src="/static/images/index3.png" style="width: 30rpx; height: 30rpx; float: left; margin-left: 18%; margin-top: 30rpx;"></image>
|
||||||
|
<span style="float: left; color: #fff; margin-left: 10rpx;">Recharge</span>
|
||||||
|
</button>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="noticeBar">
|
||||||
|
<uni-icons type="sound" size="25" color="#3795F9" style="margin:0 10rpx 0 15rpx;" />
|
||||||
|
<swiper class="list" circular="true" vertical="true" autoplay="true" interval="3000" duration="1000">
|
||||||
|
<swiper-item v-for="item in notices" :key="item.id" @click="handleInfo(item.id)">
|
||||||
|
{{ getcash(item) }}
|
||||||
|
</swiper-item>
|
||||||
|
</swiper>
|
||||||
|
<uni-icons type="right" size="20" color="#999" style="margin-right: 15rpx;" />
|
||||||
|
</view>
|
||||||
|
<view style="width: 94%; margin: 60rpx auto;">
|
||||||
|
<uni-row>
|
||||||
|
<uni-col :span="8">
|
||||||
|
<image src="/static/images/index5.png" style="width: 220rpx; height: 180rpx; margin: 10rpx auto;"></image>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="16">
|
||||||
|
<view style="font-size: 30rpx; color: #999; margin-top: 10rpx;">Surprise reward</view>
|
||||||
|
<view style="font-size: 60rpx color: #333; font-weight: 600;">Invite friends to get high commission</view>
|
||||||
|
<view style="font-size: 30rpx; color: #333; margin-top: 10rpx;">
|
||||||
|
<span style="float: left;">View details</span>
|
||||||
|
<span style="float: left;"><uni-icons type="arrow-right" color="#333" size="20"></uni-icons></span>
|
||||||
|
<span style="float: right;">1/3</span>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
</view>
|
||||||
|
<view style="width: 94%; margin: auto;">
|
||||||
|
<uni-section title="Questionnaire" titleFontSize="24" style="font-weight: 600;">
|
||||||
|
<view class="v2" :style="index==0 ? '' : 'margin-top: 20rpx'" v-if="list.length > 0" v-for="(item, index) in list" :key="index">
|
||||||
|
<uni-row :gutter="10" class="row">
|
||||||
|
<uni-col :span="6" style="text-align: center;">
|
||||||
|
<image class="i" src="/static/images/q1.png" fit="cover"></image>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="18">
|
||||||
|
<view class="title">{{item.title}}</view>
|
||||||
|
<view style="font-size: 12px; font-weight: 400; color: #999; line-height: 20px;">
|
||||||
|
<view style="width: 40%; float: left; padding-top: 8rpx;">
|
||||||
|
<slider :value="item.used" :disabled="true" style="height: 16rpx;" min="0" :max="item.stock+item.used" step="100" />
|
||||||
|
</view>
|
||||||
|
<view style="width: 55%; float: left; line-height: 35px; margin-left: 5%;">
|
||||||
|
Answered: <span style="color: #1D61E7;">{{item.used}}</span>/{{item.stock+item.used}}
|
||||||
|
</view>
|
||||||
|
<view style="text-align: left; clear: both;">Period: {{item.billing_cycle}} {{item.cycle_type}}</view>
|
||||||
|
</view>
|
||||||
|
<view style="font-size: 12px; font-weight: 400; color: #999; line-height: 20px; te">
|
||||||
|
<view style="float: left; color: #333; font-size: 16px; font-weight: 500; line-height: 40px;">
|
||||||
|
reward: <span style="font-size: 20px;">${{parseFloat(item.price).toFixed(2)}} </span>
|
||||||
|
</view>
|
||||||
|
<view style="float: right;">
|
||||||
|
<button type="primary" class="b" @click="onTokenJump('/pages/questionnaire/details?id='+item.id)">To answer</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
</view>
|
||||||
|
<view @click="onPageJump1('/pages/questionnaire/index')" style="border: 1px solid #999; border-radius: 45rpx; font-size: 34rpx; margin: 40rpx auto; color: #333; width: 40%; text-align: center; height: 90rpx; line-height: 90rpx;">
|
||||||
|
View all <uni-icons type="arrow-right" color="#333" size="20"></uni-icons>
|
||||||
|
</view>
|
||||||
|
</uni-section>
|
||||||
|
</view>
|
||||||
|
<view style="width: 94%; margin: auto; padding-bottom:40rpx;">
|
||||||
|
<uni-section title="Core advantage" titleFontSize="24" style="font-weight: 600;">
|
||||||
|
<view class="v2" style="margin-top: 20rpx; padding: 30rpx 20rpx;">
|
||||||
|
<view><image src="/static/images/index6.png" style="width: 130rpx; height: 130rpx; margin: auto;"></image></view>
|
||||||
|
<view style="font-size: 34rpx; font-weight: 600; text-align: center; margin-top: 20rpx;">
|
||||||
|
Application of new technologies (automation tools/AI assistance)
|
||||||
|
</view>
|
||||||
|
<view style="text-align: center; margin-top: 20rpx; color: #999; font-size: 26rpx;">
|
||||||
|
1. Intelligent answer engine<br>
|
||||||
|
2. Dynamic question bank management system<br>
|
||||||
|
3. Multi-mode anti-detection system
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="v2">
|
||||||
|
<view><image src="/static/images/index7.png" style="width: 130rpx; height: 130rpx; margin: auto;"></image></view>
|
||||||
|
<view style="font-size: 34rpx; font-weight: 600; text-align: center; margin-top: 20rpx;">
|
||||||
|
Construction of Quality Monitoring System
|
||||||
|
</view>
|
||||||
|
<view style="text-align: center; margin-top: 20rpx; color: #999; font-size: 26rpx;">
|
||||||
|
1. Doube-blind audit mechanism<br>
|
||||||
|
2. Dynamic scoring model<br>
|
||||||
|
3. Data traceability
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="v2">
|
||||||
|
<view><image src="/static/images/index8.png" style="width: 130rpx; height: 130rpx; margin: auto;"></image></view>
|
||||||
|
<view style="font-size: 34rpx; font-weight: 600; text-align: center; margin-top: 20rpx;">
|
||||||
|
Operational guidelines for compliance
|
||||||
|
</view>
|
||||||
|
<view style="text-align: center; margin-top: 20rpx; color: #999; font-size: 26rpx;">
|
||||||
|
1. Identity portrait consistency<br>
|
||||||
|
2. Behavior pattern simulation<br>
|
||||||
|
3. Equipment environment quarantine
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-section>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import zNavigation from '@/components/module/navigation.vue';
|
import zNavigation from '@/components/module/navigation.vue';
|
||||||
|
import { getUserInfo } from '@/config/utils';
|
||||||
import {
|
import {
|
||||||
mapState,
|
mapState,
|
||||||
mapMutations
|
mapMutations
|
||||||
@ -19,9 +158,39 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
activeName: 'first',
|
activeName: 'first',
|
||||||
value: 30,
|
|
||||||
url:"/static/images/tx.png",
|
url:"/static/images/tx.png",
|
||||||
list:[]
|
list:[],
|
||||||
|
user: {money: 0.00},
|
||||||
|
kw: '',
|
||||||
|
notices: [{
|
||||||
|
"id": "149",
|
||||||
|
"user_id": 127710,
|
||||||
|
"deduction_amount": "2.0000000000",
|
||||||
|
"recive_amount": "1.0000000000",
|
||||||
|
"fee": "1.0000000000",
|
||||||
|
"created_at": "2025-06-01 02:07:13",
|
||||||
|
"updated_at": "2025-06-01 02:07:13",
|
||||||
|
"network": "BEP-20",
|
||||||
|
"address": "0x12344578754433",
|
||||||
|
"status": 0,
|
||||||
|
"memo": null,
|
||||||
|
"transfer_at": null,
|
||||||
|
"txid": null
|
||||||
|
},{
|
||||||
|
"id": "150",
|
||||||
|
"user_id": 127710,
|
||||||
|
"deduction_amount": "2.0000000000",
|
||||||
|
"recive_amount": "1.0000000000",
|
||||||
|
"fee": "1.0000000000",
|
||||||
|
"created_at": "2025-06-01 02:07:13",
|
||||||
|
"updated_at": "2025-06-01 02:07:13",
|
||||||
|
"network": "BEP-20",
|
||||||
|
"address": "0x12344578754433",
|
||||||
|
"status": 0,
|
||||||
|
"memo": null,
|
||||||
|
"transfer_at": null,
|
||||||
|
"txid": null
|
||||||
|
}]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -29,16 +198,69 @@
|
|||||||
...mapState(['init'])
|
...mapState(['init'])
|
||||||
},
|
},
|
||||||
//第一次加载
|
//第一次加载
|
||||||
onLoad(e) {
|
async onLoad(e) {
|
||||||
console.log(this.init);
|
uni.showLoading({
|
||||||
//console.log(this.userInfo)
|
title:'Data Loading...'
|
||||||
|
})
|
||||||
|
if(this.userInfo.token === typeof(undefined) || this.userInfo.token === undefined){
|
||||||
|
this.islogin = false;
|
||||||
|
uni.hideLoading();
|
||||||
|
}else{
|
||||||
|
this.user = await getUserInfo(this.$i18n.locale);
|
||||||
|
}
|
||||||
|
this.$http.get('/api/withdrawl/recent').then(res => {
|
||||||
|
if(res.code == 0){
|
||||||
|
console.log(res.data);
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
});
|
||||||
|
let data = {
|
||||||
|
page: 1,
|
||||||
|
limit: 5,
|
||||||
|
lang: this.$i18n.locale,
|
||||||
|
};
|
||||||
|
this.$http.post('/api/product/list', data).then(res => {
|
||||||
|
if(res.code == 0){
|
||||||
|
this.list = res.data.data;
|
||||||
|
uni.hideLoading();
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
uni.hideLoading()
|
||||||
|
});
|
||||||
},
|
},
|
||||||
//页面显示
|
//页面显示
|
||||||
onShow() {},
|
onShow() {},
|
||||||
//方法
|
//方法
|
||||||
methods: {
|
methods: {
|
||||||
handleClick(tab, event) {
|
search(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "/pages/questionnaire/select?kw="+this.kw
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onTokenJump(url) {
|
||||||
|
this.judgeLogin(() => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: url
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onPageJump(url) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: url
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onPageJump1(url) {
|
||||||
|
uni.switchTab({
|
||||||
|
url: url
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getcash(o){
|
||||||
|
var email = 'lssii2010@outlook.com';
|
||||||
|
let username = email.split('@')[0]; // 获取用户名部分
|
||||||
|
let domain = email.split('@')[1]; // 获取域名部分
|
||||||
|
let midIndex = Math.floor(username.length / 2) - 2; // 计算中间两个字符的起始索引
|
||||||
|
let censoredEmail = username.slice(0, midIndex) + "****" + username.slice(midIndex + 4) + '@' + domain;
|
||||||
|
return censoredEmail + ' User gets 30 USDT'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//页面隐藏
|
//页面隐藏
|
||||||
@ -57,29 +279,40 @@
|
|||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import '@/style/mixin.scss';
|
@import '@/style/mixin.scss';
|
||||||
|
::v-deep .uni-searchbar__box{padding: 30rpx 20rpx;}
|
||||||
|
::v-deep .uni-searchbar__box{height: 100rpx;}
|
||||||
|
::v-deep .uni-noticebar-icon{margin-top: 8rpx;}
|
||||||
|
::v-deep .uni-noticebar{padding: 10rpx; border-radius: 20rpx; margin-top: 40rpx;}
|
||||||
|
::v-deep .uni-section-header{padding: 0px !important;}
|
||||||
|
::v-deep .uni-slider-handle{display: none;}
|
||||||
|
::v-deep .uni-slider-thumb{display: none;}
|
||||||
|
::v-deep .uni-slider-handle-wrapper{height: 12px;}
|
||||||
|
::v-deep uni-slider{padding: 0px;margin: 0px}
|
||||||
|
::v-deep .uni-section__content-title{font-weight: bold;}
|
||||||
|
body{background-color: #fff;}
|
||||||
|
.b{height: 70rpx; width: 200rpx; line-height: 70rpx; font-size: 28rpx;}
|
||||||
|
.v2{border: 1px solid #ddd; background-color: #fff; padding: 10px; border-radius: 30rpx; margin-top: 30rpx;}
|
||||||
|
.v2 .row{margin-top: 10rpx; border-radius: 20px;}
|
||||||
|
.v2 .row .i{width: 80px; height: 80px; margin: auto;}
|
||||||
|
.v2 .row .title{font-weight: 500; font-size: 16px; color: #333;overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
|
||||||
|
.page{background-color: #fff; min-height: 100vh;}
|
||||||
|
.v1{ float: right; padding-right: 20upx;}
|
||||||
|
.num{ width: 94%; margin: 20rpx auto 20rpx auto; font-size: 18px; background: url('/static/images/index1.png');
|
||||||
|
height: 160rpx; background-repeat: no-repeat;background-position:right bottom}
|
||||||
|
.noticeBar {
|
||||||
|
margin: 20rpx auto 0;
|
||||||
|
width: 94%;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
background: rgb(248,248,248);
|
||||||
|
color: #999;
|
||||||
|
font-size: 24rpx;
|
||||||
|
border-radius: 30rpx;
|
||||||
|
display: flex;
|
||||||
|
.list {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
body{background-color: #F8F8F8;}
|
|
||||||
.page{background-color: #F8F8F8; min-height: 94vh;}
|
|
||||||
.wallet1{
|
|
||||||
border-radius: 10px; padding: 20px 15px; width: 84%; margin: 10px auto;
|
|
||||||
background: url('/static/images/w1.png') #2B66F6; background-repeat: no-repeat; background-position: 92% 5px;
|
|
||||||
}
|
|
||||||
.cell_list .t{
|
|
||||||
color: #3d3d3d; font-size: 16px; font-weight: 400; line-height: 25px;
|
|
||||||
}
|
|
||||||
.cell_list .d{
|
|
||||||
color: #3d3d3d; font-size: 16px; font-weight: 400; line-height: 25px;
|
|
||||||
}
|
|
||||||
.cell_list .u{
|
|
||||||
color: #1D61E7; font-weight: 600;float: right; font-size: 16px;
|
|
||||||
}
|
|
||||||
.cell_list .u1{
|
|
||||||
color: #333; font-weight: 600;float: right;font-size: 16px;
|
|
||||||
}
|
|
||||||
.w{
|
|
||||||
background-color: #F8F8F8; border-radius: 10px; padding: 20px 10px;
|
|
||||||
}
|
|
||||||
.w .t{
|
|
||||||
text-align: center; margin-top: 10px; font-size: 14px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
@ -98,7 +98,7 @@ import detailsVue from './details.vue';
|
|||||||
//第一次加载
|
//第一次加载
|
||||||
onLoad(e) {
|
onLoad(e) {
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title:'Array loading...'
|
title:'Data Loading...'
|
||||||
})
|
})
|
||||||
if(e.id){
|
if(e.id){
|
||||||
getUserInfo(this.$i18n.locale).then(res => {
|
getUserInfo(this.$i18n.locale).then(res => {
|
||||||
|
@ -51,19 +51,19 @@
|
|||||||
<view style="text-align: right;"><button type="primary" class="b" style="float: right;" @click="onTokenJump('/pages/questionnaire/answer?id='+item.id)">Details</button></view>
|
<view style="text-align: right;"><button type="primary" class="b" style="float: right;" @click="onTokenJump('/pages/questionnaire/answer?id='+item.id)">Details</button></view>
|
||||||
<view style="clear: both;"></view>
|
<view style="clear: both;"></view>
|
||||||
</view>
|
</view>
|
||||||
<view style="text-align: center; padding-bottom: 80px;" v-if="list.length <= 0">
|
<view style="text-align: center; padding-bottom: 80px;" v-if="list1.length <= 0">
|
||||||
<image style="width: 360rpx; height: 360rpx; margin: 160rpx auto 0rpx auto;" src="/static/images/w5.png" mode="cover"></image>
|
<image style="width: 360rpx; height: 360rpx; margin: 160rpx auto 0rpx auto;" src="/static/images/w5.png" mode="cover"></image>
|
||||||
<view style="color: #999; font-size: 14px; font-weight: 400;">No data available</view>
|
<view style="color: #999; font-size: 14px; font-weight: 400;">No data available</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="content" v-if="navIndex==2">
|
<view class="content" v-if="navIndex==2">
|
||||||
<view class="v2" style="margin-top: 20rpx" v-if="list1.length > 0" v-for="(item, index) in list1" :key="index">
|
<view class="v2" style="margin-top: 20rpx" v-if="list2.length > 0" v-for="(item, index) in list2" :key="index">
|
||||||
<view class="title">{{item.questionnaire.title}}</view>
|
<view class="title">{{item.questionnaire.title}}</view>
|
||||||
<view style="font-weight: 400;font-size: 14px;color: #999999;">Answer time: {{item.created_at.slice(0, 19)}}</view>
|
<view style="font-weight: 400;font-size: 14px;color: #999999;">Answer time: {{item.created_at.slice(0, 19)}}</view>
|
||||||
<view style="text-align: right;"><button type="primary" class="b" style="float: right;" @click="onTokenJump('/pages/questionnaire/answer?id='+item.id)">Details</button></view>
|
<view style="text-align: right;"><button type="primary" class="b" style="float: right; background-color: #eee; color: #333">Done</button></view>
|
||||||
<view style="clear: both;"></view>
|
<view style="clear: both;"></view>
|
||||||
</view>
|
</view>
|
||||||
<view style="text-align: center; padding-bottom: 80px;" v-if="list.length <= 0">
|
<view style="text-align: center; padding-bottom: 80px;" v-if="list2.length <= 0">
|
||||||
<image style="width: 360rpx; height: 360rpx; margin: 160rpx auto 0rpx auto;" src="/static/images/w5.png" mode="cover"></image>
|
<image style="width: 360rpx; height: 360rpx; margin: 160rpx auto 0rpx auto;" src="/static/images/w5.png" mode="cover"></image>
|
||||||
<view style="color: #999; font-size: 14px; font-weight: 400;">No data available</view>
|
<view style="color: #999; font-size: 14px; font-weight: 400;">No data available</view>
|
||||||
</view>
|
</view>
|
||||||
@ -106,7 +106,7 @@
|
|||||||
//页面显示
|
//页面显示
|
||||||
onShow() {
|
onShow() {
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title:'Array loading...'
|
title:'Data Loading...'
|
||||||
})
|
})
|
||||||
let data = {
|
let data = {
|
||||||
page: this.par.page,
|
page: this.par.page,
|
||||||
@ -129,6 +129,18 @@
|
|||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
});
|
});
|
||||||
|
let data1 = {
|
||||||
|
page: this.par.page,
|
||||||
|
limit: this.par.limit,
|
||||||
|
lang: this.$i18n.locale,
|
||||||
|
type: 'done'
|
||||||
|
};
|
||||||
|
this.$http.post('/api/server/list', data1).then(res => {
|
||||||
|
if(res.code == 0){
|
||||||
|
this.list2 = res.data.data;
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
@ -172,7 +184,8 @@
|
|||||||
::v-deep .uni-slider-thumb{display: none;}
|
::v-deep .uni-slider-thumb{display: none;}
|
||||||
::v-deep uni-slider{margin: 16rpx 0px !important;}
|
::v-deep uni-slider{margin: 16rpx 0px !important;}
|
||||||
::v-deep uni-slider .uni-slider-tap-area{padding: 4rpx 0rpx !important;}
|
::v-deep uni-slider .uni-slider-tap-area{padding: 4rpx 0rpx !important;}
|
||||||
|
::v-deep .uni-slider-handle-wrapper{height: 12px;}
|
||||||
|
::v-deep uni-slider{padding: 0px;margin: 0px}
|
||||||
.v1{border-bottom: 1px solid #ddd; background-color: #fff; padding: 10px;}
|
.v1{border-bottom: 1px solid #ddd; background-color: #fff; padding: 10px;}
|
||||||
.v1 .row{margin-top: 15px; border-radius: 20px;}
|
.v1 .row{margin-top: 15px; border-radius: 20px;}
|
||||||
.v1 .row .i{width: 80px; height: 80px; margin: auto;}
|
.v1 .row .i{width: 80px; height: 80px; margin: auto;}
|
||||||
|
169
pages/questionnaire/select.vue
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page">
|
||||||
|
<nav-bar title="Select" bgColor="#fff"></nav-bar>
|
||||||
|
<view>
|
||||||
|
<view style="background-color: #fff;">
|
||||||
|
<uni-search-bar class="uni-mt-10" radius="10" v-model="kw" @clear="clear"
|
||||||
|
placeholder="Search the questionnaire" clearButton="auto" cancelButton="none" @confirm="search" />
|
||||||
|
</view>
|
||||||
|
<!-- 内容切换 -->
|
||||||
|
<view class="content">
|
||||||
|
<view style="width: 94%; margin: 10px auto;">
|
||||||
|
<view class="v1" :style="index==0 ? '' : 'margin-top: 20rpx'" v-if="list.length > 0" v-for="(item, index) in list" :key="index">
|
||||||
|
<uni-row :gutter="10" class="row">
|
||||||
|
<uni-col :span="6" style="text-align: center;">
|
||||||
|
<image class="i" :src="url" fit="cover"></image>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="18">
|
||||||
|
<view class="title">{{item.title}}</view>
|
||||||
|
<view style="font-size: 12px; font-weight: 400; color: #999; line-height: 20px;">
|
||||||
|
<view style="width: 40%; float: left;">
|
||||||
|
<slider :value="item.used" :disabled="true" style="height: 16rpx;" min="0" :max="item.stock+item.used" step="100" />
|
||||||
|
</view>
|
||||||
|
<view style="width: 55%; float: left; line-height: 35px; margin-left: 5%;">
|
||||||
|
Answered: <span style="color: #1D61E7;">{{item.used}}</span>/{{item.stock+item.used}}
|
||||||
|
</view>
|
||||||
|
<view style="text-align: left; clear: both;">Period: {{item.billing_cycle}} {{item.cycle_type}}</view>
|
||||||
|
</view>
|
||||||
|
<view style="font-size: 12px; font-weight: 400; color: #999; line-height: 20px; te">
|
||||||
|
<view style="float: left; color: #333; font-size: 16px; font-weight: 500; line-height: 40px;">
|
||||||
|
reward: <span style="font-size: 20px;">${{parseFloat(item.price).toFixed(2)}} </span>
|
||||||
|
</view>
|
||||||
|
<view style="float: right;">
|
||||||
|
<button type="primary" class="b" @click="onTokenJump('/pages/questionnaire/details?id='+item.id)">To answer</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
</view>
|
||||||
|
<view style="text-align: center; padding-bottom: 80px;" v-if="list.length <= 0">
|
||||||
|
<image style="width: 360rpx; height: 360rpx; margin: 160rpx auto 0rpx auto;" src="/static/images/w5.png" mode="cover"></image>
|
||||||
|
<view style="color: #999; font-size: 14px; font-weight: 400;">No data available</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import zNavigation from '@/components/module/navigation.vue';
|
||||||
|
import {
|
||||||
|
mapState,
|
||||||
|
mapMutations
|
||||||
|
} from 'vuex';
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
zNavigation
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
url:"/static/images/q1.png",
|
||||||
|
list:[],
|
||||||
|
par:{
|
||||||
|
page: 1,
|
||||||
|
limit: 10
|
||||||
|
},
|
||||||
|
kw: ''
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['userInfo'])
|
||||||
|
},
|
||||||
|
//第一次加载
|
||||||
|
onLoad(e) {
|
||||||
|
if(e.kw){
|
||||||
|
this.kw = e.kw;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//页面显示
|
||||||
|
onShow() {
|
||||||
|
uni.showLoading({
|
||||||
|
title:'Data Loading...'
|
||||||
|
})
|
||||||
|
this.getlist();
|
||||||
|
},
|
||||||
|
//方法
|
||||||
|
methods: {
|
||||||
|
getlist(){
|
||||||
|
let data = {
|
||||||
|
page: this.par.page,
|
||||||
|
limit: this.par.limit,
|
||||||
|
lang: this.$i18n.locale,
|
||||||
|
kw: this.kw
|
||||||
|
};
|
||||||
|
this.$http.post('/api/product/list', data).then(res => {
|
||||||
|
if(res.code == 0){
|
||||||
|
this.list = res.data.data;
|
||||||
|
uni.hideLoading();
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
uni.hideLoading()
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onTokenJump(url) {
|
||||||
|
this.judgeLogin(() => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: url
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
search(){
|
||||||
|
uni.showLoading({
|
||||||
|
title:'Data Loading...'
|
||||||
|
})
|
||||||
|
this.getlist();
|
||||||
|
},
|
||||||
|
clear(){
|
||||||
|
uni.showLoading({
|
||||||
|
title:'Data Loading...'
|
||||||
|
})
|
||||||
|
this.getlist();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//页面隐藏
|
||||||
|
onHide() {},
|
||||||
|
//页面卸载
|
||||||
|
onUnload() {},
|
||||||
|
//页面下来刷新
|
||||||
|
onPullDownRefresh() {},
|
||||||
|
//页面上拉触底
|
||||||
|
onReachBottom() {
|
||||||
|
this.par.page = this.par.page + 1;
|
||||||
|
this.getlist();
|
||||||
|
},
|
||||||
|
//用户点击分享
|
||||||
|
onShareAppMessage(e) {
|
||||||
|
return this.wxShare();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '@/style/mixin.scss';
|
||||||
|
body{background-color: #F8F8F8;}
|
||||||
|
.page{background-color: #F8F8F8; min-height: 100vh;}
|
||||||
|
.b{height: 70rpx; width: 200rpx; line-height: 70rpx; font-size: 28rpx;}
|
||||||
|
//修改slider高度
|
||||||
|
::v-deep .uni-slider-handle-wrapper {height: 14rpx !important;}
|
||||||
|
//修改slider选中的背景色
|
||||||
|
::v-deep .uni-slider-track {background-image: linear-gradient(to right,#6cd0ca,#133fce) !important;}
|
||||||
|
::v-deep .uni-slider-handle{display: none;}
|
||||||
|
::v-deep .uni-slider-thumb{display: none;}
|
||||||
|
::v-deep uni-slider{margin: 16rpx 0px !important;}
|
||||||
|
::v-deep uni-slider .uni-slider-tap-area{padding: 4rpx 0rpx !important;}
|
||||||
|
::v-deep .uni-slider-handle-wrapper{height: 12px;}
|
||||||
|
::v-deep uni-slider{padding: 0px;margin: 0px}
|
||||||
|
.v1{border-bottom: 1px solid #ddd; background-color: #fff; padding: 10px;}
|
||||||
|
.v1 .row{margin-top: 15px; border-radius: 20px;}
|
||||||
|
.v1 .row .i{width: 80px; height: 80px; margin: auto;}
|
||||||
|
.v1 .row .title{font-weight: 500; font-size: 16px; color: #333;overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
|
||||||
|
.v2{ border-bottom: 1px solid #ddd; background-color: #fff; padding: 10px; width: 94%; margin: 0rpx auto; border-radius: 40rpx;}
|
||||||
|
.v2 .title{font-weight: 600; font-size: 16px; color: #333;}
|
||||||
|
.w{background-color: #F8F8F8; border-radius: 10px; padding: 20px 10px;}
|
||||||
|
.w .t{text-align: center; margin-top: 10px; font-size: 14px;}
|
||||||
|
.head-nav {display: flex;align-items: center;color: #999;font-size: 36rpx;font-weight: 500;background-color: #fff;}
|
||||||
|
.tab{color: #999;font-size: 32rpx;font-weight: 500;float: left;padding: 40rpx;}
|
||||||
|
.activite {color: #333;border-bottom: 2px solid #1D61E7;}
|
||||||
|
.head-nav>view {padding-bottom: 10rpx;}
|
||||||
|
.content {height: 100%; padding-bottom: 20rpx;}
|
||||||
|
</style>
|
BIN
static/images/index1.png
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
static/images/index2.png
Normal file
After Width: | Height: | Size: 170 B |
BIN
static/images/index3.png
Normal file
After Width: | Height: | Size: 648 B |
BIN
static/images/index4.png
Normal file
After Width: | Height: | Size: 737 B |
BIN
static/images/index5.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
static/images/index6.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
static/images/index7.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
static/images/index8.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
static/images/logo.png
Normal file
After Width: | Height: | Size: 2.5 KiB |