提交 ff86a699 作者: 毛细亚

🐞 fix: 新增跨主体客服二维码功能

上级 e9905c4e
......@@ -276,3 +276,11 @@ export function corp_activity_procedure_copyUsed(data) {
data,
});
}
// 跨主体客服二维码
export function getUserQrCode(data) {
return request({
url: returnApi('/session/getUserQrCode'),
method: 'post',
data,
});
}
......@@ -17,6 +17,12 @@
当前无分配转VIP/SVIP任务
</div>
<el-form ref="form" :model="form" label-position="top" :rules="rules" label-width="100px" style="margin-top: 10px;">
<el-form-item label="来源" prop="source_type">
<el-radio-group v-model="form.source_type" @change="handleSourceTypeChange">
<el-radio label="game_code">掌游</el-radio>
<el-radio label="wx_code">企微活码</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="客服类型:" prop="service_type">
<el-select v-model="form.service_type" :clearable="false" placeholder="请选择客服类型" style="width:100%;"
@change="handleServiceTypeChange">
......@@ -41,6 +47,7 @@
import { searchcondition, getTaskTracer, memberTaskStatus, getTaskTracerTouch, getTaskTracerTouchAdd } from '@/api/game'
import { mapState } from 'vuex'
import { sendChatMessage } from '@/utils/index'
import { getUserQrCode } from '@/api/works'
export default {
name: 'ServiceMessageDialog',
data() {
......@@ -48,6 +55,7 @@ export default {
loading: false,
submitting: false,
form: {
source_type:'game_code',
service_type: '',
service_id: '',
send_text: ''
......@@ -56,6 +64,7 @@ export default {
taskStatus: {},
rules: {
service_type: [{ required: true, message: '请选择客服类型', trigger: 'change' }],
source_type: [{ required: true, message: '请选择来源', trigger: 'change' }],
service_id: [{ required: true, message: '请选择客服号', trigger: 'change' }]
},
serviceTypeOptions: [
......@@ -68,7 +77,7 @@ export default {
},
computed: {
...mapState('game', ['accountSelect']),
...mapState('user', ['cser_name'])
...mapState('user', ['cser_name','corp_id','external_userid','userid'])
},
watch: {
accountSelect: {
......@@ -91,6 +100,14 @@ export default {
this.memberTaskStatus()
])
},
handleSourceTypeChange() {
this.form.service_type = ''
if(this.form.source_type === 'wx_code'){
this.serviceTypeOptions = [ { label: '掌微工作台', value: 4 },{ label: '企微工作台', value: 5 }]
}else{
this.serviceTypeOptions = [ { label: '个微', value: 3 },{ label: '掌微工作台', value: 4 },{ label: '企微工作台', value: 5 }]
}
},
// 获取任务状态
async memberTaskStatus() {
try {
......@@ -158,10 +175,13 @@ export default {
// 发送消息
async sendMessage(image_url) {
// 发送掌游客服号的时候 需要添加日志
if(this.form.source_type === 'game_code'){
await this.getTaskTracerTouch()
if (this.taskStatus.is_band) {
if (this.taskStatus.is_band ) {
await this.getTaskTracerTouchAdd()
}
}
await sendChatMessage(image_url, 'image')
// 生成二维码有延迟 立即发送会导致二维码加载失败 加个小延迟解决问题
setTimeout(() => {
......@@ -188,10 +208,45 @@ export default {
handleSubmitBtn() {
this.$refs.form.validate(async valid => {
if (valid) {
if(this.form.source_type === 'wx_code'){
await this.handleSubmitWxCode()
}else{
await this.handleSubmit()
}
}
})
},
async handleSubmitWxCode() {
if (this.submitting) return
try {
const serve_info = this.serviceList.find(item => item.id === this.form.service_id)
console.log(serve_info, 'serve_info')
if (!serve_info) {
this.$message.error('未找到选中的客服信息')
return
}
this.submitting = true
const data = {
corp_id: this.corp_id,
external_userid: this.external_userid,
userid: this.userid,
target_corp_id: serve_info.corp_id,
target_userid: serve_info.service_wechat_number
}
const res = await getUserQrCode(data)
if (!res.data) {
this.$message.error('当前客服号未维护添加二维码,请维护后再发送')
return
}
setTimeout(async () => {
await this.sendMessage(res.data)
}, 2000)
} catch (error) {
this.submitting = false
console.error('提交失败:', error)
this.$message.error('提交失败')
}
},
// 提交表单
async handleSubmit() {
if (this.submitting) return
......
......@@ -2,7 +2,7 @@
* @Author: maoxiya 937667504@qq.com
* @Date: 2025-09-13 14:05:01
* @LastEditors: maoxiya 937667504@qq.com
* @LastEditTime: 2025-09-17 14:08:37
* @LastEditTime: 2025-09-22 17:10:55
* @FilePath: /company_wx_frontend/src/views/works/component/gameInfo/vipLevel.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -61,8 +61,6 @@ export default {
mounted() {
if(this.roleInfo && Object.keys(this.roleInfo).length > 0) {
this.vip_role_info = this.roleInfo
// 将VIP信息存储到Vuex中
this.set_vipRoleInfo(this.roleInfo)
} else {
this.marketingMemberRoleGrade()
}
......@@ -78,17 +76,13 @@ export default {
...mapState('game', ['accountSelect'])
},
methods: {
...mapMutations('game', ['set_vipRoleInfo']),
async marketingMemberRoleGrade() {
if(this.accountSelect && this.accountSelect !== ''){
const res = await marketingMemberRoleGrade({ member_id:this.accountSelect})
if(res.data.data.role_id){
this.vip_role_info = res.data.data
// 将VIP信息存储到Vuex中,供其他组件使用
this.set_vipRoleInfo(res.data.data)
}else{
this.vip_role_info = {}
this.set_vipRoleInfo({})
}
}
},
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论