提交 e05c2707 作者: 毛细亚

任务详情

上级 6f2c25cf
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
:lock-scroll="true" :lock-scroll="true"
title="玩家申诉" title="玩家申诉"
:visible="show" :visible="show"
size="300px" size="100%"
:append-to-body="true" :append-to-body="true"
@close="close" @close="close"
> >
...@@ -298,16 +298,6 @@ ...@@ -298,16 +298,6 @@
</el-form> </el-form>
</div> </div>
</layer> </layer>
<el-dialog
:visible.sync="dialogRemarkVisible"
append-to-body
title="查看大图"
custom-class="remake-dialog"
>
<div class="remake-box">
<div v-html="dialogRemake"></div>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
...@@ -319,9 +309,6 @@ ...@@ -319,9 +309,6 @@
RoleTodayOrder, RoleTodayOrder,
taskDetails, taskDetails,
taskTrack, taskTrack,
reportProcess,
appealProcess,
gamerReportProcess
} from '@/api/game' } from '@/api/game'
import { memberBindExternalUser } from '@/api/works' import { memberBindExternalUser } from '@/api/works'
import layer from '@/components/dialog.vue' import layer from '@/components/dialog.vue'
...@@ -333,10 +320,9 @@ ...@@ -333,10 +320,9 @@
components: { components: {
layer layer
}, },
props: ['show', 'taskDetails'], props: ['show'],
data() { data() {
return { return {
memberView: {},
is_finished: false, is_finished: false,
loading: false, loading: false,
remarks: [], remarks: [],
...@@ -348,14 +334,12 @@ ...@@ -348,14 +334,12 @@
assionInfo: {}, assionInfo: {},
current: 0, current: 0,
showLayer: false, showLayer: false,
dialogRemarkVisible: false,
dialogRemake: '', dialogRemake: '',
webForm: { webForm: {
trace_result: '', trace_result: '',
remark: '', remark: '',
abnormal_types: [] abnormal_types: []
}, },
approvalProcessActive: 1,
webFormRule: { webFormRule: {
remark: [{ required: true, message: '请输入备注', trigger: 'blur' }], remark: [{ required: true, message: '请输入备注', trigger: 'blur' }],
trace_result: [ trace_result: [
...@@ -391,43 +375,6 @@ ...@@ -391,43 +375,6 @@
{ label: '完成事件', value: 'finished_event' }, { label: '完成事件', value: 'finished_event' },
{ label: '目标客服号', value: 'target_service_name' } { label: '目标客服号', value: 'target_service_name' }
], ],
reprotDetails: [
{ label: '主游戏', value: 'main_game_name' },
{ label: '马甲包', value: 'game_name' },
{ label: '账号', value: 'username' },
{ label: '审批状态', value: 'approval_status_text' },
{ label: 'CP角色ID', value: 'cp_role_id' },
{ label: '角色名称', value: 'role_name' },
{ label: '区服', value: 'server_name' },
{ label: '登记人', value: 'create_user' }
],
// 举报人信息
userReportDetails: [
{ label: '主游戏', value: 'main_game_name' },
{ label: '马甲包', value: 'game_name' },
{ label: '账号', value: 'report_username' },
{ label: '区服', value: 'report_server_name' },
{ label: 'CP角色ID', value: 'report_cp_role_id' },
{ label: '角色名称', value: 'report_role_name' },
{ label: '举报人角色累计充值金额', value: 'report_recharge_total_amount', type: 'money' },
{ label: '举报人角色近一周充值', value: 'report_recharge_week_amount', type: 'money' },
{ label: '登记时间', value: 'create_time' },
{ label: '与被举报人关系', value: 'report_relationship_text' }, // 只有 type =4 的时候 玩家举报才有
{ label: '审批状态', value: 'approval_status_text' },
{ label: '登记人', value: 'create_user' }
],
// 被举报人信息
userCanReportDetails: [
{ label: '主游戏', value: 'main_game_name' },
{ label: '马甲包', value: 'game_name' },
{ label: '账号', value: 'username' },
{ label: '区服', value: 'server_name' },
{ label: 'CP角色ID', value: 'cp_role_id' },
{ label: '角色名称', value: 'role_name' },
{ label: '累计充值金额', value: 'recharge_total_amount', type: 'money' },
{ label: '近一周充值金额', value: 'recharge_week_amount', type: 'money' },
{ label: '违规操作类型', value: 'violation_type_text' }
]
} }
}, },
watch: { watch: {
...@@ -483,38 +430,6 @@ ...@@ -483,38 +430,6 @@
this.taskTypeList = res.data.data this.taskTypeList = res.data.data
}) })
}, },
async reportProcess() {
this.current = 0
const res = await reportProcess({ id: this.taskDetails.id })
this.approvalProcessList = res.data.data
res.data.data.map((item) => {
if (item.approval_result !== '0' && item.approval_result !== '2') {
this.current += 1
}
})
},
// 玩家申诉
async appealProcess() {
this.current = 0
const res = await appealProcess({ id: this.taskDetails.id })
this.approvalProcessList = res.data.data
res.data.data.map((item) => {
if (item.approval_result !== '0' && item.approval_result !== '2') {
this.current += 1
}
})
},
// 玩家举报进度
async gamerReportProcess() {
this.current = 0
const res = await gamerReportProcess({ id: this.taskDetails.id })
this.approvalProcessList = res.data.data
res.data.data.map((item) => {
if (item.approval_result !== '0' && item.approval_result !== '2') {
this.current += 1
}
})
},
searchTrackList() { searchTrackList() {
const data = { const data = {
type: 'dictionaries', type: 'dictionaries',
...@@ -571,70 +486,8 @@ ...@@ -571,70 +486,8 @@
} }
}) })
}, },
// 玩家举报发起会话 成功发起会话后 直接选中角色信息举报记录tab 其中搜索条件 审批记录为待审批 申请方式为玩家登记
reportRequestSession(item) {
// 复用之前的发起会话逻辑
const data = {
userid: item.userid,
user_name: item.user.name,
user_avatar: item.user.avatar,
external_userid: item.external_userid,
external_user_name: item.external_user.name,
external_user_avatar: item.external_user.avatar,
corp_id: item.corp_id
}
// 为了给掌游记录答问比 发起会话的时候需要记录任务的 id 然后会在会话列表中 返回任务 ID 在和用户聊天的时候 每次都把 任务的信息 通过 webscoket 发送给后端
item.task_id = data.task_id = this.taskDetails.id
item.task_type = data.task_type = this.taskDetails.plan_type
launchSession(data).then((res) => {
// 随机取一个 member_id
let member_list = []
if (this.assionInfo.members?.length > 0) {
member_list = this.assionInfo.members.map((item) => item.member_id)
} else {
member_list = [this.assionInfo.member_id]
}
if (member_list.length > 0) {
const index = Math.floor(Math.random(0, 1) * member_list.length)
this.set_task_session_member_id(member_list[index])
const itemData = this.$clone(item)
itemData.session_id = res.data.session_id
this.$emit('taskSession', itemData, 'report')
}
})
},
requestSession(item) { requestSession(item) {
const data = { console.log(item, '发起会话')
userid: item.userid,
user_name: item.user.name,
user_avatar: item.user.avatar,
external_userid: item.external_userid,
external_user_name: item.external_user.name,
external_user_avatar: item.external_user.avatar,
corp_id: item.corp_id
}
// 为了给掌游记录答问比 发起会话的时候需要记录任务的 id 然后会在会话列表中 返回任务 ID 在和用户聊天的时候 每次都把 任务的信息 通过 webscoket 发送给后端 通过 task_type 召回任务发送的时候 需要在工作台发送游戏渠道的时候 显示 一键发送渠道链接
item.task_id = data.task_id = this.taskDetails.id
item.task_type = data.task_type = this.taskDetails.plan_type
// this.taskDetails.plan_type == 7 ? data.task_id = this.taskDetails.id : ''
launchSession(data).then((res) => {
// 随机取一个 member_id
let member_list = []
if (this.assionInfo.members?.length > 0) {
member_list = this.assionInfo.members.map((item) => item.member_id)
} else {
member_list = [this.assionInfo.member_id]
}
if (member_list.length > 0) {
const index = Math.floor(Math.random(0, 1) * member_list.length)
this.set_task_session_member_id(member_list[index])
}
const itemData = this.$clone(item)
itemData.session_id = res.data.session_id
// this.taskDetails.plan_type == 7 ? itemData.task_id = this.taskDetails.id : ''
this.$emit('taskSession', itemData)
})
}, },
async memberOrder() { async memberOrder() {
let res = {} let res = {}
...@@ -653,19 +506,11 @@ ...@@ -653,19 +506,11 @@
}, },
async memberBindExternalUser() { async memberBindExternalUser() {
let member_list = [] let member_list = []
if (this.taskTypeSelect == 4) { // 玩家举报
if (this.assionInfo.members?.length > 0) {
member_list = this.assionInfo.members.map((item) => item.report_member_id)
} else {
member_list = [this.assionInfo.report_member_id]
}
} else {
if (this.assionInfo.members?.length > 0) { if (this.assionInfo.members?.length > 0) {
member_list = this.assionInfo.members.map((item) => item.member_id) member_list = this.assionInfo.members.map((item) => item.member_id)
} else { } else {
member_list = [this.assionInfo.member_id] member_list = [this.assionInfo.member_id]
} }
}
this.loading = true this.loading = true
if (member_list.length === 0) { if (member_list.length === 0) {
return false return false
......
...@@ -173,8 +173,6 @@ ...@@ -173,8 +173,6 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 任务详情 -->
<taskDetails v-if="showTaskDetails" :taskDetails="taskDetails" />
</div> </div>
</template> </template>
<script> <script>
...@@ -182,16 +180,13 @@ ...@@ -182,16 +180,13 @@
import { mapState } from 'vuex' import { mapState } from 'vuex'
import textEditor from '@/components/textEditor.vue' import textEditor from '@/components/textEditor.vue'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
import taskDetails from './taskDetails.vue'
export default { export default {
components: { components: {
textEditor, textEditor,
noContent, noContent,
taskDetails
}, },
data() { data() {
return { return {
showTaskDetails: false,
isloadMore: true, isloadMore: true,
loading: false, loading: false,
collapseValue: ['1'], collapseValue: ['1'],
......
...@@ -110,21 +110,7 @@ ...@@ -110,21 +110,7 @@
</el-form-item> </el-form-item>
</div> </div>
</el-form> </el-form>
<!-- <div class="filterChat rowFlex">
<div
ref="btnList"
class="btnList rowFlex columnCenter flexWarp"
>
<el-button
v-for="(item,index) in taskTypeList"
:key="index"
class="btnListScroll"
:class="item.value===plan_type?'itemActive':'btnItem'"
round
@click="handleClick(item)"
>{{ item.label || '' }}</el-button>
</div>
</div> -->
<div v-if="taskForm.type == 1" class="taskSort rowFlex columnCenter spaceBetween"> <div v-if="taskForm.type == 1" class="taskSort rowFlex columnCenter spaceBetween">
<p>任务数:{{ taskListNum || 0 }}</p> <p>任务数:{{ taskListNum || 0 }}</p>
<p class="rowFlex columnCenter sortIcon"> <p class="rowFlex columnCenter sortIcon">
...@@ -185,48 +171,6 @@ ...@@ -185,48 +171,6 @@
<div class="bottom">分配时间:{{ item.assignment_time }}</div> <div class="bottom">分配时间:{{ item.assignment_time }}</div>
</div> </div>
</div> </div>
<!-- 举报申请 玩家投诉 -->
<div v-if="taskForm.type == 2 || taskForm.type == 3 || taskForm.type == 4" class="scrollMain">
<div v-for="(item, index) in taskList" :key="index"
class="reportItem rowFlex spaceBetween columnCenter"
:class="item.id === taskDetails.id ? 'chatListItemActive' : ''" @click="selectTaskItem(item)">
<div class="reportItemLeft">
<p>{{ item.username }}</p>
<p>
<span class="label">角色名称:</span><span class="value">{{ item.role_name }}</span>
</p>
<p>
<span class="label">累计充值:</span><span class="value">{{ item.recharge_total_amount
}}</span>
</p>
<p>
<span class="label">近一周充值:</span><span class="value">{{ item.recharge_week_amount
}}</span>
</p>
<p v-if="taskForm.type == 2">
<span class="label">违规操作:</span><span class="value">{{ item.violation_type_text
}}</span>
</p>
<p v-else-if="taskForm.type == 3">
<span class="label">违规操作:</span><span class="value">{{ item.appeal_type_text }}</span>
</p>
<p>
<span class="label">登记时间:</span><span class="value">{{ item.create_time }}</span>
</p>
</div>
<div class="reportItemRight columnFlex columnCenter">
<el-button
v-if="item.approval_status == 1 && item.create_user_id == userInfo.id && taskForm.type != 4"
type="primary" size="mini" class="handleReport"
@click="handleReport(item)">撤销</el-button>
<img v-if="item.approval_status == 1" :src="shenpi1" class="icon" />
<img v-else-if="item.approval_status == 2" :src="shenpi2" class="icon" />
<img v-else-if="item.approval_status == 3" :src="shenpi3" class="icon" />
<img v-else-if="item.approval_status == 4" :src="shenpi4" class="icon" />
<img v-else-if="item.approval_status == 5" :src="shenpi5" class="icon" />
</div>
</div>
</div>
</div> </div>
<noContent v-if="taskList.length == 0" /> <noContent v-if="taskList.length == 0" />
</div> </div>
...@@ -234,15 +178,13 @@ ...@@ -234,15 +178,13 @@
<div class="taskListContent" v-else-if="taskForm.type == 'user_task' || taskForm.type == 'account_task'"> <div class="taskListContent" v-else-if="taskForm.type == 'user_task' || taskForm.type == 'account_task'">
<userTask :taskForm="taskForm" :activeType="taskForm.type" /> <userTask :taskForm="taskForm" :activeType="taskForm.type" />
</div> </div>
<taskDetails v-if="showTaskDetails" :show.sync="showTaskDetails" />
</div> </div>
</template> </template>
<script> <script>
import { import {
taskIndex, taskIndex,
searchcondition, searchcondition,
reportIndex,
appealList,
reportCancel, reportCancel,
appealCancel appealCancel
} from '@/api/game' } from '@/api/game'
...@@ -250,7 +192,6 @@ import { getTaskUnReadData, clearTaskUnReadData } from '@/api/works' ...@@ -250,7 +192,6 @@ import { getTaskUnReadData, clearTaskUnReadData } from '@/api/works'
import { mapState, mapMutations } from 'vuex' import { mapState, mapMutations } from 'vuex'
import mainGameSelect from '@/components/mainGame.vue' import mainGameSelect from '@/components/mainGame.vue'
import { removeDp } from '@/utils/index' import { removeDp } from '@/utils/index'
import { report_request_list, playerReport } from '@/api/game'
import selectDate from '@/components/selectDate.vue' import selectDate from '@/components/selectDate.vue'
import { formatNumber } from '@/utils/index' import { formatNumber } from '@/utils/index'
import shenpi1 from '@/assets/icon/shenpi1.svg' import shenpi1 from '@/assets/icon/shenpi1.svg'
...@@ -260,6 +201,7 @@ import shenpi4 from '@/assets/icon/shenpi4.svg' ...@@ -260,6 +201,7 @@ import shenpi4 from '@/assets/icon/shenpi4.svg'
import shenpi5 from '@/assets/icon/shenpi5.svg' import shenpi5 from '@/assets/icon/shenpi5.svg'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
import userTask from './components/taskList/uesrTask.vue' import userTask from './components/taskList/uesrTask.vue'
import taskDetails from './components/taskList/taskDetails.vue'
export default { export default {
props: { props: {
...@@ -280,11 +222,13 @@ export default { ...@@ -280,11 +222,13 @@ export default {
mainGameSelect, mainGameSelect,
selectDate, selectDate,
noContent, noContent,
userTask userTask,
taskDetails
}, },
data() { data() {
return { return {
formatNumber, formatNumber,
showTaskDetails: false,
taskForm: { taskForm: {
type: '1', type: '1',
status: '', status: '',
...@@ -347,21 +291,6 @@ export default { ...@@ -347,21 +291,6 @@ export default {
type: 'account_task', type: 'account_task',
value: 'account_task' value: 'account_task'
}, },
// {
// label: '举报申请',
// type: 'report_request',
// value: '2'
// },
// {
// label: '玩家申诉',
// type: 'appeal_request',
// value: '3'
// },
// {
// label: '玩家举报',
// type: 'member_report_request',
// value: '4'
// }
], ],
taskList: [], taskList: [],
isMoreRecord: false, isMoreRecord: false,
...@@ -575,6 +504,7 @@ export default { ...@@ -575,6 +504,7 @@ export default {
this.reportForm.role_name = value this.reportForm.role_name = value
}, },
selectTaskItem(item) { selectTaskItem(item) {
this.showTaskDetails = true
this.set_taskDetails(item) this.set_taskDetails(item)
}, },
handleClick(item) { handleClick(item) {
...@@ -596,12 +526,6 @@ export default { ...@@ -596,12 +526,6 @@ export default {
requestList() { requestList() {
if (this.taskForm.type == 1) { if (this.taskForm.type == 1) {
this.taskIndex() this.taskIndex()
} else if (this.taskForm.type == 2) {
this.reportIndex()
} else if (this.taskForm.type == 3) {
this.appealList()
} else if (this.taskForm.type == 4) {
this.report_request_list()
} }
}, },
handleCurrentChange(val) { handleCurrentChange(val) {
...@@ -701,9 +625,9 @@ export default { ...@@ -701,9 +625,9 @@ export default {
} else { } else {
this.taskList = removeDp(this.taskList, res.data.data, 'id') this.taskList = removeDp(this.taskList, res.data.data, 'id')
} }
if (!this.taskDetails.id && this.taskList.length > 0) { // if (!this.taskDetails.id && this.taskList.length > 0) {
this.set_taskDetails(this.taskList[0]) // this.set_taskDetails(this.taskList[0])
} // }
if (res.data.data.length < 20) { if (res.data.data.length < 20) {
this.isMoreRecord = false this.isMoreRecord = false
} else { } else {
...@@ -714,121 +638,6 @@ export default { ...@@ -714,121 +638,6 @@ export default {
this.loading = false this.loading = false
} }
}, },
// 举报列表
async reportIndex() {
if (this.pageInfo.page == 1) {
this.taskList = []
}
const { username, role_name, approval_status, create_time_start, create_time_end } = this.reportForm
const { id } = this.userInfo
const data = {
username,
role_name,
approval_status,
customer_id: id,
create_time_start,
create_time_end,
...this.pageInfo
}
try {
const res = await reportIndex(data)
this.loading = false
if (this.pageInfo.page == 1) {
this.taskList = res.data.data
} else {
this.taskList = removeDp(this.taskList, res.data.data, 'id')
}
if (!this.taskDetails.id && this.taskList.length > 0) {
this.set_taskDetails(this.taskList[0])
}
if (res.data.data.length < 20) {
this.isMoreRecord = false
} else {
this.isMoreRecord = true
}
} catch (error) {
this.loading = false
}
},
// 审核列表
async appealList() {
if (this.pageInfo.page == 1) {
this.taskList = []
}
const { username, role_name, approval_status, create_time_start, create_time_end } = this.reportForm
const { id } = this.userInfo
const data = {
username,
role_name,
approval_status,
customer_id: id,
create_time_start,
create_time_end,
...this.pageInfo
}
try {
const res = await appealList(data)
this.loading = false
if (this.pageInfo.page == 1) {
this.taskList = res.data.data
} else {
this.taskList = removeDp(this.taskList, res.data.data, 'id')
}
if (!this.taskDetails.id && this.taskList.length > 0) {
this.set_taskDetails(this.taskList[0])
}
if (res.data.data.length < 20) {
this.isMoreRecord = false
} else {
this.isMoreRecord = true
}
} catch (error) {
this.loading = false
}
},
async report_request_list() {
if (this.pageInfo.page == 1) {
this.taskList = []
}
const { username, role_name, create_time_start, create_time_end } = this.reportForm
const { id } = this.userInfo
const user_name = this.userInfo.username
// approval_status 1 待审批 2 审批中 3 通过 4 驳回 5 已撤销 默认是待审批
const data = {
username,
role_name,
// 这歌地方写死是 1 待审批状态
// approval_status: 1,
// customer_id: id,
user_id: id,
user_name: user_name,
create_time_start,
create_time_end,
register_type: 2, // register_type 1 客服登记 2 玩家登记 默认是 2
...this.pageInfo
}
try {
const res = await playerReport(data)
console.log(res.data.data, 'res')
this.loading = false
if (this.pageInfo.page == 1) {
this.taskList = res.data.data
} else {
this.taskList = removeDp(this.taskList, res.data.data, 'id')
}
if (!this.taskDetails.id && this.taskList.length > 0) {
this.set_taskDetails(this.taskList[0])
}
if (res.data.data.length < 20) {
this.isMoreRecord = false
} else {
this.isMoreRecord = true
}
} catch (error) {
this.loading = false
}
}
} }
} }
</script> </script>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论