update
This commit is contained in:
@@ -1,11 +1,172 @@
|
||||
<script setup>
|
||||
import DYICON from "../../static/icons/dy.png";
|
||||
import KSICON from "../../static/icons/ks.png";
|
||||
import SPHICON from "../../static/icons/sph.png";
|
||||
import XHSICON from "../../static/icons/xhs.png";
|
||||
import TTICON from "../../static/icons/tt.png";
|
||||
import EDITICON from "../../static/icons/Edit.png";
|
||||
import DELETEICON from "../../static/icons/Delete.png";
|
||||
import PLUSICON from "../../static/icons/plus.png";
|
||||
import XNav from "../../components/XNav.vue";
|
||||
import XNoticeBar from "../../components/XNoticeBar.vue";
|
||||
import {showToast, toPage} from "../../utils/uils.js";
|
||||
import {onMounted, reactive} from "vue";
|
||||
import Api from "../../api/index.js";
|
||||
|
||||
const BASE = [
|
||||
{
|
||||
id: 1,
|
||||
name: '抖音',
|
||||
icon: DYICON,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '快手',
|
||||
icon: KSICON,
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: '小红书',
|
||||
icon: XHSICON,
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: '视频号',
|
||||
icon: SPHICON,
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: '今日头条',
|
||||
icon: TTICON,
|
||||
},
|
||||
];
|
||||
const list = reactive([]);
|
||||
const dataList = reactive([]);
|
||||
const po = reactive({
|
||||
pid: null,
|
||||
});
|
||||
|
||||
const getData = async () => {
|
||||
const {data} = await Api.system.myAccount(po);
|
||||
dataList.length = 0;
|
||||
dataList.push(...data);
|
||||
}
|
||||
|
||||
const changeTab = (pid) => {
|
||||
po.pid = pid;
|
||||
getData();
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
Api.system.getPlatform().then(({data}) => {
|
||||
data = data.filter(v => v.id !== 0);
|
||||
list.length = 0;
|
||||
data.forEach(v => {
|
||||
BASE.forEach(k => {
|
||||
if (v.id === k.id) {
|
||||
list.push({
|
||||
id: v.id,
|
||||
name: v.name,
|
||||
icon: k.icon,
|
||||
});
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
po.pid = list[0].id;
|
||||
getData();
|
||||
})
|
||||
})
|
||||
|
||||
const deleteItem = async (id) => {
|
||||
const {msg} = await Api.system.delAccount(id);
|
||||
showToast(msg);
|
||||
await getData();
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!--账号管理-->
|
||||
<x-nav></x-nav>
|
||||
<x-notice-bar status="success" text="提示:左滑查看更多,点击可查看该平台所有的账号"></x-notice-bar>
|
||||
|
||||
<view class="p-[36rpx] bg-[#fff] !flex justify-around items-center">
|
||||
<template v-for="(item, index) in list" :key="item.id">
|
||||
<view class="!flex flex-col items-center" @click="changeTab(item.id)">
|
||||
<image class="!size-[64rpx]" :src="item.icon"></image>
|
||||
<view :class="['test-24r !mt-[10rpx]', po.pid === item.id ? 'cur' : '']">
|
||||
{{
|
||||
item.name
|
||||
}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="!w-[1px] !h-[48rpx] bg-[#E5E6EB]" v-if="index <= list.length - 2"></view>
|
||||
</template>
|
||||
</view>
|
||||
|
||||
<view class="p-[20rpx] !flex flex-col gap-[20rpx]">
|
||||
<view
|
||||
@click="toPage('/pages/addAccount/index')"
|
||||
class="py-[15rpx] bg-[#E8F3FF] text-[var(--primary-color)] !flex justify-center items-center gap-[10rpx] border border-[var(--primary-color)] rounded-[4rpx]">
|
||||
<image :src="PLUSICON" class="!size-[26rpx] !mt-[2rpx]"></image>
|
||||
新增帐号
|
||||
</view>
|
||||
|
||||
<view
|
||||
v-for="(v, index) in dataList"
|
||||
:key="index"
|
||||
class="p-[24rpx] bg-[#fff] rounded-[12rpx]">
|
||||
<view class="!flex items-center justify-between">
|
||||
<view>
|
||||
<view class="test-28r">{{ v.nickname }}</view>
|
||||
<view class="text-[#86909C] test-24r">{{ v.account }}</view>
|
||||
</view>
|
||||
<view class="px-[12rpx] py-[7rpx] test-24r success" v-if="v.status === 1">
|
||||
{{ v.status_text }}
|
||||
</view>
|
||||
<view class="px-[12rpx] py-[7rpx] test-24r warn" v-else-if="v.status === 0 || v.status === 3">
|
||||
{{ v.status_text }}
|
||||
</view>
|
||||
<view class="px-[12rpx] py-[7rpx] test-24r error" v-else>
|
||||
{{ v.status_text }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="!w-full !h-[2rpx] bg-[#E5E6EB] !my-[20rpx]"></view>
|
||||
<view class="!flex gap-[16rpx] items-center">
|
||||
<image class="!size-[88rpx] image-bor rounded-[12rpx]" :src="v.homepage" mode="aspectFill"></image>
|
||||
<image class="!size-[88rpx] image-bor rounded-[12rpx]" :src="v.qrcode" mode="aspectFill"></image>
|
||||
|
||||
<!---->
|
||||
<image @click="toPage(`/pages/addAccount/index?id=${v.id}`)"
|
||||
class="!size-[72rpx] rounded-[50%] overflow-hidden !ml-auto" :src="EDITICON"></image>
|
||||
<image @click="deleteItem(v.id)" class="!size-[72rpx] rounded-[50%] overflow-hidden"
|
||||
:src="DELETEICON"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
<style lang="scss" scoped>
|
||||
.cur {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: #E8FFEA;
|
||||
color: #00B42A;
|
||||
}
|
||||
|
||||
.warn {
|
||||
background-color: #FFF7E8;
|
||||
color: #FF7D00;
|
||||
}
|
||||
|
||||
.error {
|
||||
background-color: #FFECE8;
|
||||
color: #F53F3F;
|
||||
}
|
||||
|
||||
.image-bor {
|
||||
border: 1px solid rgb(229, 230, 235);
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,11 +1,88 @@
|
||||
<script setup>
|
||||
import XNav from "../../components/XNav.vue";
|
||||
import XFormItem from "../../components/XFormItem.vue";
|
||||
import XForm from "../../components/XForm.vue";
|
||||
import XSelect from "../../components/XSelect.vue";
|
||||
import Api from "../../api/index.js";
|
||||
import XInput from "../../components/XInput.vue";
|
||||
import XUpload from "../../components/XUpload.vue";
|
||||
import {reactive} from "vue";
|
||||
import {backPage, showToast} from "../../utils/uils.js";
|
||||
import {onLoad} from "@dcloudio/uni-app";
|
||||
|
||||
const form = reactive({
|
||||
status: null,
|
||||
qrcode: [],
|
||||
abnormaltime: null,
|
||||
nickname: null,
|
||||
account: null,
|
||||
pid: null,
|
||||
homepage: [],
|
||||
});
|
||||
|
||||
const success = async () => {
|
||||
if (!form.id) {
|
||||
const {msg} = await Api.system.addAccount({
|
||||
...form,
|
||||
homepage: form.homepage[0],
|
||||
qrcode: form.qrcode[0]
|
||||
});
|
||||
showToast(msg);
|
||||
} else {
|
||||
const {msg} = await Api.system.editAccount({
|
||||
...form,
|
||||
homepage: form.homepage[0],
|
||||
qrcode: form.qrcode[0]
|
||||
});
|
||||
showToast(msg);
|
||||
}
|
||||
backPage();
|
||||
}
|
||||
|
||||
onLoad((options) => {
|
||||
const {id} = options;
|
||||
Api.system.getAccountInfo(id).then(({data}) => {
|
||||
data.homepage = [data.homepage];
|
||||
data.qrcode = [data.qrcode];
|
||||
Object.assign(form, data);
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!--添加账号-->
|
||||
<x-nav></x-nav>
|
||||
|
||||
<view class="min-h-[calc(100vh-100rpx)] bg-[#fff] px-[30rpx] py-[25rpx]">
|
||||
<x-form>
|
||||
<x-form-item label="宣发平台">
|
||||
<x-select v-model:model-value="form.pid" :api="Api.system.getPlatform"></x-select>
|
||||
</x-form-item>
|
||||
<x-form-item label="账号">
|
||||
<x-input v-model:model-value="form.account" height="80rpx" placeholder="请输入帐号"></x-input>
|
||||
</x-form-item>
|
||||
<x-form-item label="昵称">
|
||||
<x-input v-model:model-value="form.nickname" height="80rpx" placeholder="请输入昵称"></x-input>
|
||||
</x-form-item>
|
||||
<x-form-item label="账号状态">
|
||||
<x-select v-model:model-value="form.status" :api="Api.system.getAccountStatus"></x-select>
|
||||
</x-form-item>
|
||||
<x-form-item label="主页截图">
|
||||
<x-upload v-model:files="form.homepage"></x-upload>
|
||||
</x-form-item>
|
||||
<x-form-item label="主页二维码">
|
||||
<x-upload v-model:files="form.qrcode"></x-upload>
|
||||
</x-form-item>
|
||||
</x-form>
|
||||
|
||||
<tui-button @click="success" class="!fixed bottom-[30rpx] left-0 !mx-[30rpx] !w-[calc(100vw-60rpx)]">确认提交
|
||||
</tui-button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
<style lang="scss">
|
||||
.x-form-item-label {
|
||||
font-size: 28rpx;
|
||||
color: #4E5969 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,45 +1,71 @@
|
||||
<script setup>
|
||||
import {ref, reactive} from "vue";
|
||||
import {onMounted, reactive, ref} from "vue";
|
||||
import XNav from "../../components/XNav.vue";
|
||||
import videoMask from '../../static/images/video-mask.png';
|
||||
import XVideoModal from "../../components/XVideoModal.vue";
|
||||
import Api from "../../api/index.js";
|
||||
import useTableQuery from "../../hooks/useTableQuery.js";
|
||||
import OpenTypeFun from "../../components/OpenTypeFun.js";
|
||||
|
||||
const tabs = [
|
||||
{
|
||||
name: '发布问题',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '抖音问题',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
name: '结算问题',
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
name: '提现问题',
|
||||
value: 3,
|
||||
},
|
||||
];
|
||||
const tab = ref(0);
|
||||
const current = ref(0);
|
||||
const tabs = reactive([]);
|
||||
const advList = reactive([]);
|
||||
const tab = ref(1);
|
||||
const collapseCur = ref(0);
|
||||
|
||||
const dataList = reactive([
|
||||
{
|
||||
name: "杜甫",
|
||||
intro: "杜甫的思想核心是儒家的仁政思想,他有“致君尧舜上,再使风俗淳”的宏伟抱负。杜甫虽然在世时名声并不显赫,但后来声名远播,对中国文学和日本文学都产生了深远的影响。杜甫共有约1500首诗歌被保留了下来,大多集于《杜工部集》。"
|
||||
},
|
||||
{
|
||||
name: "李清照",
|
||||
intro: "李清照出生于书香门第,早期生活优裕,其父李格非藏书甚富,她小时候就在良好的家庭环境中打下文学基础。出嫁后与夫赵明诚共同致力于书画金石的搜集整理。金兵入据中原时,流寓南方,境遇孤苦。所作词,前期多写其悠闲生活,后期多悲叹身世,情调感伤。形式上善用白描手法,自辟途径,语言清丽。"
|
||||
},
|
||||
{
|
||||
name: "鲁迅",
|
||||
intro: "鲁迅一生在文学创作、文学批评、思想研究、文学史研究、翻译、美术理论引进、基础科学介绍和古籍校勘与研究等多个领域具有重大贡献。他对于五四运动以后的中国社会思想文化发展具有重大影响,蜚声世界文坛,尤其在韩国、日本思想文化领域有极其重要的地位和影响,被誉为“二十世纪东亚文化地图上占最大领土的作家”。"
|
||||
const vo = reactive({
|
||||
rows: [],
|
||||
top: [],
|
||||
page: 0,
|
||||
total: 0,
|
||||
});
|
||||
const po = reactive({
|
||||
category_id: 0,
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
api: Api.system.getArticle,
|
||||
immediate: false,
|
||||
parameter: po,
|
||||
callback: async (data) => {
|
||||
const {data: top} = await Api.system.getTopArticle(po);
|
||||
console.log('???LLLL', top);
|
||||
Object.assign(vo, data);
|
||||
vo.top = top;
|
||||
}
|
||||
]);
|
||||
});
|
||||
|
||||
const getArticleCategory = async () => {
|
||||
const {data} = await Api.system.getArticleCategory({
|
||||
pid: tab.value
|
||||
});
|
||||
tabs.length = 0;
|
||||
tabs.push(...data.map(v => ({
|
||||
value: v.id,
|
||||
name: v.name
|
||||
})));
|
||||
po.category_id = tabs[0].value;
|
||||
await initFetchData();
|
||||
}
|
||||
|
||||
const changeCategory = async (id) => {
|
||||
tab.value = id;
|
||||
await getArticleCategory();
|
||||
}
|
||||
|
||||
const changeMinCategory = async (id) => {
|
||||
po.category_id = id;
|
||||
await initFetchData();
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getArticleCategory();
|
||||
Api.system.getAdvList({
|
||||
position: 3,
|
||||
}).then(({data}) => {
|
||||
advList.length = 0;
|
||||
advList.push(...data);
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -48,42 +74,42 @@ const dataList = reactive([
|
||||
|
||||
<view class="box-border !p-[20rpx]">
|
||||
<swiper class="!h-[240rpx] !w-full overflow-hidden rounded-[8rpx]">
|
||||
<swiper-item class="!w-full !h-full" v-for="i in [1,2,3,4,5]">
|
||||
<image class="!w-full !h-full" mode="widthFix" src="../../static/images/banner占位.png"></image>
|
||||
<swiper-item class="!w-full !h-full" v-for="i in advList" :key="i.id">
|
||||
<image @click="OpenTypeFun(i)" class="!w-full !h-full" mode="aspectFill" :src="i.file"></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
|
||||
<view class="!grid grid-cols-2 gap-[20rpx] !px-[20rpx]">
|
||||
<view :class="['tab', tab===0 ? 'cur' : '']" @click="tab=0">
|
||||
<view :class="['tab', tab===1 ? 'cur' : '']" @click="changeCategory(1)">
|
||||
常见问题
|
||||
</view>
|
||||
<view :class="['tab', tab===1 ? 'cur' : '']" @click="tab=1">
|
||||
<view :class="['tab', tab===2 ? 'cur' : '']" @click="changeCategory(2)">
|
||||
基础教学
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="!mt-[20rpx] !px-[20rpx]">
|
||||
<view class="!w-full bg-[#fff] rounded-[12rpx] pt-[30rpx] px-[20rpx]">
|
||||
<template v-if="tab===0">
|
||||
<template v-if="tab===1">
|
||||
<view class="!grid grid-cols-4 gap-[20rpx]">
|
||||
<view
|
||||
v-for="item in tabs"
|
||||
@click="current=item.value"
|
||||
:class="['rounded-full bg-[#F2F3F5] text-center !py-[8rpx] !text-[13px] duration-500', current===item.value ? 'current' : '']">
|
||||
@click="changeMinCategory(item.value)"
|
||||
:class="['rounded-full bg-[#F2F3F5] text-center !py-[8rpx] !text-[13px] duration-500', po.category_id===item.value ? 'current' : '']">
|
||||
{{ item.name }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="!mt-[28rpx]">
|
||||
<template v-for="(item,index) in dataList" :key="index">
|
||||
<view class="!pt-[28rpx]">
|
||||
<template v-for="(item,index) in [...vo.top, ...vo.rows]" :key="index">
|
||||
<tui-collapse :index="index" :current="collapseCur" :disabled="item.disabled"
|
||||
@click="({index}) => collapseCur=index">
|
||||
<template v-slot:title>
|
||||
<tui-list-cell :hover="!item.disabled">{{ item.name }}</tui-list-cell>
|
||||
<tui-list-cell :hover="!item.disabled">{{ item.title }}</tui-list-cell>
|
||||
</template>
|
||||
<template v-slot:content>
|
||||
<view class="tui-content">{{ item.intro }}</view>
|
||||
<view class="tui-content px-[16px] text-[#86909C]">{{ item.content }}</view>
|
||||
</template>
|
||||
</tui-collapse>
|
||||
</template>
|
||||
@@ -94,28 +120,30 @@ const dataList = reactive([
|
||||
<view class="!grid grid-cols-4 gap-[20rpx]">
|
||||
<view
|
||||
v-for="item in tabs"
|
||||
@click="current=item.value"
|
||||
:class="['rounded-full bg-[#F2F3F5] text-center !py-[8rpx] !text-[13px] duration-500', current===item.value ? 'current' : '']">
|
||||
@click="changeMinCategory(item.value)"
|
||||
:class="['rounded-full bg-[#F2F3F5] text-center !py-[8rpx] !text-[13px] duration-500', po.category_id===item.value ? 'current' : '']">
|
||||
{{ item.name }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="!mt-[28rpx]">
|
||||
<template v-for="(item,index) in dataList" :key="index">
|
||||
<x-video-modal>
|
||||
<view
|
||||
:class="['!flex gap-[16rpx] py-[28rpx] box-border', index<dataList.length-1 ? 'border-b' : '']">
|
||||
<image class="!w-[148rpx] !h-[120rpx] rounded-[12rpx]" mode="aspectFill"
|
||||
:src="videoMask"></image>
|
||||
<view class="!pt-[28rpx]">
|
||||
<template v-for="(item,index) in [...vo.top, ...vo.rows]" :key="index">
|
||||
<view
|
||||
@click="OpenTypeFun(item)"
|
||||
:class="['!flex gap-[16rpx] py-[28rpx] box-border', index<vo.rows.length-1 ? 'border-b' : '']">
|
||||
<image
|
||||
class="!w-[148rpx] !h-[120rpx] rounded-[12rpx]"
|
||||
mode="aspectFill"
|
||||
:src="item.files && item.files[0] || videoMask">
|
||||
</image>
|
||||
|
||||
<view class="!flex flex-col gap-[8rpx]">
|
||||
<view class="title">掘金壁纸详细挂载教程,新手必看</view>
|
||||
<view class="info">
|
||||
掘金壁纸详细挂载教程,新手必看掘金壁纸详细挂载教程,新手必看
|
||||
</view>
|
||||
<view class="!flex flex-col gap-[8rpx]">
|
||||
<view class="title">{{ item.title }}</view>
|
||||
<view class="info">
|
||||
{{ item.content }}
|
||||
</view>
|
||||
</view>
|
||||
</x-video-modal>
|
||||
</view>
|
||||
</template>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -6,15 +6,16 @@ import nav3 from '../../static/icons/icon-邀请好友.png';
|
||||
import nav4 from '../../static/icons/icon-添加客服.png';
|
||||
import nav5 from '../../static/icons/icon-重要消息.png';
|
||||
import XDropdownList from "../../components/XDropdownList.vue";
|
||||
import XDropdownItem from "../../components/XDropdownItem.vue";
|
||||
import TaskItem from "../../components/TaskItem.vue";
|
||||
import useTableQuery from "../../hooks/useTableQuery.js";
|
||||
import Api from "../../api/index.js";
|
||||
import {reactive, ref} from "vue";
|
||||
import {reactive, ref, onMounted} from "vue";
|
||||
import {toPage} from "../../utils/uils.js";
|
||||
import AddCustomerServiceModal from "../../components/AddCustomerServiceModal.vue";
|
||||
import OpenTypeFun from "../../components/OpenTypeFun.js";
|
||||
|
||||
const showAddCustomer = ref(false);
|
||||
const advList = reactive([]);
|
||||
const nav = [
|
||||
{
|
||||
title: '新手教学',
|
||||
@@ -46,7 +47,30 @@ const nav = [
|
||||
},
|
||||
];
|
||||
|
||||
const taskType = reactive([]);
|
||||
const platformType = reactive([]);
|
||||
const sortType = reactive([
|
||||
{id: 0, name: '默认排序'},
|
||||
{id: 1, name: '价格最高'},
|
||||
{id: 2, name: '极速打款'},
|
||||
{id: 3, name: '素材安全'},
|
||||
{id: 4, name: '简单上手'},
|
||||
{id: 5, name: '最新发布'},
|
||||
]);
|
||||
|
||||
Api.system.getTaskType().then(({data}) => {
|
||||
taskType.length = 0;
|
||||
taskType.push(...data);
|
||||
});
|
||||
Api.system.getPlatform().then(({data}) => {
|
||||
platformType.length = 0;
|
||||
platformType.push(...data);
|
||||
});
|
||||
|
||||
const po = reactive({
|
||||
type: 0,
|
||||
pid: 0,
|
||||
order: 0,
|
||||
});
|
||||
const vo = reactive({
|
||||
page: '',
|
||||
@@ -55,14 +79,21 @@ const vo = reactive({
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
api: Api.system.getData,
|
||||
api: Api.system.getTask,
|
||||
parameter: po,
|
||||
callback: (data) => {
|
||||
vo.page = data.page;
|
||||
vo.total = data.total;
|
||||
vo.rows =[...vo.rows, ... data.rows];
|
||||
Object.assign(vo, data);
|
||||
}
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
Api.system.getAdvList({
|
||||
position: 1,
|
||||
}).then(({data}) => {
|
||||
advList.length = 0;
|
||||
advList.push(...data);
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -73,7 +104,7 @@ const {loading, pagination, initFetchData} = useTableQuery({
|
||||
|
||||
<scroll-view
|
||||
@refresherpulling="initFetchData()"
|
||||
@scrolltolower="pagination.current++"
|
||||
@scrolltolower="pagination.page++"
|
||||
class="h-[calc(100vh-200rpx)]"
|
||||
scroll-y>
|
||||
<view class="relative overflow-hidden bg-b-r !pb-[34rpx]">
|
||||
@@ -83,8 +114,8 @@ const {loading, pagination, initFetchData} = useTableQuery({
|
||||
|
||||
<view class="box-border !p-[20rpx]">
|
||||
<swiper class="!h-[240rpx] !w-full overflow-hidden rounded-[8rpx]">
|
||||
<swiper-item class="!w-full !h-full" v-for="i in [1,2,3,4,5]">
|
||||
<image class="!w-full !h-full" mode="widthFix" src="../../static/images/banner占位.png"></image>
|
||||
<swiper-item class="!w-full !h-full" v-for="i in advList">
|
||||
<image @click="OpenTypeFun(i)" class="!w-full !h-full" mode="aspectFill" :src="i.file"></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
@@ -109,49 +140,25 @@ const {loading, pagination, initFetchData} = useTableQuery({
|
||||
</view>
|
||||
|
||||
<view class="!grid !grid-cols-3 !px-[20rpx] gap-[20rpx]">
|
||||
<x-dropdown-list>
|
||||
<view class="bg-[#fff] !py-[14rpx] !px-[24rpx] rounded-[8rpx]">
|
||||
全部任务
|
||||
</view>
|
||||
<template #menu>
|
||||
<x-dropdown-item>全部任务</x-dropdown-item>
|
||||
<x-dropdown-item>宣发任务</x-dropdown-item>
|
||||
<x-dropdown-item>评论任务</x-dropdown-item>
|
||||
<x-dropdown-item>点赞任务</x-dropdown-item>
|
||||
<x-dropdown-item>助力任务</x-dropdown-item>
|
||||
<x-dropdown-item>其他任务</x-dropdown-item>
|
||||
</template>
|
||||
<x-dropdown-list
|
||||
@change="initFetchData"
|
||||
v-model:model-value="po.type"
|
||||
:option="taskType">
|
||||
</x-dropdown-list>
|
||||
<x-dropdown-list>
|
||||
<view class="bg-[#fff] !py-[14rpx] !px-[24rpx] rounded-[8rpx]">
|
||||
全部平台
|
||||
</view>
|
||||
<template #menu>
|
||||
<x-dropdown-item>全部平台</x-dropdown-item>
|
||||
<x-dropdown-item>抖音</x-dropdown-item>
|
||||
<x-dropdown-item>快手</x-dropdown-item>
|
||||
<x-dropdown-item>小红书</x-dropdown-item>
|
||||
<x-dropdown-item>今日头条</x-dropdown-item>
|
||||
<x-dropdown-item>其他</x-dropdown-item>
|
||||
</template>
|
||||
<x-dropdown-list
|
||||
@change="initFetchData"
|
||||
v-model:model-value="po.pid"
|
||||
:option="platformType">
|
||||
</x-dropdown-list>
|
||||
<x-dropdown-list>
|
||||
<view class="bg-[#fff] !py-[14rpx] !px-[24rpx] rounded-[8rpx]">
|
||||
默认排序
|
||||
</view>
|
||||
<template #menu>
|
||||
<x-dropdown-item>默认排序</x-dropdown-item>
|
||||
<x-dropdown-item>价格最高</x-dropdown-item>
|
||||
<x-dropdown-item>极速打款</x-dropdown-item>
|
||||
<x-dropdown-item>素材安全</x-dropdown-item>
|
||||
<x-dropdown-item>简单上手</x-dropdown-item>
|
||||
<x-dropdown-item>最新发布</x-dropdown-item>
|
||||
</template>
|
||||
<x-dropdown-list
|
||||
@change="initFetchData"
|
||||
v-model:model-value="po.order"
|
||||
:option="sortType">
|
||||
</x-dropdown-list>
|
||||
</view>
|
||||
|
||||
<view class="!flex flex-col gap-[20rpx] !mt-[20rpx] !px-[20rpx]">
|
||||
<task-item v-for="i in vo.rows"></task-item>
|
||||
<task-item v-for="i in vo.rows" :key="i.id" :data="i"></task-item>
|
||||
|
||||
<tui-loadmore v-if="loading" text="加载中..."></tui-loadmore>
|
||||
</view>
|
||||
|
||||
@@ -9,8 +9,8 @@ import {useUserStore} from "../../pinia/UserStore/index.js";
|
||||
const UserStore = useUserStore();
|
||||
|
||||
const form = reactive({
|
||||
mobile: null,
|
||||
password: null,
|
||||
mobile: '15709267061',
|
||||
password: '123456',
|
||||
});
|
||||
|
||||
const success = async () => {
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
<script setup>
|
||||
import XNav from "../../components/XNav.vue";
|
||||
import {ref} from "vue";
|
||||
import {reactive} from "vue";
|
||||
import XInput from "../../components/XInput.vue";
|
||||
import XLink from "../../components/XLink.vue";
|
||||
import MessageCard from "../../components/MessageCard.vue";
|
||||
import useTableQuery from "../../hooks/useTableQuery.js";
|
||||
import Api from "../../api/index.js";
|
||||
|
||||
const currentTab = ref(0);
|
||||
const tabs = [
|
||||
{
|
||||
name: '任务消息',
|
||||
@@ -14,6 +15,29 @@ const tabs = [
|
||||
name: '平台消息',
|
||||
},
|
||||
];
|
||||
|
||||
const po = reactive({
|
||||
type: 1,
|
||||
keyword: null,
|
||||
});
|
||||
const vo = reactive({
|
||||
rows: [],
|
||||
page: 0,
|
||||
total: 0,
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
api: Api.system.getMessageCenter,
|
||||
parameter: po,
|
||||
callback: (data) => {
|
||||
Object.assign(vo, data);
|
||||
}
|
||||
});
|
||||
|
||||
const changeTab = ({index}) => {
|
||||
po.type = index;
|
||||
initFetchData();
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -21,31 +45,43 @@ const tabs = [
|
||||
<XNav :show-back="false"></XNav>
|
||||
|
||||
<view class="w-full bg-[#fff]">
|
||||
<tui-tabs :tabs="tabs" :currentTab="currentTab" @change="({index}) => currentTab=index" height="90"></tui-tabs>
|
||||
<tui-tabs :tabs="tabs" :currentTab="po.type" @change="changeTab" height="90"></tui-tabs>
|
||||
|
||||
<view class="!pt-[24rpx] !pb-[28rpx] !px-[32rpx] !flex gap-[32rpx] items-center">
|
||||
<view class="flex-grow">
|
||||
<x-input height="72rpx" placeholder="请输入要查询的内容">
|
||||
<x-input v-model:model-value="po.keyword" height="72rpx" placeholder="请输入要查询的内容">
|
||||
<template #prefix>
|
||||
<tui-icon name="search" size="18" class="!mr-[12rpx]"></tui-icon>
|
||||
</template>
|
||||
</x-input>
|
||||
</view>
|
||||
|
||||
<x-link>搜索</x-link>
|
||||
<x-link @click="initFetchData">搜索</x-link>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="!px-[20rpx] !py-[16rpx]">
|
||||
<radio>只看未读</radio>
|
||||
<view class="!px-[20rpx] !py-[16rpx] box-border !h-[80rpx] !flex items-center">
|
||||
<checkbox>只看未读</checkbox>
|
||||
</view>
|
||||
|
||||
<view class="!flex flex-col !px-[20rpx]">
|
||||
<MessageCard
|
||||
:context-row="currentTab === 0 ? 'ellipsis-1': 'ellipsis-2'"
|
||||
v-for="item in 100">
|
||||
</MessageCard>
|
||||
</view>
|
||||
<scroll-view
|
||||
@refresherpulling="initFetchData()"
|
||||
@scrolltolower="() => {
|
||||
console.log('进来了???')
|
||||
pagination.page++;
|
||||
}"
|
||||
class="h-[calc(100vh-500rpx)]"
|
||||
scroll-y>
|
||||
<view class="!flex flex-col !px-[20rpx]">
|
||||
<MessageCard
|
||||
:context-row="po.type === 0 ? 'ellipsis-1': 'ellipsis-2'"
|
||||
:type="po.type"
|
||||
:data="item"
|
||||
:key="item.id"
|
||||
v-for="item in vo.rows">
|
||||
</MessageCard>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -1,15 +1,28 @@
|
||||
<script setup>
|
||||
import {ref} from 'vue';
|
||||
import XNav from "../../components/XNav.vue";
|
||||
import Api from "../../api/index.js";
|
||||
import {onLoad} from "@dcloudio/uni-app";
|
||||
|
||||
const title = ref('灵活用工平台综合服务协议');
|
||||
const nodes = ref('<div>Hello World!</div>');
|
||||
|
||||
onLoad((options) => {
|
||||
const {id} = options;
|
||||
|
||||
Api.system.getSingle({
|
||||
id: id
|
||||
}).then(({data}) => {
|
||||
title.value = data.title;
|
||||
nodes.value = data.content;
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<x-nav>{{ title }}</x-nav>
|
||||
|
||||
<view class="bg-[#fff]">
|
||||
<view class="bg-[#fff] p-[24rpx] min-h-[calc(100vh-100rpx)] box-border">
|
||||
<rich-text :nodes="nodes"></rich-text>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -2,6 +2,13 @@
|
||||
import fmt from "../../../static/images/fmt.png";
|
||||
import linkIcon from '../../../static/icons/link.png';
|
||||
import XImage from "../../../components/XImage.vue";
|
||||
|
||||
const {data} = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: null,
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -13,10 +20,10 @@ import XImage from "../../../components/XImage.vue";
|
||||
<view class="block items-center">
|
||||
<view class="block-title">任务案例:</view>
|
||||
<view class="block-info w-full overflow-hidden">
|
||||
<view class="text-[#165DFF] !flex items-center gap-[10rpx]">
|
||||
<view class="text-[#165DFF] !flex items-center gap-[10rpx]" v-if="data.case_url">
|
||||
<image class="!size-[24rpx] flex-shrink-0" :src="linkIcon"></image>
|
||||
<text class="ellipsis-1 flex-grow">
|
||||
https://www.baidu.com/s?wd=%E7%8C%8E%E8%81%98&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1
|
||||
{{ data.case_url }}
|
||||
</text>
|
||||
<view class="nowrap flex-shrink !py-[7rpx] !px-[32rpx] rounded-full bg-[#E8F3FF]"
|
||||
style="font-size: 24rpx">
|
||||
@@ -28,9 +35,14 @@ import XImage from "../../../components/XImage.vue";
|
||||
<view class="block">
|
||||
<view class="block-title">素材案例:</view>
|
||||
<view class="block-info !grid grid-cols-3 gap-[20rpx]">
|
||||
<x-image class="!size-[160rpx]" :src="fmt" :list="[fmt,fmt,fmt]" :cur="0" mode="aspectFill" :draggable="false"></x-image>
|
||||
<x-image class="!size-[160rpx]" :src="fmt" :list="[fmt,fmt,fmt]" :cur="1" mode="aspectFill" :draggable="false"></x-image>
|
||||
<x-image class="!size-[160rpx]" :src="fmt" :list="[fmt,fmt,fmt]" :cur="2" mode="aspectFill" :draggable="false"></x-image>
|
||||
<x-image
|
||||
v-if="data.case_images_arr.length > 0"
|
||||
class="!size-[160rpx]"
|
||||
:src="data.case_images_arr[0]"
|
||||
:list="data.case_images_arr"
|
||||
:cur="0" mode="aspectFill"
|
||||
:draggable="false">
|
||||
</x-image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="block">
|
||||
|
||||
@@ -6,12 +6,12 @@ import {onLoad} from "@dcloudio/uni-app";
|
||||
import XLink from "../../components/XLink.vue";
|
||||
import XNoticeBar from "../../components/XNoticeBar.vue";
|
||||
import XImage from "../../components/XImage.vue";
|
||||
import fmt from "../../static/images/fmt.png";
|
||||
import Api from "../../api/index.js";
|
||||
import dayjs from "dayjs";
|
||||
import XPrompt from "../../components/XPrompt.vue";
|
||||
import {numberToCharacter} from "../../utils/uils.js";
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
import TaskDetails from "./components/TaskDetails.vue";
|
||||
import CollectMaterials from "./components/CollectMaterials.vue";
|
||||
import MyBackfill from "./components/MyBackfill.vue";
|
||||
import ReviewCommunication from "./components/ReviewCommunication.vue";
|
||||
// #endif
|
||||
|
||||
// #ifndef APP-PLUS
|
||||
@@ -43,8 +43,14 @@ const tabs = reactive([
|
||||
},
|
||||
]);
|
||||
|
||||
const getData = async (id) => {
|
||||
const {data} = await Api.system.getTaskinfo(id || details.value.id);
|
||||
details.value = data;
|
||||
}
|
||||
|
||||
onLoad((options) => {
|
||||
const {id} = options;
|
||||
getData(id);
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
@@ -66,24 +72,29 @@ onMounted(() => {
|
||||
<XNav></XNav>
|
||||
<x-notice-bar></x-notice-bar>
|
||||
|
||||
<view class="!p-[20rpx] !flex flex-col gap-[20rpx] box-border">
|
||||
<view class="!p-[20rpx] !flex flex-col gap-[20rpx] box-border" v-if="details">
|
||||
<view class="rounded-[16rpx] !p-[24rpx] bg-[#fff] !flex flex-col gap-[20rpx]">
|
||||
<view class="!flex gap-[30rpx]">
|
||||
<image class="!size-[84rpx]" :src="goodsIcon"></image>
|
||||
<view class="flex-grow">
|
||||
<view class="goods-title !w-full !flex items-center justify-between">
|
||||
洗面奶洗面奶
|
||||
<view :class="['goods-state']">进行中</view>
|
||||
{{ details.goods_name }}
|
||||
<view :class="['goods-state']" v-if="details.is_use !== 0">{{ details.status_text }}</view>
|
||||
</view>
|
||||
<view class="goods-bh">
|
||||
<view v-if="details.is_use === 0" class="goods-bh">
|
||||
{{ dayjs(details.end_time).format('YYYY-MM-DD HH:mm') }} 前可领取
|
||||
</view>
|
||||
<view v-else class="goods-bh">
|
||||
任务编号:DF1515
|
||||
<x-link>复制</x-link>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="bg-[#F7F8FA] px-[28rpx] py-[16rpx] rounded-[8rpx] !flex justify-around"
|
||||
style="font-size: 24rpx">
|
||||
<view
|
||||
v-if="details.is_use !== 0"
|
||||
class="bg-[#F7F8FA] px-[28rpx] py-[16rpx] rounded-[8rpx] !flex justify-around"
|
||||
style="font-size: 24rpx">
|
||||
<view>发布账号</view>
|
||||
<view class="bg-[#E5E6EB] w-[5rpx] h-auto"></view>
|
||||
<view>昵称: 我是大冤种</view>
|
||||
@@ -91,25 +102,58 @@ onMounted(() => {
|
||||
<view>账号: 56378899</view>
|
||||
</view>
|
||||
|
||||
<view class="!grid grid-cols-3 gap-[20rpx]">
|
||||
<view class="!grid grid-cols-4 gap-[20rpx]">
|
||||
<view class="bg-[#E8F3FF] px-[26rpx] py-[20rpx] rounded-[8rpx]">
|
||||
<view class="goods-st">今日头条</view>
|
||||
<view class="goods-st">{{ details.platform }}</view>
|
||||
<view class="goods-st-info">发布平台</view>
|
||||
</view>
|
||||
<view class="bg-[#E8F3FF] px-[26rpx] py-[20rpx] rounded-[8rpx]">
|
||||
<view class="goods-st">今日头条</view>
|
||||
<view class="goods-st-info">发布平台</view>
|
||||
<view class="goods-st">¥ {{ details.real_price.toFixed(2) }}</view>
|
||||
<view class="goods-st-info">任务报酬</view>
|
||||
</view>
|
||||
<view class="bg-[#E8F3FF] px-[26rpx] py-[20rpx] rounded-[8rpx]">
|
||||
<view class="goods-st">今日头条</view>
|
||||
<view class="goods-st-info">发布平台</view>
|
||||
<view class="goods-st">{{ details.material_name }}</view>
|
||||
<view class="goods-st-info">素材类型</view>
|
||||
</view>
|
||||
<view class="bg-[#E8F3FF] px-[26rpx] py-[20rpx] rounded-[8rpx]">
|
||||
<view class="goods-st">{{ details.children_num }}</view>
|
||||
<view class="goods-st-info">剩余名额</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="!flex flex-col gap-[10px]">
|
||||
<view class="!flex px-[10px] py-[12px] bg-[#F2F3F5] gap-[8px] items-center">
|
||||
<view class="text-[#4E5969] test-24r !flex items-center gap-[5px]">
|
||||
安全评分:
|
||||
<x-prompt
|
||||
info="由该任务或类似任务的历史禁言率、素材是否绿色决定。分值越高,说明完成任务对账号影响最小"
|
||||
title="分值说明">
|
||||
</x-prompt>
|
||||
</view>
|
||||
<view class="!flex items-center gap-[5px]">
|
||||
<view class="text-[#165DFF]">{{ details.security_level }}分</view>
|
||||
<view class="test-24r">{{ details.security_text }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="!flex px-[10px] py-[12px] bg-[#F2F3F5] gap-[8px] items-center">
|
||||
<view class="text-[#4E5969] test-24r !flex items-center gap-[5px]">
|
||||
耗时评分:
|
||||
<x-prompt
|
||||
info="由该任务完整完成所需要的时间和操作步骤决定。分值越高,说明完成任务越简单"
|
||||
title="分值说明">
|
||||
</x-prompt>
|
||||
</view>
|
||||
<view class="!flex items-center gap-[5px]">
|
||||
<view class="text-[#165DFF]">{{ details.time_level }}分</view>
|
||||
<view class="test-24r">{{ details.time_text }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view id="mainDetailBox" class="rounded-[16rpx] bg-[#fff] main-details overflow-hidden">
|
||||
<tui-tabs
|
||||
v-if="mainDetailWidth"
|
||||
v-if="mainDetailWidth && details.is_use !== 0"
|
||||
:tabs="tabs"
|
||||
:currentTab="currentTabs"
|
||||
:width="mainDetailWidth"
|
||||
@@ -120,7 +164,7 @@ onMounted(() => {
|
||||
<Suspense>
|
||||
<template #default>
|
||||
<div class="h-full flex flex-col items-start">
|
||||
<component :is="tabs[currentTabs].component"></component>
|
||||
<component :is="tabs[currentTabs].component" :data="details"></component>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -140,28 +184,48 @@ onMounted(() => {
|
||||
<view class="block items-center">
|
||||
<view class="block-title">发布平台:</view>
|
||||
<view class="block-info">
|
||||
抖音
|
||||
{{ details.platform }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="block items-center">
|
||||
<view class="block-title">发布方式:</view>
|
||||
<view class="block-info">
|
||||
三连发/每次相同
|
||||
{{
|
||||
numberToCharacter(details.fb_num - 1)
|
||||
}}连发/{{ details.is_identical === 0 ? '每次不同' : '每次相同' }}
|
||||
<x-prompt title="发布方式说明">
|
||||
<template #info>
|
||||
<view>
|
||||
领取素材后,按照要求,连续发布
|
||||
<text class="text-[#FF7D00]">{{ details.fb_num }}遍</text>
|
||||
,每遍素材
|
||||
<text class="text-[#FF7D00]">
|
||||
{{ details.is_identical === 0 ? '不同' : '相同' }}
|
||||
</text>
|
||||
</view>
|
||||
</template>
|
||||
</x-prompt>
|
||||
</view>
|
||||
</view>
|
||||
<view class="block items-center">
|
||||
<view class="block-title">每次间隔时长:</view>
|
||||
<view class="block-info">
|
||||
10分钟
|
||||
{{ details.duration }}分钟
|
||||
</view>
|
||||
</view>
|
||||
<view class="block">
|
||||
<view class="block-title">特殊要求:</view>
|
||||
<view class="block-info gap-[20rpx]">
|
||||
<view>请使用抖音扫码下图,收藏音乐,发布时使用</view>
|
||||
<view>{{ details.special_text }}</view>
|
||||
<view class="!grid grid-cols-3 !mt-[12rpx]">
|
||||
<x-image class="!size-[96rpx]" :src="fmt" mode="aspectFill"
|
||||
:draggable="false"></x-image>
|
||||
<x-image
|
||||
v-for="(v, index) in details.special_images_arr"
|
||||
:key="index"
|
||||
class="!size-[96rpx]"
|
||||
:src="v"
|
||||
mode="aspectFill"
|
||||
:draggable="false">
|
||||
</x-image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -173,42 +237,20 @@ onMounted(() => {
|
||||
<view class="title">
|
||||
回填要求
|
||||
</view>
|
||||
<view class="block flex-col">
|
||||
<view class="block-title">第1次回填:</view>
|
||||
<view
|
||||
v-for="(v,index) in details.task_content"
|
||||
:key="v.id"
|
||||
class="block flex-col">
|
||||
<view class="block-title">第{{ index + 1 }}次回填:</view>
|
||||
<view class="block-info !flex w-full">
|
||||
<view
|
||||
class="bg-[#F7F8FA] py-[12rpx] px-[20rpx] border-1 border-[rgb(229,230,235)] w-[60%] whitespace-nowrap">
|
||||
0813-09:54 至 0813-17:14之间
|
||||
{{ dayjs(v.start_time).format('MMDD-HH:mm') }} 至
|
||||
{{ dayjs(v.end_time).format('MMDD-HH:mm') }}之间
|
||||
</view>
|
||||
<view
|
||||
class="bg-[#F7F8FA] py-[12rpx] px-[20rpx] border-1 border-[rgb(229,230,235)] flex-grow">
|
||||
3个作品评论区截图
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="block flex-col">
|
||||
<view class="block-title">第2次回填:</view>
|
||||
<view class="block-info !flex w-full">
|
||||
<view
|
||||
class="bg-[#F7F8FA] py-[12rpx] px-[20rpx] border-1 border-[rgb(229,230,235)] w-[60%] whitespace-nowrap">
|
||||
0813-09:54 至 0813-17:14之间
|
||||
</view>
|
||||
<view
|
||||
class="bg-[#F7F8FA] py-[12rpx] px-[20rpx] border-1 border-[rgb(229,230,235)] flex-grow">
|
||||
3个作品链接
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="block flex-col">
|
||||
<view class="block-title">第3次回填:</view>
|
||||
<view class="block-info !flex w-full">
|
||||
<view
|
||||
class="bg-[#F7F8FA] py-[12rpx] px-[20rpx] border-1 border-[rgb(229,230,235)] w-[60%] whitespace-nowrap">
|
||||
0814-10:00 至 0814-11:30之间
|
||||
</view>
|
||||
<view
|
||||
class="bg-[#F7F8FA] py-[12rpx] px-[20rpx] border-1 border-[rgb(229,230,235)] flex-grow">
|
||||
每一个作品的播放量截图
|
||||
{{ v.content }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -223,7 +265,19 @@ onMounted(() => {
|
||||
<view class="block items-center">
|
||||
<view class="block-title">作品保留时间:</view>
|
||||
<view class="block-info">
|
||||
3天
|
||||
{{ details.retention_time }} {{ details.retention_type === 1 ? '分钟' : '小时' }}
|
||||
<x-prompt title="保留时间说明">
|
||||
<template #info>
|
||||
<view>
|
||||
该任务结算后,要保留
|
||||
<text class="text-[#FF7D00]">{{ details.retention_time }}
|
||||
{{ details.retention_type === 1 ? '分钟' : '小时' }}
|
||||
</text>
|
||||
。
|
||||
<view>到期请自行删除,避免违规。若提前删除,将影响后续收益</view>
|
||||
</view>
|
||||
</template>
|
||||
</x-prompt>
|
||||
</view>
|
||||
</view>
|
||||
<view class="block-extend">
|
||||
@@ -232,7 +286,11 @@ onMounted(() => {
|
||||
<view class="block items-center">
|
||||
<view class="block-title !w-[300rpx]">每次回填将在该时间内审核:</view>
|
||||
<view class="block-info">
|
||||
4小时内
|
||||
{{ details.check_time }} {{ details.check_type === 1 ? '分钟' : '小时' }}内
|
||||
<x-prompt
|
||||
title="审核时间说明"
|
||||
:info="`回填后,我们将于${details.check_time}${details.check_type === 1 ? '分钟' : '小时'}内完成审核,超时自动通过`">
|
||||
</x-prompt>
|
||||
</view>
|
||||
</view>
|
||||
<view class="block-extend">
|
||||
@@ -246,28 +304,20 @@ onMounted(() => {
|
||||
<view class="title">
|
||||
扣款说明
|
||||
</view>
|
||||
<view class="block !flex !gap-0">
|
||||
<view class="test-24r px-[20rpx] py-[12rpx] bg-[#F7F8FA] border-1 border-[rgb(229,230,235)]">1.
|
||||
<view
|
||||
v-for="(v, index) in details.settlement"
|
||||
:key="v.id"
|
||||
class="block !flex !gap-0">
|
||||
<view class="test-24r px-[20rpx] py-[12rpx] bg-[#F7F8FA] border-1 border-[rgb(229,230,235)]">
|
||||
{{ index + 1 }}.
|
||||
</view>
|
||||
<view
|
||||
class="test-24r px-[20rpx] py-[12rpx] bg-[#F7F8FA] border-1 border-[rgb(229,230,235)] flex-grow">
|
||||
未按约定评论
|
||||
{{ v.intro }}
|
||||
</view>
|
||||
<view
|
||||
class="test-24r px-[20rpx] py-[12rpx] bg-[#F7F8FA] border-1 border-[rgb(229,230,235)] !w-[210rpx]">
|
||||
扣除20%收益
|
||||
</view>
|
||||
</view>
|
||||
<view class="block !flex !gap-0">
|
||||
<view class="test-24r px-[20rpx] py-[12rpx] bg-[#F7F8FA] border-1 border-[rgb(229,230,235)]">2.
|
||||
</view>
|
||||
<view
|
||||
class="test-24r px-[20rpx] py-[12rpx] bg-[#F7F8FA] border-1 border-[rgb(229,230,235)] flex-grow">
|
||||
当天发布其他广告
|
||||
</view>
|
||||
<view
|
||||
class="test-24r px-[20rpx] py-[12rpx] bg-[#F7F8FA] border-1 border-[rgb(229,230,235)] !w-[210rpx]">
|
||||
扣除100%收益
|
||||
class="test-24r px-[20rpx] py-[12rpx] bg-[#F7F8FA] border-1 border-[rgb(229,230,235)] whitespace-nowrap">
|
||||
扣除{{ v.ratio }}%收益
|
||||
</view>
|
||||
</view>
|
||||
<view class="block-extend">
|
||||
@@ -281,18 +331,32 @@ onMounted(() => {
|
||||
<view class="title">
|
||||
其他说明
|
||||
</view>
|
||||
<view class="block">
|
||||
<view class="test-24r">
|
||||
未到约定期限,达人提前删除视频处罚扣除1点达人信用分
|
||||
<view class="block !flex-col">
|
||||
<view class="test-24r" v-for="(v, index) in details.settlement_arr" :key="index">
|
||||
{{ v.intro }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="py-[7rpx] px-[32rpx] rounded-full text-[var(--primary-color)] bg-[#E8F3FF] w-fit">
|
||||
查看信用分管理方法
|
||||
</view>
|
||||
<x-prompt title="信用分说明"
|
||||
info="扣除信用分,将影响您后续接任务以及提现。请按约定完成任务。请在接受任务前认真阅读各要求,有能力完成再接受。">
|
||||
<template #button>
|
||||
<view
|
||||
class="py-[7rpx] px-[32rpx] rounded-full text-[var(--primary-color)] bg-[#E8F3FF] w-fit">
|
||||
查看信用分管理方法
|
||||
</view>
|
||||
</template>
|
||||
</x-prompt>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="bg-[#94BFFF] rounded-[8rpx] py-[26rpx] text-[#fff] !flex justify-center items-center">
|
||||
<view
|
||||
v-if="details.is_use === 0"
|
||||
class="bg-[var(--primary-color)] rounded-[8rpx] py-[26rpx] text-[#fff] !flex justify-center items-center">
|
||||
接受任务
|
||||
</view>
|
||||
|
||||
<view
|
||||
v-else
|
||||
class="bg-[#94BFFF] rounded-[8rpx] py-[26rpx] text-[#fff] !flex justify-center items-center">
|
||||
已接受
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
<script setup>
|
||||
import {onMounted, reactive} from "vue";
|
||||
import {useUserStore} from "../../../pinia/UserStore/index.js";
|
||||
import Api from "../../../api/index.js";
|
||||
|
||||
const UserStore = useUserStore();
|
||||
const detail = reactive({});
|
||||
|
||||
onMounted(() => {
|
||||
Api.system.myTeamInfo().then(({data}) => {
|
||||
Object.assign(detail, data);
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -8,7 +19,7 @@
|
||||
我的邀请码:
|
||||
</view>
|
||||
<view class="invitationCodeValue">
|
||||
123445
|
||||
{{ UserStore?.userInfo?.invite }}
|
||||
</view>
|
||||
<view class="view-detail !ml-auto">查看团队详情></view>
|
||||
</view>
|
||||
@@ -16,15 +27,15 @@
|
||||
<view class="!mt-[24rpx] !grid grid-cols-3 gap-[22rpx]">
|
||||
<view class="rounded-[16rpx] bg-[#E8F3FF] p-[20rpx] !flex gap-[6rpx] flex-col">
|
||||
<view class="test-22r text-[#86909C]">人数</view>
|
||||
<view class="test-36r text-[#165DFF]">323</view>
|
||||
<view class="test-36r text-[#165DFF]">{{ detail.count }}</view>
|
||||
</view>
|
||||
<view class="rounded-[16rpx] bg-[#E8F3FF] p-[20rpx] !flex gap-[6rpx] flex-col">
|
||||
<view class="test-22r text-[#86909C]">团队收益</view>
|
||||
<view class="test-36r text-[#165DFF]">323</view>
|
||||
<view class="test-36r text-[#165DFF]">{{ detail.income }}</view>
|
||||
</view>
|
||||
<view class="rounded-[16rpx] bg-[#E8F3FF] p-[20rpx] !flex gap-[6rpx] flex-col">
|
||||
<view class="test-22r text-[#86909C]">团队奖励</view>
|
||||
<view class="test-36r text-[#165DFF]">323</view>
|
||||
<view class="test-36r text-[#165DFF]">{{ detail.reward }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup>
|
||||
import {defineAsyncComponent, ref} from 'vue';
|
||||
import {defineAsyncComponent, onMounted, ref} from 'vue';
|
||||
import ICON1 from '../../static/icons/icon_提现记录.png';
|
||||
import ICON2 from '../../static/icons/icon_变动记录.png';
|
||||
import ICON3 from '../../static/icons/icon_我的钱包.png';
|
||||
@@ -12,11 +12,9 @@ import user_BG from '../../static/images/user_bg.png';
|
||||
import XNav from "../../components/XNav.vue";
|
||||
import CreditScore from "../../components/CreditScore.vue";
|
||||
import {toPage} from "../../utils/uils.js";
|
||||
import {useUserStore} from "../../pinia/UserStore/index.js";
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
import MyTeam from "./components/MyTeam.vue";
|
||||
import Inviter from "./components/Inviter.vue";
|
||||
import AccompanyingMentor from "./components/AccompanyingMentor.vue";
|
||||
// #endif
|
||||
|
||||
// #ifndef APP-PLUS
|
||||
@@ -43,11 +41,17 @@ const tabs = [
|
||||
component: AccompanyingMentor,
|
||||
},
|
||||
]
|
||||
|
||||
const UserStore = useUserStore();
|
||||
|
||||
onMounted(() => {
|
||||
UserStore.getUserInfo();
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!--我的-->
|
||||
<x-nav></x-nav>
|
||||
<x-nav :show-back="false"></x-nav>
|
||||
|
||||
<view class="!w-full !h-[484rpx] overflow-hidden relative">
|
||||
<image class="!w-[1200rpx] !h-[480rpx] !absolute left-[-200rpx]" :src="user_BG" mode="aspectFill"></image>
|
||||
@@ -55,9 +59,9 @@ const tabs = [
|
||||
<view class="!w-full relative z-10 p-[20rpx] !flex gap-[34rpx] justify-between">
|
||||
<image class="!size-[132rpx]" :src="Avatar" mode="aspectFill"></image>
|
||||
<view class="!flex flex-col items-start justify-between box-border py-[4rpx]">
|
||||
<view class="user_name">用户名称</view>
|
||||
<view class="user_phone">手机号:1570****061</view>
|
||||
<view class="user_phone">uid:38578</view>
|
||||
<view class="user_name">{{ UserStore?.userInfo?.nickname }}</view>
|
||||
<view class="user_phone">手机号:{{ UserStore?.userInfo?.mobile }}</view>
|
||||
<view class="user_phone">uid:{{ UserStore?.userInfo?.uid }}</view>
|
||||
</view>
|
||||
|
||||
<credit-score class="!mr-[110rpx] !ml-auto"></credit-score>
|
||||
@@ -77,20 +81,23 @@ const tabs = [
|
||||
<view>
|
||||
<view class="info-title">总收益(元)</view>
|
||||
<view class="info-balance">
|
||||
24687.65
|
||||
{{ UserStore?.userInfo?.total_money.toFixed(2) }}
|
||||
</view>
|
||||
</view>
|
||||
<view>
|
||||
<view class="info-title">可提现(元)</view>
|
||||
<view class="info-balance">
|
||||
358.32
|
||||
{{ UserStore?.userInfo?.money.toFixed(2) }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="gap-line"></view>
|
||||
<view class="py-[32rpx] px-[42rpx] !flex items-center gap-[20rpx]">
|
||||
<view class="info-title !mb-0">已提现(元)</view>
|
||||
<view class="info-balance" style="font-size: 28rpx">24239.33</view>
|
||||
<view class="info-balance" style="font-size: 28rpx">{{
|
||||
UserStore?.userInfo?.withraw_money.toFixed(2)
|
||||
}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -138,9 +145,10 @@ const tabs = [
|
||||
<image class="!size-[84rpx]" mode="aspectFill" :src="ICON4"></image>
|
||||
<view class="test-24r">邀请好友</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="toPage('/pages/accountManagement/index')">
|
||||
<image class="!size-[84rpx]" mode="aspectFill" :src="ICON5"></image>
|
||||
<view class="test-24r">邀请好友</view>
|
||||
<view class="test-24r">账号管理</view>
|
||||
</view>
|
||||
<view class="!flex items-center flex-col justify-center gap-[12rpx]">
|
||||
<image class="!size-[84rpx]" mode="aspectFill" :src="ICON6"></image>
|
||||
|
||||
59
src/pages/userInfo/components/EditNickName.vue
Normal file
59
src/pages/userInfo/components/EditNickName.vue
Normal file
@@ -0,0 +1,59 @@
|
||||
<script setup>
|
||||
import {reactive, ref, onMounted} from "vue";
|
||||
import XInfoModal from "../../../components/XInfoModal.vue";
|
||||
import XForm from "../../../components/XForm.vue";
|
||||
import XFormItem from "../../../components/XFormItem.vue";
|
||||
import XInput from "../../../components/XInput.vue";
|
||||
import {useUserStore} from "../../../pinia/UserStore/index.js";
|
||||
import Api from "../../../api/index.js";
|
||||
import {showToast} from "../../../utils/uils.js";
|
||||
|
||||
const XFormRef = ref();
|
||||
const show = defineModel('show');
|
||||
const rules = {
|
||||
nickname: {
|
||||
reg: /^[^]*\S[^]*$/,
|
||||
msg: '请输入正确的微信号',
|
||||
}
|
||||
};
|
||||
const form = reactive({
|
||||
nickname: null,
|
||||
});
|
||||
|
||||
const success = async () => {
|
||||
XFormRef.value.verify();
|
||||
const {msg} = await Api.system.saveInfo({...form, type: 2});
|
||||
showToast(msg);
|
||||
await UserStore.getUserInfo();
|
||||
show.value = false;
|
||||
}
|
||||
|
||||
const UserStore = useUserStore();
|
||||
onMounted(() => {
|
||||
form.nickname = UserStore.userInfo.nickname;
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<x-info-modal v-model:show="show" @success="success">
|
||||
<view class="title">修改昵称</view>
|
||||
|
||||
<x-form ref="XFormRef" :model="form" :rules="rules">
|
||||
<x-form-item>
|
||||
<x-input height="72rpx" placeholder="微信号" v-model:model-value="form.nickname"></x-input>
|
||||
</x-form-item>
|
||||
</x-form>
|
||||
</x-info-modal>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.title {
|
||||
color: rgb(29, 33, 41);
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
line-height: 24px;
|
||||
letter-spacing: 0;
|
||||
text-align: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -1,22 +1,43 @@
|
||||
<script setup>
|
||||
import {reactive, ref} from "vue";
|
||||
import {onMounted, reactive, ref} from "vue";
|
||||
import XInfoModal from "../../../components/XInfoModal.vue";
|
||||
import XForm from "../../../components/XForm.vue";
|
||||
import XFormItem from "../../../components/XFormItem.vue";
|
||||
import XInput from "../../../components/XInput.vue";
|
||||
import SendMsg from "../../../components/SendMsg.vue";
|
||||
import Api from "../../../api/index.js";
|
||||
import {showToast} from "../../../utils/uils.js";
|
||||
import {useUserStore} from "../../../pinia/UserStore/index.js";
|
||||
|
||||
const XFormRef = ref();
|
||||
const UserStore = useUserStore();
|
||||
const show = defineModel('show');
|
||||
const rules = {};
|
||||
const rules = {
|
||||
mobile: {
|
||||
reg: /^1[3-9]\d{9}$/,
|
||||
msg: '请输入正确的手机号',
|
||||
},
|
||||
captcha: {
|
||||
reg: /.+/,
|
||||
msg: '请输入正确的验证码',
|
||||
},
|
||||
password: {
|
||||
reg: /.+/,
|
||||
msg: '请输入正确的密码',
|
||||
},
|
||||
};
|
||||
const form = reactive({
|
||||
phone: null,
|
||||
verificationCode: null,
|
||||
mobile: null,
|
||||
captcha: null,
|
||||
password: null,
|
||||
});
|
||||
|
||||
const success = () => {
|
||||
const success = async () => {
|
||||
XFormRef.value.verify();
|
||||
const {msg} = await Api.system.savePassword(form);
|
||||
showToast(msg);
|
||||
await UserStore.getUserInfo();
|
||||
show.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -26,10 +47,10 @@ const success = () => {
|
||||
|
||||
<x-form ref="XFormRef" :model="form" :rules="rules">
|
||||
<x-form-item label="手机号">
|
||||
<x-input height="72rpx" placeholder="微信号" v-model:model-value="form.phone"></x-input>
|
||||
<x-input height="72rpx" placeholder="微信号" v-model:model-value="form.mobile"></x-input>
|
||||
</x-form-item>
|
||||
<x-form-item label="验证码">
|
||||
<send-msg height="72rpx" v-model:model-value="form.verificationCode"></send-msg>
|
||||
<send-msg height="72rpx" :mobile="form.mobile" v-model:model-value="form.captcha" :type="3"></send-msg>
|
||||
</x-form-item>
|
||||
<x-form-item label="新登录密码">
|
||||
<x-input height="72rpx" placeholder="新登录密码" v-model:model-value="form.password"></x-input>
|
||||
|
||||
@@ -5,36 +5,44 @@ import XForm from "../../../components/XForm.vue";
|
||||
import XFormItem from "../../../components/XFormItem.vue";
|
||||
import XInput from "../../../components/XInput.vue";
|
||||
import SendMsg from "../../../components/SendMsg.vue";
|
||||
import {useUserStore} from "../../../pinia/UserStore/index.js";
|
||||
import Api from "../../../api/index.js";
|
||||
import {showToast} from "../../../utils/uils.js";
|
||||
|
||||
const XFormRef = ref();
|
||||
const UserStore = useUserStore();
|
||||
const show = defineModel('show');
|
||||
const rules = {
|
||||
oldPhone: {
|
||||
reg: /^\[1][3-9]\d{9}$/,
|
||||
old_mobile: {
|
||||
reg: /^1[3-9]\d{9}$/,
|
||||
msg: '请输入正确的手机号',
|
||||
},
|
||||
oldVerificationCode: {
|
||||
old_captcha: {
|
||||
reg: /.+/,
|
||||
msg: '请输入正确验证码',
|
||||
},
|
||||
new_mobile: {
|
||||
reg: /^1[3-9]\d{9}$/,
|
||||
msg: '请输入正确的手机号',
|
||||
},
|
||||
newPhone: {
|
||||
reg: /^\[1][3-9]\d{9}$/,
|
||||
msg: '请输入正确的手机号',
|
||||
},
|
||||
newVerificationCode: {
|
||||
new_captcha: {
|
||||
reg: /.+/,
|
||||
msg: '请输入正确的手机号',
|
||||
msg: '请输入正确验证码',
|
||||
},
|
||||
};
|
||||
const form = reactive({
|
||||
oldPhone: null,
|
||||
oldVerificationCode: null,
|
||||
newPhone: null,
|
||||
newVerificationCode: null,
|
||||
old_mobile: null,
|
||||
old_captcha: null,
|
||||
new_mobile: null,
|
||||
new_captcha: null,
|
||||
});
|
||||
|
||||
const success = () => {
|
||||
const success = async () => {
|
||||
XFormRef.value.verify();
|
||||
const {msg} = await Api.system.saveMobile(form);
|
||||
showToast(msg);
|
||||
show.value = false;
|
||||
await UserStore.getUserInfo();
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -44,16 +52,26 @@ const success = () => {
|
||||
|
||||
<x-form ref="XFormRef" :model="form" :rules="rules">
|
||||
<x-form-item label="原手机号">
|
||||
<x-input height="72rpx" placeholder="原手机号" v-model:model-value="form.oldPhone"></x-input>
|
||||
<x-input height="72rpx" placeholder="原手机号" v-model:model-value="form.old_mobile"></x-input>
|
||||
</x-form-item>
|
||||
<x-form-item label="验证码">
|
||||
<send-msg height="72rpx" v-model:model-value="form.oldVerificationCode"></send-msg>
|
||||
<send-msg
|
||||
height="72rpx"
|
||||
:mobile="form.old_mobile"
|
||||
v-model:model-value="form.old_captcha"
|
||||
:type="4">
|
||||
</send-msg>
|
||||
</x-form-item>
|
||||
<x-form-item label="原手机号">
|
||||
<x-input height="72rpx" placeholder="新手机号" v-model:model-value="form.oldPhone"></x-input>
|
||||
<x-form-item label="新手机号">
|
||||
<x-input height="72rpx" placeholder="新手机号" v-model:model-value="form.new_mobile"></x-input>
|
||||
</x-form-item>
|
||||
<x-form-item label="验证码">
|
||||
<send-msg height="72rpx" v-model:model-value="form.newVerificationCode"></send-msg>
|
||||
<send-msg
|
||||
height="72rpx"
|
||||
:mobile="form.new_mobile"
|
||||
v-model:model-value="form.new_captcha"
|
||||
:type="5">
|
||||
</send-msg>
|
||||
</x-form-item>
|
||||
</x-form>
|
||||
</x-info-modal>
|
||||
|
||||
@@ -1,25 +1,37 @@
|
||||
<script setup>
|
||||
import {reactive, ref} from "vue";
|
||||
import {reactive, ref, onMounted} from "vue";
|
||||
import XInfoModal from "../../../components/XInfoModal.vue";
|
||||
import XForm from "../../../components/XForm.vue";
|
||||
import XFormItem from "../../../components/XFormItem.vue";
|
||||
import XInput from "../../../components/XInput.vue";
|
||||
import {useUserStore} from "../../../pinia/UserStore/index.js";
|
||||
import Api from "../../../api/index.js";
|
||||
import {showToast} from "../../../utils/uils.js";
|
||||
|
||||
const XFormRef = ref();
|
||||
const show = defineModel('show');
|
||||
const rules = {
|
||||
wxCode: {
|
||||
reg: /^\[1][3-9]\d{9}$/,
|
||||
wechat: {
|
||||
reg: /^[^]*\S[^]*$/,
|
||||
msg: '请输入正确的微信号',
|
||||
}
|
||||
};
|
||||
const form = reactive({
|
||||
wxCode: null,
|
||||
wechat: null,
|
||||
});
|
||||
|
||||
const success = () => {
|
||||
const success = async () => {
|
||||
XFormRef.value.verify();
|
||||
const {msg} = await Api.system.saveInfo({...form, type: 3});
|
||||
showToast(msg);
|
||||
await UserStore.getUserInfo();
|
||||
show.value = false;
|
||||
}
|
||||
|
||||
const UserStore = useUserStore();
|
||||
onMounted(() => {
|
||||
form.wechat = UserStore.userInfo.wechat;
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -28,7 +40,7 @@ const success = () => {
|
||||
|
||||
<x-form ref="XFormRef" :model="form" :rules="rules">
|
||||
<x-form-item>
|
||||
<x-input height="72rpx" placeholder="微信号" v-model:model-value="form.wxCode"></x-input>
|
||||
<x-input height="72rpx" placeholder="微信号" v-model:model-value="form.wechat"></x-input>
|
||||
</x-form-item>
|
||||
</x-form>
|
||||
</x-info-modal>
|
||||
|
||||
@@ -3,23 +3,32 @@ import {defineAsyncComponent, ref} from "vue";
|
||||
import Right from "../../static/icons/right.png";
|
||||
import Avatar from "../../static/images/Avatar.png";
|
||||
import XNav from "../../components/XNav.vue";
|
||||
import {useUserStore} from "../../pinia/UserStore/index.js";
|
||||
import {onShow} from "@dcloudio/uni-app";
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
import EditNickName from './components/EditNickName.vue';
|
||||
import EditWxCode from './components/EditWxCode.vue';
|
||||
import EditPhone from './components/EditPhone.vue';
|
||||
import EditPassWord from './components/EditPassWord.vue';
|
||||
// #endif
|
||||
|
||||
// #ifndef APP-PLUS
|
||||
const EditNickName = defineAsyncComponent(() => import('./components/EditNickName.vue'));
|
||||
const EditWxCode = defineAsyncComponent(() => import('./components/EditWxCode.vue'));
|
||||
const EditPhone = defineAsyncComponent(() => import('./components/EditPhone.vue'));
|
||||
const EditPassWord = defineAsyncComponent(() => import('./components/EditPassWord.vue'));
|
||||
// #endif
|
||||
|
||||
const UserStore = useUserStore();
|
||||
|
||||
const showTool = ref(false);
|
||||
const tool = ref('EditWxCode');
|
||||
const tools = [
|
||||
{
|
||||
key: 'EditNickName',
|
||||
component: EditNickName,
|
||||
},
|
||||
{
|
||||
key: 'EditWxCode',
|
||||
component: EditWxCode,
|
||||
@@ -38,6 +47,10 @@ const openTools = (key) => {
|
||||
tool.value = key;
|
||||
showTool.value = true;
|
||||
}
|
||||
|
||||
onShow(() => {
|
||||
UserStore.getUserInfo();
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -52,9 +65,9 @@ const openTools = (key) => {
|
||||
</view>
|
||||
<view class="h-[3rpx] w-full bg-[rgb(229,230,235)] !ml-[32rpx]"></view>
|
||||
|
||||
<view class="!flex items-center h-[108rpx] px-[32rpx]">
|
||||
<view class="!flex items-center h-[108rpx] px-[32rpx]" @click="openTools('EditNickName')">
|
||||
<view class="title">昵称</view>
|
||||
<view class="!ml-auto whitespace-nowrap value">酷酷猛吃</view>
|
||||
<view class="!ml-auto whitespace-nowrap value">{{ UserStore?.userInfo?.nickname }}</view>
|
||||
<image class="!w-[16rpx] !ml-[16rpx]" mode="widthFix" :src="Right"></image>
|
||||
</view>
|
||||
<view class="h-[3rpx] w-full bg-[rgb(229,230,235)] !ml-[32rpx]"></view>
|
||||
@@ -63,21 +76,14 @@ const openTools = (key) => {
|
||||
<view class="bg-[#fff] !mt-[20rpx]">
|
||||
<view class="!flex items-center h-[108rpx] px-[32rpx]" @click="openTools('EditPhone')">
|
||||
<view class="title">手机号</view>
|
||||
<view class="!ml-auto whitespace-nowrap value">178****0214</view>
|
||||
<view class="!ml-auto whitespace-nowrap value">{{ UserStore?.userInfo?.mobile }}</view>
|
||||
<image class="!w-[16rpx] !ml-[16rpx]" mode="widthFix" :src="Right"></image>
|
||||
</view>
|
||||
<view class="h-[3rpx] w-full bg-[rgb(229,230,235)] !ml-[32rpx]"></view>
|
||||
|
||||
<view class="!flex items-center h-[108rpx] px-[32rpx]" @click="openTools('EditWxCode')">
|
||||
<view class="title">微信号</view>
|
||||
<view class="!ml-auto whitespace-nowrap value">za395739</view>
|
||||
<image class="!w-[16rpx] !ml-[16rpx]" mode="widthFix" :src="Right"></image>
|
||||
</view>
|
||||
<view class="h-[3rpx] w-full bg-[rgb(229,230,235)] !ml-[32rpx]"></view>
|
||||
|
||||
<view class="!flex items-center h-[108rpx] px-[32rpx]">
|
||||
<view class="title">昵称</view>
|
||||
<view class="!ml-auto whitespace-nowrap value">酷酷猛吃</view>
|
||||
<view class="!ml-auto whitespace-nowrap value">{{ UserStore?.userInfo?.wechat }}</view>
|
||||
<image class="!w-[16rpx] !ml-[16rpx]" mode="widthFix" :src="Right"></image>
|
||||
</view>
|
||||
<view class="h-[3rpx] w-full bg-[rgb(229,230,235)] !ml-[32rpx]"></view>
|
||||
|
||||
11
src/pages/webview/index.vue
Normal file
11
src/pages/webview/index.vue
Normal file
@@ -0,0 +1,11 @@
|
||||
<script setup lang="ts">
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user