提交 4e0c2c11 作者: 毛细亚

合并分支 '1.1' 到 'release'

1.1

查看合并请求 !4
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9"/><title>company_app</title><script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script><script defer="defer" src="static/js/chunk-vendors.fc0c503d.js"></script><script defer="defer" src="static/js/app.7f7f9292.js"></script><link href="static/css/chunk-vendors.8e901099.css" rel="stylesheet"><link href="static/css/app.2d27e365.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but company_app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> <!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9"/><title>company_app</title><script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script><script defer="defer" src="static/js/chunk-vendors.b6398f5b.js"></script><script defer="defer" src="static/js/app.101d7d80.js"></script><link href="static/css/chunk-vendors.8e901099.css" rel="stylesheet"><link href="static/css/app.1b60c483.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but company_app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
\ No newline at end of file \ No newline at end of file
...@@ -153,13 +153,6 @@ export default { ...@@ -153,13 +153,6 @@ export default {
this.set_token(cookieToken) this.set_token(cookieToken)
console.log('从 Cookie 恢复 token:', cookieToken) console.log('从 Cookie 恢复 token:', cookieToken)
} }
// 页面刷新时从 Cookie 恢复 accountSelect 到 store
const cookieAccountSelect = Cookies.get('accountSelect')
if (cookieAccountSelect && !this.$store.state.game.accountSelect) {
this.set_accountSelect(cookieAccountSelect)
console.log('从 Cookie 恢复 accountSelect:', cookieAccountSelect)
}
// 初始化时处理路径 // 初始化时处理路径
const currentPath = this.$route.path const currentPath = this.$route.path
if (currentPath === '/' || currentPath === '' || currentPath === '/index.html') { if (currentPath === '/' || currentPath === '' || currentPath === '/index.html') {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<script> <script>
import devModeManager from '@/utils/devMode' import devModeManager from '@/utils/devMode'
export default { export default {
name: 'Debug', name: 'debug',
methods: { methods: {
handleDevModeClick() { handleDevModeClick() {
devModeManager.handleClick() devModeManager.handleClick()
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
<script> <script>
export default { export default {
name: 'inputTagsAlias',
props: { props: {
rowInfo: { rowInfo: {
type: Array, type: Array,
......
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
<script> <script>
import Alias from './alias.vue' import Alias from './alias.vue'
export default { export default {
name: 'inputTags',
props: { props: {
inputSelectList: { inputSelectList: {
type: Array, type: Array,
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<script> <script>
export default { export default {
name: 'loading',
data() { data() {
return { return {
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
import { selectSearch } from '@/api/game' import { selectSearch } from '@/api/game'
import { searchcondition } from '@/api/pigeon' import { searchcondition } from '@/api/pigeon'
export default { export default {
name: 'mainGame',
// gameType:存在的时候取信鸽的游戏列表接口 gameDefaultList 编辑的时候 如果没有当前的游戏 id 主动加上去 // gameType:存在的时候取信鸽的游戏列表接口 gameDefaultList 编辑的时候 如果没有当前的游戏 id 主动加上去
props: ['defaultValue', 'width', 'label', 'disabled','gameType','gameDefaultList','isResize'], props: ['defaultValue', 'width', 'label', 'disabled','gameType','gameDefaultList','isResize'],
data() { data() {
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<script> <script>
export default { export default {
name: 'NoContent', name: 'noContent',
props: { props: {
// 主标题 // 主标题
title: { title: {
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<script type="text/javascript"> <script type="text/javascript">
export default { export default {
name: 'page', name: 'pageNum',
props: ['pageInfo'], props: ['pageInfo'],
data() { data() {
return {} return {}
......
...@@ -105,6 +105,7 @@ ...@@ -105,6 +105,7 @@
<script type="text/javascript"> <script type="text/javascript">
import { searchTags } from '@/api/works' import { searchTags } from '@/api/works'
export default { export default {
name: 'selectTag',
components: { components: {
}, },
// checkList 选中的标签 checkbox 是否显示 在当前主体不同客服号同步进行打标 // checkList 选中的标签 checkbox 是否显示 在当前主体不同客服号同步进行打标
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
<script> <script>
import { base64toFile } from '@/utils/index' import { base64toFile } from '@/utils/index'
export default { export default {
name: 'textEditor',
props: ['remark', 'contenteditable', 'domid'], // remark 原来的图文内容 contenteditable 是否可编辑 domid 编辑器的 DomId resultReamrk 方法吐出最后的编辑好的内容 props: ['remark', 'contenteditable', 'domid'], // remark 原来的图文内容 contenteditable 是否可编辑 domid 编辑器的 DomId resultReamrk 方法吐出最后的编辑好的内容
data() { data() {
return { return {
......
...@@ -79,6 +79,7 @@ ...@@ -79,6 +79,7 @@
import { uploadImageBefore } from '@/utils/index' import { uploadImageBefore } from '@/utils/index'
// import imageCropper from './imageCorpper.vue' // import imageCropper from './imageCorpper.vue'
export default { export default {
name: 'uploadMultiple',
components: { components: {
// imageCropper // imageCropper
}, },
......
...@@ -26,16 +26,16 @@ Vue.use(globalComponent).use(permission).use(clickagain).use(loadmore).use(scrol ...@@ -26,16 +26,16 @@ Vue.use(globalComponent).use(permission).use(clickagain).use(loadmore).use(scrol
import '@/utils/vconsoleCleanup' import '@/utils/vconsoleCleanup'
// 开发环境下初始化 stagewise 工具栏 // 开发环境下初始化 stagewise 工具栏
if (process.env.NODE_ENV === 'development') { // if (process.env.NODE_ENV === 'development') {
import('@stagewise/toolbar').then(({ initToolbar }) => { // import('@stagewise/toolbar').then(({ initToolbar }) => {
const stagewiseConfig = { // const stagewiseConfig = {
plugins: [] // plugins: []
}; // };
initToolbar(stagewiseConfig); // initToolbar(stagewiseConfig);
}).catch(err => { // }).catch(err => {
console.error('Failed to initialize stagewise toolbar:', err); // console.error('Failed to initialize stagewise toolbar:', err);
}); // });
} // }
// 开发环境不收集日志 // 开发环境不收集日志
if (process.env.NODE_ENV !== 'development') { if (process.env.NODE_ENV !== 'development') {
......
...@@ -5,12 +5,9 @@ import { zyouBindMember } from '@/api/works' ...@@ -5,12 +5,9 @@ import { zyouBindMember } from '@/api/works'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
// 从本地缓存获取accountSelect // 从本地缓存获取accountSelect
const getAccountSelectFromCache = () => {
return Cookies.get('accountSelect') || ''
}
const state = { const state = {
accountSelect: getAccountSelectFromCache(), // 当前选中的用户的member_id,从缓存初始化 accountSelect: '', // 当前选中的用户的member_id,从缓存初始化
bindGameUserList: [], // 用户绑定的游戏角色 bindGameUserList: [], // 用户绑定的游戏角色
changeSelectWindow: false, // 切换客服窗口的时候 下发通知 changeSelectWindow: false, // 切换客服窗口的时候 下发通知
gameUserInfo:{}, gameUserInfo:{},
...@@ -22,12 +19,6 @@ const state = { ...@@ -22,12 +19,6 @@ const state = {
const mutations = { const mutations = {
set_accountSelect(state, data) { set_accountSelect(state, data) {
state.accountSelect = data state.accountSelect = data
// 同步到本地缓存
if (data) {
Cookies.set('accountSelect', data, { expires: 30 }) // 30天过期
} else {
Cookies.remove('accountSelect')
}
}, },
set_bindGameUserList(state, data) { set_bindGameUserList(state, data) {
state.bindGameUserList = data state.bindGameUserList = data
......
...@@ -18,7 +18,7 @@ import AreaTransferApply from './components/ApplyRecords/AreaTransferApply.vue' ...@@ -18,7 +18,7 @@ import AreaTransferApply from './components/ApplyRecords/AreaTransferApply.vue'
import errorHandle from './components/ApplyRecords/errorHandle.vue' import errorHandle from './components/ApplyRecords/errorHandle.vue'
import TerminalTransfer from './components/ApplyRecords/TerminaTranfer.vue' import TerminalTransfer from './components/ApplyRecords/TerminaTranfer.vue'
export default { export default {
name: 'GiftTab', name: 'applyRecord',
components: { components: {
AreaTransferApply, AreaTransferApply,
errorHandle, errorHandle,
......
...@@ -245,6 +245,7 @@ import shenpi4 from '@/assets/icon/shenpi4.svg' ...@@ -245,6 +245,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'
export default { export default {
name: 'AreaTransferApply',
computed: { computed: {
...mapState('game', ['accountSelect']), ...mapState('game', ['accountSelect']),
...mapState('user', ['userInfo']) ...mapState('user', ['userInfo'])
......
...@@ -225,7 +225,7 @@ import { searchcondition, transfer_server_request_add } from '@/api/game' ...@@ -225,7 +225,7 @@ import { searchcondition, transfer_server_request_add } from '@/api/game'
import textEditor from '@/components/textEditor.vue' import textEditor from '@/components/textEditor.vue'
import mainGameSelect from '@/components/mainGame.vue' import mainGameSelect from '@/components/mainGame.vue'
export default { export default {
name: 'AreaTransferDialog', name: 'areaTransferDialog',
components: { components: {
textEditor, textEditor,
mainGameSelect mainGameSelect
......
...@@ -66,176 +66,102 @@ ...@@ -66,176 +66,102 @@
</p> </p>
<p><span class="label">转端状态:</span><span class="value">{{ item.trans_check_status_text || '-' }}</span></p> <p><span class="label">转端状态:</span><span class="value">{{ item.trans_check_status_text || '-' }}</span></p>
</div> </div>
<div class="terminaItemRight columnFlex columnCenter"> <!-- 审批进度 -->
<el-button <el-collapse-transition>
v-if="item.approval_status== 3 && item.related_request_id == 0" <div v-if="item.showStep" class="terminaProcessList">
type="primary" <el-steps direction="vertical" :active="item.current" finish-status="success">
size="mini" <el-step v-for="(items, indexs) in item.terminaProcessList" :key="'trans_item_' + indexs"
style="margin-bottom:15px;" :title="items.node_name">
@click.stop="resubmitApproval(item)" <template slot="description">
>重新提交</el-button> <div v-if="items" class="trans-follow-1 card-style">
<img <div class="follow-item">
v-if="item.approval_status == 1" <span class="follow-info-label label-font">
:src="shenpi1" {{ items.node_sort !== '0' ? '审批人:' : '登记人:' }}
class="icon"
/>
<img
v-else-if="item.approval_status == 2"
:src="shenpi2"
class="icon"
/>
<img
v-else-if="item.approval_status == 3"
:src="shenpi6"
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>
<!-- 审批进度 -->
<el-collapse-transition>
<div
v-if="item.showStep"
class="terminaProcessList"
>
<el-steps
direction="vertical"
:active="item.current"
finish-status="success"
>
<el-step
v-for="(items, indexs) in item.terminaProcessList"
:key="'trans_item_' + indexs"
:title="items.node_name"
>
<template slot="description">
<div
v-if="items"
class="trans-follow-1 card-style"
>
<div class="follow-item">
<span class="follow-info-label label-font">
{{ items.node_sort !== '0' ? '审批人:' : '登记人:' }}
</span>
<span class="info-value value-font">
{{ Array.isArray(items.user_name) ? items.user_name[0] : items.user_name }}
</span>
<el-tooltip
v-if="Array.isArray(items.user_name) && items.user_name.length > 1"
class="item"
effect="dark"
:content="items.user_name.slice(1).join('、')"
placement="top"
>
<span class="info-value value-font info-value-color">
{{ `+${items.user_name.length - 1}` }}
</span> </span>
</el-tooltip> <span class="info-value value-font">
</div> {{ Array.isArray(items.user_name) ? items.user_name[0] : items.user_name }}
</span>
<el-tooltip v-if="Array.isArray(items.user_name) && items.user_name.length > 1" class="item"
effect="dark" :content="items.user_name.slice(1).join('、')" placement="top">
<span class="info-value value-font info-value-color">
{{ `+${items.user_name.length - 1}` }}
</span>
</el-tooltip>
</div>
<div <div v-if="items.node_sort !== '0' || items.node_name === '系统'" class="follow-item">
v-if="items.node_sort !== '0' || items.node_name === '系统'" <span class="follow-info-label label-font">
class="follow-item" 审批结果:
> </span>
<span class="follow-info-label label-font"> <span class="info-value value-font"
审批结果: :class="items.current < indexs ? '' : switchStateTag(items.approval_result)">
</span> {{ items.current < indexs ? '' : items.approval_result_text == '通过' ? '完成' :
<span items.approval_result_text }} </span>
class="info-value value-font" </div>
:class="items.current < indexs ? '' : switchStateTag(items.approval_result)" <div class="follow-item">
> <span class="follow-info-label label-font">
{{ items.current < indexs ? '' : items.approval_result_text=='通过' ? '完成' : items.approval_result_text }} {{ items.node_sort !== '0' || items.node_name === '系统' ? '审批时间:' : '登记时间:' }}
</span> </span>
</div> <span class="info-value value-font">
<div class="follow-item"> {{ items.node_sort === '0' ? items.create_time : items.update_time }}
<span class="follow-info-label label-font"> </span>
{{ items.node_sort !== '0' || items.node_name === '系统' ? '审批时间:' : '登记时间:' }} </div>
</span> <div
<span class="info-value value-font"> v-if="(items.node_sort !== '0' || items.node_name === '系统') && items.approval_result === '2'"
{{ items.node_sort === '0' ? items.create_time : items.update_time }} class="follow-item">
</span> <span class="follow-info-label label-font">
</div> 驳回原因:
<div </span>
v-if="(items.node_sort !== '0' || items.node_name === '系统') && items.approval_result === '2'" <span class="info-value value-font">
class="follow-item" {{ items.extra_attribution.remark }}
> </span>
<span class="follow-info-label label-font"> </div>
驳回原因:
</span>
<span class="info-value value-font">
{{ items.extra_attribution.remark }}
</span>
</div>
<div <div
v-if="items.node_sort === item.terminaProcessList[item.terminaProcessList.length - 1].node_sort + '' && items.approval_result === '1' && items.node_sort !== '0'" v-if="items.node_sort === item.terminaProcessList[item.terminaProcessList.length - 1].node_sort + '' && items.approval_result === '1' && items.node_sort !== '0'"
class="follow-item-remark follow-item" class="follow-item-remark follow-item">
> <span class="follow-info-label label-font">
<span class="follow-info-label label-font"> 处理结果:
处理结果: </span>
</span> <span class="info-value value-font">
<span class="info-value value-font"> {{ items.extra_attribution.banned_text }}
{{ items.extra_attribution.banned_text }}
</span>
</div>
<div
v-if="items.node_name !== '系统' && items.extra_attribution && items.extra_attribution.remark"
class="info-item-remark"
>
<div style="display: flex;">
<span class="info-label remark-label">详情:</span>
<span
class="preview-btn"
@click.stop="previewRemark(items.extra_attribution.remark)"
>
<i class="el-icon-view"></i>
点击查看大图
</span> </span>
</div> </div>
<div <div
class="remark-value" v-if="items.node_name !== '系统' && items.extra_attribution && items.extra_attribution.remark"
v-html="formatImg(items.extra_attribution && items.extra_attribution.remark ? items.extra_attribution.remark : '')" class="info-item-remark">
> <div style="display: flex;">
<span class="info-label remark-label">详情:</span>
<span class="preview-btn" @click.stop="previewRemark(items.extra_attribution.remark)">
<i class="el-icon-view"></i>
点击查看大图
</span>
</div>
<div class="remark-value"
v-html="formatImg(items.extra_attribution && items.extra_attribution.remark ? items.extra_attribution.remark : '')">
</div>
</div> </div>
</div> </div>
</div> </template>
</template> </el-step>
</el-step> </el-steps>
</el-steps> </div>
</div> </el-collapse-transition>
</el-collapse-transition> </div>
</div> </div>
</div> </div>
<div v-else class="noContent rowFlex allCenter"> <div v-else class="noContent rowFlex allCenter">
<noContent /> <noContent />
</div> </div>
</div> </div>
<el-dialog <el-dialog :visible.sync="dialogRemarkVisible" append-to-body title="查看大图" custom-class="remake-dialog">
:visible.sync="dialogRemarkVisible"
append-to-body
title="查看大图"
custom-class="remake-dialog"
>
<div class="remake-box"> <div class="remake-box">
<div v-html="dialogRemake"></div> <div v-html="dialogRemake"></div>
</div> </div>
</el-dialog> </el-dialog>
<!-- 编辑误操作 --> <!-- 编辑误操作 -->
<TerminalTransferDialog <TerminalTransferDialog v-if="showaddAreaTransfer" :visible.sync="showaddAreaTransfer"
v-if="showaddAreaTransfer" :area-transfer-item="areaTransferItem" @updateList="updateList" />
:visible.sync="showaddAreaTransfer"
:area-transfer-item="areaTransferItem"
@updateList="updateList"
/>
</div> </div>
</template> </template>
<script> <script>
...@@ -252,6 +178,7 @@ import shenpi5 from '@/assets/icon/shenpi5.svg' ...@@ -252,6 +178,7 @@ import shenpi5 from '@/assets/icon/shenpi5.svg'
import shenpi6 from '@/assets/icon/shenpi6.svg' import shenpi6 from '@/assets/icon/shenpi6.svg'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
export default { export default {
name: 'terminaTranfer',
computed: { computed: {
...mapState('game', ['accountSelect']), ...mapState('game', ['accountSelect']),
...mapState('user', ['userInfo']) ...mapState('user', ['userInfo'])
...@@ -462,15 +389,22 @@ export default { ...@@ -462,15 +389,22 @@ export default {
.terminaListContent { .terminaListContent {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: auto; .TerminaTranferContent{
.terminaListForm{ width: 100%;
::v-deep .el-form-item__label{ height: 100%;
overflow: auto;
overflow-x: hidden;
}
.terminaListForm {
::v-deep .el-form-item__label {
font-weight: 400; font-weight: 400;
} }
} }
.addApply { .addApply {
margin-top: 15px; margin-top: 15px;
} }
.taskForm { .taskForm {
::v-deep .el-form-item { ::v-deep .el-form-item {
margin-bottom: 10px; margin-bottom: 10px;
...@@ -530,8 +464,9 @@ export default { ...@@ -530,8 +464,9 @@ export default {
height: auto; height: auto;
margin-bottom: 40px; margin-bottom: 40px;
padding: 0 10px; padding: 0 10px;
.terminaContent { .terminaContent {
width:100%; width: 100%;
} }
//举报申请 //举报申请
...@@ -627,7 +562,7 @@ export default { ...@@ -627,7 +562,7 @@ export default {
width: 1px; width: 1px;
} }
::v-deep .el-step > .is-success { ::v-deep .el-step>.is-success {
color: #409EFF; color: #409EFF;
border-color: #409EFF; border-color: #409EFF;
...@@ -636,11 +571,11 @@ export default { ...@@ -636,11 +571,11 @@ export default {
} }
} }
::v-deep .el-step__main > .is-success { ::v-deep .el-step__main>.is-success {
color: #409EFF; color: #409EFF;
} }
::v-deep .el-step > .is-process { ::v-deep .el-step>.is-process {
color: #409EFF; color: #409EFF;
border-color: #409EFF; border-color: #409EFF;
...@@ -649,7 +584,7 @@ export default { ...@@ -649,7 +584,7 @@ export default {
} }
} }
::v-deep .el-step__main > .is-process { ::v-deep .el-step__main>.is-process {
color: #409EFF; color: #409EFF;
} }
...@@ -775,7 +710,7 @@ export default { ...@@ -775,7 +710,7 @@ export default {
height: 80px; height: 80px;
} }
&:hover > .preview-pic { &:hover>.preview-pic {
z-index: 100; z-index: 100;
} }
} }
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
v-for="item in bindGameUserList" v-for="item in bindGameUserList"
:key="item.member_id" :key="item.member_id"
:label="item.username" :label="item.username"
:value="item.member_id" :value="item.member_id"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -141,7 +141,7 @@ import { searchcondition, approval_group_flow_list, approval_group_flow_user, ap ...@@ -141,7 +141,7 @@ import { searchcondition, approval_group_flow_list, approval_group_flow_user, ap
import textEditor from '@/components/textEditor.vue' import textEditor from '@/components/textEditor.vue'
export default { export default {
name: 'TerminalTransferDialog', name: 'terminalTransferDialog',
components: { components: {
textEditor textEditor
}, },
......
...@@ -119,6 +119,7 @@ ...@@ -119,6 +119,7 @@
import { mapMutations, mapActions, mapState } from 'vuex' import { mapMutations, mapActions, mapState } from 'vuex'
import textEditor from '@/components/textEditor.vue' import textEditor from '@/components/textEditor.vue'
export default { export default {
name: 'addErrorHandle',
components: { searchSelect, uploadMultiple, textEditor }, components: { searchSelect, uploadMultiple, textEditor },
props: ['show', 'width', 'title', 'info'], props: ['show', 'width', 'title', 'info'],
computed: { computed: {
......
...@@ -108,6 +108,7 @@ import { memberView, misoperationIndex, searchcondition } from '@/api/game' ...@@ -108,6 +108,7 @@ import { memberView, misoperationIndex, searchcondition } from '@/api/game'
import addErrorHandle from './addErrorHandle.vue' import addErrorHandle from './addErrorHandle.vue'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
export default { export default {
name: 'errorHandle',
components: { components: {
searchSelect, searchSelect,
addErrorHandle, addErrorHandle,
......
...@@ -186,6 +186,7 @@ ...@@ -186,6 +186,7 @@
import { mapMutations, mapActions, mapState } from 'vuex' import { mapMutations, mapActions, mapState } from 'vuex'
import page from '@/components/page/pageNum.vue' import page from '@/components/page/pageNum.vue'
export default { export default {
name: 'addUser',
components: { components: {
userTable, userTable,
page page
......
...@@ -33,6 +33,7 @@ import { getToken,removeToken } from '@/utils/auth' ...@@ -33,6 +33,7 @@ import { getToken,removeToken } from '@/utils/auth'
// 更新代码 // 更新代码
export default { export default {
name: 'bindUserList',
components: { components: {
addUser addUser
}, },
...@@ -88,21 +89,24 @@ export default { ...@@ -88,21 +89,24 @@ export default {
close(){ close(){
this.bindAccount = this.accountSelect this.bindAccount = this.accountSelect
}, },
gameMemberView(item) { async gameMemberView(item) {
if (this.accountSelect && this.accountSelect !== '') { if (this.accountSelect && this.accountSelect !== '') {
this.set_viewLoading(true) this.set_viewLoading(true)
this.set_gameUserInfo({})
await this.$nextTick()
const data = { member_id: this.accountSelect, need_channel: 1, need_roleInfo: 1, need_banned: 1 } const data = { member_id: this.accountSelect, need_channel: 1, need_roleInfo: 1, need_banned: 1 }
memberView(data).then((res) => { try {
const res = await memberView(data)
this.set_viewLoading(false) this.set_viewLoading(false)
if (res.status_code === 1) { if (res.status_code === 1) {
this.set_gameUserInfo(res.data) this.set_gameUserInfo(res.data)
} else { } else {
this.set_gameUserInfo({}) this.set_gameUserInfo({})
} }
}, (err) => { } catch (error) {
this.set_viewLoading(false) this.set_viewLoading(false)
this.set_gameUserInfo({}) this.set_gameUserInfo({})
}) }
} }
}, },
logout(){ logout(){
......
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
<script> <script>
export default { export default {
name: 'userTable',
props: ['list'], props: ['list'],
data() { data() {
return { return {
......
...@@ -73,6 +73,7 @@ ...@@ -73,6 +73,7 @@
import roleTimeRecharge from './giftDetails/roleTimeRecharge.vue' import roleTimeRecharge from './giftDetails/roleTimeRecharge.vue'
import { debounce } from '@/utils/index' import { debounce } from '@/utils/index'
export default { export default {
name: 'applyGift',
components: { components: {
roleRecharge, // 角色累充 roleRecharge, // 角色累充
oneDayCharge, // 单日累充 oneDayCharge, // 单日累充
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
import { giftBagApply } from '@/api/game' import { giftBagApply } from '@/api/game'
import { mapState } from 'vuex' import { mapState } from 'vuex'
export default { export default {
name: 'confirmLayer',
// type 3:image 4:video // type 3:image 4:video
props: ['show', 'width', 'title', 'activeInfo', 'remark'], props: ['show', 'width', 'title', 'activeInfo', 'remark'],
data() { data() {
......
...@@ -142,6 +142,7 @@ import { removeDp, debounce } from '@/utils/index' ...@@ -142,6 +142,7 @@ import { removeDp, debounce } from '@/utils/index'
import applyGift from './applyGift.vue' import applyGift from './applyGift.vue'
import selectDate from '@/components/selectDate.vue' import selectDate from '@/components/selectDate.vue'
export default { export default {
name: 'emailGift',
components: { components: {
selectDate, selectDate,
applyGift applyGift
......
...@@ -135,6 +135,7 @@ import { giftBagApply } from '@/api/game' ...@@ -135,6 +135,7 @@ import { giftBagApply } from '@/api/game'
import { mapState, mapMutations, mapActions } from 'vuex' import { mapState, mapMutations, mapActions } from 'vuex'
import confirmLayer from '../confirmLayer' import confirmLayer from '../confirmLayer'
export default { export default {
name: 'oneDay',
// type 3:image 4:video // type 3:image 4:video
components: { components: {
confirmLayer confirmLayer
......
...@@ -67,6 +67,7 @@ import { giftBagApply } from '@/api/game' ...@@ -67,6 +67,7 @@ import { giftBagApply } from '@/api/game'
import confirmLayer from '../confirmLayer' import confirmLayer from '../confirmLayer'
import { mapState } from 'vuex' import { mapState } from 'vuex'
export default { export default {
name: 'roleRecharge',
// type 3:image 4:video // type 3:image 4:video
components: { components: {
confirmLayer confirmLayer
......
...@@ -261,6 +261,7 @@ import { giftBagApply, checkRoleReceivedBag } from '@/api/game' ...@@ -261,6 +261,7 @@ import { giftBagApply, checkRoleReceivedBag } from '@/api/game'
import { mapState, mapMutations, mapActions } from 'vuex' import { mapState, mapMutations, mapActions } from 'vuex'
import confirmLayer from '../confirmLayer' import confirmLayer from '../confirmLayer'
export default { export default {
name: 'roleTimeRecharge',
// type 3:image 4:video // type 3:image 4:video
components: { components: {
confirmLayer confirmLayer
......
...@@ -31,7 +31,7 @@ import Clipboard from 'clipboard' ...@@ -31,7 +31,7 @@ import Clipboard from 'clipboard'
import { debounce,copyText,sendChatMessage } from '@/utils/index' import { debounce,copyText,sendChatMessage } from '@/utils/index'
import { mapState } from 'vuex' import { mapState } from 'vuex'
export default { export default {
name: 'WxGift', name: 'wxGift',
data() { data() {
return { return {
loading: false, loading: false,
......
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
import { refundRequest } from '@/api/game' import { refundRequest } from '@/api/game'
import textEditor from '@/components/textEditor.vue' import textEditor from '@/components/textEditor.vue'
export default { export default {
name: 'orderRefund',
components: { textEditor }, components: { textEditor },
props: ['show', 'title', 'info'], props: ['show', 'title', 'info'],
data() { data() {
......
...@@ -231,6 +231,7 @@ ...@@ -231,6 +231,7 @@
import orderRefund from './orderRefund.vue' import orderRefund from './orderRefund.vue'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
export default { export default {
name: 'refundLog',
components: { components: {
searchSelect, searchSelect,
orderRefund, orderRefund,
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
import { roleList } from '@/api/game' import { roleList } from '@/api/game'
import { mapState } from 'vuex' import { mapState } from 'vuex'
export default { export default {
name: 'searchUser',
// uid 默认选择的uid // uid 默认选择的uid
props: ['placeholder', 'selectWord', 'value', 'width', 'defaultValue', 'disabled', 'accountChange'], props: ['placeholder', 'selectWord', 'value', 'width', 'defaultValue', 'disabled', 'accountChange'],
data() { data() {
......
...@@ -206,6 +206,7 @@ import sendSelectChannel from './sendGame/sendSelectChannel.vue' ...@@ -206,6 +206,7 @@ import sendSelectChannel from './sendGame/sendSelectChannel.vue'
import gameLogMixin from '@/mixins/gameLogMixin' import gameLogMixin from '@/mixins/gameLogMixin'
export default { export default {
name: 'sendGame',
mixins: [gameLogMixin], mixins: [gameLogMixin],
components: { components: {
createChannel, createChannel,
......
...@@ -136,6 +136,7 @@ ...@@ -136,6 +136,7 @@
import { getZqCserGroup,getZqCserWxBelong } from '@/api/works' import { getZqCserGroup,getZqCserWxBelong } from '@/api/works'
import mainGameSelect from './mainGame.vue' import mainGameSelect from './mainGame.vue'
export default { export default {
name: 'createChannel',
components: { components: {
mainGameSelect mainGameSelect
}, },
......
...@@ -20,56 +20,57 @@ ...@@ -20,56 +20,57 @@
<script> <script>
import { selectSearch } from '@/api/game' import { selectSearch } from '@/api/game'
export default { export default {
props: ['defaultValue', 'width', 'label'], name: 'mainGame',
data() { props: ['defaultValue', 'width', 'label'],
return { data() {
loading: false, return {
reg_game_id: '', loading: false,
regGameList: [] reg_game_id: '',
} regGameList: []
},
watch: {
defaultValue(newVal) {
if (newVal) {
this.reg_game_id = this.defaultValue
} else {
}
}
},
mounted() {
this.reg_game_id = this.defaultValue
this.requestRegGameList()
},
methods: {
requestRegGameList() {
const data = {
type: 'gameListWithType',
value: '',
weixin_blong_id: ''
} }
selectSearch(data).then(res => { },
this.loading = false watch: {
if (res.status_code == 1) { defaultValue(newVal) {
this.regGameList = res.data.data if (newVal) {
this.reg_game_id = this.defaultValue
} else {
} }
}) }
},
mounted() {
this.reg_game_id = this.defaultValue
this.requestRegGameList()
}, },
returnGameId() { methods: {
let label = '' requestRegGameList() {
let list = [] const data = {
this.regGameList.map(item => { type: 'gameListWithType',
list = list.concat(item.children) value: '',
}) weixin_blong_id: ''
list.map(items => { }
if (items.value === this.reg_game_id) { selectSearch(data).then(res => {
label = items.label this.loading = false
if (res.status_code == 1) {
this.regGameList = res.data.data
} }
}) })
this.$emit('result', this.reg_game_id, label) },
returnGameId() {
let label = ''
let list = []
this.regGameList.map(item => {
list = list.concat(item.children)
})
list.map(items => {
if (items.value === this.reg_game_id) {
label = items.label
}
})
this.$emit('result', this.reg_game_id, label)
}
} }
} }
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -55,6 +55,7 @@ import { zyouGetMemberLink } from '@/api/works' ...@@ -55,6 +55,7 @@ import { zyouGetMemberLink } from '@/api/works'
import gameLogMixin from '@/mixins/gameLogMixin' import gameLogMixin from '@/mixins/gameLogMixin'
export default { export default {
name: 'selectChannel',
mixins: [gameLogMixin], mixins: [gameLogMixin],
props: ['show', 'channelInfoList', 'chatUser'], props: ['show', 'channelInfoList', 'chatUser'],
data() { data() {
......
...@@ -9,6 +9,7 @@ import { throttle } from '@/utils/index' ...@@ -9,6 +9,7 @@ import { throttle } from '@/utils/index'
import gameLogMixin from '@/mixins/gameLogMixin' import gameLogMixin from '@/mixins/gameLogMixin'
export default { export default {
name: 'sendSelectChannel',
mixins: [gameLogMixin], mixins: [gameLogMixin],
props: ['show', 'channelInfoList', 'chatUser'], props: ['show', 'channelInfoList', 'chatUser'],
data() { data() {
......
...@@ -103,6 +103,7 @@ ...@@ -103,6 +103,7 @@
import { passwardEncryption,createVipUrl } from '@/api/game' import { passwardEncryption,createVipUrl } from '@/api/game'
import { giftCodeList, sendGiftCode, getZyouAuthLink } from '@/api/works' import { giftCodeList, sendGiftCode, getZyouAuthLink } from '@/api/works'
export default { export default {
name: 'vipTools',
data() { data() {
return { return {
disabled: true, disabled: true,
......
...@@ -252,6 +252,7 @@ ...@@ -252,6 +252,7 @@
import noContent from "@/components/noContent.vue"; import noContent from "@/components/noContent.vue";
import watchMember from '@/mixins/watchMember' import watchMember from '@/mixins/watchMember'
export default { export default {
name: 'approval',
computed: { computed: {
...mapState('game', ['accountSelect']), ...mapState('game', ['accountSelect']),
...mapState('user', ['userInfo']) ...mapState('user', ['userInfo'])
......
...@@ -284,6 +284,7 @@ ...@@ -284,6 +284,7 @@
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'
export default { export default {
name: 'report',
computed: { computed: {
...mapState('game', ['accountSelect']), ...mapState('game', ['accountSelect']),
...mapState('user', ['cser_id','cser_name']) ...mapState('user', ['cser_id','cser_name'])
......
...@@ -122,6 +122,7 @@ ...@@ -122,6 +122,7 @@
import appeal from './layer/appeal.vue' import appeal from './layer/appeal.vue'
import watchMember from '@/mixins/watchMember' import watchMember from '@/mixins/watchMember'
export default { export default {
name: 'roleInfo',
components: { components: {
noContent, noContent,
appeal appeal
......
...@@ -232,7 +232,7 @@ import debounce from '@/directive/debounce/index' ...@@ -232,7 +232,7 @@ import debounce from '@/directive/debounce/index'
import loadingChat from '@/directive/loading/index' import loadingChat from '@/directive/loading/index'
import { getCorpBetaConfig, getAiResponse, Aihistory, answerComment, calAnswerClickTime, getQuoteData } from '@/api/skill' import { getCorpBetaConfig, getAiResponse, Aihistory, answerComment, calAnswerClickTime, getQuoteData } from '@/api/skill'
export default { export default {
name: 'AiLibrary', name: 'aiLibrary',
directives: { directives: {
debounce, debounce,
loadingChat loadingChat
......
...@@ -58,6 +58,7 @@ import { mapState, mapMutations, mapActions } from 'vuex' ...@@ -58,6 +58,7 @@ import { mapState, mapMutations, mapActions } from 'vuex'
import { throttle, copyToClipboard } from '@/utils/index' import { throttle, copyToClipboard } from '@/utils/index'
import {getMediaId} from '@/api/works' import {getMediaId} from '@/api/works'
export default { export default {
name: 'skillCompany',
components: {}, components: {},
props: { props: {
activeName: { activeName: {
......
...@@ -62,6 +62,7 @@ import { mapState, mapMutations, mapActions } from 'vuex' ...@@ -62,6 +62,7 @@ import { mapState, mapMutations, mapActions } from 'vuex'
import { throttle, debounce, copyToClipboard,sendChatMessage } from '@/utils/index' import { throttle, debounce, copyToClipboard,sendChatMessage } from '@/utils/index'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
export default { export default {
name: 'skillLibrary',
components: { components: {
noContent noContent
}, },
......
...@@ -58,6 +58,7 @@ import {getMediaId} from '@/api/works' ...@@ -58,6 +58,7 @@ import {getMediaId} from '@/api/works'
import { mapState, mapMutations, mapActions } from 'vuex' import { mapState, mapMutations, mapActions } from 'vuex'
import { debounce, copyToClipboard } from '@/utils/index' import { debounce, copyToClipboard } from '@/utils/index'
export default { export default {
name: 'skillPersonal',
components: {}, components: {},
props: { props: {
activeName: { activeName: {
......
...@@ -15,7 +15,7 @@ import EmailGift from './components/giftRecord/emailGift.vue' ...@@ -15,7 +15,7 @@ import EmailGift from './components/giftRecord/emailGift.vue'
import WxGift from './components/giftRecord/wxGift.vue' import WxGift from './components/giftRecord/wxGift.vue'
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
export default { export default {
name: 'GiftTab', name: 'giftRecord',
components: { components: {
EmailGift, EmailGift,
WxGift WxGift
......
...@@ -48,6 +48,7 @@ import { mapMutations, mapState } from 'vuex' ...@@ -48,6 +48,7 @@ import { mapMutations, mapState } from 'vuex'
import { getToken, setToken } from '@/utils/auth' import { getToken, setToken } from '@/utils/auth'
import jsApiList from '@/utils/jsApiList' import jsApiList from '@/utils/jsApiList'
export default { export default {
name: 'login',
components: { components: {
}, },
data() { data() {
......
<template> <template>
<div class="mail-list-container"> <div class="mail-list-container"
ref="mailListScroll"
v-scroll:50="loadMoreMail"
>
<!-- 搜索过滤区域 --> <!-- 搜索过滤区域 -->
<div class="search-header"> <div class="search-header">
<div class="search-row"> <div class="search-row">
...@@ -92,7 +95,7 @@ ...@@ -92,7 +95,7 @@
> >
<div <div
v-for="(item, index) in mailList" v-for="(item, index) in mailList"
:key="item._id || index" :key="item._id+index"
class="contact-item" class="contact-item"
:class="{ active: item.external_userid === chatUserInfo.external_userid }" :class="{ active: item.external_userid === chatUserInfo.external_userid }"
> >
...@@ -163,7 +166,7 @@ import { debounce } from '@/utils/index' ...@@ -163,7 +166,7 @@ import { debounce } from '@/utils/index'
import searchSelectUser from '@/components/searchSelectUser.vue' import searchSelectUser from '@/components/searchSelectUser.vue'
export default { export default {
name: 'MailList', name: 'mailList',
components: { components: {
searchSelectUser searchSelectUser
}, },
...@@ -252,12 +255,11 @@ export default { ...@@ -252,12 +255,11 @@ export default {
...this.pagination, ...this.pagination,
userid: this.userid, userid: this.userid,
} }
// 根据搜索类型构建不同的参数 // 根据搜索类型构建不同的参数
if (this.searchType === 'remark') { if (this.searchType === 'remark') {
this.searchParams = { this.searchParams = {
...this.searchParams,
...baseParams, ...baseParams,
...this.searchParams
} }
} else if (this.searchType === 'w_account') { } else if (this.searchType === 'w_account') {
this.searchParams = { this.searchParams = {
...@@ -267,7 +269,6 @@ export default { ...@@ -267,7 +269,6 @@ export default {
} else { } else {
this.searchParams = baseParams this.searchParams = baseParams
} }
// 添加筛选参数 // 添加筛选参数
if (this.mailFilterType === 'unbind') { if (this.mailFilterType === 'unbind') {
this.searchParams.red_tip = 1 this.searchParams.red_tip = 1
...@@ -324,6 +325,7 @@ export default { ...@@ -324,6 +325,7 @@ export default {
// 加载更多通讯录 // 加载更多通讯录
loadMoreMail() { loadMoreMail() {
if (this.hasMore && !this.mailLoading) { if (this.hasMore && !this.mailLoading) {
console.log('loadMoreMail')
this.pagination.page++ this.pagination.page++
this.loadMailList() this.loadMailList()
}else{ }else{
...@@ -393,10 +395,9 @@ export default { ...@@ -393,10 +395,9 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
.mail-list-container { .mail-list-container {
width: 100%;
background: #fff; background: #fff;
height: 100%; height: 100%;
display: flex;
flex-direction: column;
} }
// 搜索头部 // 搜索头部
......
...@@ -177,6 +177,7 @@ import { throttle } from '@/utils' ...@@ -177,6 +177,7 @@ import { throttle } from '@/utils'
import sanjiaoxing from '@/assets/icon/sanjiaoxing.svg' import sanjiaoxing from '@/assets/icon/sanjiaoxing.svg'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
export default { export default {
name: 'orderList',
components: { components: {
searchSelect, searchSelect,
refundLog, refundLog,
......
...@@ -53,6 +53,7 @@ import skillPersonal from './components/skill/skillPersonal.vue' ...@@ -53,6 +53,7 @@ import skillPersonal from './components/skill/skillPersonal.vue'
import skillLibrary from './components/skill/skillLibrary.vue' import skillLibrary from './components/skill/skillLibrary.vue'
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
export default { export default {
name: 'quickReply',
components: { components: {
skillCompany, skillCompany,
skillPersonal, skillPersonal,
......
...@@ -24,6 +24,7 @@ import vipTools from './components/quickSendGame/vipTools.vue' ...@@ -24,6 +24,7 @@ import vipTools from './components/quickSendGame/vipTools.vue'
import sendGame from './components/quickSendGame/sendGame.vue' import sendGame from './components/quickSendGame/sendGame.vue'
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
export default { export default {
name: 'quickSendGame',
components: { components: {
vipTools, vipTools,
sendGame, sendGame,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="roleTab"> <div class="roleTab">
<el-tabs v-model="roleActive"> <el-tabs v-model="roleActive">
<el-tab-pane label="角色信息" name="roleInfo"> <el-tab-pane label="角色信息" name="roleInfo">
<roleInfo v-if="roleActive === 'roleInfo'" :chatUserDetails="chatUserInfo" /> <roleInfoPanel v-if="roleActive === 'roleInfo'" :chatUserDetails="chatUserInfo" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="举报信息" name="report"> <el-tab-pane label="举报信息" name="report">
<report v-if="roleActive === 'report'" /> <report v-if="roleActive === 'report'" />
...@@ -15,13 +15,14 @@ ...@@ -15,13 +15,14 @@
</template> </template>
<script> <script>
import roleInfo from './components/roleInfo/roleInfo.vue' import roleInfoPanel from './components/roleInfo/roleInfoPanel.vue'
import report from './components/roleInfo/report.vue' import report from './components/roleInfo/report.vue'
import approval from './components/roleInfo/approval.vue' import approval from './components/roleInfo/approval.vue'
import { mapState } from 'vuex' import { mapState } from 'vuex'
export default { export default {
name: 'roleInfo',
components: { components: {
roleInfo, roleInfoPanel,
approval, approval,
report report
}, },
......
...@@ -197,6 +197,7 @@ import { mapState } from 'vuex' ...@@ -197,6 +197,7 @@ import { mapState } from 'vuex'
import textEditor from '@/components/textEditor.vue' import textEditor from '@/components/textEditor.vue'
import NoContent from '@/components/noContent.vue' import NoContent from '@/components/noContent.vue'
export default { export default {
name: 'taskRecord',
components: { components: {
textEditor, textEditor,
NoContent NoContent
......
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
</div> --> </div> -->
<!-- 游戏业务的账号信息 --> <!-- 游戏业务的账号信息 -->
<gameDetails <gameDetails
v-if="gameUserInfo.username" v-if="gameUserInfo.username && !viewLoading"
:chat-user-details="chatUserDetails" :chat-user-details="chatUserDetails"
:game-user-info="gameUserInfo" :game-user-info="gameUserInfo"
@changeAppraisal="changeAppraisal" @changeAppraisal="changeAppraisal"
...@@ -208,7 +208,7 @@ import watchMember from '@/mixins/watchMember' ...@@ -208,7 +208,7 @@ import watchMember from '@/mixins/watchMember'
import { memberBindCser,editUser,zyouUnBind } from '@/api/works' import { memberBindCser,editUser,zyouUnBind } from '@/api/works'
import selectTag from '@/components/selectTag.vue' import selectTag from '@/components/selectTag.vue'
export default { export default {
name: 'UserDetailsPanel', name: 'info',
components: { components: {
gameDetails, gameDetails,
changePhone, changePhone,
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
import { bindMobile } from '@/api/game' import { bindMobile } from '@/api/game'
import { mapState } from 'vuex' import { mapState } from 'vuex'
export default { export default {
name: 'changePhone',
components: { components: {
}, },
props: ['show', 'width', 'title', 'body', 'phone'], props: ['show', 'width', 'title', 'body', 'phone'],
......
...@@ -220,6 +220,7 @@ ...@@ -220,6 +220,7 @@
import ZyouTag from './ZyouTag.vue' import ZyouTag from './ZyouTag.vue'
import { debounce } from '@/utils' import { debounce } from '@/utils'
export default { export default {
name: 'gameUserInfo',
components: { components: {
ZyouTag ZyouTag
}, },
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
import { shareInfoUpsert, shareInfoDel } from '@/api/works' import { shareInfoUpsert, shareInfoDel } from '@/api/works'
import { mapState } from 'vuex' import { mapState } from 'vuex'
export default { export default {
name: 'ShareInfo', name: 'shareInfo',
props: ['chatUserDetails'], props: ['chatUserDetails'],
data() { data() {
return { return {
......
...@@ -24,7 +24,7 @@ import violationRecord from '@/views/ViolationRecord.vue' ...@@ -24,7 +24,7 @@ import violationRecord from '@/views/ViolationRecord.vue'
import { mapState, mapMutations } from 'vuex' import { mapState, mapMutations } from 'vuex'
export default { export default {
name: 'UserInfo', name: 'userInfo',
components: { components: {
Info, Info,
roleInfo, roleInfo,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论