mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2025-12-12 09:57:20 +00:00
admin
This commit is contained in:
parent
2cf40a97f8
commit
ee1a7c20d6
1
admin/auto-imports.d.ts
vendored
1
admin/auto-imports.d.ts
vendored
@ -1,5 +1,6 @@
|
|||||||
// Generated by 'unplugin-auto-import'
|
// Generated by 'unplugin-auto-import'
|
||||||
export {}
|
export {}
|
||||||
declare global {
|
declare global {
|
||||||
|
const ElMessage: typeof import('element-plus/es')['ElMessage']
|
||||||
const ElNotification: typeof import('element-plus/es')['ElNotification']
|
const ElNotification: typeof import('element-plus/es')['ElNotification']
|
||||||
}
|
}
|
||||||
|
|||||||
14
admin/components.d.ts
vendored
14
admin/components.d.ts
vendored
@ -10,6 +10,7 @@ declare module '@vue/runtime-core' {
|
|||||||
Attachment: typeof import('./src/components/upload-attachment/attachment.vue')['default']
|
Attachment: typeof import('./src/components/upload-attachment/attachment.vue')['default']
|
||||||
DiyLink: typeof import('./src/components/diy-link/index.vue')['default']
|
DiyLink: typeof import('./src/components/diy-link/index.vue')['default']
|
||||||
Editor: typeof import('./src/components/editor/index.vue')['default']
|
Editor: typeof import('./src/components/editor/index.vue')['default']
|
||||||
|
ElAlert: typeof import('element-plus/es')['ElAlert']
|
||||||
ElAside: typeof import('element-plus/es')['ElAside']
|
ElAside: typeof import('element-plus/es')['ElAside']
|
||||||
ElAvatar: typeof import('element-plus/es')['ElAvatar']
|
ElAvatar: typeof import('element-plus/es')['ElAvatar']
|
||||||
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
|
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
|
||||||
@ -17,13 +18,18 @@ declare module '@vue/runtime-core' {
|
|||||||
ElButton: typeof import('element-plus/es')['ElButton']
|
ElButton: typeof import('element-plus/es')['ElButton']
|
||||||
ElCard: typeof import('element-plus/es')['ElCard']
|
ElCard: typeof import('element-plus/es')['ElCard']
|
||||||
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||||
|
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
||||||
ElCol: typeof import('element-plus/es')['ElCol']
|
ElCol: typeof import('element-plus/es')['ElCol']
|
||||||
ElCollapse: typeof import('element-plus/es')['ElCollapse']
|
ElCollapse: typeof import('element-plus/es')['ElCollapse']
|
||||||
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
|
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
|
||||||
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
|
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
|
||||||
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
|
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
|
||||||
ElContainer: typeof import('element-plus/es')['ElContainer']
|
ElContainer: typeof import('element-plus/es')['ElContainer']
|
||||||
|
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
||||||
|
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
|
||||||
|
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
|
||||||
ElDialog: typeof import('element-plus/es')['ElDialog']
|
ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||||
|
ElDivider: typeof import('element-plus/es')['ElDivider']
|
||||||
ElDrawer: typeof import('element-plus/es')['ElDrawer']
|
ElDrawer: typeof import('element-plus/es')['ElDrawer']
|
||||||
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
||||||
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
||||||
@ -37,26 +43,34 @@ declare module '@vue/runtime-core' {
|
|||||||
ElImage: typeof import('element-plus/es')['ElImage']
|
ElImage: typeof import('element-plus/es')['ElImage']
|
||||||
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
||||||
ElInput: typeof import('element-plus/es')['ElInput']
|
ElInput: typeof import('element-plus/es')['ElInput']
|
||||||
|
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
|
||||||
|
ElLink: typeof import('element-plus/es')['ElLink']
|
||||||
ElMain: typeof import('element-plus/es')['ElMain']
|
ElMain: typeof import('element-plus/es')['ElMain']
|
||||||
ElMenu: typeof import('element-plus/es')['ElMenu']
|
ElMenu: typeof import('element-plus/es')['ElMenu']
|
||||||
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
|
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
|
||||||
ElOption: typeof import('element-plus/es')['ElOption']
|
ElOption: typeof import('element-plus/es')['ElOption']
|
||||||
|
ElOptionGroup: typeof import('element-plus/es')['ElOptionGroup']
|
||||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||||
ElPopover: typeof import('element-plus/es')['ElPopover']
|
ElPopover: typeof import('element-plus/es')['ElPopover']
|
||||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||||
|
ElResult: typeof import('element-plus/es')['ElResult']
|
||||||
ElRow: typeof import('element-plus/es')['ElRow']
|
ElRow: typeof import('element-plus/es')['ElRow']
|
||||||
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||||
ElSlider: typeof import('element-plus/es')['ElSlider']
|
ElSlider: typeof import('element-plus/es')['ElSlider']
|
||||||
ElStatistic: typeof import('element-plus/es')['ElStatistic']
|
ElStatistic: typeof import('element-plus/es')['ElStatistic']
|
||||||
|
ElStep: typeof import('element-plus/es')['ElStep']
|
||||||
|
ElSteps: typeof import('element-plus/es')['ElSteps']
|
||||||
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
|
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
|
||||||
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||||
ElTable: typeof import('element-plus/es')['ElTable']
|
ElTable: typeof import('element-plus/es')['ElTable']
|
||||||
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||||
ElTabs: typeof import('element-plus/es')['ElTabs']
|
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||||
|
ElTag: typeof import('element-plus/es')['ElTag']
|
||||||
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||||
|
ElTree: typeof import('element-plus/es')['ElTree']
|
||||||
ElUpload: typeof import('element-plus/es')['ElUpload']
|
ElUpload: typeof import('element-plus/es')['ElUpload']
|
||||||
Icon: typeof import('./src/components/icon/index.vue')['default']
|
Icon: typeof import('./src/components/icon/index.vue')['default']
|
||||||
PopoverInput: typeof import('./src/components/popover-input/index.vue')['default']
|
PopoverInput: typeof import('./src/components/popover-input/index.vue')['default']
|
||||||
|
|||||||
@ -22,7 +22,7 @@ export function getAddonDetial(id: number) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function installAddon(params: Record<string, any>) {
|
export function installAddon(params: Record<string, any>) {
|
||||||
return request.post(`addon/install/${params.addon}`, params, { showErrorMessage: true })
|
return request.post(`addon/install/${params.addon}`, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,5 +59,5 @@ export function getAddonInstallTaskState(addon: string, key: string) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function executeInstall(addon: string) {
|
export function executeInstall(addon: string) {
|
||||||
return request.post(`addon/install/execute/${addon}`, {}, { showErrorMessage: true })
|
return request.post(`addon/install/execute/${addon}`, {})
|
||||||
}
|
}
|
||||||
@ -21,8 +21,8 @@
|
|||||||
"sexPlaceholder": "请选择性别",
|
"sexPlaceholder": "请选择性别",
|
||||||
"headimg": "会员头像",
|
"headimg": "会员头像",
|
||||||
"wxUnionid": "微信unionid",
|
"wxUnionid": "微信unionid",
|
||||||
"weappOpenid": "微信用户openid",
|
"weappOpenid": "微信公众号openid",
|
||||||
"wxOpenid": "微信小程openid",
|
"wxOpenid": "微信小程序openid",
|
||||||
"memberLabel": "会员标签",
|
"memberLabel": "会员标签",
|
||||||
"memberLabelPlaceholder": "请选择会员标签",
|
"memberLabelPlaceholder": "请选择会员标签",
|
||||||
"nickNamePlaceholder": "请输入会员名称",
|
"nickNamePlaceholder": "请输入会员名称",
|
||||||
|
|||||||
@ -23,6 +23,7 @@
|
|||||||
"contactAddress": "联系地址",
|
"contactAddress": "联系地址",
|
||||||
"address": "详细地址",
|
"address": "详细地址",
|
||||||
"contactAddressPlaceholder":"联系地址",
|
"contactAddressPlaceholder":"联系地址",
|
||||||
|
"keywords":"关键字",
|
||||||
"keywordsPlaceholder": "网站关键字",
|
"keywordsPlaceholder": "网站关键字",
|
||||||
"logoPlaceholder": "网站Logo",
|
"logoPlaceholder": "网站Logo",
|
||||||
"descPlaceholder": "网站简介",
|
"descPlaceholder": "网站简介",
|
||||||
|
|||||||
@ -163,4 +163,32 @@ select:-webkit-autofill {
|
|||||||
color: var(--el-text-color-placeholder);
|
color: var(--el-text-color-placeholder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 温馨提示样式
|
||||||
|
.warm-prompt {
|
||||||
|
background-color: var(--el-color-primary-light-9) !important;
|
||||||
|
.el-icon, p {
|
||||||
|
color: var(--el-color-primary-light-3);
|
||||||
|
}
|
||||||
|
.el-alert__content{
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
html.dark {
|
||||||
|
.warm-prompt {
|
||||||
|
background-color: var(--el-color-primary-light-5) !important;
|
||||||
|
.el-icon, p {
|
||||||
|
color: var(--el-color-primary-dark-2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.app-item {
|
||||||
|
background: #f7f7f7;
|
||||||
|
}
|
||||||
|
html.dark {
|
||||||
|
.app-item {
|
||||||
|
background: #191a23;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main-container bg-[#fff] min-w-[1000px] min-h-[650px]" v-loading="loading">
|
<div class="main main-container min-w-[1000px] min-h-[650px]" v-loading="loading">
|
||||||
<div class="pt-[1px]" v-for="(listItems, listIndex) in appManageList" :key="listIndex" v-if="appManageList.length > 0" >
|
<div class="pt-[1px]" v-for="(listItems, listIndex) in appManageList" :key="listIndex" v-if="appManageList.length > 0" >
|
||||||
<p class="ml-4 mt-[20px] border-l-[2px] border-[#273de3] pl-3 leading-[1] font-bold">{{ listItems.name }}</p>
|
<p class="ml-4 mt-[20px] border-l-[2px] border-[#273de3] pl-3 leading-[1] font-bold">{{ listItems.name }}</p>
|
||||||
<div class="flex flex-wrap">
|
<div class="flex flex-wrap">
|
||||||
@ -9,7 +9,7 @@
|
|||||||
<img v-else class="w-[240px] h-[120px]" src="@/assets/images/app_default.png"/>
|
<img v-else class="w-[240px] h-[120px]" src="@/assets/images/app_default.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-left mt-2 w-[240px]">
|
<div class="text-left mt-2 w-[240px]">
|
||||||
<p class="app-text text-[14px] text-[#222] pl-2">{{ appItems.title }}</p>
|
<p class="app-text text-[14px] pl-2">{{ appItems.title }}</p>
|
||||||
<p class="app-text text-[12px] text-[#999] pl-2">{{ appItems.desc }}</p>
|
<p class="app-text text-[12px] text-[#999] pl-2">{{ appItems.desc }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -60,6 +60,9 @@ const toLink = (link) => {
|
|||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
-o-text-overflow:ellipsis;
|
-o-text-overflow:ellipsis;
|
||||||
}
|
}
|
||||||
|
.main {
|
||||||
|
background-color: var(--el-bg-color-overlay);
|
||||||
|
}
|
||||||
.app-item {
|
.app-item {
|
||||||
// box-shadow: 0px 6px 18px 0px rgba(82,129,187,0.1);
|
// box-shadow: 0px 6px 18px 0px rgba(82,129,187,0.1);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -167,7 +167,7 @@
|
|||||||
v-if="!installCheckResult.job_normal" />
|
v-if="!installCheckResult.job_normal" />
|
||||||
<p class="pt-[20px] pl-[20px] ">{{ t('dirPermission') }}</p>
|
<p class="pt-[20px] pl-[20px] ">{{ t('dirPermission') }}</p>
|
||||||
<div class="px-[20px] text-[14px]">
|
<div class="px-[20px] text-[14px]">
|
||||||
<el-row class="py-[10px] items">
|
<el-row class="py-[10px] items table-head-bg pl-[15px] mb-[10px]">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<span>{{ t('path') }}</span>
|
<span>{{ t('path') }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -178,7 +178,7 @@
|
|||||||
<span>{{ t('status') }}</span>
|
<span>{{ t('status') }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row class="pb-[10px] items" v-for="item in installCheckResult.dir.is_readable">
|
<el-row class="pb-[10px] items pl-[15px]" v-for="item in installCheckResult.dir.is_readable">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<span>{{ item.dir }}</span>
|
<span>{{ item.dir }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -192,7 +192,7 @@
|
|||||||
</el-icon></span>
|
</el-icon></span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row class="pb-[10px] items" v-for="item in installCheckResult.dir.is_write">
|
<el-row class="pb-[10px] items pl-[15px]" v-for="item in installCheckResult.dir.is_write">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<span>{{ item.dir }}</span>
|
<span>{{ item.dir }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -211,7 +211,7 @@
|
|||||||
<div class="bg-[#fff] my-3" v-if="installCheckResult.dir">
|
<div class="bg-[#fff] my-3" v-if="installCheckResult.dir">
|
||||||
<p class="pl-[20px] ">{{ t('packageManageTool') }}</p>
|
<p class="pl-[20px] ">{{ t('packageManageTool') }}</p>
|
||||||
<div class="px-[20px] text-[14px]">
|
<div class="px-[20px] text-[14px]">
|
||||||
<el-row class="py-[10px] items">
|
<el-row class="py-[10px] items table-head-bg pl-[15px] mb-[10px]">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<span>{{ t('name') }}</span>
|
<span>{{ t('name') }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -222,7 +222,7 @@
|
|||||||
<span>{{ t('status') }}</span>
|
<span>{{ t('status') }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row class="pb-[10px] items" v-for="item in installCheckResult.runtime">
|
<el-row class="pb-[10px] items pl-[15px]" v-for="item in installCheckResult.runtime">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -241,7 +241,7 @@
|
|||||||
<div class="bg-[#fff] my-3"
|
<div class="bg-[#fff] my-3"
|
||||||
v-if="installCheckResult.conflict_files && installCheckResult.conflict_files.length">
|
v-if="installCheckResult.conflict_files && installCheckResult.conflict_files.length">
|
||||||
<p class="pl-[20px] ">{{ t('conflictFiles') }}</p>
|
<p class="pl-[20px] ">{{ t('conflictFiles') }}</p>
|
||||||
<div class="px-[20px] text-[14px] pt-[10px]">
|
<div class="px-[20px] text-[14px] pt-[10px] pl-[15px]">
|
||||||
<el-row class="pb-[10px] items" v-for="item in installCheckResult.conflict_files">
|
<el-row class="pb-[10px] items" v-for="item in installCheckResult.conflict_files">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<span>{{ item }}</span>
|
<span>{{ item }}</span>
|
||||||
@ -252,7 +252,7 @@
|
|||||||
<div class="bg-[#fff] my-3">
|
<div class="bg-[#fff] my-3">
|
||||||
<p class="pl-[20px] ">{{ t('process') }}</p>
|
<p class="pl-[20px] ">{{ t('process') }}</p>
|
||||||
<div class="px-[20px] text-[14px]">
|
<div class="px-[20px] text-[14px]">
|
||||||
<el-row class="py-[10px] items">
|
<el-row class="py-[10px] items table-head-bg pl-[15px] mb-[10px]">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<span>{{ t('name') }}</span>
|
<span>{{ t('name') }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -263,7 +263,7 @@
|
|||||||
<span>{{ t('status') }}</span>
|
<span>{{ t('status') }}</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row class="pb-[10px] items">
|
<el-row class="pb-[10px] items pl-[15px]">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<span>php think queue:listen</span>
|
<span>php think queue:listen</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -545,4 +545,12 @@ const getAddonDetialFn = (data: AnyObject) => {
|
|||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
-o-text-overflow: ellipsis;
|
-o-text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 插件安装-弹窗-表格样式
|
||||||
|
.table-head-bg{
|
||||||
|
background: #f5f7f9;
|
||||||
|
}
|
||||||
|
html.dark .table-head-bg{
|
||||||
|
background: #141414;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -2,10 +2,10 @@
|
|||||||
<div class="main-container">
|
<div class="main-container">
|
||||||
<el-card class="box-card !border-none" shadow="never">
|
<el-card class="box-card !border-none" shadow="never">
|
||||||
<div class="flex justify-between items-center">
|
<div class="flex justify-between items-center">
|
||||||
<span class="text-[24px]">{{pageName}}</span>
|
<span class="text-[24px]">{{ pageName }}</span>
|
||||||
<el-button type="primary" class="w-[100px]" @click="addEvent">
|
<!-- <el-button type="primary" class="w-[100px]" @click="addEvent">
|
||||||
{{ t('addMenu') }}
|
{{ t('addMenu') }}
|
||||||
</el-button>
|
</el-button> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-[20px]">
|
<div class="mt-[20px]">
|
||||||
@ -40,8 +40,8 @@
|
|||||||
<el-table-column prop="create_time" :label="t('createTime')" width="180" />
|
<el-table-column prop="create_time" :label="t('createTime')" width="180" />
|
||||||
<el-table-column :label="t('operation')" fixed="right" width="130">
|
<el-table-column :label="t('operation')" fixed="right" width="130">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
|
<!-- <el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
|
||||||
<el-button type="danger" link @click="deleteEvent(row.menu_key)">{{ t('delete') }}</el-button>
|
<el-button type="danger" link @click="deleteEvent(row.menu_key)">{{ t('delete') }}</el-button> -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@ -60,7 +60,7 @@ import { ElMessageBox } from 'element-plus'
|
|||||||
import EditMenu from '@/views/auth/components/edit-menu.vue'
|
import EditMenu from '@/views/auth/components/edit-menu.vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const pageName = route.meta.title;
|
const pageName = route.meta.title
|
||||||
|
|
||||||
const menusTableData = reactive({
|
const menusTableData = reactive({
|
||||||
loading: true,
|
loading: true,
|
||||||
@ -87,7 +87,7 @@ getMenuList()
|
|||||||
const editMenuDialog: Record<string, any> | null = ref(null)
|
const editMenuDialog: Record<string, any> | null = ref(null)
|
||||||
|
|
||||||
const addEvent = () => {
|
const addEvent = () => {
|
||||||
editMenuDialog.value.setFormData({app_type:'admin'})
|
editMenuDialog.value.setFormData({ app_type: 'admin' })
|
||||||
editMenuDialog.value.showDialog = true
|
editMenuDialog.value.showDialog = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main-container">
|
<div class="main-container">
|
||||||
<el-card class="box-card !border-none" shadow="never">
|
<el-card class="box-card !border-none" shadow="never">
|
||||||
|
|
||||||
<div class="flex justify-between items-center">
|
<div class="flex justify-between items-center">
|
||||||
<span class="text-[24px]">{{pageName}}</span>
|
<span class="text-[24px]">{{ pageName }}</span>
|
||||||
<el-button type="primary" class="w-[100px]" @click="addEvent">
|
<!-- <el-button type="primary" class="w-[100px]" @click="addEvent">
|
||||||
{{ t('addMenu') }}
|
{{ t('addMenu') }}
|
||||||
</el-button>
|
</el-button> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-[20px]">
|
<div class="mt-[20px]">
|
||||||
@ -41,8 +41,8 @@
|
|||||||
<el-table-column prop="create_time" :label="t('createTime')" width="180" />
|
<el-table-column prop="create_time" :label="t('createTime')" width="180" />
|
||||||
<el-table-column :label="t('operation')" fixed="right" width="130">
|
<el-table-column :label="t('operation')" fixed="right" width="130">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
|
<!-- <el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
|
||||||
<el-button type="danger" link @click="deleteEvent(row.menu_key)">{{ t('delete') }}</el-button>
|
<el-button type="danger" link @click="deleteEvent(row.menu_key)">{{ t('delete') }}</el-button> -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@ -61,7 +61,7 @@ import { ElMessageBox } from 'element-plus'
|
|||||||
import EditMenu from '@/views/auth/components/edit-menu.vue'
|
import EditMenu from '@/views/auth/components/edit-menu.vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const pageName = route.meta.title;
|
const pageName = route.meta.title
|
||||||
|
|
||||||
const menusTableData = reactive({
|
const menusTableData = reactive({
|
||||||
loading: true,
|
loading: true,
|
||||||
@ -88,7 +88,7 @@ getMenuList()
|
|||||||
const editMenuDialog: Record<string, any> | null = ref(null)
|
const editMenuDialog: Record<string, any> | null = ref(null)
|
||||||
|
|
||||||
const addEvent = () => {
|
const addEvent = () => {
|
||||||
editMenuDialog.value.setFormData({app_type:'site'})
|
editMenuDialog.value.setFormData({ app_type: 'site' })
|
||||||
editMenuDialog.value.showDialog = true
|
editMenuDialog.value.showDialog = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -126,14 +126,4 @@ const infoSwitch = (res) => {
|
|||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
:deep(.warm-prompt) {
|
|
||||||
background-color: var(--el-color-primary-light-9) !important;
|
|
||||||
.el-icon, p {
|
|
||||||
color: var(--el-color-primary-light-3);
|
|
||||||
}
|
|
||||||
.el-alert__content{
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
@ -132,14 +132,4 @@ const infoSwitch = (res: AnyObject) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
:deep(.warm-prompt) {
|
|
||||||
background-color: var(--el-color-primary-light-9) !important;
|
|
||||||
.el-icon, p {
|
|
||||||
color: var(--el-color-primary-light-3);
|
|
||||||
}
|
|
||||||
.el-alert__content{
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
@ -275,7 +275,7 @@ initPage({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wapDomain.value = `${data.domain_url.wap_url}/${data.page}?mode=decorate`; // 模式:decorate 装修 访问预览页面
|
wapDomain.value = `${data.domain_url.wap_url}/${data.page}?mode=decorate&site_id=${data.site_id}`; // 模式:decorate 装修 访问预览页面
|
||||||
})
|
})
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
@ -67,7 +67,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<div class="w-[120px] 2xl:w-[200px] py-[15px] rounded-[10px] flex justify-center items-center cursor-pointer border-[1px] border-[#E5E8EE]" @click="toLink('/tools/app_store')">
|
<div class="w-[120px] 2xl:w-[200px] py-[15px] rounded-[10px] flex justify-center items-center cursor-pointer border-[1px] border-[#E5E8EE]" @click="toLink('/app_store')">
|
||||||
<img class="w-[33px]" src="@/assets/images/index/app.png"/>
|
<img class="w-[33px]" src="@/assets/images/index/app.png"/>
|
||||||
<span class="ml-[10px] text-[16px] text-[#666]">{{t('appMarketplace')}}</span>
|
<span class="ml-[10px] text-[16px] text-[#666]">{{t('appMarketplace')}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,239 +1,245 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main-container" v-loading="loading">
|
<div class="main-container" v-loading="loading">
|
||||||
<el-card class="box-card !border-none mt-[16px]" shadow="never">
|
<el-card class="box-card !border-none mt-[16px]" shadow="never">
|
||||||
<div class="card-header mb-5 pb-[10px] border-b-[1px] border-[#EDEDED]">
|
<div class="card-header mb-5 pb-[10px] border-b-[1px] border-[#EDEDED]">
|
||||||
<span class="font-bold text-[18px] text-[#333333]">{{t('essentialInfo')}}</span>
|
<span class="font-bold text-[18px] text-[#333333]">{{ t('essentialInfo') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg-[#FAFAFD] py-[20px] pr-[80px] pl-[280px] relative">
|
<div class="bg-[#FAFAFD] py-[20px] pr-[80px] pl-[280px] relative">
|
||||||
<div class="member-info absolute w-[250px]">
|
<div class="member-info absolute w-[250px]">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<span class="text-[14px] min-w-[110px] text-right mr-[20px]">{{ t('headimg') }}</span>
|
<span class="text-[14px] min-w-[110px] text-right mr-[20px]">{{ t('headimg') }}</span>
|
||||||
<span class="flex items-end text-[14px]">
|
<span class="flex items-end text-[14px]">
|
||||||
<img class="w-[50px] h-[50px] inline-block" v-if="formData.headimg" :src="img(formData.headimg)" alt="">
|
<img class="w-[50px] h-[50px] inline-block" v-if="formData.headimg" :src="img(formData.headimg)"
|
||||||
<img class="w-[50px] h-[50px] inline-block" v-else src="@/assets/images/default_headimg.png" alt="">
|
alt="">
|
||||||
<el-icon @click="editMemberInfo('headimg')" class="-bottom-[2px] -right-[4px] cursor-pointer"><EditPen color="#273CE2"/></el-icon>
|
<img class="w-[50px] h-[50px] inline-block" v-else src="@/assets/images/default_headimg.png"
|
||||||
|
alt="">
|
||||||
|
<el-icon @click="editMemberInfo('headimg')" class="-bottom-[2px] -right-[4px] cursor-pointer">
|
||||||
|
<EditPen color="#273CE2" />
|
||||||
|
</el-icon>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[20px]">
|
<div class="flex items-center mt-[20px]">
|
||||||
<span class="text-[14px] min-w-[110px] text-right mr-[20px]">UID</span>
|
<span class="text-[14px] min-w-[110px] text-right mr-[20px]">UID</span>
|
||||||
<span class="member-info-item text-[14px] text-[#666666] font-bold w-[150px]">
|
<span class="member-info-item text-[14px] text-[#666666] font-bold w-[150px]">
|
||||||
{{formData.member_no || t('notAvailable')}}
|
{{ formData.member_no || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-row justify="space-evenly" class="flex">
|
<el-row justify="space-evenly" class="flex">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<div class="statistic-card">
|
<div class="statistic-card">
|
||||||
<el-statistic :value="formData.point">
|
<el-statistic :value="formData.point">
|
||||||
<template #title>
|
<template #title>
|
||||||
<div style="display: inline-flex; align-items: center">
|
<div style="display: inline-flex; align-items: center">
|
||||||
<span class="text-[14px]">
|
<span class="text-[14px]">
|
||||||
{{t('point')}}
|
{{ t('point') }}
|
||||||
</span>
|
</span>
|
||||||
<el-tooltip
|
<el-tooltip effect="dark" :content="t('adjust')" placement="top">
|
||||||
effect="dark"
|
<el-icon @click="adjustPoint(formData)" class="ml-2 cursor-pointer"
|
||||||
:content="t('adjust')"
|
:size="12">
|
||||||
placement="top"
|
<EditPen color="#273CE2" />
|
||||||
|
</el-icon>
|
||||||
>
|
</el-tooltip>
|
||||||
<el-icon @click="adjustPoint(formData)" class="ml-2 cursor-pointer" :size="12"><EditPen color="#273CE2"/></el-icon>
|
<el-tooltip effect="dark" :content="t('detail')" placement="top">
|
||||||
</el-tooltip>
|
<el-icon @click="infoPoint(formData)" class="ml-2 cursor-pointer"
|
||||||
<el-tooltip
|
:size="12">
|
||||||
effect="dark"
|
<View />
|
||||||
:content="t('detail')"
|
</el-icon>
|
||||||
placement="top"
|
</el-tooltip>
|
||||||
>
|
</div>
|
||||||
<el-icon @click="infoPoint(formData)" class="ml-2 cursor-pointer" :size="12"><View /></el-icon>
|
</template>
|
||||||
</el-tooltip>
|
</el-statistic>
|
||||||
</div>
|
<div class="statistic-footer">
|
||||||
</template>
|
<div class="footer-item text-[14px] text-[#333333]">
|
||||||
</el-statistic>
|
<span>{{ t('accumulative') }}</span>
|
||||||
<div class="statistic-footer">
|
<span class="green ml-1">
|
||||||
<div class="footer-item text-[14px] text-[#333333]">
|
{{ formData.point_get }}
|
||||||
<span>{{t('accumulative')}}</span>
|
</span>
|
||||||
<span class="green ml-1">
|
</div>
|
||||||
{{formData.point_get}}
|
</div>
|
||||||
</span>
|
</div>
|
||||||
</div>
|
</el-col>
|
||||||
</div>
|
<el-col :span="5">
|
||||||
</div>
|
<div class="statistic-card">
|
||||||
</el-col>
|
<el-statistic :value="formData.balance">
|
||||||
<el-col :span="5">
|
<template #title>
|
||||||
<div class="statistic-card">
|
<div style="display: inline-flex; align-items: center">
|
||||||
<el-statistic :value="formData.balance">
|
|
||||||
<template #title>
|
|
||||||
<div style="display: inline-flex; align-items: center">
|
|
||||||
<span class="text-[14px]">
|
<span class="text-[14px]">
|
||||||
{{t('balance')}}
|
{{ t('balance') }}
|
||||||
</span>
|
</span>
|
||||||
<el-tooltip
|
<el-tooltip effect="dark" :content="t('adjust')" placement="top">
|
||||||
effect="dark"
|
<el-icon @click="adjustBalance(formData)" class="ml-2 cursor-pointer"
|
||||||
:content="t('adjust')"
|
:size="12">
|
||||||
placement="top"
|
<EditPen color="#273CE2" />
|
||||||
>
|
</el-icon>
|
||||||
<el-icon @click="adjustBalance(formData)" class="ml-2 cursor-pointer" :size="12"><EditPen color="#273CE2"/></el-icon>
|
</el-tooltip>
|
||||||
</el-tooltip>
|
<el-tooltip effect="dark" :content="t('detail')" placement="top">
|
||||||
<el-tooltip
|
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer"
|
||||||
effect="dark"
|
:size="12">
|
||||||
:content="t('detail')"
|
<View />
|
||||||
placement="top"
|
</el-icon>
|
||||||
>
|
</el-tooltip>
|
||||||
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer" :size="12"><View /></el-icon>
|
</div>
|
||||||
</el-tooltip>
|
</template>
|
||||||
</div>
|
</el-statistic>
|
||||||
</template>
|
<div class="statistic-footer">
|
||||||
</el-statistic>
|
<div class="footer-item text-[14px] text-[#333333]">
|
||||||
<div class="statistic-footer">
|
<span>{{ t('accumulative') }}</span>
|
||||||
<div class="footer-item text-[14px] text-[#333333]">
|
<span class="red ml-1">
|
||||||
<span>{{t('accumulative')}}</span>
|
{{ formData.balance_get }}
|
||||||
<span class="red ml-1">
|
|
||||||
{{formData.balance_get}}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="5">
|
|
||||||
<div class="statistic-card">
|
|
||||||
<el-statistic :value="formData.money" title="New transactions today ">
|
|
||||||
<template #title>
|
|
||||||
<div style="display: inline-flex; align-items: center">
|
|
||||||
<span class="text-[14px]">
|
|
||||||
{{t("money")}}
|
|
||||||
</span>
|
</span>
|
||||||
<el-tooltip
|
</div>
|
||||||
effect="dark"
|
</div>
|
||||||
:content="t('detail')"
|
</div>
|
||||||
placement="top"
|
</el-col>
|
||||||
>
|
<el-col :span="5">
|
||||||
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer" :size="12"><View/></el-icon>
|
<div class="statistic-card">
|
||||||
</el-tooltip>
|
<el-statistic :value="formData.money" title="New transactions today ">
|
||||||
</div>
|
<template #title>
|
||||||
</template>
|
<div style="display: inline-flex; align-items: center">
|
||||||
</el-statistic>
|
<span class="text-[14px]">
|
||||||
<div class="statistic-footer">
|
{{ t("money") }}
|
||||||
<div class="footer-item text-[14px] text-[#333333]">
|
</span>
|
||||||
<span>{{t('accumulative')}}</span>
|
<el-tooltip effect="dark" :content="t('detail')" placement="top">
|
||||||
<span class="green ml-1">
|
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer"
|
||||||
{{formData.money_get}}
|
:size="12">
|
||||||
</span>
|
<View />
|
||||||
</div>
|
</el-icon>
|
||||||
</div>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</template>
|
||||||
<el-col :span="5">
|
</el-statistic>
|
||||||
<div class="statistic-card">
|
<div class="statistic-footer">
|
||||||
<el-statistic :value="formData.commission" title="New transactions today">
|
<div class="footer-item text-[14px] text-[#333333]">
|
||||||
<template #title>
|
<span>{{ t('accumulative') }}</span>
|
||||||
<div style="display: inline-flex; align-items: center ">
|
<span class="green ml-1">
|
||||||
<span class="text-[14px]">
|
{{ formData.money_get }}
|
||||||
{{t("commission")}}
|
|
||||||
</span>
|
</span>
|
||||||
<el-tooltip
|
</div>
|
||||||
effect="dark"
|
</div>
|
||||||
:content="t('detail')"
|
</div>
|
||||||
placement="top"
|
</el-col>
|
||||||
>
|
<el-col :span="5">
|
||||||
<el-icon @click="infoCommission(formData)" class="ml-2 cursor-pointer" :size="12"><View/></el-icon>
|
<div class="statistic-card">
|
||||||
</el-tooltip>
|
<el-statistic :value="formData.commission" title="New transactions today">
|
||||||
</div>
|
<template #title>
|
||||||
</template>
|
<div style="display: inline-flex; align-items: center ">
|
||||||
</el-statistic>
|
<span class="text-[14px]">
|
||||||
<div class="statistic-footer">
|
{{ t("commission") }}
|
||||||
<div class="footer-item text-[14px] text-[#333333]">
|
</span>
|
||||||
<span>{{t('accumulative')}}</span>
|
<el-tooltip effect="dark" :content="t('detail')" placement="top">
|
||||||
<span class="green ml-1">
|
<el-icon @click="infoCommission(formData)" class="ml-2 cursor-pointer"
|
||||||
{{formData.commission_get}}
|
:size="12">
|
||||||
</span>
|
<View />
|
||||||
</div>
|
</el-icon>
|
||||||
</div>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</template>
|
||||||
|
</el-statistic>
|
||||||
|
<div class="statistic-footer">
|
||||||
|
<div class="footer-item text-[14px] text-[#333333]">
|
||||||
|
<span>{{ t('accumulative') }}</span>
|
||||||
|
<span class="green ml-1">
|
||||||
|
{{ formData.commission_get }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="box-card !border-none" shadow="never">
|
<el-card class="box-card !border-none" shadow="never">
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('urserName') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('urserName') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.username || t('notAvailable')}}
|
{{ formData.username || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('nickname') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('nickname') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.nickname || t('notAvailable')}}
|
{{ formData.nickname || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('mobile') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('mobile') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.mobile || t('notAvailable')}}
|
{{ formData.mobile || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('memberLabel') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('memberLabel') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.member_label_name.toString() || t('notAvailable')}}<el-icon @click="editMemberInfo('member_label')" class="-bottom-[2px] -right-[4px] cursor-pointer"><EditPen color="#273CE2"/></el-icon>
|
{{ formData.member_label_name.toString() || t('notAvailable') }}<el-icon
|
||||||
|
@click="editMemberInfo('member_label')" class="-bottom-[2px] -right-[4px] cursor-pointer">
|
||||||
|
<EditPen color="#273CE2" />
|
||||||
|
</el-icon>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('birthday') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('birthday') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.birthday || t('notAvailable')}}<el-icon @click="editMemberInfo('birthday')" class="-bottom-[2px] -right-[4px] cursor-pointer"><EditPen color="#273CE2"/></el-icon>
|
{{ formData.birthday || t('notAvailable') }}<el-icon @click="editMemberInfo('birthday')"
|
||||||
|
class="-bottom-[2px] -right-[4px] cursor-pointer">
|
||||||
|
<EditPen color="#273CE2" />
|
||||||
|
</el-icon>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('sex') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('sex') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.sex == 1 && t('manSex') || formData.sex == 2 && t('girlSex') || t('secrecySex')}}<el-icon @click="editMemberInfo('sex')" class="-bottom-[2px] -right-[4px] cursor-pointer"><EditPen color="#273CE2"/></el-icon>
|
{{ formData.sex == 1 && t('manSex') || formData.sex == 2 && t('girlSex') || t('secrecySex') }}<el-icon
|
||||||
|
@click="editMemberInfo('sex')" class="-bottom-[2px] -right-[4px] cursor-pointer">
|
||||||
|
<EditPen color="#273CE2" />
|
||||||
|
</el-icon>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('wxUnionid') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('wxUnionid') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.wx_unionid || t('notAvailable')}}
|
{{ formData.wx_unionid || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('weappOpenid') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('weappOpenid') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.weapp_openid || t('notAvailable')}}
|
{{ formData.weapp_openid || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('wxOpenid') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('wxOpenid') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.wx_openid || t('notAvailable')}}
|
{{ formData.wx_openid || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('registeredSource') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('registeredSource') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.register_channel_name || t('notAvailable')}}
|
{{ formData.register_channel_name || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('createTime') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('createTime') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.create_time || t('notAvailable')}}
|
{{ formData.create_time || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mt-[15px]">
|
<div class="flex items-center mt-[15px]">
|
||||||
<span class="text-[14px] w-[110px] text-right mr-[20px]">{{ t('lastVisitTime') }}</span>
|
<span class="text-[14px] w-[130px] text-right mr-[20px]">{{ t('lastVisitTime') }}</span>
|
||||||
<span class="text-[14px] text-[#666666]">
|
<span class="text-[14px] text-[#666666]">
|
||||||
{{formData.last_visit_time || t('notAvailable')}}
|
{{ formData.last_visit_time || t('notAvailable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<point-edit ref="pointDialog" @complete="getMemberInfoFn" />
|
<point-edit ref="pointDialog" @complete="getMemberInfoFn" />
|
||||||
<balance-edit ref="balanceDialog" @complete="getMemberInfoFn" />
|
<balance-edit ref="balanceDialog" @complete="getMemberInfoFn" />
|
||||||
<edit-member ref="editMemberDialog" @complete="getMemberInfoFn()" />
|
<edit-member ref="editMemberDialog" @complete="getMemberInfoFn()" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
@ -241,7 +247,7 @@ import { reactive, ref, watch } from 'vue'
|
|||||||
import { t } from '@/lang'
|
import { t } from '@/lang'
|
||||||
import { getMemberInfo } from '@/api/member'
|
import { getMemberInfo } from '@/api/member'
|
||||||
import { ElMessageBox, FormInstance, ElMessage } from 'element-plus'
|
import { ElMessageBox, FormInstance, ElMessage } from 'element-plus'
|
||||||
import { useRouter,useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import { img } from '@/utils/common'
|
import { img } from '@/utils/common'
|
||||||
import PointEdit from '@/views/member/components/member-point-edit.vue'
|
import PointEdit from '@/views/member/components/member-point-edit.vue'
|
||||||
import BalanceEdit from '@/views/member/components/member-balance-edit.vue'
|
import BalanceEdit from '@/views/member/components/member-balance-edit.vue'
|
||||||
@ -253,82 +259,80 @@ const route = useRoute()
|
|||||||
const appStore = useAppStore()
|
const appStore = useAppStore()
|
||||||
|
|
||||||
// 页面返回按钮
|
// 页面返回按钮
|
||||||
appStore.pageReturn = true;
|
appStore.pageReturn = true
|
||||||
watch(route, (newX,oldX) => {
|
watch(route, (newX, oldX) => {
|
||||||
appStore.pageReturn = false;
|
appStore.pageReturn = false
|
||||||
});
|
})
|
||||||
|
|
||||||
let loading = ref(true)
|
const loading = ref(true)
|
||||||
|
|
||||||
// 获取会员信息
|
// 获取会员信息
|
||||||
const id: number = parseInt(route.query.id || 0)
|
const id: number = parseInt(route.query.id || 0)
|
||||||
const formData: any = reactive({member_label_name: ''});
|
const formData: any = reactive({ member_label_name: '' })
|
||||||
|
|
||||||
const getMemberInfoFn = async () => {
|
const getMemberInfoFn = async () => {
|
||||||
loading.value = true;
|
loading.value = true
|
||||||
if(id) {
|
if (id) {
|
||||||
let data = await (await getMemberInfo(id)).data;
|
const data = await (await getMemberInfo(id)).data
|
||||||
if(!data || Object.keys(data).length == 0){
|
if (!data || Object.keys(data).length == 0) {
|
||||||
ElMessage.error(t('memberNull'))
|
ElMessage.error(t('memberNull'))
|
||||||
setTimeout(()=>{
|
setTimeout(() => {
|
||||||
router.go(-1);
|
router.go(-1)
|
||||||
},2000)
|
}, 2000)
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.keys(data).forEach((item)=>{
|
Object.keys(data).forEach((item) => {
|
||||||
formData[item] = data[item];
|
formData[item] = data[item]
|
||||||
})
|
})
|
||||||
|
|
||||||
if(formData?.member_label_array && Object.keys(formData.member_label_array)?.length ){
|
if (formData?.member_label_array && Object.keys(formData.member_label_array)?.length) {
|
||||||
formData.member_label = Object.values(formData.member_label_array).map((item:any,index)=>{
|
formData.member_label = Object.values(formData.member_label_array).map((item: any, index) => {
|
||||||
return item.label_id
|
return item.label_id
|
||||||
});
|
})
|
||||||
|
|
||||||
formData.member_label_name = Object.values(formData.member_label_array).map((item:any,index)=>{
|
formData.member_label_name = Object.values(formData.member_label_array).map((item: any, index) => {
|
||||||
return item.label_name
|
return item.label_name
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
loading.value = false;
|
loading.value = false
|
||||||
}else{
|
} else {
|
||||||
loading.value = false;
|
loading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getMemberInfoFn();
|
getMemberInfoFn()
|
||||||
|
|
||||||
|
|
||||||
const pointDialog: Record<string, any> | null = ref(null)
|
const pointDialog: Record<string, any> | null = ref(null)
|
||||||
const balanceDialog: Record<string, any> | null = ref(null)
|
const balanceDialog: Record<string, any> | null = ref(null)
|
||||||
const editMemberDialog: Record<string, any> | null = ref(null)
|
const editMemberDialog: Record<string, any> | null = ref(null)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改会员信息
|
* 修改会员信息
|
||||||
*/
|
*/
|
||||||
const editMemberInfo = (type: any) => {
|
const editMemberInfo = (type: any) => {
|
||||||
let data = ref({
|
const data = ref({
|
||||||
type,
|
type,
|
||||||
id,
|
id,
|
||||||
data: formData
|
data: formData
|
||||||
});
|
})
|
||||||
editMemberDialog.value.setDialogType(data.value)
|
editMemberDialog.value.setDialogType(data.value)
|
||||||
editMemberDialog.value.showDialog = true
|
editMemberDialog.value.showDialog = true
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 调整积分
|
* 调整积分
|
||||||
*/
|
*/
|
||||||
const adjustPoint = (data: any) => {
|
const adjustPoint = (data: any) => {
|
||||||
pointDialog.value.setFormData(data)
|
pointDialog.value.setFormData(data)
|
||||||
pointDialog.value.showDialog = true
|
pointDialog.value.showDialog = true
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 调整余额
|
* 调整余额
|
||||||
*/
|
*/
|
||||||
const adjustBalance = (data: any) => {
|
const adjustBalance = (data: any) => {
|
||||||
balanceDialog.value.setFormData(data)
|
balanceDialog.value.setFormData(data)
|
||||||
balanceDialog.value.showDialog = true
|
balanceDialog.value.showDialog = true
|
||||||
}
|
}
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@ -337,37 +341,38 @@ const router = useRouter()
|
|||||||
* 积分详情
|
* 积分详情
|
||||||
*/
|
*/
|
||||||
const infoPoint = () => {
|
const infoPoint = () => {
|
||||||
router.push(`/member/point?id=${id}`)
|
router.push(`/member/point?id=${id}`)
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 余额详情
|
|
||||||
*/
|
|
||||||
const infoBalance = () => {
|
|
||||||
router.push(`/member/balance?id=${id}`)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 佣金详情
|
* 余额详情
|
||||||
*/
|
*/
|
||||||
const infoCommission = () => {
|
const infoBalance = () => {
|
||||||
router.push(`/member/commission?id=${id}`)
|
router.push(`/member/balance?id=${id}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 佣金详情
|
||||||
|
*/
|
||||||
|
const infoCommission = () => {
|
||||||
|
router.push(`/member/commission?id=${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.el-col {
|
.el-col {
|
||||||
background-color: #FAFAFD;
|
background-color: #FAFAFD;
|
||||||
}
|
}
|
||||||
.member-info {
|
|
||||||
left:0px
|
.member-info {
|
||||||
}
|
left: 0px
|
||||||
.member-info-item {
|
}
|
||||||
overflow:hidden;
|
|
||||||
white-space: nowrap;
|
.member-info-item {
|
||||||
text-overflow: ellipsis;
|
overflow: hidden;
|
||||||
-o-text-overflow:ellipsis;
|
white-space: nowrap;
|
||||||
}
|
text-overflow: ellipsis;
|
||||||
</style>
|
-o-text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
<span class="text-base">{{payItems.name }}</span>
|
<span class="text-base">{{payItems.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="pay-table">
|
<div class="pay-table">
|
||||||
<div class="flex items-center pay-table-head bg-[#fbfbfb] table-item-pd table-item-border justify-between">
|
<div class="flex items-center pay-table-head table-bg table-item-pd table-item-border justify-between table-bg">
|
||||||
<span class="text-base text-[#999] w-[150px]">{{t('payType')}}</span>
|
<span class="text-base text-[#999] w-[150px]">{{t('payType')}}</span>
|
||||||
<!-- <span class="text-base font-bold text-[#999] w-[110px]">{{t('settingDefaultPay')}}</span> -->
|
<!-- <span class="text-base font-bold text-[#999] w-[110px]">{{t('settingDefaultPay')}}</span> -->
|
||||||
<span class="text-base text-[#999] w-[110px] text-center">{{t('onState')}}</span>
|
<span class="text-base text-[#999] w-[110px] text-center">{{t('onState')}}</span>
|
||||||
@ -220,4 +220,10 @@ const cancelFn = ()=>{
|
|||||||
:deep(.box-pay-card) .el-card__body{
|
:deep(.box-pay-card) .el-card__body{
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
.table-bg{
|
||||||
|
background: #f5f7f9;
|
||||||
|
}
|
||||||
|
html.dark .table-bg{
|
||||||
|
background: #141414;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -28,7 +28,7 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ali ref="aliDialog" @complete="loadSmsList()" />
|
<ali ref="aliyunDialog" @complete="loadSmsList()" />
|
||||||
<tencent ref="tencentDialog" @complete="loadSmsList()" />
|
<tencent ref="tencentDialog" @complete="loadSmsList()" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
@ -44,7 +44,7 @@ import { useRoute } from 'vue-router'
|
|||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const pageName = route.meta.title;
|
const pageName = route.meta.title;
|
||||||
|
|
||||||
const aliDialog: Record<string, any> | null = ref(null)
|
const aliyunDialog: Record<string, any> | null = ref(null)
|
||||||
const tencentDialog: Record<string, any> | null = ref(null)
|
const tencentDialog: Record<string, any> | null = ref(null)
|
||||||
|
|
||||||
let smsTableData = reactive({
|
let smsTableData = reactive({
|
||||||
|
|||||||
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
<storage-local ref="localDialog" @complete="loadStorageList()" />
|
<storage-local ref="localDialog" @complete="loadStorageList()" />
|
||||||
<storage-qiniu ref="qiniuDialog" @complete="loadStorageList()" />
|
<storage-qiniu ref="qiniuDialog" @complete="loadStorageList()" />
|
||||||
<storage-ali ref="aliDialog" @complete="loadStorageList()" />
|
<storage-ali ref="aliyunDialog" @complete="loadStorageList()" />
|
||||||
<storage-tencent ref="tencentDialog" @complete="loadStorageList()" />
|
<storage-tencent ref="tencentDialog" @complete="loadStorageList()" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
@ -53,7 +53,7 @@ const pageName = route.meta.title;
|
|||||||
|
|
||||||
const localDialog: Record<string, any> | null = ref(null)
|
const localDialog: Record<string, any> | null = ref(null)
|
||||||
const qiniuDialog: Record<string, any> | null = ref(null)
|
const qiniuDialog: Record<string, any> | null = ref(null)
|
||||||
const aliDialog: Record<string, any> | null = ref(null)
|
const aliyunDialog: Record<string, any> | null = ref(null)
|
||||||
const tencentDialog: Record<string, any> | null = ref(null)
|
const tencentDialog: Record<string, any> | null = ref(null)
|
||||||
|
|
||||||
let storageTableData = reactive({
|
let storageTableData = reactive({
|
||||||
|
|||||||
@ -183,15 +183,8 @@ const save = async (formEl: FormInstance | undefined) => {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
:deep(.warm-prompt) {
|
:deep(.warm-prompt) {
|
||||||
background-color: var(--el-color-primary-light-9) !important;
|
.el-alert__description{
|
||||||
.el-icon, p {
|
margin: 0;
|
||||||
color: var(--el-color-primary-light-3);
|
|
||||||
}
|
|
||||||
.el-alert__content{
|
|
||||||
padding: 0;
|
|
||||||
.el-alert__description{
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
<el-form-item :label="t('siteLogo')">
|
<el-form-item :label="t('siteLogo')">
|
||||||
<el-image v-if="formData.logo" class="w-20 h-20" :src="img(formData.logo)" fit="contain"></el-image>
|
<el-image v-if="formData.logo" class="w-20 h-20" :src="img(formData.logo)" fit="contain"></el-image>
|
||||||
|
<img class="w-20 h-20" v-else src="@/assets/images/site_logo.png" alt="" >
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item :label="t('groupName')">
|
<el-form-item :label="t('groupName')">
|
||||||
|
|||||||
@ -258,15 +258,8 @@ const openClose = (i, site_id) => {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
:deep(.warm-prompt) {
|
:deep(.warm-prompt) {
|
||||||
background-color: var(--el-color-primary-light-9) !important;
|
.el-alert__description{
|
||||||
.el-icon, p {
|
margin: 0;
|
||||||
color: var(--el-color-primary-light-3);
|
|
||||||
}
|
|
||||||
.el-alert__content{
|
|
||||||
padding: 0;
|
|
||||||
.el-alert__description{
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user