update
This commit is contained in:
@@ -341,6 +341,27 @@ const system = {
|
|||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
createQrcode: async (data) => {
|
||||||
|
return request({
|
||||||
|
method: MethodsENUM.POST,
|
||||||
|
url: "/index/createQrcode",
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getMyTop: async (data) => {
|
||||||
|
return request({
|
||||||
|
method: MethodsENUM.POST,
|
||||||
|
url: "/user/getMyTop",
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
myTeamList: async (data) => {
|
||||||
|
return request({
|
||||||
|
method: MethodsENUM.POST,
|
||||||
|
url: "/user/myTeamList",
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export default system;
|
export default system;
|
||||||
|
|||||||
@@ -1,17 +1,19 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import {onMounted, reactive} from "vue";
|
import {reactive, watch} from "vue";
|
||||||
import XModal from "./XModal.vue";
|
import XModal from "./XModal.vue";
|
||||||
import XQrCode from "./XQrCode.vue";
|
|
||||||
import Api from "../api/index.js";
|
import Api from "../api/index.js";
|
||||||
|
|
||||||
const show = defineModel('show');
|
const show = defineModel('show');
|
||||||
const detail = reactive({});
|
const detail = reactive({});
|
||||||
|
|
||||||
onMounted(() => {
|
watch(
|
||||||
Api.system.getQrcode(1).then(({data}) => {
|
() => show.value,
|
||||||
Object.assign(detail, data);
|
(val) => {
|
||||||
});
|
if (val) Api.system.getQrcode(1).then(({data}) => {
|
||||||
});
|
Object.assign(detail, data);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import {onMounted} from "vue";
|
import {watch, ref} from "vue";
|
||||||
import XModal from "./XModal.vue";
|
import XModal from "./XModal.vue";
|
||||||
import XQrCode from "./XQrCode.vue";
|
import Api from "../api/index.js";
|
||||||
|
|
||||||
const show = defineModel('show');
|
const show = defineModel('show');
|
||||||
|
const qrCode = ref(null);
|
||||||
|
|
||||||
onMounted(() => {
|
watch(
|
||||||
|
() => show.value,
|
||||||
});
|
(val) => {
|
||||||
|
if (val) Api.system.createQrcode().then(({data}) => {
|
||||||
|
qrCode.value = data.url;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -23,7 +29,8 @@ onMounted(() => {
|
|||||||
|
|
||||||
<view class="title">绑定</view>
|
<view class="title">绑定</view>
|
||||||
<view class="!mt-[24rpx] w-[320rpx] !mx-auto aspect-square">
|
<view class="!mt-[24rpx] w-[320rpx] !mx-auto aspect-square">
|
||||||
<x-qr-code size="320rpx" :qrSize="180" content="公众号"></x-qr-code>
|
<image v-if="qrCode" class="!size-full" :src="qrCode"></image>
|
||||||
|
<tui-loading v-else type="row"></tui-loading>
|
||||||
</view>
|
</view>
|
||||||
<view class="desc !mt-[24rpx]">截图保存后,使用微信扫码并关注</view>
|
<view class="desc !mt-[24rpx]">截图保存后,使用微信扫码并关注</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -9,13 +9,25 @@ import {reactive, ref} from "vue";
|
|||||||
import XFilterItem from "../../components/XFilterItem.vue";
|
import XFilterItem from "../../components/XFilterItem.vue";
|
||||||
import XRadioGroup from "../../components/XRadioGroup.vue";
|
import XRadioGroup from "../../components/XRadioGroup.vue";
|
||||||
import XRadio from "../../components/XRadio.vue";
|
import XRadio from "../../components/XRadio.vue";
|
||||||
|
import useTableQuery from "../../hooks/useTableQuery.js";
|
||||||
|
import Api from "../../api/index.js";
|
||||||
|
|
||||||
const isVague = ref(false);
|
const isVague = ref(false);
|
||||||
const showFilter = ref(false);
|
const showFilter = ref(false);
|
||||||
const isSearch = ref(false);
|
const isSearch = ref(false);
|
||||||
|
const po = reactive({});
|
||||||
|
const vo = reactive({});
|
||||||
const sumPo = reactive({
|
const sumPo = reactive({
|
||||||
type: 0,
|
type: 0,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const {loading, pagination, initFetchData} = useTableQuery({
|
||||||
|
api: Api.system.myTeamList,
|
||||||
|
parameter: po,
|
||||||
|
callback: (data) => {
|
||||||
|
Object.assign(vo, data);
|
||||||
|
}
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -101,28 +113,28 @@ const sumPo = reactive({
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="p-[20rpx] !flex flex-col gap-[20rpx]">
|
<view class="p-[20rpx] !flex flex-col gap-[20rpx]">
|
||||||
<view v-for="item in 20" class="rounded-[8rpx] bg-[#fff] p-[24rpx] flex-grow">
|
<view v-for="v in vo.rows" class="rounded-[8rpx] bg-[#fff] p-[24rpx] flex-grow">
|
||||||
<view :class="['!flex gap-[18rpx]', isVague?'vague':'']">
|
<view :class="['!flex gap-[18rpx]', isVague?'vague':'']">
|
||||||
<image class="!size-[88rpx] rounded-[16rpx]" :src="Avatar" mode="aspectFill"></image>
|
<image class="!size-[88rpx] rounded-[16rpx]" :src="v.avatar" mode="aspectFill"></image>
|
||||||
<view class="flex-grow h-full !flex flex-col justify-between gap-[14rpx]">
|
<view class="flex-grow h-full !flex flex-col justify-between gap-[14rpx]">
|
||||||
<view class="!flex justify-between items-center">
|
<view class="!flex justify-between items-center">
|
||||||
<view class="test-28r">一只哈里路</view>
|
<view class="test-28r">{{ v.nickname }}</view>
|
||||||
<view class="text-[#86909C] test-24r">2024-01-26 加入</view>
|
<view class="text-[#86909C] test-24r">{{ v.createtime }} 加入</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="!flex flex-wrap">
|
<view class="!flex flex-wrap">
|
||||||
<view class="py-[3rpx] px-[8rpx] test-20r bg-[#F2F3F5]">id:53379</view>
|
<view class="py-[3rpx] px-[8rpx] test-20r bg-[#F2F3F5]">id:{{ v.uid }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="!flex gap-[22rpx] !mt-[20rpx]">
|
<view class="!flex gap-[22rpx] !mt-[20rpx]">
|
||||||
<view class="!flex items-center py-[10rpx] px-[20rpx] bg-[#E8F3FF] flex-grow test-24r">
|
<view class="!flex items-center py-[10rpx] px-[20rpx] bg-[#E8F3FF] flex-grow test-24r">
|
||||||
<view>收益:</view>
|
<view>收益:</view>
|
||||||
<view class="text-[var(--primary-color)]">245.14</view>
|
<view class="text-[var(--primary-color)]">{{ Number(v.income).toFixed(2) }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view
|
<view
|
||||||
:class="['!flex items-center py-[10rpx] px-[20rpx] bg-[#E8F3FF] flex-grow test-24r', isVague?'vague':'']">
|
:class="['!flex items-center py-[10rpx] px-[20rpx] bg-[#E8F3FF] flex-grow test-24r', isVague?'vague':'']">
|
||||||
<view>收益:</view>
|
<view>奖励:</view>
|
||||||
<view class="text-[var(--primary-color)]">245.14</view>
|
<view class="text-[var(--primary-color)]">{{ Number(v.reward).toFixed(2) }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -5,15 +5,19 @@ import BD3 from "../../static/icons/bd3.png";
|
|||||||
import BD4 from "../../static/icons/bd4.png";
|
import BD4 from "../../static/icons/bd4.png";
|
||||||
import BDH from "../../static/icons/bdh.png";
|
import BDH from "../../static/icons/bdh.png";
|
||||||
import WBDICON from "../../static/icons/缺省图.png";
|
import WBDICON from "../../static/icons/缺省图.png";
|
||||||
|
import YBDICON from "../../static/icons/已绑定.png";
|
||||||
import XNav from "../../components/XNav.vue";
|
import XNav from "../../components/XNav.vue";
|
||||||
import BindMsgModal from "../../components/BindMsgModal.vue";
|
import BindMsgModal from "../../components/BindMsgModal.vue";
|
||||||
|
import {useUserStore} from "../../pinia/UserStore/index.js";
|
||||||
|
|
||||||
|
const UserStore = useUserStore();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<!--消息推送-->
|
<!--消息推送-->
|
||||||
<x-nav></x-nav>
|
<x-nav></x-nav>
|
||||||
|
|
||||||
<view class="!flex flex-col items-center !mt-[128rpx]">
|
<view v-if="!UserStore.userInfo.openid" class="!flex flex-col items-center !mt-[128rpx]">
|
||||||
<image class="!size-[260rpx]" mode="aspectFill" :src="WBDICON"></image>
|
<image class="!size-[260rpx]" mode="aspectFill" :src="WBDICON"></image>
|
||||||
<view class="!mt-[-70rpx] relative z-10">暂未绑定</view>
|
<view class="!mt-[-70rpx] relative z-10">暂未绑定</view>
|
||||||
<view class="text-[#86909C] test-28r">当前消息推送无法使用,将影响您收益!</view>
|
<view class="text-[#86909C] test-28r">当前消息推送无法使用,将影响您收益!</view>
|
||||||
@@ -24,6 +28,17 @@ import BindMsgModal from "../../components/BindMsgModal.vue";
|
|||||||
</bind-msg-modal>
|
</bind-msg-modal>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view v-else class="!flex flex-col items-center !mt-[128rpx]">
|
||||||
|
<image class="!size-[260rpx]" mode="aspectFill" :src="YBDICON"></image>
|
||||||
|
<view class="!mt-[-70rpx] relative z-10">已绑定</view>
|
||||||
|
<view class="text-[#86909C] test-28r">{{ UserStore.userInfo.mobile }}可正常接收消息</view>
|
||||||
|
|
||||||
|
<bind-msg-modal>
|
||||||
|
<view class="!mt-[80rpx] rounded-[4rpx] bg-[var(--primary-color)] text-[#fff] py-[10rpx] px-[32rpx]">重新绑定
|
||||||
|
</view>
|
||||||
|
</bind-msg-modal>
|
||||||
|
</view>
|
||||||
|
|
||||||
<view class="btm h-[50vh] !flex flex-col items-center px-[40rpx] !mx-[20rpx]">
|
<view class="btm h-[50vh] !flex flex-col items-center px-[40rpx] !mx-[20rpx]">
|
||||||
<image class="!w-[300rpx] !mt-[40rpx] !mb-[40rpx]" mode="widthFix" :src="BDH"></image>
|
<image class="!w-[300rpx] !mt-[40rpx] !mb-[40rpx]" mode="widthFix" :src="BDH"></image>
|
||||||
<view class="!flex items-center bg-[#fff] p-[28rpx] w-full rounded-[16rpx] gap-[28rpx]">
|
<view class="!flex items-center bg-[#fff] p-[28rpx] w-full rounded-[16rpx] gap-[28rpx]">
|
||||||
|
|||||||
@@ -1,13 +1,29 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import Avatar from '../../../static/images/Avatar.png'
|
import {onMounted, reactive} from "vue";
|
||||||
|
import Api from "../../../api/index.js";
|
||||||
|
|
||||||
|
const detail = reactive({});
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
Api.system.getMyTop().then(({data}) => {
|
||||||
|
Object.assign(detail, data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const callPhone = () => {
|
||||||
|
uni.makePhoneCall({
|
||||||
|
phoneNumber: detail.mobile,
|
||||||
|
});
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view class="p-[20rpx] bg-[#F2F3F5] rounded-[16rpx] !mt-[40rpx] !flex items-center">
|
<view class="p-[20rpx] bg-[#F2F3F5] rounded-[16rpx] !mt-[40rpx] !flex items-center" v-if="detail.id">
|
||||||
<image class="!size-[64rpx]" mode="aspectFill" :src="Avatar"></image>
|
<image class="!size-[64rpx]" mode="aspectFill" :src="detail.avatar"></image>
|
||||||
<view class="test-24r !ml-[24rpx]">Adam</view>
|
<view class="test-24r !ml-[24rpx]">{{ detail.nickname }}</view>
|
||||||
|
|
||||||
<view
|
<view
|
||||||
|
@click="callPhone"
|
||||||
class="px-[20rpx] py-[7rpx] test-22r text-[#fff] rounded-full bg-[var(--primary-color)] !flex items-center justify-center !ml-auto">
|
class="px-[20rpx] py-[7rpx] test-22r text-[#fff] rounded-full bg-[var(--primary-color)] !flex items-center justify-center !ml-auto">
|
||||||
联系TA
|
联系TA
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import {defineAsyncComponent, onMounted, ref} from 'vue';
|
import {defineAsyncComponent, onMounted, ref, reactive} from 'vue';
|
||||||
import ICON1 from '../../static/icons/icon_提现记录.png';
|
import ICON1 from '../../static/icons/icon_提现记录.png';
|
||||||
import ICON2 from '../../static/icons/icon_变动记录.png';
|
import ICON2 from '../../static/icons/icon_变动记录.png';
|
||||||
import ICON3 from '../../static/icons/icon_我的钱包.png';
|
import ICON3 from '../../static/icons/icon_我的钱包.png';
|
||||||
@@ -13,6 +13,7 @@ import XNav from "../../components/XNav.vue";
|
|||||||
import CreditScore from "../../components/CreditScore.vue";
|
import CreditScore from "../../components/CreditScore.vue";
|
||||||
import {toPage} from "../../utils/uils.js";
|
import {toPage} from "../../utils/uils.js";
|
||||||
import {useUserStore} from "../../pinia/UserStore/index.js";
|
import {useUserStore} from "../../pinia/UserStore/index.js";
|
||||||
|
import AddCustomerServiceModal from "../../components/AddCustomerServiceModal.vue";
|
||||||
|
|
||||||
// #ifdef APP-PLUS
|
// #ifdef APP-PLUS
|
||||||
// #endif
|
// #endif
|
||||||
@@ -43,6 +44,9 @@ const tabs = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
const UserStore = useUserStore();
|
const UserStore = useUserStore();
|
||||||
|
const state = reactive({
|
||||||
|
showAddCustomer: false,
|
||||||
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
UserStore.getUserInfo();
|
UserStore.getUserInfo();
|
||||||
@@ -150,7 +154,7 @@ onMounted(() => {
|
|||||||
<image class="!size-[84rpx]" mode="aspectFill" :src="ICON5"></image>
|
<image class="!size-[84rpx]" mode="aspectFill" :src="ICON5"></image>
|
||||||
<view class="test-24r">账号管理</view>
|
<view class="test-24r">账号管理</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="!flex items-center flex-col justify-center gap-[12rpx]">
|
<view class="!flex items-center flex-col justify-center gap-[12rpx]" @click="state.showAddCustomer=true">
|
||||||
<image class="!size-[84rpx]" mode="aspectFill" :src="ICON6"></image>
|
<image class="!size-[84rpx]" mode="aspectFill" :src="ICON6"></image>
|
||||||
<view class="test-24r">联系客服</view>
|
<view class="test-24r">联系客服</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -161,6 +165,8 @@ onMounted(() => {
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<add-customer-service-modal v-model:show="state.showAddCustomer"></add-customer-service-modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
BIN
src/static/icons/已绑定.png
Normal file
BIN
src/static/icons/已绑定.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
Reference in New Issue
Block a user