提交 ff86a699 作者: 毛细亚

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

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