提交 0e68a3a4 作者: 毛细亚

修改完成

上级 7b9700d4
<template> <template>
<div id="app" class="mobile-app-wrapper"> <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 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 <el-menu
:default-active="selectedPath" :default-active="selectedPath"
mode="horizontal" mode="horizontal"
...@@ -39,6 +27,7 @@ ...@@ -39,6 +27,7 @@
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 } from 'vuex' import { mapState } from 'vuex'
import Cookies from 'js-cookie'
export default { export default {
name: 'App', name: 'App',
components: { components: {
...@@ -51,10 +40,10 @@ export default { ...@@ -51,10 +40,10 @@ export default {
label: '客户信息', label: '客户信息',
path: '/userInfo' path: '/userInfo'
}, },
{ // {
label: '快捷回复', // label: '快捷回复',
path: '/quickReply' // path: '/quickReply'
}, // },
// { // {
// label: '礼包记录', // label: '礼包记录',
// path: '/giftRecord' // path: '/giftRecord'
...@@ -74,11 +63,10 @@ export default { ...@@ -74,11 +63,10 @@ export default {
], ],
selectedPath: '/userInfo', selectedPath: '/userInfo',
showMemberId: false, showMemberId: false,
token: getToken()
} }
}, },
computed:{ computed:{
...mapState('user',['external_userid']) ...mapState('user',['external_userid','token']),
}, },
watch: { watch: {
'$route.path'(val) { '$route.path'(val) {
...@@ -96,7 +84,7 @@ export default { ...@@ -96,7 +84,7 @@ export default {
if (newVal) { if (newVal) {
this.$nextTick(() => { this.$nextTick(() => {
this.showMemberId = true 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() this.$forceUpdate()
}) })
...@@ -105,7 +93,7 @@ export default { ...@@ -105,7 +93,7 @@ export default {
immediate: true immediate: true
} }
}, },
created() { mounted() {
// 初始化时处理路径 // 初始化时处理路径
const currentPath = this.$route.path const currentPath = this.$route.path
if (currentPath === '/' || currentPath === '' || currentPath === '/index.html') { if (currentPath === '/' || currentPath === '' || currentPath === '/index.html') {
...@@ -130,8 +118,7 @@ export default { ...@@ -130,8 +118,7 @@ export default {
background: #fff; background: #fff;
} }
.mobile-app-wrapper { .mobile-app-wrapper {
max-width: 380px; width: 100%;
min-width: 360px;
margin: 0 auto; margin: 0 auto;
background: #f0f2f5; background: #f0f2f5;
min-height: 100vh; min-height: 100vh;
...@@ -149,18 +136,22 @@ export default { ...@@ -149,18 +136,22 @@ export default {
border: none; border: none;
background: #fff; background: #fff;
display: flex; display: flex;
justify-content: space-between; justify-content: flex-start;
padding-left: 16px;
} }
.mobile-menu-item { .mobile-menu-item {
font-size: 14px ; font-size: 14px ;
padding: 0 8px !important; padding: 0 16px !important;
min-width: 0; min-width: 0;
flex: 1 1 0; flex: none;
width: auto;
max-width: 120px;
text-align: center; text-align: center;
margin-right: 8px;
transition: all 0.3s ease;
} }
.mobile-el-menu .el-menu-item.is-active { .mobile-el-menu .el-menu-item.is-active {
font-weight: bold; font-weight: bold;
border-radius: 6px 6px 0 0;
} }
.mobile-content { .mobile-content {
flex: 1; flex: 1;
......
...@@ -52,4 +52,12 @@ export function companyviewConfig(data) { ...@@ -52,4 +52,12 @@ export function companyviewConfig(data) {
data data
}) })
} }
// 下线
export function logout(data) {
return request({
url: '/sidebar/work_wei_xin/logout',
method: 'post',
data
})
}
...@@ -62,3 +62,13 @@ export function toTransfer(data) { ...@@ -62,3 +62,13 @@ export function toTransfer(data) {
data data
}) })
} }
// 修改用户信息
export function editUser(data) {
return request({
url: returnApi('/external_user/edit'),
method: 'post',
data
})
}
\ No newline at end of file
...@@ -84,6 +84,11 @@ router.beforeEach((to, from, next) => { ...@@ -84,6 +84,11 @@ router.beforeEach((to, from, next) => {
const cser_id = Cookies.get('cser_id') const cser_id = Cookies.get('cser_id')
const token = Cookies.get('token') const token = Cookies.get('token')
const urlParams = getParams(); const urlParams = getParams();
// 本地测试数据
if(Cookies.get('external_userid')){
store.state.user.external_userid = Cookies.get('external_userid')
}
if (needAuth) { if (needAuth) {
if (wecomUserId && token && store.state.user.external_userid) { if (wecomUserId && token && store.state.user.external_userid) {
// 登录信息齐全,允许进入 // 登录信息齐全,允许进入
......
...@@ -7,6 +7,7 @@ export function getToken() { ...@@ -7,6 +7,7 @@ export function getToken() {
} }
export function setToken(token) { export function setToken(token) {
store.state.user.token = token
return Cookies.set(TokenKey, token, { expires: time }) return Cookies.set(TokenKey, token, { expires: time })
} }
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
<script type="text/javascript"> <script type="text/javascript">
import { detailsInfoRequest } from '@/api/works' import { detailsInfoRequest } from '@/api/works'
import {memberView} from '@/api/game' import {memberView} from '@/api/game'
import { logout } from '@/api/user'
import { mapState, mapMutations, mapActions } from 'vuex' import { mapState, mapMutations, mapActions } from 'vuex'
import addUser from './addUser.vue' import addUser from './addUser.vue'
import { getToken,removeToken } from '@/utils/auth' import { getToken,removeToken } from '@/utils/auth'
...@@ -103,8 +104,7 @@ export default { ...@@ -103,8 +104,7 @@ export default {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
removeToken() this.userLogout()
window.location.href = window.location.origin +'/company_app/index.html?corp_id='+this.corp_id
}).catch(() => { }).catch(() => {
this.$message({ this.$message({
type: 'info', type: 'info',
...@@ -112,6 +112,25 @@ export default { ...@@ -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() { addNewUser() {
console.log(11) console.log(11)
}, },
......
...@@ -163,7 +163,7 @@ ...@@ -163,7 +163,7 @@
/> />
</div> --> </div> -->
<!-- 共享信息 --> <!-- 共享信息 -->
<shareInfo :chat-user-details="chatUserDetails" v-if="false" /> <shareInfo :chat-user-details="chatUserDetails" />
</div> </div>
</div> </div>
</div> </div>
...@@ -183,7 +183,7 @@ ...@@ -183,7 +183,7 @@
import changePhone from './changePhone.vue' import changePhone from './changePhone.vue'
import watchMember from '@/mixins/watchMember' import watchMember from '@/mixins/watchMember'
import { zyouUnBind,autoResetPassword,bindUserSelfAdd } from '@/api/game' import { zyouUnBind,autoResetPassword,bindUserSelfAdd } from '@/api/game'
import { memberBindCser } from '@/api/works' import { memberBindCser,editUser } from '@/api/works'
export default { export default {
name: 'UserDetailsPanel', name: 'UserDetailsPanel',
components: { components: {
...@@ -329,8 +329,26 @@ import watchMember from '@/mixins/watchMember' ...@@ -329,8 +329,26 @@ import watchMember from '@/mixins/watchMember'
}, },
// 处理备注输入 // 处理备注输入
handleInputRemark(val) { handleInputRemark(val) {
this.$emit('update-remark', val)
this.showInputRemark = false 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) { inputShow(item, index) {
......
...@@ -372,7 +372,6 @@ import { debounce } from '@/utils' ...@@ -372,7 +372,6 @@ import { debounce } from '@/utils'
<style lang="scss" scoped> <style lang="scss" scoped>
.gameUserDetails { .gameUserDetails {
width: 100%; width: 100%;
padding-bottom: 50px;
.changeUser{ .changeUser{
font-size: 18px; font-size: 18px;
transform: rotate(90deg); transform: rotate(90deg);
......
...@@ -2,9 +2,13 @@ ...@@ -2,9 +2,13 @@
<div class="userInfo-content"> <div class="userInfo-content">
<!-- 用 el-tabs 有三个 tab 分别是 客户资料 角色信息 违规记录 用 v-for 循环 --> <!-- 用 el-tabs 有三个 tab 分别是 客户资料 角色信息 违规记录 用 v-for 循环 -->
<el-tabs v-model="activeTab" > <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"/> <Info v-if="activeTab === 'userInfo'" :chatUserDetails="chatUserInfo"/>
</el-tab-pane>
<el-tab-pane label="角色信息" name="roleInfo">
<RoleInfo v-if="activeTab === 'roleInfo'"/> <RoleInfo v-if="activeTab === 'roleInfo'"/>
</el-tab-pane>
<el-tab-pane label="违规记录" name="violationRecord">
<ViolationRecord v-if="activeTab === 'violationRecord'"/> <ViolationRecord v-if="activeTab === 'violationRecord'"/>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论