合并代码

This commit is contained in:
sx 2025-01-25 21:43:01 +08:00
parent 9fbf092756
commit 6e948972e8
21 changed files with 565 additions and 133 deletions

View File

@ -346,7 +346,7 @@ const shop = {
},
/**
* 订单取消
* 订单发起售后
* @param {Object} param
*/
orderAfterSales(param) {
@ -370,6 +370,19 @@ const shop = {
load: true,
})
},
/**
* 订单更新收货
* @param {Object} param
*/
orderupdateRefund(param) {
return util.request({
url: `/shopify/appRefundOrder/updateRefund`,
data: param.data,
method: 'POST',
load: true,
})
},
}
export default shop

View File

@ -353,6 +353,7 @@ const video = {
method: 'GET',
})
},
/**
* 关注列表
* @param {Object} param
@ -365,6 +366,7 @@ const video = {
method: 'GET',
})
},
/**
* 关注列表
* @param {Object} param
@ -377,6 +379,7 @@ const video = {
method: 'GET',
})
},
/**
* 关注用户 关注状态 0:取关 1:关注
* @param {Object} param
@ -505,6 +508,71 @@ const video = {
method: 'GET',
})
},
/**
* 获取视频流量统计表
* @param {Object} param
*/
getFlow(param) {
return util.request({
url: `/video/statistics/getStatisticsData/flowStatistics`,
data: param.data,
method: 'POST',
})
},
/**
* 获取视频统计数据
* @param {Object} param
*/
getStatistics(param) {
return util.request({
url: `/video/statistics/getStatisticsData`,
data: param.data,
method: 'POST',
})
},
/**
* 消耗流量果解锁统计
* @param {Object} param
*/
unlockStatistics(param) {
return util.request({
url: `/video/statistics/getStatisticsData/unlockStatistics`,
load: true,
data: param.data,
method: 'GET',
})
},
/**
* 公开赞统计
* @param {Object} param
*/
openLikeData(param) {
return util.request({
url: `/video/statistics/getStatisticsData/openLikeData`,
load: true,
query: param.query,
data: param.data,
method: 'POST',
})
},
/**
* 私密赞统计
* @param {Object} param
*/
PrivacyLikeData(param) {
return util.request({
url: `/video/statistics/getStatisticsData/PrivacyLikeData`,
load: true,
query: param.query,
data: param.data,
method: 'POST',
})
},
}
export default video

View File

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

View File

@ -91,6 +91,31 @@ const order = {
})
})
},
/**
* 售后订单更新
* @param {Object} event 事件对象
*/
orderupdateRefund: (event) => {
return new Promise((resolve, reject) => {
api.shop.orderupdateRefund({
data: {
id: event.orderId,
expressName: event.expressName,
trackingNumber: event.trackingNumber,
},
}).then(res => {
if (res.code == 200) {
resolve(res.data)
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
})
},
}
export default order

View File

@ -196,6 +196,10 @@
* @param {Number} index 当前项下标
*/
function handleExpansion(item, index) {
//
let childrenCommentCount = item.childrenCommentCount
//
let childLength = item.child.length
//
if (item.childShow == false) {
item.childShow = true
@ -203,13 +207,13 @@
}
//
if (item.child.length >= item.num && item.childShow) {
if ((childLength >= childrenCommentCount) && item.childShow) {
item.childShow = false
return
}
item.pageNum++
//
//
getLevelCommentList(item, index)
}
@ -422,7 +426,7 @@
</template>
<template v-else>
<text class="c666 f24">展开{{item.num}}条回复</text>
<text class="c666 f24">展开{{item.childrenCommentCount}}条回复</text>
<uni-icons type="bottom" />
</template>
</view>

View File

@ -181,16 +181,16 @@
break;
case 2:
console.log('公开赞')
return
emit('like', {
likeType: 0,
index: props.index,
isLike: isLike == 0 ? 0 : 1
})
break;
case 3:
console.log('隐私赞')
return
emit('like', {
likeType: 1,
index: props.index,
isLike: isLike == 0 ? 3 : 1
})
@ -372,7 +372,7 @@
emit('like', {
index,
likeType,
isDelFlag,
isLike,
})
}).catch(() => {
uni.navigateTo({
@ -547,10 +547,10 @@
<template v-if="item.isLike">
<!-- 公开赞 -->
<image class="wh50" src="/static/indexLike1.png" mode="aspectFit"
v-if="item.likeType == 0" @click="handleLike(index,0, 0)" />
v-if="item.likeType == 0" @click="handleLike(index,0, 1)" />
<!-- 私密赞的图标 -->
<image class="wh50" src="/static/privateLike.png" mode="aspectFit"
v-else-if="item.likeType == 1" @click="handleLike(index,1, 0)" />
v-else-if="item.likeType == 1" @click="handleLike(index,1,1)" />
</template>
<template v-else>
<image class="wh50" src="/static/indexLike.png" mode="aspectFit"

View File

@ -1,5 +1,9 @@
<script setup>
//
/**
* 支付密码
* @property {Boolean} check 是否验证
* @property {Function} confirm 输入密码完成时回调
*/
import {
computed,
defineExpose,
@ -75,6 +79,7 @@
close()
return
}
//
api.mine.checkSecondLevelCipher({
data: {

View File

@ -5,6 +5,7 @@
reactive,
getCurrentInstance,
defineExpose,
defineEmits,
onMounted
} from 'vue'
//
@ -14,6 +15,8 @@
const {
proxy
} = getCurrentInstance()
//
const emit = defineEmits(['confirm'])
//
const form = reactive({
//
@ -52,10 +55,9 @@
* @param {Object} ev
*/
function handleExpressIndex(ev) {
console.log('ev', ev)
const index = ev.detail.value
if(expressIndex.value === index) return
expressIndex.index = index
if (expressIndex.value === index) return
expressIndex.value = index
form.expressName = expressList[index].dictLabel
}
@ -70,9 +72,27 @@
//
setTimeout(() => {
expressIndex.value = ''
form.expressName = ''
form.trackingNumber = ''
})
}, 500)
}
//
function handleSubmit() {
let data = {
...form
}
if (!data.expressName) {
util.alert('请选择快递公司')
return
}
if (!data.trackingNumber) {
util.alert('请输入快递单号')
return
}
emit('confirm', data)
close()
}
defineExpose({
@ -94,18 +114,23 @@
<picker :range="expressList" range-key="dictLabel" @change="handleExpressIndex">
<view class="rows">
<view class="mr20">快递公司</view>
<input type="text" placeholder="输入快递公司" />
<view class="f1">
<text v-if="form.expressName">{{form.expressName}}</text>
<text class="placeholderStyle" v-else>请选择</text>
</view>
<!-- <input type="text" placeholder="输入快递公司" /> -->
</view>
</picker>
</view>
<view class="line df aic">
<view class="mr20">快递单号</view>
<input type="text" placeholder="输入快递公司" />
<input type="text" v-model="form.trackingNumber" placeholder="输入快递公司"
placeholder-class="placeholderStyle" />
</view>
</view>
<view class="btn warm mtb30 mlr30">保存</view>
<view class="btn warm mtb30 mlr30" @click="handleSubmit">保存</view>
</view>
</uni-popup>
</template>

View File

@ -72,18 +72,21 @@
"bounce": "none"
}
}
}, {
},
{
"path": "pages/news/group-chat-list/index",
"style": {
"navigationBarTitleText": "群聊列表"
}
}, {
},
{
"path": "pages/news/group-chat/index",
"style": {
"navigationBarTitleText": "创建群聊",
"navigationBarBackgroundColor": "#fff"
}
}, {
},
{
"path": "pages/news/chat/chat",
"style": {
"navigationBarTitleText": "问答页"
@ -466,7 +469,8 @@
"style": {
"navigationBarTitleText": "点赞统计",
"navigationBarBackgroundColor": "#fff",
"navigationStyle": "custom"
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{

View File

@ -1,34 +1,29 @@
<script setup>
//
import {
reactive
ref,
reactive,
computed,
} from 'vue';
import {
onLoad,
onReady,
onHide,
onUnload,
} from '@dcloudio/uni-app'
//
import api from '@/api/index.js'
//
import util from '@/common/js/util.js'
import {
useStore
} from 'vuex'
//
import apex from '@/components/header/apex.vue'
//
const chartData = reactive({
categories: ["1", "2", "3", "4", "5", "6", '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '20'
],
series: [{
name: "自己",
data: [11, 6, 31, 33, 13, 34]
},
{
name: "浏览推流",
data: [15, 14, 50, 37, 17, 38]
},
{
name: "陌生人",
data: [17, 10, 23, 26, 8, 30]
},
{
name: "已关注",
data: [11, 6, 31, 33, 13, 34]
}
]
})
//
import payPwd from '@/components/mine/payPwd.vue'
//
const store = useStore()
//
const opts = reactive({
color: ["#D8D8D8", "#C2ECFF", "#FFD2D2", "#C2FFCC", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", "#ea7ccc"],
@ -68,6 +63,81 @@
},
}
})
//
const chartData = reactive({})
//
const detail = reactive({})
// id
const videoId = ref('')
//
const isLock = ref(false)
//
const config = computed(() => {
return store.state.config
})
onLoad((option) => {
if (option.videoId) videoId.value = option.videoId
//
getDetail()
//
getFlow()
})
//
function getFlow() {
api.video.getFlow({
data: {
videoId: videoId.value,
},
}).then(res => {
if (res.code === 200) {
const result = res.data
//
if (result.isLock) Object.assign(chartData, {}, res.data)
isLock.value = result.isLock
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
}
//
function getDetail() {
api.video.getStatistics({
data: {
videoId: videoId.value,
},
}).then(res => {
if (res.code === 200) {
//
Object.assign(detail, {}, res.data)
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
}
//
function handleUnlock() {
api.video.unlockStatistics({}).then(res => {
if (res.code === 200) {
//
getFlow()
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
}
/**
* 跳转
@ -84,7 +154,7 @@
<view class="app">
<apex title="数据中心">
<template #right>
<view class="rows c999 f24" @click="link('/pages/index/dataCenter/like')">
<view class="rows c999 f24" @click="link(util.setUrl('/pages/index/dataCenter/like',{videoId: videoId}))">
<view class="ver mr10">
<image class="wh26" src="/static/indexLike1.png" mode="aspectFit" />
<view>公开赞</view>
@ -103,16 +173,16 @@
<view class="title c333 f36 b">统计中心</view>
</view>
<!-- 查看时间 -->
<view class="line mt20 c999 f26">统计时间2024.12.08 18:00</view>
<view class="line mt20 c999 f26">统计时间{{detail.statisticsTime}}</view>
</view>
<!-- 视频详情 -->
<view class="video df mtb20 ptb20 plr30 bfff">
<image class="poster br10" src="/static/openPage.png" mode=""></image>
<image class="poster br10" :src="detail.coverUrl" mode="aspectFill" />
<view class="info df fdc jcsb f1 ml30">
<view class="title t2hd f34 c111">我上传了一个视频这里是视频标题</view>
<view class="desc t2hd f28 c666">视频简介</view>
<view class="time f26 c999">2024年11月20日</view>
<view class="title t2hd f34 c111">{{detail.title}}</view>
<view class="desc t2hd f28 c666">{{detail.description}}</view>
<view class="time f26 c999">{{detail.createTime}}</view>
</view>
</view>
@ -120,24 +190,22 @@
<view class="rows">
<view class="title">流量统计</view>
<view class="lock rows ptb5 plr20 bar cfff f28" :class="{'active': 1}">
<view class="lock rows ptb5 plr20 bar cfff f28" :class="{'active': !isLock}">
<image class="lockImg wh30" src="/static/dataLock.png" mode="aspectFit" />
<image class="unlockImg wh30" src="/static/dataUnlock.png" mode="aspectFit" />
<view class="ml5">
<text v-if="0"></text>
<text v-else></text>
<text>解锁</text>
</view>
<view class="ml5" v-if="!isLock" @click="$refs.payPwdRef.open()">去解锁</view>
<view class="ml5" v-else>已解锁</view>
</view>
</view>
<view class="charts" v-if="0">
<view class="charts" v-if="isLock">
<qiun-data-charts type="column" :opts="opts" :chartData="chartData" :ontouch="true" />
</view>
<view class="mtb30 fmid" v-else>
<view>点击消耗榴莲果</view>
<image class="wh30" src="/static/fruit.png" mode="aspectFit" />
<view>30解锁查看24h</view>
<view>{{config.UNLOCK_FLOW_STATISTICS}}解锁查看24h</view>
</view>
</view>
@ -156,33 +224,36 @@
</view> -->
<view class="item tac">
<view class="key">展播量推流</view>
<view class="value">10</view>
<view class="value">{{detail.exhibitionScreening}}</view>
</view>
<view class="item tac">
<view class="key">完播量推流</view>
<view class="value">2</view>
<view class="value">{{detail.completeViewing}}</view>
</view>
<view class="item tac">
<view class="key">评论</view>
<view class="value">40</view>
<view class="value">{{detail.commentCount}}</view>
</view>
<view class="item tac">
<view class="key">收藏</view>
<view class="value">3</view>
<view class="value">{{detail.collectCount}}</view>
</view>
</view>
<view class="item tac mt20" @click="link('/pages/index/dataCenter/otherPush')">
<view class="key">他人推广</view>
<view class="value">10</view>
<view class="value">{{detail.othersPromotionCount}}</view>
</view>
<view class="item tac mt20">
<view class="key">下单数量</view>
<view class="value">10</view>
<view class="value">{{detail.placeAnOrderCount}}</view>
</view>
</view>
</view>
<view class="fill" style="height: 30rpx;"></view>
<!-- 支付密码 -->
<payPwd ref="payPwdRef" :check="true" @confirm="handleUnlock" />
</view>
</template>

View File

@ -5,18 +5,44 @@
ref,
computed,
} from 'vue';
import {
onLoad,
onReady,
onHide,
onPullDownRefresh,
onReachBottom,
onUnload,
} from '@dcloudio/uni-app'
//
import api from '@/api/index.js'
//
import util from '@/common/js/util.js'
//
import apex from '@/components/header/apex.vue'
//
const detail = reactive({})
// id
const videoId = ref('')
//
const isLock = ref(false)
//
const typeList = reactive([{
img: '/static/indexLike1.png',
count: 1000,
total: 0,
list: [],
pageNum: 1,
pageSize: 20,
name: '公开赞',
api: (ev) => api.video.openLikeData(ev),
},
{
img: '/static/privateLike.png',
count: 20,
total: 0,
list: [],
pageNum: 1,
pageSize: 20,
name: '隐私赞',
api: (ev) => api.video.PrivacyLikeData(ev),
}
])
//
@ -27,6 +53,22 @@
return result
})
onLoad((option) => {
if (option.videoId) videoId.value = option.videoId
//
getList()
})
onPullDownRefresh(() => {
//
refreshList()
})
onReachBottom(() => {
//
getMoreList()
})
/**
* 点击下标
* @param {Object} index
@ -34,6 +76,65 @@
function handleTypeIndex(index) {
if (typeIndex.value === index) return
typeIndex.value = index
//
refreshList()
}
//
function refreshList() {
typeCurrent.value.pageNum = 1
getList()
}
//
function getMoreList() {
if (typeCurrent.value.total <= typeCurrent.value.list.length) return
typeCurrent.value.pageNum++
getList()
}
//
function getList() {
typeCurrent.value.api({
query: {
pageSize: typeCurrent.value.pageSize,
pageNum: typeCurrent.value.pageNum,
},
data: {
videoId: videoId.value,
},
}).then(res => {
if (res.code == 200) {
if (typeCurrent.value.pageNum == 1) typeCurrent.value.list.length = 0
typeCurrent.value.list.push(...res.rows.map(item => {
item.formatName = formatString(item.userNickname)
return item
}))
typeCurrent.value.total = res.total
return
}
util.alert({
content: res.msg,
showCancel: false,
})
}).finally(() => {
uni.stopPullDownRefresh()
})
}
/**
* @param {Object} str 字符串
*/
function formatString(str) {
//
const length = str.length;
let result = '*'
// 2
if (length === 2) result = str[0] + '*'
// 3
else if (length >= 3) result = str[0] + '*'.repeat(length - 2) + str[length - 1];
// 2
return result
}
</script>
@ -54,22 +155,22 @@
<view class="count rows mtb30 mlr30 ptb20 plr30 f32 br20">
<view class="key">{{typeCurrent.name}}</view>
<view class="value b">{{typeCurrent.count}}</view>
<view class="value b">{{typeCurrent.total}}</view>
</view>
<!-- 列表盒子 -->
<view class="listBox mtb30 plr30">
<view class="item df ptb20 plr10" v-for="(item,index) in 10" :key="index">
<view class="item df ptb20 plr10" v-for="(item,index) in typeCurrent.list" :key="index">
<view class="avatar">
<image class="wh100" src="/static/qq.png" mode="aspectFill" />
<image class="wh100" :src="item.avatar" mode="aspectFill" />
</view>
<view class="info f1 ml20">
<view class="nickname thd f30 c111">A**** {{typeCurrent.name}}了你</view>
<view class="nickname thd f30 c111">{{item.formatName}} {{typeCurrent.name}}了你</view>
<view class="time mt10 c999 f28">2024.12.08 20:00</view>
</view>
</view>
</view>
<view class="nomore">暂无更多~</view>
<view class="fill" style="height: 30rpx;"></view>

View File

@ -583,12 +583,24 @@
* 视频点赞
* @param {Object} param 见下
* @param {Number} param.index 操作的视频下标
* @param {Number|String} param.isDelFlag 0.点赞 1.取消点赞
* @param {Number|String} param.isLike 0.点赞 1.取消点赞
* @param {Number|String} param.likeType 点赞类型 0.公开赞 1.隐私赞
*/
function videoLike(param) {
// 当前项
const item = tabCurrent.value.listData()[param.index]
console.log('data', {
// 视频id
videoId: item.id,
// 点赞用户id
likeUserId: userinfo.value.id,
// 被点赞用户id
targetUserId: item.userId,
// 点赞类型 0.公开赞 1.隐私赞
likeType: param.likeType,
// //点赞 0.点赞 1.取消点赞
isLike: param.isLike,
})
//
api.video.videoLike({
data: {
@ -601,7 +613,7 @@
// 点赞类型 0.公开赞 1.隐私赞
likeType: param.likeType,
// //点赞 0.点赞 1.取消点赞
isDelFlag: param.isDelFlag,
isLike: param.isLike,
}
}).then(rs => {
if (rs.code == 200) {
@ -720,7 +732,7 @@
@showTime="handleShowTime" @showComment="handleShowCommentAlt"
@showCollect="handleShowCollectAlt" @showShareFirend="handleShowShareFirend"
@onPlay="handleVideoOnPlay" @onPause="handleVideoOnPause" @like="videoLike"
@longtap="$refs.moreMenuRef.open(secItem)"@showFastCollect="handleShowFastCollect" />
@longtap="$refs.moreMenuRef.open(secItem)" @showFastCollect="handleShowFastCollect" />
</template>
</cell>
</list>

View File

@ -33,12 +33,12 @@
//
const detail = reactive({})
//
const isMine = ref(false)
const isMine = ref(0)
onLoad((option) => {
if (option.videoId) videoId.value = option.videoId
//
if (option.isMine && option.isMine != 'false') isMine.value = option.isMine
if (option.isMine) isMine.value = option.isMine
//
getVideoDetail()

View File

@ -83,6 +83,7 @@
api.video.getUserInfo({
query: {
userId: userId.value,
myId: userinfo.value.id,
}
}).then(rs => {
if (rs.code == 200) {
@ -110,10 +111,8 @@
//
function getList() {
//
api.video.myVideoList({
api.video.myWorks({
query: {
// 01稿
isDraft: 0,
// id
userId: userId.value,
pageSize: listProperty.pageSize,
@ -159,7 +158,7 @@
function handleCopyAccount() {
//
uni.setClipboardData({
data: detail.userAccount,
data: detail.account,
showToast: false,
success: rs => {
util.alert('复制成功')
@ -170,14 +169,12 @@
//
function handleAttention() {
api.video.attention({
path: [detail.isAttention ? 0 : 1],
data: {
// id
userId: userinfo.value.userId,
userId: userinfo.value.id,
// id
attentionId: detail.userId,
//
attentionSource: 1,
attentionId: detail.id,
isAttention: detail.isAttention ? 1 : 0,
}
}).then(rs => {
if (rs.code == 200) {
@ -333,7 +330,7 @@
<view class="user f1 c111">
<view class="nickname f28">{{detail.userNickname}}</view>
<view class="df aic mt10">
<text class="f20">账号{{detail.userAccount}}</text>
<text class="f20">账号{{detail.account}}</text>
<image class="wh30 ml10" src="/static/copy.png" mode="aspectFit" @click="handleCopyAccount" />
<view class="f1"></view>
</view>
@ -380,7 +377,8 @@
<view class="item rows ptb25">
<view class="key">不让 Ta 看作品</view>
<view>
<switch color="#FF0F2E" :checked="detail.isBlock" style="transform: scale(.7);" @change="handleBlock" />
<switch color="#FF0F2E" :checked="detail.isBlock" style="transform: scale(.7);"
@change="handleBlock" />
</view>
</view>
</view>

View File

@ -90,6 +90,7 @@
success: rs => {
//
user[key] = rs.value
console.log('user', user)
}
})
}
@ -178,7 +179,8 @@
<view class="line rows ptb20">
<view class="key">性别</view>
<picker class="value tar f1" :range="gender" :value="genderIndex" range-key="name" @change="handleGender">
<picker class="value tar f1" :range="gender" :value="genderIndex" range-key="name"
@change="handleGender">
<text v-if="genderIndex == -1">请选择</text>
<text v-else>{{gender[genderIndex].name}}</text>
</picker>

View File

@ -79,6 +79,7 @@
if (res.code == 200) {
let result = res.data
result.status = Number(result.status)
result.refundStatus = Number(result.refundStatus)
Object.assign(detail, {}, result)
return
}
@ -108,6 +109,33 @@
return
})
}
//
function handleReceived() {
order.orderReceived({
orderId: detail.id,
}).then(res => {
//
refreshList()
})
}
/**
* 填写退货物流信息
* @param {Object} param
*/
function handleExpressConfirm(param) {
let data = {
...param,
id: detail.id,
}
console.log('orderupdateRefund', data)
order.orderupdateRefund(data).then(res => {
//
refreshList()
})
}
</script>
<template>
@ -205,31 +233,55 @@
</view>
<view class="fill"></view>
<view class="footer df jcr plr30 bfff shadow" v-if="[0,1].includes(detail.status)">
<template v-if="detail.status == 0">
<view class="btn bar closeHollow plr30" @click="handleCancel">取消订单</view>
<view class="btn bar warmHollow plr30" @click="order.orderPay(detail)">继续付款</view>
<view class="footer df jcr plr30 bfff shadow" v-if="[0,1,4,5,6].includes(detail.status)">
<!-- 售后中 -->
<template v-if="detail.refundStatus == 1">
<template v-if="detail.refundStatus == 4">
<view class="btn bar warmHollow plr30" @click.stop="$refs.expressRef.open()">
填写退货物流信息</view>
</template>
</template>
<template v-if="detail.status == 1">
<view class="btn bar closeHollow plr30" @click="order.orderAfterSales(detail)">申请退款</view>
<!-- <view class="btn bar warmHollow plr30">催发货</view> -->
</template>
<template v-if="detail.status == 3">
<view class="btn bar closeHollow plr30">申请退款</view>
<view class="btn bar closeHollow plr30">查看物流</view>
<view class="btn bar warmHollow plr30">确认收货</view>
</template>
<template v-if="detail.status == 4">
<view class="btn bar closeHollow plr30">申请退款</view>
<view class="btn bar warmHollow plr30">评价</view>
</template>
<template v-if="detail.status == 6">
<view class="btn bar closeHollow plr30">取消售后</view>
<view class="btn bar closeHollow plr30">钱款去向</view>
<view class="btn bar warmHollow plr30">平台介入</view>
<!-- 非售后 -->
<template v-else-if="detail.refundStatus == 0">
<!-- 待支付 -->
<template v-if="detail.status == 0">
<view class="btn bar closeHollow plr30" @click="handleCancel">取消订单</view>
<view class="btn bar warmHollow plr30" @click="order.orderPay(detail)">继续付款</view>
</template>
<!-- 待发货 -->
<template v-else-if="detail.status == 1">
<view class="btn bar closeHollow plr30" @click.stop="handleCancel">取消订单</view>
</template>
<!-- 待收货 -->
<template v-else-if="detail.status == 4">
<view class="btn bar closeHollow plr30" @click.stop="order.orderAfterSales(detail)">申请退款</view>
<view class="btn bar closeHollow plr30" v-if="detail.afterSaleStatus === 1">
申请平台介入</view>
<view class="btn bar closeHollow plr30" @click.stop="order.logistics(detail)">查看物流
</view>
<view class="btn bar warmHollow plr30" @click.stop="handleReceived">确认收货
</view>
</template>
<!-- 已收货 -->
<template v-else-if="detail.status == 5">
<view class="btn bar closeHollow plr30" v-if="detail.afterSaleStatus === 1">
申请平台介入</view>
<view class="btn bar closeHollow plr30" @click.stop="order.orderAfterSales(detail)">申请退款</view>
<view class="btn bar warmHollow plr30">评价</view>
</template>
<!-- 已完成 -->
<template v-else-if="detail.status == 6">
<view class="btn bar closeHollow plr30">取消售后</view>
<!-- <view class="btn bar closeHollow plr30">钱款去向</view> -->
<view class="btn bar warmHollow plr30" v-if="detail.afterSaleStatus === 1">
申请平台介入</view>
</template>
</template>
</view>
</view>
<!-- 物流弹窗 -->
<expressVue ref="expressRef" @confirm="handleExpressConfirm" />
</template>
<style lang="scss">

View File

@ -146,9 +146,14 @@
//
if (item.refundStatus != 0) {
item.status_text = {
'1': '售后中',
'3': '售后完成',
} [item.refundStatus]
'0': '待审核',
'1': '商家拒绝',
'2': '退款中',
'3': '已退款',
'4': '用户退货',
'5': '商家待收货',
'6': '已撤销',
} [item.afterSaleStatus]
} else {
item.status_text = {
'0': '待支付',
@ -224,6 +229,23 @@
Object.assign(orderDetail, {}, item)
proxy.$refs.expressRef.open()
}
/**
* 填写退货物流信息
* @param {Object} param
*/
function handleExpressConfirm(param) {
let data = {
...param,
id: orderDetail.id,
}
console.log('orderupdateRefund', data)
order.orderupdateRefund(data).then(res => {
//
refreshList()
})
}
</script>
<template>
@ -254,42 +276,55 @@
<!-- 操作按钮 -->
<template #menu="scope">
<view class="menu ptb20 df jcr" v-if="[0,1,4,5,6].includes(scope.item.status)">
<!-- 售后中 -->
<template v-if="scope.item.refundStatus == 1">
<view class="btn bar warmHollow plr30" @click.stop="handleExpress(scope.item)">
填写退货物流信息</view>
<template v-if="scope.item.refundStatus == 4">
<view class="btn bar warmHollow plr30" @click.stop="handleExpress(scope.item)">
填写退货物流信息</view>
</template>
</template>
<template v-else>
<!-- 非售后 -->
<template v-else-if="scope.item.refundStatus == 0">
<!-- 待支付 -->
<template v-if="scope.item.status == 0">
<view class="btn bar closeHollow plr30" @click.stop="handleCancel(scope.item)">
取消订单</view>
<view class="btn bar warmHollow plr30" @click.stop="order.orderPay(item)">
继续付款
<view class="btn bar warmHollow plr30" @click.stop="order.orderPay(item)">继续付款
</view>
</template>
<!-- 待发货 -->
<template v-else-if="scope.item.status == 1">
<view class="btn bar closeHollow plr30"
@click.stop="order.orderAfterSales(item)">申请退款</view>
<view class="btn bar closeHollow plr30" @click.stop="handleCancel(scope.item)">
取消订单</view>
<!-- <view class="btn bar warmHollow plr30">催发货</view> -->
</template>
<!-- 待收货 -->
<template v-else-if="scope.item.status == 4">
<view class="btn bar closeHollow plr30"
@click.stop="order.orderAfterSales(item)">申请退款</view>
<view class="btn bar closeHollow plr30" @click.stop="order.logistics(item)">
查看物流
@click.stop="order.orderAfterSales(scope.item)">申请退款</view>
<view class="btn bar closeHollow plr30" v-if="scope.item.afterSaleStatus === 1">
申请平台介入</view>
<view class="btn bar closeHollow plr30"
@click.stop="order.logistics(scope.item)">查看物流
</view>
<view class="btn bar warmHollow plr30" @click.stop="handleReceived(item)">
<view class="btn bar warmHollow plr30" @click.stop="handleReceived(scope.item)">
确认收货
</view>
</template>
<!-- 已收货 -->
<template v-else-if="scope.item.status == 5">
<view class="btn bar closeHollow plr30" v-if="scope.item.afterSaleStatus === 1">
申请平台介入</view>
<view class="btn bar closeHollow plr30"
@click.stop="order.orderAfterSales(item)">申请退款</view>
@click.stop="order.orderAfterSales(scope.item)">申请退款</view>
<view class="btn bar warmHollow plr30">评价</view>
</template>
<!-- 已完成 -->
<template v-else-if="scope.item.status == 6">
<view class="btn bar closeHollow plr30">取消售后</view>
<view class="btn bar closeHollow plr30">钱款去向</view>
<view class="btn bar warmHollow plr30">平台介入</view>
<!-- <view class="btn bar closeHollow plr30">钱款去向</view> -->
<view class="btn bar warmHollow plr30" v-if="scope.item.afterSaleStatus === 1">
申请平台介入</view>
</template>
</template>
</view>
@ -301,7 +336,7 @@
</view>
<!-- 物流弹窗 -->
<expressVue ref="expressRef" />
<expressVue ref="expressRef" @confirm="handleExpressConfirm" />
</template>
<style scoped lang="scss">

View File

@ -49,7 +49,7 @@
let result = []
//
if ([4].includes(detail.status)) {
if ([1,4].includes(detail.status)) {
result.push({
type: 1,
name: '我要退款(无需退货)',

View File

@ -409,3 +409,19 @@ likeType
2. 收藏分享佣金
3. 钱包明细
商家入驻之后 所以得都在后台管理申请子账号 5个之内 随意申请 5个之外需要提交申请 商家可以对自己的子账号进行管理
账号 昵称 密码 订单权限 删除
商家客服可以和平台用户聊天 根据权限管理该商户下的订单 处理订单售后
平台建立子账号 做官方客服
账号 昵称 密码 删除 管理所有用户发起平台介入的订单
登录app和用户聊天
子账号不能登录app 并且区分身份标识
商品评论

View File

@ -29,7 +29,8 @@ export default createStore({
"DAY_POINTS_RELEASE": 0.3, //每日积分释放
"TASK_READING_SECOND": 300, //任务读秒
"EFFECTIVE_SECONDS": 300, //有效读秒
"EFFECTIVE_VIDEO_TIME": 20 //有效视频时间
"EFFECTIVE_VIDEO_TIME": 20 ,//有效视频时间
"UNLOCK_FLOW_STATISTICS": 30, //解锁流量统计
},
},

View File

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