提交
@ -4,11 +4,11 @@ if (process.env.NODE_ENV === 'development') {
|
||||
// 开发环境
|
||||
// baseUrl = "http://localhost:7001/";
|
||||
// socketUrl = "ws://localhost:6001/";
|
||||
baseUrl = "http://q.sjqqzc.top";
|
||||
baseUrl = "http://api.dxmt.io";
|
||||
//socketUrl = "ws://8.129.186.35:6001/";
|
||||
} else if (process.env.NODE_ENV === 'production') {
|
||||
// 生产环境
|
||||
baseUrl = "http://q.sjqqzc.top";
|
||||
baseUrl = "http://api.dxmt.io";
|
||||
//socketUrl = "ws://8.129.186.35:6001/";
|
||||
}
|
||||
const courtConfig = {
|
||||
|
5
main.js
@ -18,10 +18,7 @@ Vue.prototype.wxShare = wxShare;
|
||||
import { judgeLogin } from '@/config/login';
|
||||
Vue.prototype.judgeLogin = judgeLogin;
|
||||
Vue.config.productionTip = false;
|
||||
// #ifdef H5
|
||||
//微信SDK
|
||||
import '@/plugins/wxJsSDK.js';
|
||||
// #endif
|
||||
|
||||
import VueI18n from 'vue-i18n';
|
||||
import en from './locales/en.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,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
@ -51,8 +51,9 @@
|
||||
},
|
||||
"node_modules/tki-qrcode": {
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmmirror.com/tki-qrcode/-/tki-qrcode-0.1.6.tgz",
|
||||
"integrity": "sha512-EnnlS8psowC7PsW3MDYcxvJYkuklX3WAZ/BYanR4TdBHTu74GfjTBX8Y16REP+AeDENiVtBPh4jtTRL2P736hQ=="
|
||||
"resolved": "https://registry.npmjs.org/tki-qrcode/-/tki-qrcode-0.1.6.tgz",
|
||||
"integrity": "sha512-EnnlS8psowC7PsW3MDYcxvJYkuklX3WAZ/BYanR4TdBHTu74GfjTBX8Y16REP+AeDENiVtBPh4jtTRL2P736hQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/vue-clipboard2": {
|
||||
"version": "0.3.3",
|
||||
|
@ -564,6 +564,12 @@
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
},{
|
||||
"path" : "pages/questionnaire/select",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "select"
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
@ -582,7 +588,7 @@
|
||||
"pagePath": "pages/index/index",
|
||||
"iconPath": "static/images/home.png",
|
||||
"selectedIconPath": "static/images/home1.png",
|
||||
"text": "Home Page",
|
||||
"text": "Home",
|
||||
"iconSize": 48
|
||||
},
|
||||
{
|
||||
|
@ -1,13 +1,152 @@
|
||||
<template>
|
||||
<view class="page">
|
||||
<nav-bar title="Wallet fund records" bgColor="#fff"></nav-bar>
|
||||
<view>{{init.name}}</view>
|
||||
<view style="margin-top: 60rpx;">
|
||||
<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>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import zNavigation from '@/components/module/navigation.vue';
|
||||
import { getUserInfo } from '@/config/utils';
|
||||
import {
|
||||
mapState,
|
||||
mapMutations
|
||||
@ -19,9 +158,39 @@
|
||||
data() {
|
||||
return {
|
||||
activeName: 'first',
|
||||
value: 30,
|
||||
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: {
|
||||
@ -29,16 +198,69 @@
|
||||
...mapState(['init'])
|
||||
},
|
||||
//第一次加载
|
||||
onLoad(e) {
|
||||
console.log(this.init);
|
||||
//console.log(this.userInfo)
|
||||
async onLoad(e) {
|
||||
uni.showLoading({
|
||||
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() {},
|
||||
//方法
|
||||
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>
|
||||
<style lang="scss" scoped>
|
||||
@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>
|
@ -98,7 +98,7 @@ import detailsVue from './details.vue';
|
||||
//第一次加载
|
||||
onLoad(e) {
|
||||
uni.showLoading({
|
||||
title:'Array loading...'
|
||||
title:'Data Loading...'
|
||||
})
|
||||
if(e.id){
|
||||
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="clear: both;"></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>
|
||||
<view style="color: #999; font-size: 14px; font-weight: 400;">No data available</view>
|
||||
</view>
|
||||
</view>
|
||||
<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 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>
|
||||
<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>
|
||||
<view style="color: #999; font-size: 14px; font-weight: 400;">No data available</view>
|
||||
</view>
|
||||
@ -106,7 +106,7 @@
|
||||
//页面显示
|
||||
onShow() {
|
||||
uni.showLoading({
|
||||
title:'Array loading...'
|
||||
title:'Data Loading...'
|
||||
})
|
||||
let data = {
|
||||
page: this.par.page,
|
||||
@ -129,6 +129,18 @@
|
||||
}
|
||||
}).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{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;}
|
||||
|
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 |