@@ -51,6 +51,18 @@ export default { | |||
logout: "Logout", | |||
goLogin: "Go and log in", | |||
LanguageChange: "Language switching", | |||
home: 'Home', | |||
apiManage: 'API Access Party Management', | |||
privatization: 'Privatized customer management', | |||
template: 'Template management', | |||
secretKey: 'Key View', | |||
video: 'Video production statistics', | |||
userMange: 'User Management', | |||
userList: 'User List', | |||
userMouldList: 'Private Custom Template List', | |||
userVoiceList: 'Private customized voiceprint list', | |||
rechargeList: 'Recharge List', | |||
videoList: 'Video List' | |||
}, | |||
// 创作视频 | |||
@@ -257,4 +269,54 @@ export default { | |||
apiMangage: { | |||
title: "API", | |||
}, | |||
home: { | |||
info: 'Personal Information', | |||
welcome: 'Welcome', | |||
loginAccount: 'Login account', | |||
userName: 'User nickname', | |||
phone: 'Phone', | |||
time: 'Current account duration', | |||
setting: 'security setting', | |||
editPwd: 'Change password', | |||
key: 'secret key', | |||
view: 'View', | |||
}, | |||
template: { | |||
img: 'picture' | |||
}, | |||
video: { | |||
time: 'Total time consumed', | |||
code: 'Access Party Code', | |||
videoTime: 'Video duration', | |||
videoUrl: 'Video link', | |||
createTime: 'CreateTime', | |||
detail: 'View video details', | |||
}, | |||
userList: { | |||
phone: 'phone', | |||
phonePlaceholder: 'Please enter your phone number', | |||
search: 'search', | |||
id: 'user id', | |||
poins: 'Current currency value', | |||
createDate: 'CreateTime', | |||
view: 'View', | |||
rechargeDetail: 'View recharge records', | |||
videoDetail: 'View video list', | |||
personMould: 'Bind custom templates', | |||
personVoice: 'Bind custom voiceprints', | |||
viewDetail: 'Detail', | |||
close: 'Close' | |||
}, | |||
personMould: { | |||
cancel: 'Cancel', | |||
confirm: 'Confirm association' | |||
}, | |||
personVoice: { | |||
lang: 'language', | |||
country: 'country', | |||
enName: 'English name', | |||
chineseName: 'Chinese name', | |||
cancel: 'Cancel', | |||
confirm: 'Confirm association' | |||
} | |||
}; |
@@ -52,6 +52,18 @@ export default { | |||
logout: "注销", | |||
goLogin: "登录", | |||
LanguageChange: "语言切换", | |||
home: '首页', | |||
apiManage: 'API接入方管理', | |||
privatization: '私有化客户管理', | |||
template: '模版管理', | |||
secretKey: '密钥查看', | |||
video: '视频制作统计', | |||
userMange: '用户管理', | |||
userList: '用户列表', | |||
userMouldList: '私人定制模板列表', | |||
userVoiceList: '私人定制声纹列表', | |||
rechargeList: '充值列表', | |||
videoList: '视频列表' | |||
}, | |||
// 创作视频 | |||
@@ -256,4 +268,54 @@ export default { | |||
apiMangage: { | |||
title: "API 管理", | |||
}, | |||
home: { | |||
info: '个人信息', | |||
welcome: '欢迎您', | |||
loginAccount: '登录账号', | |||
userName: '用户昵称', | |||
phone: '手机号', | |||
time: '当前账户时长', | |||
setting: '安全设置', | |||
editPwd: '修改密码', | |||
key: '密钥', | |||
view: '查看', | |||
}, | |||
template: { | |||
img: '图片' | |||
}, | |||
video: { | |||
time: '已消耗总时长', | |||
code: '接入方编码', | |||
videoTime: '视频时长', | |||
videoUrl: '视频链接', | |||
createTime: '创建时间', | |||
detail: '查看视频详情', | |||
}, | |||
userList: { | |||
phone: '手机号', | |||
phonePlaceholder: '请输入手机号', | |||
search: '查询', | |||
id: '用户ID', | |||
poins: '当前币值', | |||
createDate: '创建时间', | |||
view: '查看', | |||
rechargeDetail: '查看充值记录', | |||
videoDetail: '查看视频列表', | |||
personMould: '绑定定制模版', | |||
personVoice: '绑定定制声纹', | |||
viewDetail: '查看详情', | |||
close: '关闭' | |||
}, | |||
personMould: { | |||
cancel: '取消', | |||
confirm: '确认关联' | |||
}, | |||
personVoice: { | |||
lang: '语言', | |||
country: '国家', | |||
enName: '英文名称', | |||
chineseName: '中文名称', | |||
cancel: '取消', | |||
confirm: '确认关联' | |||
} | |||
}; |
@@ -19,44 +19,44 @@ | |||
class="el-menu-vertical-demo"> | |||
<el-menu-item index="1" @click="router.push('/home')"> | |||
<el-icon><i-ep-House /></el-icon> | |||
<span>首页</span> | |||
<span>{{ $t('navbar.home') }}</span> | |||
</el-menu-item> | |||
<!-- 邃芒后台 --> | |||
<el-menu-item v-if="isAdmin === '1' && localDeploy !== 'true' " index="2" @click="router.push('/apiManage')"> | |||
<el-icon><i-ep-link /></el-icon> | |||
<span>API接入方管理</span> | |||
<span>{{ $t('navbar.apiManage') }}</span> | |||
</el-menu-item> | |||
<el-menu-item v-if="isAdmin === '1' && localDeploy !== 'true'" index="3" @click="router.push('/privatization')"> | |||
<el-icon><i-ep-edit /></el-icon> | |||
<span>私有化客户管理</span> | |||
<span>{{ $t('navbar.privatization') }}</span> | |||
</el-menu-item> | |||
<!-- 私有化客户管理 API v-if="(isAdmin === '1' && localDeploy === 'true') || isAdmin === '0'" --> | |||
<template v-else> | |||
<el-menu-item index="4" @click="router.push('/template')"> | |||
<el-icon><i-ep-edit /></el-icon> | |||
<span>模版管理</span> | |||
<span>{{ $t('navbar.template') }}</span> | |||
</el-menu-item> | |||
<el-menu-item index="5" @click="router.push('/secretKey')"> | |||
<el-icon><i-ep-edit /></el-icon> | |||
<span>密钥查看</span> | |||
<span>{{ $t('navbar.secretKey') }}</span> | |||
</el-menu-item> | |||
<el-menu-item index="6" @click="router.push('/video')"> | |||
<el-icon><i-ep-edit /></el-icon> | |||
<span>视频制作统计</span> | |||
<span>{{ $t('navbar.video') }}</span> | |||
</el-menu-item> | |||
</template> | |||
<!-- v-if="isAdmin === '1'" --> | |||
<el-sub-menu index="7" v-if="isAdmin == '1'" > | |||
<template #title> | |||
<el-icon><i-ep-edit /></el-icon> | |||
<span>用户管理</span> | |||
<span>{{ $t('navbar.userMange') }}</span> | |||
</template> | |||
<el-menu-item-group> | |||
<el-menu-item index="7-1" @click="router.push('/userManage')">用户列表</el-menu-item> | |||
<el-menu-item index="7-2" @click="router.push('/userMouldList')">私人定制模板列表</el-menu-item> | |||
<el-menu-item index="7-3" @click="router.push('/userVoiceList')">私人定制声纹列表</el-menu-item> | |||
<el-menu-item index="7-4" @click="router.push('/rechargeList')">充值列表</el-menu-item> | |||
<el-menu-item index="7-5" @click="router.push('/videoList')">视频列表</el-menu-item> | |||
<el-menu-item index="7-1" @click="router.push('/userManage')">{{ $t('navbar.userList') }}</el-menu-item> | |||
<el-menu-item index="7-2" @click="router.push('/userMouldList')">{{ $t('navbar.userMouldList') }}</el-menu-item> | |||
<el-menu-item index="7-3" @click="router.push('/userVoiceList')">{{ $t('navbar.userVoiceList') }}</el-menu-item> | |||
<el-menu-item index="7-4" @click="router.push('/rechargeList')">{{ $t('navbar.rechargeList') }}</el-menu-item> | |||
<el-menu-item index="7-5" @click="router.push('/videoList')">{{ $t('navbar.videoList') }}</el-menu-item> | |||
</el-menu-item-group> | |||
</el-sub-menu> | |||
</el-menu> | |||
@@ -8,6 +8,7 @@ export {} | |||
declare module '@vue/runtime-core' { | |||
export interface GlobalComponents { | |||
Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default'] | |||
copy: typeof import('./../components/EditPosition copy.vue')['default'] | |||
CutImg: typeof import('./../components/cutImg.vue')['default'] | |||
CutImg1: typeof import('./../components/cutImg1.vue')['default'] | |||
EditPosition: typeof import('./../components/EditPosition.vue')['default'] | |||
@@ -2,24 +2,24 @@ | |||
<div class="page"> | |||
<el-card class="box-card"> | |||
<div slot="header" class="clearfix"> | |||
<span>个人信息</span> | |||
<span>{{ $t('home.info') }}</span> | |||
</div> | |||
<div> | |||
<div style="text-align: center"> | |||
<div class="el-upload"> | |||
<img :src="Avatar" class="avatar"> | |||
<p>{{ userData.username }},欢迎您</p> | |||
<p>{{ userData.username }},{{ $t('home.welcome') }}</p> | |||
</div> | |||
</div> | |||
<ul class="user-info"> | |||
<li><div style="height: 100%"><el-icon><i-ep-UserFilled /></el-icon> 登录账号<div class="user-right">{{ userData.username }}</div></div></li> | |||
<li><el-icon><i-ep-Avatar /></el-icon> 用户昵称 <div class="user-right">{{ userData.name }}</div></li> | |||
<li><el-icon><i-ep-User /></el-icon> 手机号 <div class="user-right"> {{ userData.phone }}</div></li> | |||
<li v-if="(userData.isAdmin === 1 && localDeploy) || userData.isAdmin === 0"><el-icon><i-ep-User /></el-icon> 当前账户时长 <div class="user-right"> {{ userData.remainingTimes }} (秒)</div></li> | |||
<li><div style="height: 100%"><el-icon><i-ep-UserFilled /></el-icon> {{ $t('home.loginAccount') }}<div class="user-right">{{ userData.username }}</div></div></li> | |||
<li><el-icon><i-ep-Avatar /></el-icon> {{ $t('home.userName') }} <div class="user-right">{{ userData.name }}</div></li> | |||
<li><el-icon><i-ep-User /></el-icon> {{ $t('home.phone') }} <div class="user-right"> {{ userData.phone }}</div></li> | |||
<li v-if="(userData.isAdmin === 1 && localDeploy) || userData.isAdmin === 0"><el-icon><i-ep-User /></el-icon> {{ $t('home.time') }} <div class="user-right"> {{ userData.remainingTimes }} (秒)</div></li> | |||
<li> | |||
<el-icon><i-ep-edit /></el-icon> 安全设置 | |||
<el-icon><i-ep-edit /></el-icon> {{ $t('home.setting') }} | |||
<div class="user-right"> | |||
<a @click="editDialogVisible = true">修改密码</a> | |||
<a @click="editDialogVisible = true">{{ $t('home.editPwd') }}</a> | |||
</div> | |||
</li> | |||
<!-- <li v-if="userData.isAdmin === '1' && userData.localDeploy"> | |||
@@ -29,15 +29,15 @@ | |||
</div> | |||
</li> --> | |||
<li v-if="userData.isAdmin === 0"> | |||
<el-icon><i-ep-Pointer /></el-icon>密钥 | |||
<el-icon><i-ep-Pointer /></el-icon>{{ $t('home.key') }} | |||
<div class="user-right"> | |||
<a @click="router.push('/secretKey')">查看</a> | |||
<a @click="router.push('/secretKey')">{{ $t('home.view') }} </a> | |||
</div> | |||
</li> | |||
</ul> | |||
</div> | |||
</el-card> | |||
<el-dialog v-model="editDialogVisible" title="修改密码" width="40%" :before-close="handleClose" > | |||
<el-dialog v-model="editDialogVisible" :title="$t('home.editPwd')" width="40%" :before-close="handleClose" > | |||
<edit-pass @close="handleClose"></edit-pass> | |||
</el-dialog> | |||
</div> | |||
@@ -9,7 +9,7 @@ | |||
border | |||
> | |||
<el-table-column label="图片" align="center"> | |||
<el-table-column :label="$t('template.img')" align="center"> | |||
<template #default="scope"> | |||
<img :src="scope.row.coverImg" width="50" /> | |||
</template> | |||
@@ -8,9 +8,9 @@ | |||
</el-checkbox-group> | |||
<div style="margin-top: 20px"> | |||
<el-button @click="handleClose" | |||
>取消</el-button | |||
>{{$t('personMould.cancel')}}</el-button | |||
> | |||
<el-button type="primary" @click="addModel()">确认关联</el-button> | |||
<el-button type="primary" @click="addModel()">{{$t('personMould.confirm')}}</el-button> | |||
</div> | |||
</div> | |||
</template> | |||
@@ -19,6 +19,9 @@ | |||
import { ref } from 'vue' | |||
import { personMouldListApi, userPersonMouldIdListApi, associatedUserMouldsApi } from '@/apis/userManage.js' | |||
import dayjs from "dayjs"; | |||
import { useI18n } from "vue-i18n"; | |||
const { locale } = useI18n(); | |||
const lanChange = ref(locale); | |||
const emit = defineEmits(["close"]); | |||
const props = defineProps({ | |||
@@ -61,7 +64,7 @@ const addModel = async () => { | |||
} | |||
const res = await associatedUserMouldsApi(data); | |||
if(res.code === 200) { | |||
ElMessage.success("关联成功!"); | |||
ElMessage.success((lanChange.value) == "zh-cn" ? "关联成功!" : 'Successfully associated!'); | |||
handleClose() | |||
} | |||
}; | |||
@@ -7,10 +7,10 @@ | |||
@selection-change="handleSelectionChange" | |||
> | |||
<el-table-column type="selection" width="55" align="center"/> | |||
<el-table-column property="language" label="语言" align="center"/> | |||
<el-table-column property="country" label="国家" align="center"/> | |||
<el-table-column property="name" label="英文名称" align="center"/> | |||
<el-table-column property="chineseName" label="中文名称" align="center"/> | |||
<el-table-column property="language" :label="$t('personVoice.lang')" align="center"/> | |||
<el-table-column property="country" :label="$t('personVoice.country')" align="center"/> | |||
<el-table-column property="name" :label="$t('personVoice.enName')" align="center"/> | |||
<el-table-column property="chineseName" :label="$t('personVoice.chineseName')" align="center"/> | |||
<el-table-column | |||
prop="createTime" | |||
:label="$t('businessMangage.createTime')" | |||
@@ -45,6 +45,9 @@ | |||
<script setup> | |||
import { voiceMouldListApi, userVoiceIdListApi, associatedUserVoicesApi } from '@/apis/userManage.js' | |||
import dayjs from "dayjs"; | |||
import { useI18n } from "vue-i18n"; | |||
const { locale } = useI18n(); | |||
const lanChange = ref(locale); | |||
const emit = defineEmits(["close"]); | |||
const props = defineProps({ | |||
cUserId: { | |||
@@ -130,7 +133,7 @@ const addModel = async () => { | |||
} | |||
const res = await associatedUserVoicesApi(data); | |||
if(res.code === 200) { | |||
ElMessage.success("关联成功!"); | |||
ElMessage.success((lanChange.value) == "zh-cn" ? "关联成功!" : 'Successfully associated!'); | |||
handleClose() | |||
} | |||
}; | |||
@@ -2,11 +2,11 @@ | |||
<div class="page justify-around"> | |||
<div class="addbtn"> | |||
<el-form :inline="true" :model="formInline" class="demo-form-inline"> | |||
<el-form-item label="手机号"> | |||
<el-input v-model="formInline.phone" placeholder="请输入手机号" clearable /> | |||
<el-form-item :label="$t('userList.phone')"> | |||
<el-input v-model="formInline.phone" :placeholder="$t('userList.phonePlaceholder')" clearable /> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" @click="getListData()">查询</el-button> | |||
<el-button type="primary" @click="getListData()">{{ $t('userList.search') }}</el-button> | |||
</el-form-item> | |||
</el-form> | |||
</div> | |||
@@ -20,26 +20,26 @@ | |||
> | |||
<el-table-column | |||
prop="id" | |||
label="用户ID" | |||
:label="$t('userList.id')" | |||
align="center" | |||
/> | |||
<el-table-column | |||
prop="phone" | |||
label="手机号" | |||
:label="$t('userList.phone')" | |||
align="center" | |||
/> | |||
<el-table-column | |||
prop="poins" | |||
label="当前币值" | |||
:label="$t('userList.poins')" | |||
align="center" | |||
/> | |||
<el-table-column | |||
prop="createDate" | |||
label="创建时间" | |||
:label="$t('userList.createDate')" | |||
align="center" | |||
> | |||
<template #default="scope"> | |||
@@ -52,11 +52,11 @@ | |||
align="center" | |||
> | |||
<template #default="scope"> | |||
<el-button link type="primary" size="small" @click="showDetail(scope.row.id)">查看</el-button> | |||
<el-button link type="primary" size="small" @click="rechargeDetail(scope.row)">查看充值记录</el-button> | |||
<el-button link type="primary" size="small" @click="videoDetail(scope.row)"> 查看视频列表</el-button> | |||
<el-button link type="primary" size="small" @click="personMould(scope.row.id)">绑定定制模版</el-button> | |||
<el-button link type="primary" size="small" @click="personVoice(scope.row.id)">绑定定制声纹</el-button> | |||
<el-button link type="primary" size="small" @click="showDetail(scope.row.id)">{{$t('userList.view')}}</el-button> | |||
<el-button link type="primary" size="small" @click="rechargeDetail(scope.row)">{{$t('userList.rechargeDetail')}}</el-button> | |||
<el-button link type="primary" size="small" @click="videoDetail(scope.row)"> {{$t('userList.videoDetail')}}</el-button> | |||
<el-button link type="primary" size="small" @click="personMould(scope.row.id)">{{$t('userList.personMould')}}</el-button> | |||
<el-button link type="primary" size="small" @click="personVoice(scope.row.id)">{{$t('userList.personVoice')}}</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
@@ -76,30 +76,30 @@ | |||
@current-change="handleCurrentChange" | |||
/> | |||
</div> | |||
<el-dialog v-model="detailDialogVisible" v-if="detailDialogVisible" title="查看详情" width="60%" :before-close="handleClose" > | |||
<el-dialog v-model="detailDialogVisible" v-if="detailDialogVisible" :title="$t('userList.viewDetail')" width="60%" :before-close="handleClose" > | |||
<el-form :model="form" label-width="120px"> | |||
<el-form-item label="手机号"> | |||
<el-form-item :label="$t('userList.phone')"> | |||
<el-input v-model="form.phone" /> | |||
</el-form-item> | |||
<el-form-item label="Level"> | |||
<el-input v-model="form.level" /> | |||
</el-form-item> | |||
<el-form-item label="当前币值"> | |||
<el-form-item :label="$t('userList.poins')"> | |||
<el-input v-model="form.poins" /> | |||
</el-form-item> | |||
<el-form-item label="创建时间"> | |||
<el-form-item :label="$t('userList.createDate')"> | |||
<el-input v-model="form.createDate" /> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button>关闭</el-button> | |||
<el-button>{{$t('userList.close')}}</el-button> | |||
</el-form-item> | |||
</el-form> | |||
</el-dialog> | |||
<el-dialog v-model="modelDialogVisible" v-if="modelDialogVisible" title="绑定定制模版" width="60%" :before-close="handleClose" > | |||
<el-dialog v-model="modelDialogVisible" v-if="modelDialogVisible" :title="$t('userList.personMould')" width="60%" :before-close="handleClose" > | |||
<model :cUserId="cUserId" @close="handleClose"></model> | |||
</el-dialog> | |||
<el-dialog v-model="voiceDialogVisible" v-if="voiceDialogVisible" title="绑定定制声纹" width="60%" :before-close="handleClose" > | |||
<el-dialog v-model="voiceDialogVisible" v-if="voiceDialogVisible" :title="$t('userList.personVoice')" width="60%" :before-close="handleClose" > | |||
<voice :cUserId="cUserId" @close="handleClose"></voice> | |||
</el-dialog> | |||
</div> | |||
@@ -1,6 +1,6 @@ | |||
<template> | |||
<div class="page justify-around"> | |||
<el-alert :title="`已消耗总时长:${crrentVideoToal} 秒`" type="success" :closable="false" /> | |||
<el-alert :title="`${$t('video.time')}:${crrentVideoToal} 秒`" type="success" :closable="false" /> | |||
<el-table | |||
:data="tableData" | |||
style="width: 100%; height: 90%" | |||
@@ -10,7 +10,7 @@ | |||
> | |||
<el-table-column | |||
prop="serviceId" | |||
label="接入方编码" | |||
:label="$t('video.code')" | |||
align="center"> | |||
<template #default="scope"> | |||
<el-button type="primary" text @click="getDetail(scope.row.serviceId)">{{ scope.row.serviceId }}</el-button> | |||
@@ -19,17 +19,17 @@ | |||
<el-table-column | |||
prop="videoTime" | |||
label="视频时长" | |||
:label="$t('video.videoTime')" | |||
align="center" | |||
/> | |||
<el-table-column | |||
prop="videoUrl" | |||
label="视频链接" | |||
:label="$t('video.videoUrl')" | |||
align="center" | |||
/> | |||
<el-table-column | |||
prop="createTime" | |||
label="创建时间" | |||
:label="$t('video.createTime')" | |||
align="center" | |||
> | |||
<template #default="scope"> | |||
@@ -43,7 +43,7 @@ | |||
align="center" | |||
> | |||
<template #default="scope"> | |||
<el-button link type="primary" size="small" @click="showDetail(scope.row.userMouldVideoId)">查看视频详情</el-button> | |||
<el-button link type="primary" size="small" @click="showDetail(scope.row.userMouldVideoId)">{{ $t('keyMangage.detail') }}</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||