Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
company_app
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
毛细亚
company_app
Commits
0e68a3a4
提交
0e68a3a4
authored
5月 27, 2025
作者:
毛细亚
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改完成
上级
7b9700d4
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
89 行增加
和
33 行删除
+89
-33
App.vue
src/App.vue
+17
-26
user.js
src/api/user.js
+8
-0
works.js
src/api/works.js
+11
-0
index.js
src/router/index.js
+5
-0
auth.js
src/utils/auth.js
+1
-0
bindUserList.vue
src/views/components/bindGameAccount/bindUserList.vue
+21
-2
Info.vue
src/views/userInfo/components/Info.vue
+21
-3
gameUserInfo.vue
src/views/userInfo/components/gameInfo/gameUserInfo.vue
+0
-1
userInfo.vue
src/views/userInfo/userInfo.vue
+5
-1
没有找到文件。
src/App.vue
浏览文件 @
0e68a3a4
<
template
>
<div
id=
"app"
class=
"mobile-app-wrapper"
>
<!-- 详细的调试信息 -->
<div
style=
"background: #f0f0f0; padding: 10px; font-size: 12px; border-bottom: 1px solid #ccc;"
>
<div>
Token:
{{
token
}}
(
{{
typeof
token
}}
)
</div>
<div>
External User ID:
{{
external_userid
}}
(
{{
typeof
external_userid
}}
)
</div>
<div>
Show Member ID:
{{
showMemberId
}}
(
{{
typeof
showMemberId
}}
)
</div>
<div>
Selected Path:
{{
selectedPath
}}
</div>
<div>
Current Route:
{{
$route
.
path
}}
</div>
<div>
Condition Result:
{{
!!
(
token
&&
external_userid
&&
showMemberId
)
}}
</div>
</div>
<div
class=
"mobile-menu-bar"
v-if=
"token && external_userid && showMemberId"
>
<!-- 临时调试信息 -->
<div
style=
"font-size: 12px; color: #666; padding: 5px;"
>
Token:
{{
token
?
'✓'
:
'✗'
}}
| ExternalUserId:
{{
external_userid
?
'✓'
:
'✗'
}}
</div>
<el-menu
:default-active=
"selectedPath"
mode=
"horizontal"
...
...
@@ -39,6 +27,7 @@
import
bindUserList
from
'@/views/components/bindGameAccount/bindUserList.vue'
import
{
getToken
}
from
'@/utils/auth'
import
{
mapState
}
from
'vuex'
import
Cookies
from
'js-cookie'
export
default
{
name
:
'App'
,
components
:
{
...
...
@@ -51,10 +40,10 @@ export default {
label
:
'客户信息'
,
path
:
'/userInfo'
},
{
label
:
'快捷回复'
,
path
:
'/quickReply'
},
//
{
//
label: '快捷回复',
//
path: '/quickReply'
//
},
// {
// label: '礼包记录',
// path: '/giftRecord'
...
...
@@ -74,11 +63,10 @@ export default {
],
selectedPath
:
'/userInfo'
,
showMemberId
:
false
,
token
:
getToken
()
}
},
computed
:{
...
mapState
(
'user'
,[
'external_userid'
])
...
mapState
(
'user'
,[
'external_userid'
,
'token'
]),
},
watch
:
{
'$route.path'
(
val
)
{
...
...
@@ -96,7 +84,7 @@ export default {
if
(
newVal
)
{
this
.
$nextTick
(()
=>
{
this
.
showMemberId
=
true
console
.
log
(
'external_userid 已设置:'
,
newVal
,
window
.
location
.
href
,
this
.
token
)
console
.
log
(
'external_userid 已设置:'
,
newVal
,
window
.
location
.
href
,
this
.
token
,
Cookies
.
get
(
'token'
)
)
// 强制更新组件
this
.
$forceUpdate
()
})
...
...
@@ -105,7 +93,7 @@ export default {
immediate
:
true
}
},
crea
ted
()
{
moun
ted
()
{
// 初始化时处理路径
const
currentPath
=
this
.
$route
.
path
if
(
currentPath
===
'/'
||
currentPath
===
''
||
currentPath
===
'/index.html'
)
{
...
...
@@ -130,8 +118,7 @@ export default {
background
:
#fff
;
}
.mobile-app-wrapper
{
max-width
:
380px
;
min-width
:
360px
;
width
:
100%
;
margin
:
0
auto
;
background
:
#f0f2f5
;
min-height
:
100vh
;
...
...
@@ -149,18 +136,22 @@ export default {
border
:
none
;
background
:
#fff
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
flex-start
;
padding-left
:
16px
;
}
.mobile-menu-item
{
font-size
:
14px
;
padding
:
0
8
px
!important
;
padding
:
0
16
px
!important
;
min-width
:
0
;
flex
:
1
1
0
;
flex
:
none
;
width
:
auto
;
max-width
:
120px
;
text-align
:
center
;
margin-right
:
8px
;
transition
:
all
0.3s
ease
;
}
.mobile-el-menu
.el-menu-item.is-active
{
font-weight
:
bold
;
border-radius
:
6px
6px
0
0
;
}
.mobile-content
{
flex
:
1
;
...
...
src/api/user.js
浏览文件 @
0e68a3a4
...
...
@@ -52,4 +52,12 @@ export function companyviewConfig(data) {
data
})
}
// 下线
export
function
logout
(
data
)
{
return
request
({
url
:
'/sidebar/work_wei_xin/logout'
,
method
:
'post'
,
data
})
}
src/api/works.js
浏览文件 @
0e68a3a4
...
...
@@ -62,3 +62,13 @@ export function toTransfer(data) {
data
})
}
// 修改用户信息
export
function
editUser
(
data
)
{
return
request
({
url
:
returnApi
(
'/external_user/edit'
),
method
:
'post'
,
data
})
}
\ No newline at end of file
src/router/index.js
浏览文件 @
0e68a3a4
...
...
@@ -84,6 +84,11 @@ router.beforeEach((to, from, next) => {
const
cser_id
=
Cookies
.
get
(
'cser_id'
)
const
token
=
Cookies
.
get
(
'token'
)
const
urlParams
=
getParams
();
// 本地测试数据
if
(
Cookies
.
get
(
'external_userid'
)){
store
.
state
.
user
.
external_userid
=
Cookies
.
get
(
'external_userid'
)
}
if
(
needAuth
)
{
if
(
wecomUserId
&&
token
&&
store
.
state
.
user
.
external_userid
)
{
// 登录信息齐全,允许进入
...
...
src/utils/auth.js
浏览文件 @
0e68a3a4
...
...
@@ -7,6 +7,7 @@ export function getToken() {
}
export
function
setToken
(
token
)
{
store
.
state
.
user
.
token
=
token
return
Cookies
.
set
(
TokenKey
,
token
,
{
expires
:
time
})
}
...
...
src/views/components/bindGameAccount/bindUserList.vue
浏览文件 @
0e68a3a4
...
...
@@ -25,6 +25,7 @@
<
script
type=
"text/javascript"
>
import
{
detailsInfoRequest
}
from
'@/api/works'
import
{
memberView
}
from
'@/api/game'
import
{
logout
}
from
'@/api/user'
import
{
mapState
,
mapMutations
,
mapActions
}
from
'vuex'
import
addUser
from
'./addUser.vue'
import
{
getToken
,
removeToken
}
from
'@/utils/auth'
...
...
@@ -103,8 +104,7 @@ export default {
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
removeToken
()
window
.
location
.
href
=
window
.
location
.
origin
+
'/company_app/index.html?corp_id='
+
this
.
corp_id
this
.
userLogout
()
}).
catch
(()
=>
{
this
.
$message
({
type
:
'info'
,
...
...
@@ -112,6 +112,25 @@ export default {
})
})
},
async
userLogout
(){
const
data
=
{
userid
:
this
.
userid
,
}
const
res
=
await
logout
(
data
)
if
(
res
.
status_code
===
1
){
this
.
$message
({
type
:
'success'
,
message
:
'下线成功'
})
removeToken
()
window
.
location
.
href
=
window
.
location
.
origin
+
'/company_app/index.html?corp_id='
+
this
.
corp_id
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
'下线失败'
})
}
},
addNewUser
()
{
console
.
log
(
11
)
},
...
...
src/views/userInfo/components/Info.vue
浏览文件 @
0e68a3a4
...
...
@@ -163,7 +163,7 @@
/>
</div>
-->
<!-- 共享信息 -->
<shareInfo
:chat-user-details=
"chatUserDetails"
v-if=
"false"
/>
<shareInfo
:chat-user-details=
"chatUserDetails"
/>
</div>
</div>
</div>
...
...
@@ -183,7 +183,7 @@
import
changePhone
from
'./changePhone.vue'
import
watchMember
from
'@/mixins/watchMember'
import
{
zyouUnBind
,
autoResetPassword
,
bindUserSelfAdd
}
from
'@/api/game'
import
{
memberBindCser
}
from
'@/api/works'
import
{
memberBindCser
,
editUser
}
from
'@/api/works'
export
default
{
name
:
'UserDetailsPanel'
,
components
:
{
...
...
@@ -329,8 +329,26 @@ import watchMember from '@/mixins/watchMember'
},
// 处理备注输入
handleInputRemark
(
val
)
{
this
.
$emit
(
'update-remark'
,
val
)
this
.
showInputRemark
=
false
this
.
chatUserDetails
.
remark
=
this
.
showInputRemarkValue
const
data
=
{
userid
:
this
.
chatUserDetails
.
userid
,
external_userid
:
this
.
chatUserDetails
.
external_userid
,
remark
:
this
.
chatUserDetails
.
remark
,
self_defined_columns
:
this
.
chatUserDetails
.
self_defined_columns
,
tag_group
:
this
.
chatUserDetails
.
tag_group
}
this
.
editUserInfo
(
data
)
},
editUserInfo
(
data
)
{
editUser
(
data
).
then
((
res
)
=>
{
if
(
res
.
status_code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
res
.
msg
})
}
})
},
// 显示自定义列输入
inputShow
(
item
,
index
)
{
...
...
src/views/userInfo/components/gameInfo/gameUserInfo.vue
浏览文件 @
0e68a3a4
...
...
@@ -372,7 +372,6 @@ import { debounce } from '@/utils'
<
style
lang=
"scss"
scoped
>
.gameUserDetails
{
width
:
100%
;
padding-bottom
:
50px
;
.changeUser{
font-size
:
18px
;
transform
:
rotate
(
90deg
);
...
...
src/views/userInfo/userInfo.vue
浏览文件 @
0e68a3a4
...
...
@@ -2,9 +2,13 @@
<div
class=
"userInfo-content"
>
<!-- 用 el-tabs 有三个 tab 分别是 客户资料 角色信息 违规记录 用 v-for 循环 -->
<el-tabs
v-model=
"activeTab"
>
<el-tab-pane
v-for=
"item in tabList"
:key=
"item.name"
:label=
"item.name"
:name=
"item.value
"
>
<el-tab-pane
label=
"客户资料"
name=
"userInfo
"
>
<Info
v-if=
"activeTab === 'userInfo'"
:chatUserDetails=
"chatUserInfo"
/>
</el-tab-pane>
<el-tab-pane
label=
"角色信息"
name=
"roleInfo"
>
<RoleInfo
v-if=
"activeTab === 'roleInfo'"
/>
</el-tab-pane>
<el-tab-pane
label=
"违规记录"
name=
"violationRecord"
>
<ViolationRecord
v-if=
"activeTab === 'violationRecord'"
/>
</el-tab-pane>
</el-tabs>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论