feat: 投诉仅限邀请人+人工客服展示+抢单池商家指标与平台标签
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -7,6 +7,7 @@ const TYPES = [
|
||||
{ value: 3, label: '罚款投诉' },
|
||||
{ value: 4, label: '管事投诉' },
|
||||
{ value: 5, label: '被骗投诉' },
|
||||
{ value: 6, label: '组长投诉' },
|
||||
]
|
||||
|
||||
Page({
|
||||
@@ -16,7 +17,16 @@ Page({
|
||||
order_id: '',
|
||||
chongzhi_id: '',
|
||||
fadan_id: '',
|
||||
guanshi_id: '',
|
||||
target_user_id: '',
|
||||
target_nicheng: '',
|
||||
canComplainInviter: false,
|
||||
inviterReason: '',
|
||||
humanKefu: {
|
||||
available: false,
|
||||
wechat: '',
|
||||
link: '',
|
||||
tip: '',
|
||||
},
|
||||
shuoming: '',
|
||||
images: [],
|
||||
maxImages: 9,
|
||||
@@ -30,13 +40,88 @@ Page({
|
||||
if (q.chongzhi_id) patch.chongzhi_id = decodeURIComponent(q.chongzhi_id)
|
||||
if (q.fadan_id) patch.fadan_id = decodeURIComponent(q.fadan_id)
|
||||
if (Object.keys(patch).length) this.setData(patch)
|
||||
this.loadMeta()
|
||||
},
|
||||
|
||||
onPickType(e) { this.setData({ leixing: Number(e.currentTarget.dataset.v) }) },
|
||||
async loadMeta() {
|
||||
try {
|
||||
const res = await request({ url: '/gongdan/meta/', method: 'GET' })
|
||||
const body = res.data || {}
|
||||
if (!(body.code === 200 || body.code === 0)) return
|
||||
const data = body.data || {}
|
||||
const hk = data.human_kefu || {}
|
||||
this.setData({
|
||||
humanKefu: {
|
||||
available: !!hk.available,
|
||||
wechat: hk.wechat || '',
|
||||
link: hk.link || '',
|
||||
tip: hk.tip || '',
|
||||
},
|
||||
maxImages: data.max_images || 9,
|
||||
})
|
||||
this.applyInviterFromMeta(data.inviter_targets)
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
if (this.data.leixing === 4 || this.data.leixing === 6) {
|
||||
this.loadInviterTarget(this.data.leixing)
|
||||
}
|
||||
},
|
||||
|
||||
applyInviterFromMeta(targets) {
|
||||
if (!targets) return
|
||||
const leixing = this.data.leixing
|
||||
const info = leixing === 4 ? targets.guanshi : (leixing === 6 ? targets.zuzhang : null)
|
||||
if (!info) return
|
||||
this.setData({
|
||||
canComplainInviter: !!info.can_complain,
|
||||
target_user_id: info.user_id || '',
|
||||
target_nicheng: info.nicheng || '',
|
||||
inviterReason: info.reason || '',
|
||||
})
|
||||
},
|
||||
|
||||
async loadInviterTarget(leixing) {
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/gongdan/my-inviter-target/',
|
||||
method: 'POST',
|
||||
data: { leixing },
|
||||
})
|
||||
const body = res.data || {}
|
||||
const info = body.data || {}
|
||||
this.setData({
|
||||
canComplainInviter: !!info.can_complain,
|
||||
target_user_id: info.user_id || '',
|
||||
target_nicheng: info.nicheng || '',
|
||||
inviterReason: info.reason || (body.message || ''),
|
||||
})
|
||||
} catch (e) {
|
||||
this.setData({
|
||||
canComplainInviter: false,
|
||||
target_user_id: '',
|
||||
target_nicheng: '',
|
||||
inviterReason: '无法获取邀请人信息',
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
onPickType(e) {
|
||||
const leixing = Number(e.currentTarget.dataset.v)
|
||||
this.setData({
|
||||
leixing,
|
||||
target_user_id: '',
|
||||
target_nicheng: '',
|
||||
canComplainInviter: false,
|
||||
inviterReason: '',
|
||||
})
|
||||
if (leixing === 4 || leixing === 6) {
|
||||
this.loadInviterTarget(leixing)
|
||||
}
|
||||
},
|
||||
onOrderId(e) { this.setData({ order_id: e.detail.value }) },
|
||||
onChongzhiId(e) { this.setData({ chongzhi_id: e.detail.value }) },
|
||||
onFadanId(e) { this.setData({ fadan_id: e.detail.value }) },
|
||||
onGuanshiId(e) { this.setData({ guanshi_id: e.detail.value }) },
|
||||
onShuoming(e) { this.setData({ shuoming: e.detail.value }) },
|
||||
|
||||
openMiniKefu() { openCustomerServiceChat() },
|
||||
@@ -54,7 +139,43 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
goChongzhiList() { wx.navigateTo({ url: '/pages/gongdan/chongzhi-list/chongzhi-list' }) },
|
||||
openHumanLink() {
|
||||
const link = (this.data.humanKefu.link || '').trim()
|
||||
if (!link) return
|
||||
// 企业微信客服链接优先用官方能力打开
|
||||
const app = getApp()
|
||||
const cfg = app.globalData.kefuConfig || {}
|
||||
if (cfg.enterpriseId && (link.indexOf('work.weixin.qq.com') >= 0 || link.indexOf('kf') >= 0)) {
|
||||
wx.openCustomerServiceChat({
|
||||
extInfo: { url: link },
|
||||
corpId: cfg.enterpriseId,
|
||||
fail: () => {
|
||||
wx.setClipboardData({
|
||||
data: link,
|
||||
success: () => wx.showToast({ title: '链接已复制', icon: 'none' }),
|
||||
})
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
wx.setClipboardData({
|
||||
data: link,
|
||||
success: () => wx.showToast({ title: '客服链接已复制', icon: 'none' }),
|
||||
})
|
||||
},
|
||||
|
||||
copyHumanWechat() {
|
||||
const wxid = (this.data.humanKefu.wechat || '').trim()
|
||||
if (!wxid) return
|
||||
wx.setClipboardData({
|
||||
data: wxid,
|
||||
success: () => wx.showToast({ title: '微信号已复制', icon: 'success' }),
|
||||
})
|
||||
},
|
||||
|
||||
goChongzhiList() {
|
||||
wx.navigateTo({ url: '/pages/gongdan/chongzhi-list/chongzhi-list?from=complaint' })
|
||||
},
|
||||
goPenalty() { wx.navigateTo({ url: '/pages/penalty/penalty/penalty' }) },
|
||||
goMyList() { wx.navigateTo({ url: '/pages/gongdan/list/list' }) },
|
||||
|
||||
@@ -81,7 +202,7 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
uploadOne(filePath) {
|
||||
uploadOne(filePath) {
|
||||
const app = getApp()
|
||||
const base = (app.globalData.apiBaseUrl || '').replace(/\/$/, '')
|
||||
const token = wx.getStorageSync('token') || ''
|
||||
@@ -121,26 +242,44 @@ Page({
|
||||
wx.showToast({ title: '请填写投诉说明', icon: 'none' })
|
||||
return
|
||||
}
|
||||
if (this.data.leixing === 4 || this.data.leixing === 6) {
|
||||
if (!this.data.canComplainInviter || !this.data.target_user_id) {
|
||||
wx.showToast({
|
||||
title: this.data.inviterReason || '没有邀请人,无法投诉',
|
||||
icon: 'none',
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
this.setData({ submitting: true })
|
||||
try {
|
||||
const payload = {
|
||||
leixing: this.data.leixing,
|
||||
shuoming: this.data.shuoming,
|
||||
order_id: this.data.order_id,
|
||||
chongzhi_id: this.data.chongzhi_id,
|
||||
fadan_id: this.data.fadan_id,
|
||||
images: this.data.images,
|
||||
}
|
||||
if (this.data.leixing === 4) {
|
||||
payload.target_role = 'guanshi'
|
||||
// 后端会强制本人邀请人,这里仅作兼容提交
|
||||
payload.target_user_id = this.data.target_user_id
|
||||
payload.guanshi_id = this.data.target_user_id
|
||||
} else if (this.data.leixing === 6) {
|
||||
payload.target_role = 'zuzhang'
|
||||
payload.target_user_id = this.data.target_user_id
|
||||
}
|
||||
const res = await request({
|
||||
url: '/gongdan/create/',
|
||||
method: 'POST',
|
||||
data: {
|
||||
leixing: this.data.leixing,
|
||||
shuoming: this.data.shuoming,
|
||||
order_id: this.data.order_id,
|
||||
chongzhi_id: this.data.chongzhi_id,
|
||||
fadan_id: this.data.fadan_id,
|
||||
guanshi_id: this.data.guanshi_id,
|
||||
images: this.data.images,
|
||||
},
|
||||
data: payload,
|
||||
})
|
||||
const body = res.data || {}
|
||||
if (body.code === 200 || body.code === 0) {
|
||||
wx.showToast({ title: '提交成功', icon: 'success' })
|
||||
setTimeout(() => {
|
||||
wx.redirectTo({ url: '/pages/gongdan/list/list' })
|
||||
wx.redirectTo({ url: '/pages/gongdan/list/list?tab=created' })
|
||||
}, 500)
|
||||
} else {
|
||||
wx.showToast({ title: body.message || body.msg || '提交失败', icon: 'none' })
|
||||
|
||||
Reference in New Issue
Block a user