合并代码

This commit is contained in:
sx 2025-02-16 22:35:46 +08:00
parent 243e1b1d03
commit caa0b30ee6
18 changed files with 601 additions and 60 deletions

View File

@ -60,6 +60,7 @@ export const durian = {
load: true,
})
},
/**
* 交易榴莲果
* @param {Object} param
@ -72,5 +73,17 @@ export const durian = {
load: true,
})
},
/**
* 获取榴莲果兑换播放量比例
* @param {Object} param
*/
getDurainViews(param) {
return util.request({
url: `/coreplay/durianFruitTransactionType/5`,
method: 'GET',
data: param.data,
})
},
}
export default durian

View File

@ -63,6 +63,29 @@ const login = {
})
},
/**
* 登出 清空token 改变用户在线状态
* @param {Object} param
*/
logout(param) {
return util.request({
url: '/user/logout',
query: param.query,
method: 'PUT',
})
},
/**
* 注销账号
* @param {Object} param
*/
cancelAccount(param) {
return util.request({
url: '/user/user/cancelAccount',
query: param.query,
method: 'DELETE',
})
},
}
export default login

View File

@ -59,9 +59,9 @@ const mine = {
*/
myComment(param) {
return util.request({
url: `/user/home/myComment`,
url: `/video/comment/getMyComment`,
query: param.query,
method: 'POST',
method: 'GET',
})
},
@ -256,9 +256,45 @@ const mine = {
data: param.data,
method: 'POST',
load: true,
header: {
// 'Content-Type': 'multipart/form-data',
}
})
},
/**
* 账号挂失
* @param {Object} param
*/
lostAccount(param) {
return util.request({
url: '/user/user/lostAccount',
data: param.data,
query: param.query,
method: 'POST',
})
},
/**
* 账号冻结
* @param {Object} param
*/
freezeAccount(param) {
return util.request({
url: '/user/user/freezeAccount',
data: param.data,
query: param.query,
method: 'POST',
})
},
/**
* 账号解冻
* @param {Object} param
*/
unfreezeAccount(param) {
return util.request({
url: '/user/user/unfreezeAccount',
data: param.data,
query: param.query,
method: 'POST',
})
},
}

View File

@ -7,7 +7,7 @@ const config = {
// #endif
// #ifndef H5
host: 'http://91f.xyz:8080',
// host: 'http://d5si5v.natappfree.cc',
// host: 'http://yg4ak8.natappfree.cc',
// #endif
// 支付方式配置
payType: {

View File

@ -160,7 +160,7 @@
<uni-icons type="closeempty" @click="close()" />
</view>
<view class="tac f48" v-if="price || unit">
<view class="tac f48" v-if="price && unit">
<text>{{price}}</text>
<text>{{unit.name}}</text>
</view>

View File

@ -66,14 +66,16 @@
//
function getDefaultAddress() {
api.shop.getDefaultAddress({}).then(res => {
if (res.code === 200) {
if (res.data) Object.assign(address, {}, res.data)
return
}
util.alert({
content: res.msg,
showCancel: false,
util.isLogin().then(res => {
api.shop.getDefaultAddress({}).then(res => {
if (res.code === 200) {
if (res.data) Object.assign(address, {}, res.data)
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
})
}

View File

@ -722,6 +722,27 @@
"navigationBarTitleText": "邀请",
"navigationStyle": "custom"
}
},
{
"path" : "pages/login/lostAccount",
"style" :
{
"navigationBarTitleText" : "账号挂失"
}
},
{
"path" : "pages/login/freezeAccount",
"style" :
{
"navigationBarTitleText" : "账号挂失"
}
},
{
"path" : "pages/login/unfreezeAccount",
"style" :
{
"navigationBarTitleText" : "账号解冻"
}
}
],

View File

@ -35,6 +35,8 @@
const store = useStore()
const userinfo = computed(() => store.state.userinfo)
//
const durainView = ref(0)
//
const list = reactive({
@ -51,7 +53,6 @@
context: '',
pic: [],
})
//
const apply = reactive({
author: '',
@ -82,8 +83,12 @@
})
onLoad(() => {
//
getList()
//
addListener()
//
getDurainViews()
})
onUnload(() => {
@ -108,6 +113,21 @@
uni.$off('selectPushCollectVideo')
}
//
function getDurainViews() {
api.durian.getDurainViews({}).then(rs => {
if (rs.code == 200) {
//
durainView.value = rs.data.proportion
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
//
function refreshList() {
list.pageNum = 1
@ -342,7 +362,8 @@
<!-- 填充 -->
<view class="footerBar footer bfff shadow">
<view class="hint ptb10 plr30 c333">消耗{{videoIds.length}}*10 榴莲果可提升 {{videoIds.length}}*10+ 展示量</view>
<view class="hint ptb10 plr30 c333">消耗{{videoIds.length}}*1 榴莲果可提升 {{videoIds.length}}*{{durainView}}+ 展示量
</view>
<view class="content rows pt30 plr30">
<view class="f1 c333 f48">当前拥有{{userinfo.fruit}}榴莲果</view>
<!-- <view class="btn colourful f1">一键投放</view> -->

View File

@ -0,0 +1,127 @@
<script setup>
/**
* 账号挂失
*/
import {
ref,
reactive,
computed,
getCurrentInstance
} from 'vue'
import {
useStore
} from 'vuex'
// api
import api from '@/api/index'
//
import util from '@/common/js/util.js'
//
import payPwd from '@/components/mine/payPwd.vue'
const {
proxy
} = getCurrentInstance()
// vuex
const store = useStore()
//
const form = reactive({
//
phoneNumber: '',
})
//
const userinfo = computed(() => store.state.user.userinfo)
//
function handleSubmit() {
//
if (!form.phoneNumber) {
util.alert('请输入手机号')
return
}
//
proxy.$refs.payPwdRef.open()
}
/**
* 事件
* @param {Object} event
*/
function handlePayPwd(event) {
console.log('event', event)
const data = {
...form
}
data.secondLevelCipher = event
//
api.mine.freezeAccount({
data,
}).then(rs => {
if (rs.code == 200) {
if (data.phoneNumber == userinfo.value.phoneNumber) {
api.login.logout({
query: {
phoneNumber: userinfo.phoneNumber,
}
}).then(rs => {})
// 退
util.logout(() => {
// checkLink('pages/login/loginPhone', 'reLaunch')
// #ifdef APP
plus.runtime.restart()
// #endif
})
}
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
</script>
<template>
<view class="appbw">
<view class="container">
<view class="logo mauto">
<image class="logo br10" src="/static/logo.png" mode="aspectFit" />
</view>
<view class="form mt60 mlr60 mb30">
<view class="title mtb30">账号冻结</view>
<view class="inputBox mtb20 ptb10 plr30">
<input type="text" v-model="form.phoneNumber" placeholder="请输入手机号" />
</view>
<view class="btn lg bar black mtb60" @click="handleSubmit">冻结</view>
</view>
</view>
<!-- 支付密码 -->
<payPwd ref="payPwdRef" :check="true" @confirm="handlePayPwd" />
</view>
</template>
<style lang="scss">
.image {
width: 100%;
height: 100%;
}
//
.container {
margin-top: 15vh;
//
.logo {
width: 200rpx;
height: 200rpx;
}
}
</style>

View File

@ -0,0 +1,116 @@
<script setup>
/**
* 账号挂失
*/
import {
ref,
reactive,
computed,
} from 'vue'
// api
import api from '@/api/index'
//
import util from '@/common/js/util.js'
import {
useStore
} from 'vuex'
// vuex
const store = useStore()
//
const form = reactive({
//
phoneNumber: '',
//
userRealName: '',
})
//
const userinfo = computed(() => store.state.user.userinfo)
//
function handleLogin() {
const data = {
...form
}
//
if (!data.phoneNumber) {
util.alert('请输入手机号')
return
}
if (!data.userRealName) {
util.alert('请输入真实姓名')
return
}
//
api.mine.lostAccount({
data,
}).then(rs => {
if (rs.code == 200) {
if (data.phoneNumber == userinfo.value.phoneNumber) {
api.login.logout({
query: {
phoneNumber: userinfo.phoneNumber,
}
}).then(rs => {})
// 退
util.logout(() => {
// checkLink('pages/login/loginPhone', 'reLaunch')
// #ifdef APP
plus.runtime.restart()
// #endif
})
}
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
</script>
<template>
<view class="appbw">
<view class="container">
<view class="logo mauto">
<image class="logo br10" src="/static/logo.png" mode="aspectFit" />
</view>
<view class="form mt60 mlr60 mb30">
<view class="title mtb30">账号挂失</view>
<view class="inputBox mtb20 ptb10 plr30">
<input type="text" v-model="form.phoneNumber" placeholder="请输入手机号" />
</view>
<view class="inputBox rows mtb20 ptb10 plr30">
<input v-model="form.userRealName" placeholder="请输入真实姓名" />
</view>
<view class="btn lg bar black mtb60" @click="handleLogin">挂失</view>
</view>
</view>
</view>
</template>
<style lang="scss">
.image {
width: 100%;
height: 100%;
}
//
.container {
margin-top: 15vh;
//
.logo {
width: 200rpx;
height: 200rpx;
}
}
</style>

View File

@ -0,0 +1,112 @@
<script setup>
/**
* 账号挂失
*/
import {
ref,
reactive,
computed,
getCurrentInstance
} from 'vue'
import {
useStore
} from 'vuex'
// api
import api from '@/api/index'
//
import util from '@/common/js/util.js'
//
import payPwd from '@/components/mine/payPwd.vue'
const {
proxy
} = getCurrentInstance()
// vuex
const store = useStore()
//
const form = reactive({
//
phoneNumber: '',
})
//
const userinfo = computed(() => store.state.user.userinfo)
//
function handleSubmit() {
//
if (!form.phoneNumber) {
util.alert('请输入手机号')
return
}
//
proxy.$refs.payPwdRef.open()
}
/**
* 事件
* @param {Object} event
*/
function handlePayPwd(event) {
console.log('event', event)
const data = {
...form
}
data.secondLevelCipher = event
//
api.mine.unfreezeAccount({
data,
}).then(rs => {
if (rs.code == 200) {
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
</script>
<template>
<view class="appbw">
<view class="container">
<view class="logo mauto">
<image class="logo br10" src="/static/logo.png" mode="aspectFit" />
</view>
<view class="form mt60 mlr60 mb30">
<view class="title mtb30">账号解冻</view>
<view class="inputBox mtb20 ptb10 plr30">
<input type="text" v-model="form.phoneNumber" placeholder="请输入手机号" />
</view>
<view class="btn lg bar black mtb60" @click="handleSubmit">解冻</view>
</view>
</view>
<!-- 支付密码 -->
<payPwd ref="payPwdRef" :check="true" @confirm="handlePayPwd" />
</view>
</template>
<style lang="scss">
.image {
width: 100%;
height: 100%;
}
//
.container {
margin-top: 15vh;
//
.logo {
width: 200rpx;
height: 200rpx;
}
}
</style>

View File

@ -187,6 +187,11 @@
proxy.$refs.menuRef.close()
//
util.logout(() => {
api.login.logout({
query: {
phoneNumber: userinfo.phoneNumber,
}
}).then(rs => {})
// #ifdef APP
plus.runtime.restart()
// #endif
@ -216,6 +221,15 @@
<template>
<view class="page" v-if="!userinfo.id">
<statusBar />
<view class="head rows plr30">
<view class="side"></view>
<view class="f1"></view>
<view class="side">
<uni-icons type="gear" size="40rpx" color="#333" @click="link('/pages/mine/setting/setting')" />
</view>
</view>
<noLogin class="f1" />
</view>

View File

@ -57,7 +57,6 @@
function getLst() {
api.mine.myComment({
query: {
userId: userinfo.value.id,
pageNum: list.pageNum,
pageSize: list.pageSize,
}
@ -87,19 +86,21 @@
<template>
<view class="appbw">
<view class="listBox plr30 ">
<view class="list ptb30 plr10" v-for="(item,index) in 10" :key="index">
<view class="list ptb30 plr10" v-for="(item,index) in list.data" :key="index">
<view class="rows">
<view class="message">
<view class="title f32 c333">评论了 视频</view>
<view class="content t2hd mtb15 c333 f32">你的视频我很喜欢关注你了赶快出续集</view>
<view class="time mt15 f28 c999">2024.12.08 18:00</view>
<view class="content t2hd mtb15 c333 f32">{{item.content}}</view>
<view class="time mt15 f28 c999">{{item.createTime}}</view>
</view>
<view class="image ml20">
<image class="wh120 br10" src="/static/openPage.png" mode="aspectFill" />
<view class="image ml20" v-if="item.imageUrl">
<image class="wh120 br10" :src="item.imageUrl" mode="aspectFill" />
</view>
</view>
<view class=""></view>
</view>
<!-- 暂无评论 -->
<view class="nomore mtb30" v-if="!list.data[0]">暂无内容~</view>
</view>
</view>
</template>

View File

@ -1,27 +1,75 @@
<script setup>
//
import {
ref,
computed,
} from 'vue'
import {
useStore
} from 'vuex'
import {
onLoad,
} from '@dcloudio/uni-app'
//
import util from '@/common/js/util.js'
// api
import api from '@/api/index.js'
/**
* 跳转
* @param {Object} url 跳转路径
*/
function link(url) {
uni.navigateTo({
url,
})
}
//
function accountLogout() {
util.alert({
content: '确认注销账号?',
}).then(rs => {
if(!rs.confirm) return
api.login.cancelAccount({}).then(rs => {
if (rs.code == 200) {
// 退
util.logout(() => {
// #ifdef APP
plus.runtime.restart()
// #endif
})
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
})
}
</script>
<template>
<view class="app">
<!-- 账号挂失 账号冻结 账号注销 -->
<view class="container">
<view class="line">
<view class="line" @click="link('/pages/login/lostAccount')">
<view class="title">账号挂失</view>
<view class="content">申诉找回九亿账号</view>
</view>
<view class="line">
<view class="line" @click="link('/pages/login/freezeAccount')">
<view class="title">账号冻结</view>
<view class="content">主动冻结账号保护账号资产</view>
</view>
<view class="line">
<view class="line" @click="link('/pages/login/unfreezeAccount')">
<view class="title">解冻账号</view>
<view class="content">风险解除后可选择解除冻结</view>
</view>
<view class="line">
<view class="line" @click="accountLogout">
<view class="title">账号注销</view>
<view class="content">提交申请清空当前账号</view>
</view>

View File

@ -118,9 +118,14 @@
content: '确定退出登录?',
}).then(res => {
if (res.confirm) {
api.login.logout({
query: {
phoneNumber: userinfo.phoneNumber,
}
}).then(rs => {})
// 退
util.logout(() => {
// checkLink('pages/login/loginPhone', 'reLaunch')
// #ifdef APP
plus.runtime.restart()
// #endif
@ -134,17 +139,17 @@
<!-- 设置页 -->
<view class="app">
<view class="area">
<view class="line rows" @click="loginLink('/pages/mine/userinfo')">
<view class="avatar">
<image class="head-portrait wh80" :src="userinfo.avatar" mode="aspectFill" />
<template v-if="userinfo.id">
<view class="line rows" @click="loginLink('/pages/mine/userinfo')">
<view class="avatar">
<image class="head-portrait wh80" :src="userinfo.avatar" mode="aspectFill" />
</view>
<view class="info f1 ml20">
<view class="">{{userinfo.userNickname}}</view>
<!-- <view class="account mt10 c999 f26">账号{{userinfo.account}}</view> -->
</view>
</view>
<view class="info f1 ml20">
<view class="">{{userinfo.userNickname}}</view>
<!-- <view class="account mt10 c999 f26">账号{{userinfo.account}}</view> -->
</view>
</view>
<template v-if="userinfo.id || 1">
<view class="line rows">
<view class="">修改账号</view>
<view class="f1 tar c999 f28">{{userinfo.account}}</view>
@ -166,7 +171,7 @@
</template>
</view>
<template v-if="userinfo.id || 1">
<template v-if="userinfo.id">
<view class="area">
<view class="line rows" @click="link('/pages/mine/setting/usePay')">
<view class="">先用后付</view>
@ -188,10 +193,10 @@
<uni-icons type="right" />
</view>
<view class="line rows">
<!-- <view class="line rows">
<view class="">邮箱</view>
<uni-icons type="right" />
</view>
</view> -->
<view class="line rows ptb20 plr10" @click="link('/pages/mine/setting/teen')">
<view class="">青少年模式</view>
@ -200,6 +205,17 @@
</view>
</view>
<!-- 支付宝 微信 -->
<view class="line rows" @click="link('/pages/mine/setting/binding')">
<view class="">我的绑定</view>
<uni-icons type="right" />
</view>
<view class="line rows" @click="link('/pages/mine/setting/bankCard')">
<view class="">我的银行卡</view>
<uni-icons type="right" />
</view>
<view class="line" v-if="userinfo.id">
<picker :range="allowType" range-key="name" @change="handleAllowType" :value="allowTypeIndex">
<view class=" rows">
@ -220,17 +236,6 @@
<uni-icons type="right" />
</view>
<!-- 支付宝 微信 -->
<view class="line rows" @click="link('/pages/mine/setting/binding')">
<view class="">我的绑定</view>
<uni-icons type="right" />
</view>
<view class="line rows" @click="link('/pages/mine/setting/bankCard')">
<view class="">我的银行卡</view>
<uni-icons type="right" />
</view>
<view class="line rows" @click="link('/pages/mine/setting/feedback')">
<view class="">意见反馈</view>
<uni-icons type="right" />
@ -264,10 +269,12 @@
<view class="mt20 c333 f26">塔罗科技网络(山东)有限公司旗下品牌---九亿</view>
</view>
<!-- 切换账号 退出登录 -->
<view class="mtb30 c999">
<view @click="logOff" class="btn">退出登录</view>
</view>
<template v-if="userinfo.id">
<!-- 退出登录 -->
<view class="mtb30 c999">
<view @click="logOff" class="btn">退出登录</view>
</view>
</template>
<view class="fill" style="height: 30rpx;"></view>
</view>

View File

@ -218,7 +218,7 @@
<view class="name thd c333 f28">{{item.name}}</view>
<view class="spec line df aic thd mtb10 ptb10 plr10 df aic c666 f24 br10"
@click="handleSpec(index,secIndex)">
@click="handleSpec(index,secIndex)" v-if="0">
<view class="thd f1">已选规格 {{secItem.spec.sku}}</view>
<view class="">x{{secItem.payNum}}</view>
</view>

View File

@ -86,7 +86,7 @@
function getDetail() {
api.shop.productDetail({
query: {
userId: userinfo.value.id,
userId: userinfo.value.id || '',
// id
productionId: id.value
}
@ -109,7 +109,7 @@
//
api.shop.addBrowsing({
data: {
userId: userinfo.value.id,
userId: userinfo.value.id || '',
goodsId: id.value
},
}).then(rs => {

View File

@ -4,7 +4,7 @@ import {
import uni from '@dcloudio/vite-plugin-uni';
let target = 'http://91f.xyz:8080'
// let target = 'http://d5si5v.natappfree.cc'
// let target = 'http://yg4ak8.natappfree.cc'
export default defineConfig({
plugins: [uni()],