提交 a840f385 作者: 毛细亚

合并分支 'release' 到 'master'

Release

查看合并请求 !10
...@@ -15,7 +15,16 @@ ...@@ -15,7 +15,16 @@
ref="menuRef" ref="menuRef"
> >
<el-menu-item v-for="item in menuList" :key="item.path" :index="item.path" class="mobile-menu-item"> <el-menu-item v-for="item in menuList" :key="item.path" :index="item.path" class="mobile-menu-item">
{{ item.label }} <!-- 任务列表菜单项显示红点 -->
<div v-if="item.path === '/taskList' && hasTaskRedDot" class="menu-item-with-badge">
<div class="task-badge">
<el-badge is-dot>
<span>{{ item.label }}</span>
</el-badge>
</div>
</div>
<!-- 普通菜单项 -->
<span v-else>{{ item.label }}</span>
</el-menu-item> </el-menu-item>
</el-menu> </el-menu>
...@@ -43,10 +52,11 @@ ...@@ -43,10 +52,11 @@
<script> <script>
import bindUserList from '@/views/components/bindGameAccount/bindUserList.vue' import bindUserList from '@/views/components/bindGameAccount/bindUserList.vue'
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
import { mapState, mapMutations } from 'vuex' import { mapState, mapMutations, mapActions } from 'vuex'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import { getParams } from '@/utils/index' import { getParams } from '@/utils/index'
import Debug from '@/components/debug.vue' import Debug from '@/components/debug.vue'
export default { export default {
name: 'App', name: 'App',
components: { components: {
...@@ -97,10 +107,11 @@ export default { ...@@ -97,10 +107,11 @@ export default {
label: '快捷发送', label: '快捷发送',
path: '/quickSendGame' path: '/quickSendGame'
}, },
// { {
// label: '任务列表', label: '任务列表',
// path: '/taskList' path: '/taskList',
// }, hasRedDot: false // 红点状态
},
// { // {
// label: '通讯录', // label: '通讯录',
// path: '/addressBook' // path: '/addressBook'
...@@ -113,7 +124,12 @@ export default { ...@@ -113,7 +124,12 @@ export default {
} }
}, },
computed: { computed: {
...mapState('user', ['external_userid', 'token']), ...mapState('user', ['external_userid', 'token', 'userInfo']),
...mapState('game', ['taskData']),
// 计算任务列表是否需要显示红点
hasTaskRedDot() {
return this.taskData.user_task > 0 || this.taskData.account_task > 0
}
}, },
watch: { watch: {
'$route.path'(val) { '$route.path'(val) {
...@@ -125,6 +141,18 @@ export default { ...@@ -125,6 +141,18 @@ export default {
} }
console.log('路由变化:', val, '选中路径:', this.selectedPath) console.log('路由变化:', val, '选中路径:', this.selectedPath)
}, },
// 监听用户信息变化,只在初始化时获取一次任务数据
userInfo: {
handler(newVal, oldVal) {
if (newVal && newVal.id && (!oldVal || !oldVal.id)) {
console.log('用户信息初始化完成,获取任务数据:', newVal)
// 只在用户信息第一次设置时获取任务数据
this.getTaskUnReadData()
}
},
deep: true,
immediate: true
},
// 监听 external_userid 的变化,确保界面及时更新 // 监听 external_userid 的变化,确保界面及时更新
external_userid: { external_userid: {
handler(newVal) { handler(newVal) {
...@@ -181,6 +209,7 @@ export default { ...@@ -181,6 +209,7 @@ export default {
methods: { methods: {
...mapMutations('user', ['set_userid', 'set_corp_id', 'set_token', 'set_cser_info', 'set_cser_id', 'set_cser_name', 'set_userInfo']), ...mapMutations('user', ['set_userid', 'set_corp_id', 'set_token', 'set_cser_info', 'set_cser_id', 'set_cser_name', 'set_userInfo']),
...mapMutations('game', ['set_accountSelect']), ...mapMutations('game', ['set_accountSelect']),
...mapActions('game', ['getTaskUnReadData']),
// 设置缓存 // 设置缓存
cacheCorp_id(corp_id) { cacheCorp_id(corp_id) {
Cookies.set('corp_id', corp_id, { expires: 7 }) Cookies.set('corp_id', corp_id, { expires: 7 })
...@@ -205,23 +234,6 @@ export default { ...@@ -205,23 +234,6 @@ export default {
handleSelect(key, keyPath) { handleSelect(key, keyPath) {
console.log('菜单选择:', key, keyPath, window.location.href) console.log('菜单选择:', key, keyPath, window.location.href)
}, },
initVuexValue(){
this.set_userid(Cookies.get('userid'))
this.set_corp_id(Cookies.get('corp_id'))
this.set_token(Cookies.get('token'))
this.set_cser_id(Cookies.get('cser_id'))
this.set_cser_name(Cookies.get('cser_name'))
const userinfo = {
cser_id:Cookies.get('cser_id'),
cser_name:Cookies.get('cser_name'),
username:Cookies.get('cser_name'),
id:Cookies.get('cser_id'),
}
this.set_userInfo(userinfo)
const cser_info = Cookies.get('cser_info')
console.log(Cookies.get('cser_id'),'cser_info',Cookies.get('cser_name'))
cser_info?this.set_cser_info(JSON.parse(cser_info)):this.set_cser_info({})
},
// 切换菜单展开收起状态 // 切换菜单展开收起状态
toggleMenu() { toggleMenu() {
this.isMenuExpanded = !this.isMenuExpanded this.isMenuExpanded = !this.isMenuExpanded
...@@ -366,4 +378,23 @@ export default { ...@@ -366,4 +378,23 @@ export default {
body { body {
background: #f0f2f5; background: #f0f2f5;
} }
/* 任务列表菜单项红点样式 */
.menu-item-with-badge {
display: inline-block;
}
.task-badge {
::v-deep .el-badge__content.is-dot {
top: 8px !important;
right: -5px !important;
}
}
/* 确保菜单项内容居中 */
.mobile-menu-item .menu-item-with-badge {
display: flex;
align-items: center;
justify-content: center;
}
</style> </style>
import request from '@/utils/request' import request from '@/utils/request'
import store from '@/store/index' import store from '@/store/index'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
const zw_user_id = Cookies.get('cser_id') || store.state.user.userInfo.id || store.state.user.cser_id
// 获取用户ID的函数,避免在模块加载时访问可能未初始化的 store
function getZwUserId() {
return Cookies.get('cser_id') ||
(store.state?.user?.userInfo?.id) ||
(store.state?.user?.cser_id)
}
// 游戏业务所属的接口信息 // 游戏业务所属的接口信息
// 所属分组下拉 // 所属分组下拉
function returnApi(api){ function returnApi(api){
...@@ -385,7 +391,7 @@ export function channelList(data) { ...@@ -385,7 +391,7 @@ export function channelList(data) {
// 任务列表 // 任务列表
export function taskIndex(data) { export function taskIndex(data) {
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
api: '/operator_task/index', api: '/operator_task/index',
...@@ -399,7 +405,7 @@ export function taskIndex(data) { ...@@ -399,7 +405,7 @@ export function taskIndex(data) {
// 任务详情 // 任务详情
export function taskDetails(data) { export function taskDetails(data) {
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
api: '/operator_task/info', api: '/operator_task/info',
...@@ -412,7 +418,7 @@ export function taskDetails(data) { ...@@ -412,7 +418,7 @@ export function taskDetails(data) {
// 分配 // 分配
export function taskAssign(data) { export function taskAssign(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -426,7 +432,7 @@ export function taskAssign(data) { ...@@ -426,7 +432,7 @@ export function taskAssign(data) {
// 完成任务 // 完成任务
export function taskTrack(data) { export function taskTrack(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -440,7 +446,7 @@ export function taskTrack(data) { ...@@ -440,7 +446,7 @@ export function taskTrack(data) {
// 结果列表 // 结果列表
export function taskRecord(data) { export function taskRecord(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -454,7 +460,7 @@ export function taskRecord(data) { ...@@ -454,7 +460,7 @@ export function taskRecord(data) {
// 备注 // 备注
export function logsSave(data) { export function logsSave(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -468,7 +474,7 @@ export function logsSave(data) { ...@@ -468,7 +474,7 @@ export function logsSave(data) {
// 角色累充 // 角色累充
export function RoleTodayOrder(data) { export function RoleTodayOrder(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -481,7 +487,7 @@ export function RoleTodayOrder(data) { ...@@ -481,7 +487,7 @@ export function RoleTodayOrder(data) {
} }
// 用户充值 // 用户充值
export function memberOrder(data) { export function memberOrder(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -494,7 +500,7 @@ export function memberOrder(data) { ...@@ -494,7 +500,7 @@ export function memberOrder(data) {
} }
// 下拉加载 // 下拉加载
export function searchcondition(data) { export function searchcondition(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -507,7 +513,7 @@ export function searchcondition(data) { ...@@ -507,7 +513,7 @@ export function searchcondition(data) {
} }
// 误操作列表 // 误操作列表
export function misoperationIndex(data) { export function misoperationIndex(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -520,7 +526,7 @@ export function misoperationIndex(data) { ...@@ -520,7 +526,7 @@ export function misoperationIndex(data) {
} }
// 添加误操作 // 添加误操作
export function addErrorHandle(data) { export function addErrorHandle(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -532,7 +538,7 @@ export function addErrorHandle(data) { ...@@ -532,7 +538,7 @@ export function addErrorHandle(data) {
}) })
} }
export function updateErrorHandle(data) { export function updateErrorHandle(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -545,7 +551,7 @@ export function updateErrorHandle(data) { ...@@ -545,7 +551,7 @@ export function updateErrorHandle(data) {
} }
// 操作数量 // 操作数量
export function numErrorHandle(data) { export function numErrorHandle(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -558,7 +564,7 @@ export function numErrorHandle(data) { ...@@ -558,7 +564,7 @@ export function numErrorHandle(data) {
} }
// 操作数量新 // 操作数量新
export function operationCount(data) { export function operationCount(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -571,7 +577,7 @@ export function operationCount(data) { ...@@ -571,7 +577,7 @@ export function operationCount(data) {
} }
// 任务消息读取 // 任务消息读取
export function taskRead(data) { export function taskRead(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -584,7 +590,7 @@ export function taskRead(data) { ...@@ -584,7 +590,7 @@ export function taskRead(data) {
} }
// 任务消息状态 // 任务消息状态
export function taskReadStatus(data) { export function taskReadStatus(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -598,7 +604,7 @@ export function taskReadStatus(data) { ...@@ -598,7 +604,7 @@ export function taskReadStatus(data) {
// 撤回消息 // 撤回消息
export function cancelRefundRequest(data) { export function cancelRefundRequest(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -612,7 +618,7 @@ export function cancelRefundRequest(data) { ...@@ -612,7 +618,7 @@ export function cancelRefundRequest(data) {
// 举报列表 // 举报列表
export function reportIndex(data) { export function reportIndex(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -627,7 +633,7 @@ export function reportIndex(data) { ...@@ -627,7 +633,7 @@ export function reportIndex(data) {
// 玩家举报 // 玩家举报
export function playerReport(data) { export function playerReport(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -642,7 +648,7 @@ export function playerReport(data) { ...@@ -642,7 +648,7 @@ export function playerReport(data) {
// 审批记录 // 审批记录
export function reportProcess(data) { export function reportProcess(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -656,7 +662,7 @@ export function reportProcess(data) { ...@@ -656,7 +662,7 @@ export function reportProcess(data) {
// 撤销举报 // 撤销举报
export function reportCancel(data) { export function reportCancel(data) {
data.zw_user_id = store.state.user.cser_id || store.state.user.userInfo.id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -670,7 +676,7 @@ export function reportCancel(data) { ...@@ -670,7 +676,7 @@ export function reportCancel(data) {
// 新增举报 // 新增举报
export function reportAdd(data) { export function reportAdd(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -684,7 +690,7 @@ export function reportAdd(data) { ...@@ -684,7 +690,7 @@ export function reportAdd(data) {
// 申诉列表 // 申诉列表
export function appealList(data) { export function appealList(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -698,7 +704,7 @@ export function appealList(data) { ...@@ -698,7 +704,7 @@ export function appealList(data) {
// 新增申诉 // 新增申诉
export function appealAdd(data) { export function appealAdd(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -712,7 +718,7 @@ export function appealAdd(data) { ...@@ -712,7 +718,7 @@ export function appealAdd(data) {
// 撤销申诉 // 撤销申诉
export function appealCancel(data) { export function appealCancel(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -726,7 +732,7 @@ export function appealCancel(data) { ...@@ -726,7 +732,7 @@ export function appealCancel(data) {
// 申诉记录 // 申诉记录
export function appealProcess(data) { export function appealProcess(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -739,7 +745,7 @@ export function appealProcess(data) { ...@@ -739,7 +745,7 @@ export function appealProcess(data) {
} }
// 玩家举报审批记录 // 玩家举报审批记录
export function gamerReportProcess(data) { export function gamerReportProcess(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -753,7 +759,7 @@ export function gamerReportProcess(data) { ...@@ -753,7 +759,7 @@ export function gamerReportProcess(data) {
// 角色列表Holo 实时性较高 // 角色列表Holo 实时性较高
export function getRoleHoLo(data) { export function getRoleHoLo(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -766,7 +772,7 @@ export function getRoleHoLo(data) { ...@@ -766,7 +772,7 @@ export function getRoleHoLo(data) {
} }
// 角色列表 待请求 // 角色列表 待请求
export function memberTaskStatus(data) { export function memberTaskStatus(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -780,7 +786,7 @@ export function memberTaskStatus(data) { ...@@ -780,7 +786,7 @@ export function memberTaskStatus(data) {
// 举报申请列表 // 举报申请列表
export function report_request_list(data) { export function report_request_list(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -793,7 +799,7 @@ export function report_request_list(data) { ...@@ -793,7 +799,7 @@ export function report_request_list(data) {
} }
// 举报申请驳回或者通过 // 举报申请驳回或者通过
export function report_request_approval(data) { export function report_request_approval(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -807,7 +813,7 @@ export function report_request_approval(data) { ...@@ -807,7 +813,7 @@ export function report_request_approval(data) {
// 游戏类型下的游戏列表 游戏类型:安卓 h5 ios // 游戏类型下的游戏列表 游戏类型:安卓 h5 ios
export function getTransferRecallGameList(data) { export function getTransferRecallGameList(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -820,7 +826,7 @@ export function getTransferRecallGameList(data) { ...@@ -820,7 +826,7 @@ export function getTransferRecallGameList(data) {
} }
// 转端和召回 游戏类型列表 // 转端和召回 游戏类型列表
export function getGameConfig(data) { export function getGameConfig(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -834,7 +840,7 @@ export function getGameConfig(data) { ...@@ -834,7 +840,7 @@ export function getGameConfig(data) {
// 召回的时候染色 // 召回的时候染色
export function recallChannelSeq(data) { export function recallChannelSeq(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -848,7 +854,7 @@ export function recallChannelSeq(data) { ...@@ -848,7 +854,7 @@ export function recallChannelSeq(data) {
// 获取游戏信息 // 获取游戏信息
export function getGameInfo(data) { export function getGameInfo(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -861,7 +867,7 @@ export function getGameInfo(data) { ...@@ -861,7 +867,7 @@ export function getGameInfo(data) {
} }
// 新增渠道 // 新增渠道
export function addChannel(data) { export function addChannel(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -874,7 +880,7 @@ export function addChannel(data) { ...@@ -874,7 +880,7 @@ export function addChannel(data) {
} }
// 一键发送召回渠道链接 // 一键发送召回渠道链接
export function quickRecallChannelLink(data) { export function quickRecallChannelLink(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -887,7 +893,7 @@ export function quickRecallChannelLink(data) { ...@@ -887,7 +893,7 @@ export function quickRecallChannelLink(data) {
} }
// 转端发送落地页 // 转端发送落地页
export function getLandingPageTransfer(data) { export function getLandingPageTransfer(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -901,7 +907,7 @@ export function getLandingPageTransfer(data) { ...@@ -901,7 +907,7 @@ export function getLandingPageTransfer(data) {
// 工作台关联客服 // 工作台关联客服
export function bindUserSelfAdd(data) { export function bindUserSelfAdd(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -914,7 +920,7 @@ export function bindUserSelfAdd(data) { ...@@ -914,7 +920,7 @@ export function bindUserSelfAdd(data) {
} }
// 关联客服列表 // 关联客服列表
export function bindUserList(data) { export function bindUserList(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -927,7 +933,7 @@ export function bindUserList(data) { ...@@ -927,7 +933,7 @@ export function bindUserList(data) {
} }
// 新增关联客服 // 新增关联客服
export function bindUserAdd(data) { export function bindUserAdd(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -941,7 +947,7 @@ export function bindUserAdd(data) { ...@@ -941,7 +947,7 @@ export function bindUserAdd(data) {
// 删除关联客服 // 删除关联客服
export function bindUserDelete(data) { export function bindUserDelete(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -955,7 +961,7 @@ export function bindUserDelete(data) { ...@@ -955,7 +961,7 @@ export function bindUserDelete(data) {
// 调用掌游的日志中心 // 调用掌游的日志中心
export function getSystemModelLog(data) { export function getSystemModelLog(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -969,7 +975,7 @@ export function getSystemModelLog(data) { ...@@ -969,7 +975,7 @@ export function getSystemModelLog(data) {
export function getMemberTransStatus(data) { export function getMemberTransStatus(data) {
// 转端文档 获取W账号的转端状态 如果状态是 false 表示不允许转端 在工作台 发送游戏 里面转端里 点开发送的时候 提示 当前w账号不满足转端要求,请联系组长处理 // 转端文档 获取W账号的转端状态 如果状态是 false 表示不允许转端 在工作台 发送游戏 里面转端里 点开发送的时候 提示 当前w账号不满足转端要求,请联系组长处理
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -982,7 +988,7 @@ export function getMemberTransStatus(data) { ...@@ -982,7 +988,7 @@ export function getMemberTransStatus(data) {
} }
export function getTaskTracer(data) { export function getTaskTracer(data) {
// 获取运营任务的跟进人 参数 member_id // 获取运营任务的跟进人 参数 member_id
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -995,7 +1001,7 @@ export function getTaskTracer(data) { ...@@ -995,7 +1001,7 @@ export function getTaskTracer(data) {
} }
// 用户触达 发送客服号添加消息的日志 // 用户触达 发送客服号添加消息的日志
export function getTaskTracerTouch(data) { export function getTaskTracerTouch(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1008,7 +1014,7 @@ export function getTaskTracerTouch(data) { ...@@ -1008,7 +1014,7 @@ export function getTaskTracerTouch(data) {
} }
// 添加一条任务跟进记录 // 添加一条任务跟进记录
export function getTaskTracerTouchAdd(data) { export function getTaskTracerTouchAdd(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1021,7 +1027,7 @@ export function getTaskTracerTouchAdd(data) { ...@@ -1021,7 +1027,7 @@ export function getTaskTracerTouchAdd(data) {
} }
// 审批组流程下拉 // 审批组流程下拉
export function approval_group_flow_list(data) { export function approval_group_flow_list(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1034,7 +1040,7 @@ export function approval_group_flow_list(data) { ...@@ -1034,7 +1040,7 @@ export function approval_group_flow_list(data) {
} }
// 审批人员表格 // 审批人员表格
export function approval_group_flow_user(data) { export function approval_group_flow_user(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1048,7 +1054,7 @@ export function approval_group_flow_user(data) { ...@@ -1048,7 +1054,7 @@ export function approval_group_flow_user(data) {
// 保存转端提交 // 保存转端提交
export function approval_group_flow_add(data) { export function approval_group_flow_add(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1062,7 +1068,7 @@ export function approval_group_flow_add(data) { ...@@ -1062,7 +1068,7 @@ export function approval_group_flow_add(data) {
// 转端申请列表 // 转端申请列表
export function member_trans_request_list(data) { export function member_trans_request_list(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1076,7 +1082,7 @@ export function member_trans_request_list(data) { ...@@ -1076,7 +1082,7 @@ export function member_trans_request_list(data) {
// 转端申请审批记录 // 转端申请审批记录
export function member_trans_request_process(data) { export function member_trans_request_process(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1090,7 +1096,7 @@ export function member_trans_request_process(data) { ...@@ -1090,7 +1096,7 @@ export function member_trans_request_process(data) {
// 转区列表 // 转区列表
export function transfer_server_request_list(data) { export function transfer_server_request_list(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1104,7 +1110,7 @@ export function transfer_server_request_list(data) { ...@@ -1104,7 +1110,7 @@ export function transfer_server_request_list(data) {
// 转区申请 // 转区申请
export function transfer_server_request_add(data) { export function transfer_server_request_add(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1118,7 +1124,7 @@ export function transfer_server_request_add(data) { ...@@ -1118,7 +1124,7 @@ export function transfer_server_request_add(data) {
// 转区申请节点 // 转区申请节点
export function transfer_server_request_process(data) { export function transfer_server_request_process(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1130,7 +1136,7 @@ export function transfer_server_request_process(data) { ...@@ -1130,7 +1136,7 @@ export function transfer_server_request_process(data) {
}) })
} }
export function getMainGameInfo(data) { export function getMainGameInfo(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1144,7 +1150,7 @@ export function getMainGameInfo(data) { ...@@ -1144,7 +1150,7 @@ export function getMainGameInfo(data) {
// 掌游标签搜索 // 掌游标签搜索
export function roleLabelSearch(data) { export function roleLabelSearch(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1158,7 +1164,7 @@ export function roleLabelSearch(data) { ...@@ -1158,7 +1164,7 @@ export function roleLabelSearch(data) {
// 掌游标签列表 // 掌游标签列表
export function roleGetRoleLabel(data) { export function roleGetRoleLabel(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1171,7 +1177,7 @@ export function roleGetRoleLabel(data) { ...@@ -1171,7 +1177,7 @@ export function roleGetRoleLabel(data) {
} }
// 编辑角色标签 // 编辑角色标签
export function editRoleLabel(data) { export function editRoleLabel(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1185,7 +1191,7 @@ export function editRoleLabel(data) { ...@@ -1185,7 +1191,7 @@ export function editRoleLabel(data) {
// 编辑角色标签 // 编辑角色标签
export function getRoleLabelCreate(data) { export function getRoleLabelCreate(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1197,7 +1203,7 @@ export function getRoleLabelCreate(data) { ...@@ -1197,7 +1203,7 @@ export function getRoleLabelCreate(data) {
}) })
} }
export function ruleList(data) { export function ruleList(data) {
data.zw_user_id = zw_user_id data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => { return new Promise((resovle, reject) => {
cross_systemRequest({ cross_systemRequest({
system: 'zhangyou', system: 'zhangyou',
...@@ -1208,3 +1214,16 @@ export function ruleList(data) { ...@@ -1208,3 +1214,16 @@ export function ruleList(data) {
}) })
}) })
} }
// 查询客服未完成任务
export function getTaskTotal(data) {
data.zw_user_id = getZwUserId()
return new Promise((resovle, reject) => {
cross_systemRequest({
system: 'zhangyou',
api: '/api/operator_task/getTaskTotal',
params: data
}).then((res) => {
resovle(res)
})
})
}
...@@ -243,6 +243,14 @@ export function clearTaskUnReadData(data) { ...@@ -243,6 +243,14 @@ export function clearTaskUnReadData(data) {
data data
}) })
} }
// w账号绑定客户列表
export function memberBindExternalUser(data) {
return request({
url: returnApi('/cser_receipt/memberBindExternalUser'),
method: 'post',
data
})
}
// 删除共享信息 // 删除共享信息
export function shareInfoDel(data) { export function shareInfoDel(data) {
return request({ return request({
......
<template>
<el-drawer
:lock-scroll="true"
:title="title"
:visible="show"
:size="width"
:append-to-body="true"
@close="close"
>
<div class="layerConent">
<slot></slot>
<span class="dialog-footer rowFlex">
<el-button
class="btn"
type="primary"
size="small"
@click="submit"
>确 定</el-button>
<el-button
class="btn"
size="small"
@click="close"
>取 消</el-button>
</span>
</div>
</el-drawer>
</template>
<script type="text/javascript">
export default {
name: 'Layer',
props: ['show', 'width', 'title'],
data() {
return {
}
},
watch: {
show(newVal, oldVal) {
if (newVal) {
console.log('显示弹窗')
}
}
},
mounted() {
},
methods: {
close() {
this.$emit('update:show', false)
},
submit() {
this.$emit('confirm')
}
}
}
</script>
<style lang="scss" scoped>
// ::v-deep .el-drawer {
// height: 100%;
// overflow: 100%;
// overflow-x: hidden;
// over
// }
.layerConent{
width: 100%;
height: 100%;
overflow: auto;
padding-bottom: 100px;
padding-right: 20px;
}
.dialog-footer {
width: 100%;
height: auto;
position: absolute;
right: 0px;
bottom: 0px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 20px;
border-top: 1px solid rgba(0, 0, 0, 0.06);
justify-content: flex-end;
background: #fff;
.btn {
width: 84px;
height: 32px;
}
}
</style>
\ No newline at end of file
...@@ -83,6 +83,7 @@ function createScrollHandler(el, binding, vnode) { ...@@ -83,6 +83,7 @@ function createScrollHandler(el, binding, vnode) {
// 调用加载函数 // 调用加载函数
options.loadMore(); options.loadMore();
} }
}; };
} }
......
...@@ -11,7 +11,7 @@ import violationRecord from '../views/ViolationRecord.vue' ...@@ -11,7 +11,7 @@ import violationRecord from '../views/ViolationRecord.vue'
import taskRecord from '../views/taskRecord.vue' import taskRecord from '../views/taskRecord.vue'
import mailList from '@/views/mailList.vue' import mailList from '@/views/mailList.vue'
import quickSendGame from '@/views/quickSendGame.vue' import quickSendGame from '@/views/quickSendGame.vue'
// import taskList from '@/views/taskList.vue' import taskList from '@/views/taskList.vue'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import store from '@/store' import store from '@/store'
Vue.use(VueRouter) Vue.use(VueRouter)
...@@ -78,11 +78,11 @@ const routes = [ ...@@ -78,11 +78,11 @@ const routes = [
name: 'quickSendGame', name: 'quickSendGame',
component: quickSendGame component: quickSendGame
}, },
// { {
// path: '/taskList', path: '/taskList',
// name: 'taskList', name: 'taskList',
// component: taskList component: taskList
// }, },
{ {
path: '/login', path: '/login',
name: 'login', name: 'login',
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
// 管理公共的store // 管理公共的store
import { zyouBindMember } from '@/api/works' import { zyouBindMember } from '@/api/works'
import { getTaskTotal } from '@/api/game'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
// 从本地缓存获取accountSelect // 从本地缓存获取accountSelect
...@@ -15,6 +16,13 @@ const state = { ...@@ -15,6 +16,13 @@ const state = {
chatUserInfo: {}, // 当前选中的用户的详情 chatUserInfo: {}, // 当前选中的用户的详情
viewLoading:false, // 查看用户详情的时候 加载状态 viewLoading:false, // 查看用户详情的时候 加载状态
taskDetails: {}, // 任务详情 taskDetails: {}, // 任务详情
// 任务数据
taskData: {
user_task: 0,
account_task: 0,
operator_task: 0,
lastUpdateTime: null
},
} }
const mutations = { const mutations = {
...@@ -38,6 +46,13 @@ const mutations = { ...@@ -38,6 +46,13 @@ const mutations = {
}, },
set_taskDetails(state, data) { set_taskDetails(state, data) {
state.taskDetails = data state.taskDetails = data
},
// 设置任务数据
set_taskData(state, data) {
state.taskData = {
...data,
lastUpdateTime: Date.now()
}
} }
} }
...@@ -62,6 +77,46 @@ const actions = { ...@@ -62,6 +77,46 @@ const actions = {
}) })
}) })
}, },
// 获取任务数据
async getTaskUnReadData({ commit, rootState }) {
return new Promise( async (resolve, reject) => {
try {
// 确保用户信息存在
if (!rootState.user.userInfo || !rootState.user.userInfo.id) {
console.log('用户信息不存在,跳过任务数据获取')
return
}
const data = {
zw_user_id: rootState.user.userInfo.id
}
console.log('开始获取任务数据:', data)
const res = await getTaskTotal(data)
if (res.status_code === 1) {
// 使用真实的 API 响应数据
const responseData = res.data.data || {}
const taskData = {
user_task: responseData.user_num || 0,
account_task: responseData.member_num || 0,
operator_task: Number(responseData.user_num || 0) + Number(responseData.member_num || 0)
}
commit('set_taskData', taskData)
resolve(taskData)
return taskData
} else {
reject(res.msg)
console.error('获取任务数据失败:', res.msg)
}
} catch (error) {
reject(error)
console.error('获取任务数据异常:', error)
throw error
}
})
}
} }
export default { export default {
......
...@@ -76,7 +76,7 @@ const mutations = { ...@@ -76,7 +76,7 @@ const mutations = {
}, },
set_client_online_status(state, status) { set_client_online_status(state, status) {
state.client_online_status = status state.client_online_status = status
}, }
} }
const actions = { const actions = {
......
<template>
<div>
<el-drawer
:lock-scroll="true"
title="玩家申诉"
:visible="show"
size="100%"
:append-to-body="true"
@close="close"
>
<!-- 我的任务 -->
<div class="contet" v-loading="loading">
<div class="title">当前任务</div>
<div class="taskInfo rowFlex flexWarp columnCenter">
<div
v-for="(item, index) in detailsList"
:key="index"
class="taskInfoItem rowFlex"
>
<div
v-if="
item.value != 'plan_type' &&
item.value != 'target' &&
item.value != 'finished_event' &&
item.value != 'username'
"
class="rowFlex"
>
<div class="label">{{ item.label }}</div>
<div
v-if="item.type == 'money'"
class="value"
>
<p>
<span></span><span>{{ assionInfo[item.value] || 0 }}</span>
</p>
</div>
<div
v-else
class="value"
>
<span v-if="assionInfo[item.value]">{{
assionInfo[item.value] || ""
}}</span>
</div>
</div>
<div
v-else-if="item.value == 'plan_type'"
class="rowFlex"
>
<div class="label">{{ item.label }}</div>
<div class="value">
<span style="color: #0787f2">{{
taskTypeList.find((k) => k.value == assionInfo[item.value])
? taskTypeList.find((k) => k.value == assionInfo[item.value])
.label
: ""
}}</span>
</div>
</div>
<div
v-else-if="item.value == 'target'"
class="rowFlex"
>
<div class="label">{{ item.label }}</div>
<div class="value">
<span
v-if="assionInfo.target"
style="color: #0787f2"
>{{
assionInfo.target.first && assionInfo.target.first.is_finished
? "已完成"
: "未完成"
}}</span>
</div>
</div>
<div
v-else-if="item.value == 'finished_event'"
class="rowFlex"
>
<div class="label">{{ item.label }}</div>
<div
v-if="assionInfo.finished_event"
class="value"
>
<span
v-for="(item, index) in assionInfo.finished_event"
:key="index"
>
{{ item }}
</span>
</div>
</div>
<!-- w 账号 -->
<div
v-else-if="item.value == 'username'"
class="rowFlex"
>
<div class="label">{{ item.label }}</div>
<div
v-if="assionInfo.username && assionInfo.username.length > 0"
class="value"
>
<div
v-if="assionInfo.username.length <= 1"
class="rowFlex"
>
<div
v-for="(items, indexs) in assionInfo.username"
:key="indexs"
class="rowFlex userInfoStyle"
>
<p
class="textHidden rowFlex userAlias"
style="max-width:150px;"
>{{ items }}</p>
</div>
</div>
<el-popover
v-else
placement="top"
trigger="click"
>
<div style="max-width: 400px">
<p
v-for="(items, indexs) in assionInfo.username"
:key="indexs"
class="rowFlex columnCenter userInfoStyle"
style="margin-bottom: 10px"
>
<span
class="textHidden"
style="max-width:150px;"
>{{ items }}</span>
</p>
</div>
<el-button
slot="reference"
type="text"
size="medium"
style="margin-top: -10px"
>{{ assionInfo.username.length }}</el-button>
</el-popover>
</div>
</div>
</div>
</div>
<div class="contentInfo">
<div class="contentInfoItem rowFlex">
<div class="label">跟进状态</div>
<div
v-if="assionInfo.status == 1"
class="noSend"
>待跟进</div>
<div
v-else-if="assionInfo.status == 2"
class="noSend"
>跟进中</div>
<div
v-else-if="assionInfo.status == 3"
class="sended"
>已跟进</div>
</div>
<div v-if="remarks.remarks" class="remarks rowFlex flexWarp">
<div
v-for="(item, index) in remarks.remarks"
:key="index"
>
<div class="contentInfoItem rowFlex">
<div class="label">跟进时间</div>
<div class="value">{{ item.update_time }}</div>
</div>
<div class="contentInfoItem rowFlex">
<div class="label">备注</div>
<div class="value">
<div
class="remarkContent"
v-html="item.remark"
></div>
</div>
</div>
</div>
</div>
<!-- 发起会话 -->
<!-- 新增判断逻辑 根据 taskDetails 中的is_bind 判断 1:显示发起会话按钮 0:不显示发起会话按钮 -->
<div
v-if="kfhList && kfhList.length > 0 && assionInfo.status_name !== '已完成'"
class="kfhList rowFlex columnCenter flexWarp"
>
<div
v-for="(item, index) in kfhList"
:key="index"
class="sessionUserList "
>
<div style="margin-bottom: 10px" class="sessionUser">
<div class="kfhItem rowFlex spaceBetween">
<div class="left rowFlex columnCenter">
<el-image
:src="item.user.avatar"
class="image"
></el-image>
<div class="name">{{ item.user.alias }}</div>
</div>
<el-button
class="right"
type="primary"
size="small"
@click="requestSession(item)"
>发起会话</el-button>
</div>
<div class="wxUserInfo columnFlex">
<p>
<span>用户备注:</span>
<label style="word-break: break-all;">{{
item.external_user.remark || item.external_user.name
}}</label>
</p>
<p v-if="false">最近接待时间:{{ item.username }}</p>
</div>
</div>
</div>
</div>
<el-button
v-if="kfhList.length == 0 && taskDetails.status != 3 && !is_finished"
type="primary"
size="small"
style="margin-top: 20px"
@click="showLayer = true"
>完成任务</el-button>
</div>
</div>
</el-drawer>
<layer
:show.sync="showLayer"
title="填写跟进结果"
width="320px"
@confirm="onConfirm"
>
<div class="editLayer">
<el-form
ref="ruleForm"
:model="webForm"
label-position="top"
:rules="webFormRule"
label-width="100px"
>
<!-- 新增异常原因筛选 当 plan_type==5 5:为大R异跟进异常时 新增异常原因筛选 -->
<el-form-item
v-if="taskDetails.plan_type==5"
label="异常原因"
prop="abnormal_types"
>
<el-select
v-model="webForm.abnormal_types"
style="width: 100%"
placeholder="请选择"
multiple
collapse-tags
>
<el-option
v-for="item in errorTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label="跟进结果:"
prop="trace_result"
>
<el-select
v-model="webForm.trace_result"
style="width: 100%"
placeholder="请选择"
>
<el-option
v-for="item in traceList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label="备注:"
prop="remark"
>
<el-input
v-model="webForm.remark"
type="textarea"
style="width: 100%; height: 150px"
placeholder="备注请填写异常原因和异常类型,并列举后续维护策略/难以维护的原因"
></el-input>
</el-form-item>
</el-form>
</div>
</layer>
</div>
</template>
<script>
import { mapState, mapMutations } from 'vuex'
import {
taskRecord,
searchcondition,
memberOrder,
RoleTodayOrder,
taskDetails,
taskTrack,
} from '@/api/game'
import { memberBindExternalUser } from '@/api/works'
import layer from '@/components/dialog.vue'
export default {
computed: {
...mapState('game', ['taskDetails']),
...mapState('user', ['userInfo'])
},
components: {
layer
},
props: ['show'],
data() {
return {
is_finished: false,
loading: false,
remarks: [],
kfhList: {},
traceList: [],
taskTypeList: [],
errorTypeList: [],
approvalProcessList: [],
assionInfo: {},
current: 0,
showLayer: false,
dialogRemake: '',
webForm: {
trace_result: '',
remark: '',
abnormal_types: []
},
webFormRule: {
remark: [{ required: true, message: '请输入备注', trigger: 'blur' }],
trace_result: [
{ required: true, message: '请选择跟进结果', trigger: 'change' }
],
abnormal_types: [
{ required: true, message: '请选择异常原因', trigger: 'change' }
]
},
detailsList: [
{ label: '游戏名称', value: 'main_game_name' },
{ label: '计划名称', value: 'plan_name' },
{ label: 'CP角色ID', value: 'cp_role_id' },
{ label: '角色名称', value: 'role_name' },
{ label: '区服', value: 'server_name' },
{ label: '任务类型', value: 'plan_type' },
{ label: 'W账号', value: 'username' },
{ label: '角色充值金额', value: 'recharge_total', type: 'money' },
{ label: '用户累充金额', value: 'member_recharge', type: 'money' },
{ label: '今日充值金额', value: 'today_amount', type: 'money' },
{ label: '跟进人', value: 'tracer_name' },
{ label: '举报人角色', value: 'report_role_name' },
{ label: '米大师支付', value: 'm_pay_amount', type: 'money' },
{ label: 'H5支付', value: 'h5_pay_amount', type: 'money' },
{ label: 'IOS支付', value: 'ios_pay_amount', type: 'money' },
{ label: '待维护时间', value: 'assignment_time' },
{ label: '最近充值时间', value: 'last_pay_time' },
{ label: '最近登录时间', value: 'last_login_time' },
{ label: '任务截止时间', value: 'deadline_time' },
{ label: '任务状态', value: 'status_name' },
{ label: '目标完成状态', value: 'target' },
{ label: '马甲包', value: 'game_name' },
{ label: '完成事件', value: 'finished_event' },
{ label: '目标客服号', value: 'target_service_name' }
],
}
},
watch: {
taskDetails(newVal, oldVal) {
if (newVal.member_id) {
this.requestInit()
}
}
},
created() {
this.assionInfo = this.taskDetails
},
mounted() {
if (this.taskDetails.id) {
this.requestInit()
}
},
methods: {
...mapMutations('game', ['set_taskDetails', 'set_task_session_member_id']),
requestInit() {
this.current = 0
this.is_finished = false
this.assionInfo = this.taskDetails
this.taskRecord()
this.memberOrder()
this.requestTaskDetails()
this.searchTrackList()
// 只有状态是 5 的时候 才请求
if (this.taskDetails.plan_type == 5) {
this.searchconditionError()
}
},
close() {
this.$emit('update:show', false)
},
searchconditionError() {
const data = {
type: 'dictionaries',
table_name: 'zs_operator_task',
field_name: 'abnormal_type'
}
searchcondition(data).then((res) => {
this.errorTypeList = res.data.data
})
},
searchcondition() {
const data = {
type: 'dictionaries',
table_name: 'zs_operator_plan',
field_name: 'plan_type'
}
searchcondition(data).then((res) => {
this.taskTypeList = res.data.data
})
},
searchTrackList() {
const data = {
type: 'dictionaries',
table_name: 'zs_operator_task',
field_name: 'trace_result'
}
searchcondition(data).then((res) => {
this.traceList = res.data.data
})
},
// 完成任务
submitForm() {
const data = {
id: this.taskDetails.id,
trace_result: this.webForm.trace_result,
create_user: this.userInfo.username,
remark: this.webForm.remark,
abnormal_types: this.webForm.abnormal_types,
create_department: this.userInfo.department_name
}
taskTrack(data).then((res) => {
if (res.status_code == 1) {
this.$message.success(res.msg)
this.webForm = {
trace_result: '',
remark: '',
abnormal_types: []
}
this.is_finished = true
this.showLayer = false
}
})
},
onConfirm() {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
this.submitForm()
} else {
console.log('error submit!!')
}
})
},
requestTaskDetails() {
const data = {
id: this.taskDetails.id
}
taskDetails(data).then((res) => {
this.assionInfo = { ...res.data, ...this.assionInfo }
this.memberBindExternalUser()
if (this.assionInfo && this.assionInfo.username && this.assionInfo.username.indexOf('\n') !== -1) {
this.assionInfo.username = this.assionInfo.username.split('\n')
} else {
this.assionInfo.username = [this.assionInfo.username]
}
})
},
requestSession(item) {
this.$ww.openEnterpriseChat({
externalUserIds:item.external_userid,
success: (res) => {
console.log(res, '打开会话窗口成功')
},
fail: (err) => {
console.log(err, '打开会话窗口失败')
}
})
},
async memberOrder() {
let res = {}
if (!this.taskDetails.cp_role_id || this.taskDetails.cp_role_id == '') {
res = await memberOrder({ member_id: this.taskDetails.member_id })
} else {
res = await RoleTodayOrder({ role_id: this.taskDetails.role_id })
}
this.todayOrder = res.data[0]
this.assionInfo = { ...this.assionInfo, ...this.todayOrder }
},
async taskRecord() {
const res = await taskRecord({ task_id: this.taskDetails.id,user_type:'' })
console.log(res.data.data, 'res.data.data')
if(res.data.data.length > 0){
this.remarks = res.data.data[0].remarks
}else{
this.remarks = [{remark:''}]
}
},
async memberBindExternalUser() {
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]
}
this.loading = true
if (member_list.length === 0) {
return false
}
try {
const res = await memberBindExternalUser({
member_id: member_list.toString(),
is_bind: this.assionInfo.is_bind
})
this.kfhList = res.data
this.loading = false
} catch (error) {
this.loading = false
}
}
}
}
</script>
<style lang="scss" scoped>
.contet {
height: 100%;
background: #fff;
padding: 10px;
overflow: auto;
.title {
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
margin-bottom: 10px;
}
.taskInfo {
height: auto;
background: #f7f8fa;
border-radius: 4px;
padding-bottom: 3px;
padding-top: 10px;
position: relative;
.icon {
font-size: 52px;
}
.approval_status {
position: absolute;
top: 50%;
right: 20px;
transform: translateY(-50%);
}
.taskInfoItem {
width: 250px;
margin-bottom: 5px;
.label {
width: 100px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #99a3b4;
text-align: right;
margin-right: 10px;
}
.value {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
text-align: left;
}
}
}
.remarks {
margin-top: 20px;
}
.contentInfo {
margin-top: 20px;
.contentInfoItem {
margin-right: 40px;
margin-top: 10px;
.label {
width: 60px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #99a3b4;
text-align: right;
margin-right: 10px;
}
.remarkContent {
width: 200px;
height: auto;
::v-deep img {
max-width: 200px;
}
}
.value {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
text-align: left;
}
}
}
.kfhList {
width: 100%;
height: auto;
margin-top: 22px;
margin-bottom: 60px;
.sessionUser{
width: 100%;
height: auto;
background: #F8F8F8;
border-radius: 4px;
padding: 10px;
}
.wxUserInfo {
span{
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 14px;
color: #949FB0;
}
}
.kfhItem {
width: 330px;
background: #f8f8f8;
border-radius: 4px;
margin-right: 20px;
margin-bottom: 5px;
.left {
.image {
width: 30px;
height: 30px;
border-radius: 50%;
margin-right: 10px;
}
.name {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
}
}
}
.approvalProcessList {
margin-bottom: 20px;
margin-top: 20px;
}
// 掌游的样式
::v-deep.el-step .el-step__line {
width: 1px;
}
::v-deep .el-step > .is-success {
color: #00bf8a;
border-color: #00bf8a;
.el-step__line {
background-color: #e5e6eb;
}
}
::v-deep .el-step__main > .is-success {
color: #00bf8a;
}
::v-deep .el-step > .is-process {
color: #00bf8a;
border-color: #00bf8a;
.el-step__line {
background-color: #e5e6eb;
}
}
::v-deep .el-step__main > .is-process {
color: #00bf8a;
}
.form-item-btn {
margin: 0 0 0 20px;
}
.audit-label {
font-size: 14px;
font-weight: 800;
margin: 0 0 10px 0;
}
.remark-label {
color: #949fb0;
font-size: 14px;
}
.preview-btn {
cursor: pointer;
font-size: 14px;
color: #00bf8a;
margin: 0 0 0 10px;
i {
margin: 0 5px 0 0;
}
}
.remark-value {
width: 480px;
min-height: 100px;
margin: 10px 0 0 40px;
padding: 6px 12px;
border: 1px solid #d9d9d9;
border-radius: 4px;
cursor: not-allowed;
color: #333;
}
.flex-box {
display: flex;
.remark-lebel {
width: 50px;
text-align: right;
}
}
.refund-flow-drawer {
position: fixed;
top: 0;
right: 700px;
}
.btm-btn-box {
position: fixed;
bottom: 20px;
width: 560px;
height: 32px;
}
.audit-state {
width: 50px;
height: 50px;
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
z-index: 100;
.audit-state-stamp {
font-size: 50px;
}
}
.info-item {
width: 45%;
display: flex;
height: 18px;
margin: 0 0 12px 0;
}
.info-item-pic {
width: 100%;
min-height: 96px;
max-height: 192px;
display: flex;
.img-list {
width: 464px;
display: flex;
flex-wrap: wrap;
&-item {
width: 80px;
height: 80px;
border-radius: 4px;
overflow: hidden;
margin: 0 10px 10px 0;
position: relative;
.preview-pic {
width: 80px;
height: 80px;
background: rgba(0, 0, 0, 0.5);
position: absolute;
top: 0;
left: 0;
z-index: -1;
text-align: center;
line-height: 80px;
.preview-icon {
font-size: 16px;
color: #fff;
cursor: pointer;
}
}
.screenshot {
object-fit: center;
width: 80px;
height: 80px;
}
&:hover > .preview-pic {
z-index: 100;
}
}
}
}
.flex-btn {
display: flex;
justify-content: space-between;
}
.info-label {
// width: 90px;
// text-align: right;
display: block;
margin: 0 10px 0 0;
font-size: 14px;
color: #949fb0;
}
.info-value {
display: block;
font-size: 14px;
color: #333;
}
.card-style {
background: #f2f2f7;
border-radius: 4px;
}
.trans-follow-1 {
width: 548px;
min-height: fit-content;
margin: 6px 0 12px 0;
padding: 12px 12px 0;
display: flex;
flex-wrap: wrap;
position: relative;
.collapse-btn {
position: absolute;
top: 20px;
right: 15px;
}
.follow-item-remark {
width: 100%;
line-height: 20px;
margin: 0 0 12px 0;
}
.info-value-color {
color: #00bf8a;
margin-left: 5px;
}
}
.follow-item {
width: 50%;
height: 20px;
line-height: 20px;
margin: 0 0 12px 0;
display: flex;
.label-left {
width: 90px;
text-align: right;
}
}
.left-label {
width: 60px;
}
.follow-info-label {
width: fit-content;
text-align: left;
display: inline-block;
margin: 0 10px 0 0;
}
.info-value {
font-size: 14px;
color: #333;
}
.label-font {
font-size: 14px;
color: #949fb0;
}
.info-item-remark {
width: 100%;
padding: 0 0 12px 0;
line-height: 20px;
.info-label {
display: block;
}
.info-value {
display: block;
width: 440px;
}
}
}
.editLayer {
padding: 20px;
padding-right: 0;
::v-deep .el-textarea__inner {
height: 150px;
}
}
</style>
\ No newline at end of file
...@@ -3,10 +3,11 @@ ...@@ -3,10 +3,11 @@
<!-- <div class="detailsTitle rowFlex spaceBetween columnCenter"> <!-- <div class="detailsTitle rowFlex spaceBetween columnCenter">
<p>任务记录</p> <p>任务记录</p>
</div> --> </div> -->
<div class="account-task-container-content" v-scroll="requestOrderList" v-loading="loading"> <div class="account-task-container-content" v-scroll="requestOrderList">
<!-- 运营任务 和 用户任务 --> <!-- 运营任务 和 用户任务 -->
<div <div
class="orderDetailsScroll" class="orderDetailsScroll"
v-loading="loading"
> >
<div v-if="orderList.length > 0"> <div v-if="orderList.length > 0">
<div <div
...@@ -35,34 +36,32 @@ ...@@ -35,34 +36,32 @@
</div> </div>
</div> </div>
</template> </template>
<div class="item rowFlex columnCenter spaceBetween">
<div class="rowFlex columnCenter">
<span class="label">跟进客服</span>
<p class="text">{{ item.tracer_name }}</p>
</div>
</div>
<div class="item rowFlex columnCenter spaceBetween">
<div class="rowFlex">
<span class="label">待维护日期</span>
<p class="text">{{ item.assignment_time }}</p>
</div>
</div>
<div class="editLayer"> <div class="editLayer">
<el-form <el-form
:model="webForm" :model="webForm"
label-width="100px"
>
<el-form-item
label="跟进客服:"
>
<p class="text" style="margin-left: 10px;">{{ item.tracer_name || '--' }}</p>
</el-form-item>
<el-form-item
label="待维护日期:"
> >
<p class="text" style="margin-left: 10px;">{{ item.assignment_time }}</p>
</el-form-item>
<!-- 新增异常原因筛选 当 plan_type==5 5:为大R异跟进异常时 新增异常原因筛选 --> <!-- 新增异常原因筛选 当 plan_type==5 5:为大R异跟进异常时 新增异常原因筛选 -->
<el-form-item <el-form-item
v-if="taskInfo.plan_type && taskInfo.plan_type==5" v-if="taskInfo.plan_type && taskInfo.plan_type==5"
label="异常原因" label="异常原因"
prop="abnormal_types" prop="abnormal_types"
label-width="100px"
> >
<el-select <el-select
v-model="webForm.abnormal_types" v-model="webForm.abnormal_types"
style="width: 90%"
placeholder="请选择" placeholder="请选择"
multiple multiple
style="margin-left: 10px;"
collapse-tags collapse-tags
> >
<el-option <el-option
...@@ -77,12 +76,11 @@ ...@@ -77,12 +76,11 @@
<el-form-item <el-form-item
label="跟进结果:" label="跟进结果:"
prop="trace_result" prop="trace_result"
label-width="100px"
> >
<el-select <el-select
v-model="webForm.trace_result" v-model="webForm.trace_result"
style="width: 90%"
placeholder="请选择" placeholder="请选择"
style="margin-left: 10px;"
> >
<el-option <el-option
v-for="item in traceList" v-for="item in traceList"
...@@ -95,15 +93,17 @@ ...@@ -95,15 +93,17 @@
<el-form-item <el-form-item
v-if="activeType == 'user_task'" v-if="activeType == 'user_task'"
label="免打扰:" label="免打扰:"
label-width="80px"
prop="no_trouble" prop="no_trouble"
style="margin-left: 10px;"
> >
<div class="noDisturb">
<el-checkbox <el-checkbox
v-model="webForm.no_trouble" v-model="webForm.no_trouble"
class="noDisturb rowFlex allCenter" class="noDisturb rowFlex "
:true-label="1" :true-label="1"
:false-label="0" :false-label="0"
>免打扰(勾选后该用户不会再被分配任务)</el-checkbox> >免打扰(勾选后该用户不会再被分配任务)</el-checkbox>
</div>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
...@@ -114,17 +114,17 @@ ...@@ -114,17 +114,17 @@
class="item rowFlex columnCenter spaceBetween" class="item rowFlex columnCenter spaceBetween"
> >
<div <div
class="rowFlex spaceBetween" class="rowFlex spaceBetween remarkItem"
style="width: 100%;" style="width: 100%;"
> >
<span <span
class="label" style="margin-left: 40px;color: #999999;"
style="width: 50px"
>备注:</span> >备注:</span>
<div class="text rowFlex remark flex1"> <div class="remarkTxext rowFlex remark flex1">
<textEditor <textEditor
:remark.sync="remark.remark" :remark.sync="remark.remark"
:domid="'taskRemark' + indexs" :domid="'taskRemark' + indexs"
style="width: 100%;"
:contenteditable="!Boolean(remark.id)" :contenteditable="!Boolean(remark.id)"
@resultReamrk="resultReamrk" @resultReamrk="resultReamrk"
/> />
...@@ -167,6 +167,7 @@ ...@@ -167,6 +167,7 @@
</div> </div>
<div <div
v-else-if="!loading && orderList.length == 0" v-else-if="!loading && orderList.length == 0"
style="margin-top: 100px;"
class="noContent rowFlex allCenter" class="noContent rowFlex allCenter"
> >
<noContent /> <noContent />
...@@ -183,7 +184,7 @@ ...@@ -183,7 +184,7 @@
export default { export default {
components: { components: {
textEditor, textEditor,
noContent noContent,
}, },
data() { data() {
return { return {
...@@ -259,13 +260,13 @@ ...@@ -259,13 +260,13 @@
total: 0 total: 0
} }
this.orderList = [] this.orderList = []
this.requestOrderList() this.requestOrderList('msg')
} }
} }
}, },
mounted() { mounted() {
// this.gameMemberView() // this.gameMemberView()
this.requestOrderList() this.requestOrderList('msg')
this.searchcondition() this.searchcondition()
this.searchTrackList() this.searchTrackList()
this.searchconditionError() this.searchconditionError()
...@@ -405,7 +406,7 @@ ...@@ -405,7 +406,7 @@
no_trouble: 0 no_trouble: 0
} }
}, },
requestOrderList() { requestOrderList(msg = '') {
if (this.accountSelect == '') { if (this.accountSelect == '') {
this.$message.warning('暂无关联的账号,请先去关联账号!') this.$message.warning('暂无关联的账号,请先去关联账号!')
return false return false
...@@ -431,7 +432,7 @@ ...@@ -431,7 +432,7 @@
this.orderList.map((item) => { this.orderList.map((item) => {
!item.remarks || item.remarks.length === 0 ? (item.remarks = [{ remark: '' }]) : '' !item.remarks || item.remarks.length === 0 ? (item.remarks = [{ remark: '' }]) : ''
}) })
if (res.status_code == 1) { if (res.status_code == 1 && !msg) {
this.$message.success(res.msg) this.$message.success(res.msg)
} }
}, },
...@@ -450,6 +451,9 @@ ...@@ -450,6 +451,9 @@
background: #fff; background: #fff;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
::v-deep .el-form-item__content{
line-height: 32px;
}
.detailsTitle { .detailsTitle {
width: 100%; width: 100%;
padding: 0 10px; padding: 0 10px;
...@@ -481,7 +485,7 @@ ...@@ -481,7 +485,7 @@
color: #999999; color: #999999;
} }
} }
.item { .taskItem {
width: 100%; width: 100%;
height: auto; height: auto;
font-size: 14px; font-size: 14px;
...@@ -489,7 +493,6 @@ ...@@ -489,7 +493,6 @@
color: #333333; color: #333333;
transition: all 0.5s; transition: all 0.5s;
position: relative; position: relative;
cursor: pointer;
div { div {
width: 100%; width: 100%;
margin-bottom: 5px; margin-bottom: 5px;
...@@ -620,15 +623,13 @@ ...@@ -620,15 +623,13 @@
.money { .money {
width: 100%; width: 100%;
height: auto; height: auto;
padding-left: 10px;
.btns { .btns {
padding-right: 40px; margin-right: 20px;
} }
.btn { .btn {
background: #fff; background: #fff;
border-radius: 4px; border-radius: 4px;
padding: 2px 5px; padding: 2px 5px;
margin-left: 10px;
font-size: 12px; font-size: 12px;
border: 1px solid rgba(0, 0, 0, 0.15); border: 1px solid rgba(0, 0, 0, 0.15);
color: #333333; color: #333333;
...@@ -711,7 +712,14 @@ ...@@ -711,7 +712,14 @@
font-size: 16px; font-size: 16px;
font-weight: 500; font-weight: 500;
} }
.remarkTxext{
width: calc(100% - 120px);
margin-left: 10px;
}
.remarkItem{
margin-left: 40px;
position: relative;
}
::v-deep .el-collapse { ::v-deep .el-collapse {
border: none; border: none;
} }
...@@ -720,6 +728,7 @@ ...@@ -720,6 +728,7 @@
color: #333333; color: #333333;
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
padding: 0 5px;
/* 单行显示省略号 */ /* 单行显示省略号 */
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
...@@ -733,17 +742,22 @@ ...@@ -733,17 +742,22 @@
padding: 10px; padding: 10px;
} }
.editLayer { .editLayer {
margin-left: -20px; padding: 10px 0;
.noDisturb{ .noDisturb {
// 换行 display: flex;
white-space: wrap; align-items: center;
margin-top: 4px;
} }
::v-deep .el-form-item__label{ ::v-deep .el-form-item__label {
font-weight: normal; font-weight: normal;
color: #999999; color: #999999;
padding-right: 8px;
} }
::v-deep .el-form-item--small.el-form-item{ ::v-deep .el-form-item {
margin-bottom: 10px; margin-bottom: 14px;
}
::v-deep .el-select, ::v-deep .el-checkbox {
width: 100%;
} }
} }
} }
......
...@@ -4,24 +4,17 @@ ...@@ -4,24 +4,17 @@
<el-tabs v-model="taskForm.type" @tab-click="taskTypeChange"> <el-tabs v-model="taskForm.type" @tab-click="taskTypeChange">
<el-tab-pane v-for="(item, index) in typeList" :key="index" :label="item.label" :name="item.value + ''"> <el-tab-pane v-for="(item, index) in typeList" :key="index" :label="item.label" :name="item.value + ''">
<template slot="label"> <template slot="label">
<!-- 有数字 --> <!-- 有红点数字显示 badge -->
<div v-if="item.redNum && item.redNum > 0"> <div v-if="item.redNum && item.redNum > 0" class="tab-label-with-badge">
<el-badge is-dot class="badgeItem"> <el-badge :value="item.redNum" class="badgeItem">
<span>{{ item.label }}</span> <span>{{ item.label }}</span>
</el-badge> </el-badge>
<!-- <el-badge
v-else
:value="item.redNum"
class="badgeItem"
>
<span>{{ item.label }}</span>
</el-badge> -->
</div> </div>
<div v-else> <!-- 没有红点时正常显示标签 -->
<span class="badgeLabel">{{ item.label }}</span> <div v-else class="tab-label-normal">
<span>{{ item.label }}</span>
</div> </div>
</template> </template>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<!-- 运营任务 --> <!-- 运营任务 -->
...@@ -110,21 +103,7 @@ ...@@ -110,21 +103,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 +164,6 @@ ...@@ -185,48 +164,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,23 +171,21 @@ ...@@ -234,23 +171,21 @@
<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,
getTaskTotal
} from '@/api/game' } from '@/api/game'
import { getTaskUnReadData, clearTaskUnReadData } from '@/api/works' import { clearTaskUnReadData } from '@/api/works'
import { mapState, mapMutations } from 'vuex' import { mapState, mapMutations, mapActions } 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 +195,7 @@ import shenpi4 from '@/assets/icon/shenpi4.svg' ...@@ -260,6 +195,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: {
...@@ -273,18 +209,20 @@ export default { ...@@ -273,18 +209,20 @@ export default {
}, },
}, },
computed: { computed: {
...mapState('game', ['taskDetails', 'accountSelect']), ...mapState('game', ['taskDetails', 'accountSelect', 'taskData']),
...mapState('user', ['userInfo', 'corp_id']) ...mapState('user', ['userInfo', 'corp_id'])
}, },
components: { components: {
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 +285,6 @@ export default { ...@@ -347,21 +285,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,
...@@ -421,7 +344,6 @@ export default { ...@@ -421,7 +344,6 @@ export default {
} }
}, },
created() { created() {
this.getTaskUnReadData()
this.reportForm.create_time_start = this.$moment().subtract(30, 'days').format('YYYY-MM-DD 00:00:00') this.reportForm.create_time_start = this.$moment().subtract(30, 'days').format('YYYY-MM-DD 00:00:00')
this.reportForm.create_time_end = this.$moment().format('YYYY-MM-DD 23:59:59') this.reportForm.create_time_end = this.$moment().format('YYYY-MM-DD 23:59:59')
this.reportForm.createTimeDate = [this.reportForm.create_time_start, this.reportForm.create_time_end] this.reportForm.createTimeDate = [this.reportForm.create_time_start, this.reportForm.create_time_end]
...@@ -431,22 +353,25 @@ export default { ...@@ -431,22 +353,25 @@ export default {
this.requstPlanList('') this.requstPlanList('')
}, },
mounted() { mounted() {
// 进入任务列表页面时重新请求任务数据,刷新红点状态
const taskForm = window.sessionStorage.getItem('newTaskForm') const taskForm = window.sessionStorage.getItem('newTaskForm')
if (taskForm) { if (taskForm) {
const form = JSON.parse(taskForm) const form = JSON.parse(taskForm)
!form.type || form.type == '' ? (form.type = '1') : form.type = form.type + '' !form.type || form.type == '' ? (form.type = '1') : form.type = form.type + ''
// if (form.assignment_time_start == '') {
// form.timeDate = [this.$moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00'), this.$moment().format('YYYY-MM-DD 23:59:59')]
// form.assignment_time_start = this.$moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00')
// form.assignment_time_end = this.$moment().format('YYYY-MM-DD 00:00:00')
// }
this.taskForm = form this.taskForm = form
} }
this.requestList() this.requestList()
this.searchcondition() this.searchcondition()
this.requstApprovalList() this.requstApprovalList()
this.initializeWecom()
this.$nextTick(() => {
this.refreshTaskData()
})
}, },
methods: { methods: {
...mapActions('user', ['initWecom']),
...mapActions('game', ['getTaskUnReadData']),
...mapMutations('game', ['set_taskDetails']), ...mapMutations('game', ['set_taskDetails']),
filterChange() { filterChange() {
this.pageInfo.page = 1 this.pageInfo.page = 1
...@@ -454,23 +379,50 @@ export default { ...@@ -454,23 +379,50 @@ export default {
this.isMoreRecord = true this.isMoreRecord = true
this.requestList() this.requestList()
}, },
// 获取更新 async initializeWecom() {
getTaskUnReadData() { try {
let taskNum = {} console.log('🚀 开始初始化企业微信 SDK')
getTaskUnReadData().then(res => { const result = await this.initWecom()
if (res.status_code === 1) { console.log('✅ 企业微信 SDK 初始化成功', result)
taskNum = res.data } catch (error) {
this.typeList.map(item => { console.error('❌ 企业微信 SDK 初始化失败:', error)
for (const key in taskNum) {
if (item.type == key) {
item.redNum = taskNum[key]
} }
},
// 刷新任务数据
async refreshTaskData() {
try {
console.log('taskList.vue 刷新任务数据')
// 重新请求任务数据接口,更新 Vuex 状态
await this.getTaskUnReadData()
console.log('任务数据刷新成功')
// 更新本地显示(这里调用本地的方法来更新 typeList 显示)
this.updateLocalTaskDisplay()
} catch (error) {
console.error('刷新任务数据失败:', error)
} }
}) },
this.typeList[0].redNum = 0 // 更新本地任务显示
this.$forceUpdate() updateLocalTaskDisplay() {
// 直接使用 Vuex 中存储的任务数据
const taskData = this.taskData
console.log(taskData, 'taskData')
const taskNum = {
operator_task: taskData.operator_task || 0,
user_task: taskData.user_task || 0,
account_task: taskData.account_task || 0
}
// 更新 typeList 中的红点数量
this.typeList.forEach(item => {
// 重置红点数量
item.redNum = 0
// 根据任务类型设置红点数量
if (taskNum[item.type] && taskNum[item.type] > 0) {
item.redNum = taskNum[item.type]
} }
}) })
this.$forceUpdate()
}, },
iconSort(type) { iconSort(type) {
if (type == 'top') { if (type == 'top') {
...@@ -499,18 +451,9 @@ export default { ...@@ -499,18 +451,9 @@ export default {
taskTypeChange() { taskTypeChange() {
this.reportForm.create_time_start = this.$moment().subtract(30, 'days').format('YYYY-MM-DD 00:00:00') this.reportForm.create_time_start = this.$moment().subtract(30, 'days').format('YYYY-MM-DD 00:00:00')
this.reportForm.create_time_end = this.$moment().format('YYYY-MM-DD 23:59:59') this.reportForm.create_time_end = this.$moment().format('YYYY-MM-DD 23:59:59')
const tabItem = this.typeList.find((item) => item.value == this.taskForm.type)
this.loading = true this.loading = true
this.set_taskDetails({}) this.set_taskDetails({})
this.filterChange() this.filterChange()
if (tabItem.redNum > 0) {
this.clearTaskUnReadData(tabItem.type)
}
},
// 清除红点
async clearTaskUnReadData(type) {
const res = await clearTaskUnReadData({ type: type })
this.getTaskUnReadData()
}, },
mainGameResult(data) { mainGameResult(data) {
this.taskForm.main_game_id = [data] this.taskForm.main_game_id = [data]
...@@ -575,6 +518,7 @@ export default { ...@@ -575,6 +518,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 +540,6 @@ export default { ...@@ -596,12 +540,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 +639,9 @@ export default { ...@@ -701,9 +639,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 +652,6 @@ export default { ...@@ -714,121 +652,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>
...@@ -1036,12 +859,21 @@ export default { ...@@ -1036,12 +859,21 @@ export default {
} }
.badgeItem { .badgeItem {
::v-deep .is-dot {
top: 8px;
}
::v-deep .el-badge__content { ::v-deep .el-badge__content {
top: 8px; top: 12px !important;
right: -2px !important;
} }
::v-deep .el-badge__content.is-dot {
top: 10px !important;
right: -2px !important;
width: 8px !important;
height: 8px !important;
}
}
.tab-label-normal {
display: inline-block;
} }
.badgeLabel { .badgeLabel {
......
...@@ -459,30 +459,18 @@ export default { ...@@ -459,30 +459,18 @@ export default {
margin-left: 2px; margin-left: 2px;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
.detailsTitle {
width: 100%;
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
border-bottom: 1px solid #ebeef5;
border-left: 1px solid #ebeef5;
p {
color: #333333;
}
}
.account-task-container-content { .account-task-container-content {
width: 100%; width: 100%;
height: calc(100% - 60px); height: 100%;
padding: 20px 10px; padding: 20px 10px 0;
padding-top: 0px;
.tabSelect { .tabSelect {
width: 100%; width: 100%;
height: 60px; height: 60px;
border-bottom: 1px solid #ebeef5; border-bottom: 1px solid #ebeef5;
cursor: pointer; cursor: pointer;
.tabSelectItem { .tabSelectItem {
font-size: 18px; font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
...@@ -492,167 +480,37 @@ export default { ...@@ -492,167 +480,37 @@ export default {
line-height: 47px; line-height: 47px;
cursor: pointer; cursor: pointer;
} }
.tabSelectItemActive { .tabSelectItemActive {
color: #409EFF; color: #409EFF;
border-bottom: 2px solid #409EFF; border-bottom: 2px solid #409EFF;
} }
} }
.contentItem {
position: relative;
.title {
position: absolute;
left: 10px;
top: 14px;
font-size: 14px;
color: #999999;
}
}
.item {
width: 100%;
height: auto;
font-size: 14px;
font-weight: 400;
color: #333333;
transition: all 0.5s;
position: relative;
cursor: pointer;
div {
width: 100%;
margin-bottom: 5px;
}
.remark {
::v-deep .el-textarea__inner {
height: 80px;
}
}
.tableImage {
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: 10px;
}
.label {
color: #999999;
}
.text {
color: #333333;
margin-left: 10px;
word-break: break-all;
max-width: 75%;
}
.icon {
display: none;
position: absolute;
right: 0;
top: 12px;
}
.dianFail {
display: inline-block;
width: 8px;
height: 8px;
background: #f45454;
border-radius: 5px;
}
.dian {
display: inline-block;
width: 8px;
height: 8px;
background: #409EFF;
border-radius: 5px;
}
.dian2 {
display: inline-block;
width: 8px;
height: 8px;
background: #ff9d02;
border-radius: 5px;
}
}
.orderMoney {
width: calc(100% + 40px);
height: 80px;
// margin-left: -20px;
padding: 10px 0;
.orderMoneyItem {
width: 50%;
text-align: center;
margin-top: 5px;
span {
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
}
p {
font-size: 22px;
color: #409EFF;
}
}
}
.filterList {
margin-bottom: 10px;
.filterListInput {
width: 60%;
margin-left: 15px;
margin-bottom: 10px;
}
.filterListDate {
width: 150px;
margin-bottom: 10px;
}
::v-deep .search-item .item-label {
margin-right: 20px;
}
}
.orderDetailsScroll { .orderDetailsScroll {
width: 100%; width: 100%;
height: calc(100% - 20px); height: calc(100% - 80px);
overflow: auto; overflow: auto;
overflow-x: hidden; overflow-x: hidden;
} }
.orderDetails { .orderDetails {
width: 100%; width: 100%;
height: auto;
margin-top: 20px; margin-top: 20px;
position: relative; position: relative;
.bridgeMain {
position: absolute;
top: 0px;
right: 0px;
width: 50px;
height: 50px;
.text {
font-size: 8px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ff9d02;
transform: rotate(48deg);
z-index: 100;
position: absolute;
right: -6px;
top: 10px;
width: 50px;
text-align: center;
}
.bridge {
font-size: 50px;
position: absolute;
top: 0;
right: 0;
}
}
.orderDetailsTitle { .orderDetailsTitle {
width: 100%; width: 100%;
background: #f9faff; background: #f9faff;
.money { .money {
width: 100%; width: 100%;
height: auto;
padding-left: 10px; padding-left: 10px;
.btns { .btns {
padding-right: 40px; padding-right: 40px;
} }
.btn { .btn {
background: #fff; background: #fff;
border-radius: 4px; border-radius: 4px;
...@@ -663,20 +521,7 @@ export default { ...@@ -663,20 +521,7 @@ export default {
color: #333333; color: #333333;
cursor: pointer; cursor: pointer;
} }
.btnnot {
background: #ffdddd;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #f56c6c;
border: none;
}
.btnsuccess {
background: #e1fff0;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #409EFF;
border: none;
}
.sended { .sended {
padding: 0 8px; padding: 0 8px;
height: 20px; height: 20px;
...@@ -688,6 +533,7 @@ export default { ...@@ -688,6 +533,7 @@ export default {
font-weight: 400; font-weight: 400;
color: #409EFF; color: #409EFF;
} }
.noSend { .noSend {
padding: 0 8px; padding: 0 8px;
height: 20px; height: 20px;
...@@ -700,6 +546,7 @@ export default { ...@@ -700,6 +546,7 @@ export default {
color: #ffa81d; color: #ffa81d;
} }
} }
.text { .text {
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
...@@ -707,53 +554,105 @@ export default { ...@@ -707,53 +554,105 @@ export default {
color: #333333; color: #333333;
max-width: 200px; max-width: 200px;
overflow: hidden; overflow: hidden;
white-space: nowrap; /* 防止文字换行 */ white-space: nowrap;
text-overflow: ellipsis; /* 超出部分显示省略号 */ text-overflow: ellipsis;
} }
} }
.orderDetailsList { .orderDetailsList {
width: 100%; width: 100%;
height: auto;
background: #ffffff; background: #ffffff;
border: 1px solid #ebeef5; border: 1px solid #ebeef5;
position: relative; position: relative;
.titleFix { }
position: absolute; }
left: 10px;
top: 20px; .item {
width: 100%;
font-size: 14px;
font-weight: 400;
color: #333333;
position: relative;
.remark {
::v-deep .el-textarea__inner {
height: 80px;
}
}
.label {
color: #999999; color: #999999;
} }
.text {
color: #333333;
margin-left: 10px;
word-break: break-all;
max-width: 75%;
} }
} }
} }
.remarkHandle { .remarkHandle {
font-size: 20px; font-size: 20px;
color: #0ac358; color: #0ac358;
cursor: pointer; cursor: pointer;
margin-right: 5px; margin-right: 5px;
position:absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
} }
::v-deep .el-tabs__item {
line-height: 26px;
font-size: 16px;
font-weight: 500;
}
.editLayer { .editLayer {
margin-left: -20px; padding: 10px 0;
.noDisturb{
// 换行 .noDisturb {
white-space: wrap; display: flex;
align-items: center;
flex-wrap: wrap;
} }
::v-deep .el-form-item__label{
::v-deep .el-form-item__label {
font-weight: normal; font-weight: normal;
color: #999999; color: #999999;
padding-right: 8px;
} }
::v-deep .el-form-item--small.el-form-item{
margin-bottom: 10px; ::v-deep .el-form-item {
margin-bottom: 14px;
}
::v-deep .el-select {
width: 100%;
max-width: 90%;
} }
}
}
::v-deep .el-checkbox {
width: 100%;
}
}
::v-deep .el-collapse {
border: none;
}
::v-deep .el-collapse-item__header {
width: 100%;
color: #333333;
font-size: 14px;
font-weight: 400;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
::v-deep .el-collapse-item__arrow {
position: absolute;
right: 5px;
}
::v-deep .el-collapse-item__content {
padding: 10px;
}
}
</style> </style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论