This commit is contained in:
全栈小学生 2023-06-01 19:31:28 +08:00
parent 2cf40a97f8
commit ee1a7c20d6
21 changed files with 344 additions and 311 deletions

View File

@ -1,5 +1,6 @@
// Generated by 'unplugin-auto-import'
export {}
declare global {
const ElMessage: typeof import('element-plus/es')['ElMessage']
const ElNotification: typeof import('element-plus/es')['ElNotification']
}

14
admin/components.d.ts vendored
View File

@ -10,6 +10,7 @@ declare module '@vue/runtime-core' {
Attachment: typeof import('./src/components/upload-attachment/attachment.vue')['default']
DiyLink: typeof import('./src/components/diy-link/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']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
@ -17,13 +18,18 @@ declare module '@vue/runtime-core' {
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
ElCollapse: typeof import('element-plus/es')['ElCollapse']
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
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']
ElDivider: typeof import('element-plus/es')['ElDivider']
ElDrawer: typeof import('element-plus/es')['ElDrawer']
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
@ -37,26 +43,34 @@ declare module '@vue/runtime-core' {
ElImage: typeof import('element-plus/es')['ElImage']
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
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']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElOptionGroup: typeof import('element-plus/es')['ElOptionGroup']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElResult: typeof import('element-plus/es')['ElResult']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSlider: typeof import('element-plus/es')['ElSlider']
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']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree']
ElUpload: typeof import('element-plus/es')['ElUpload']
Icon: typeof import('./src/components/icon/index.vue')['default']
PopoverInput: typeof import('./src/components/popover-input/index.vue')['default']

View File

@ -22,7 +22,7 @@ export function getAddonDetial(id: number) {
* @returns
*/
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
*/
export function executeInstall(addon: string) {
return request.post(`addon/install/execute/${addon}`, {}, { showErrorMessage: true })
return request.post(`addon/install/execute/${addon}`, {})
}

View File

@ -21,8 +21,8 @@
"sexPlaceholder": "请选择性别",
"headimg": "会员头像",
"wxUnionid": "微信unionid",
"weappOpenid": "微信用户openid",
"wxOpenid": "微信小程openid",
"weappOpenid": "微信公众号openid",
"wxOpenid": "微信小程openid",
"memberLabel": "会员标签",
"memberLabelPlaceholder": "请选择会员标签",
"nickNamePlaceholder": "请输入会员名称",

View File

@ -23,6 +23,7 @@
"contactAddress": "联系地址",
"address": "详细地址",
"contactAddressPlaceholder":"联系地址",
"keywords":"关键字",
"keywordsPlaceholder": "网站关键字",
"logoPlaceholder": "网站Logo",
"descPlaceholder": "网站简介",

View File

@ -164,3 +164,31 @@ select:-webkit-autofill {
}
}
}
// 温馨提示样式
.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;
}
}

View File

@ -1,5 +1,5 @@
<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" >
<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">
@ -9,7 +9,7 @@
<img v-else class="w-[240px] h-[120px]" src="@/assets/images/app_default.png"/>
</div>
<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>
</div>
</div>
@ -60,6 +60,9 @@ const toLink = (link) => {
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
}
.main {
background-color: var(--el-bg-color-overlay);
}
.app-item {
// box-shadow: 0px 6px 18px 0px rgba(82,129,187,0.1);
}

View File

@ -167,7 +167,7 @@
v-if="!installCheckResult.job_normal" />
<p class="pt-[20px] pl-[20px] ">{{ t('dirPermission') }}</p>
<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">
<span>{{ t('path') }}</span>
</el-col>
@ -178,7 +178,7 @@
<span>{{ t('status') }}</span>
</el-col>
</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">
<span>{{ item.dir }}</span>
</el-col>
@ -192,7 +192,7 @@
</el-icon></span>
</el-col>
</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">
<span>{{ item.dir }}</span>
</el-col>
@ -211,7 +211,7 @@
<div class="bg-[#fff] my-3" v-if="installCheckResult.dir">
<p class="pl-[20px] ">{{ t('packageManageTool') }}</p>
<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">
<span>{{ t('name') }}</span>
</el-col>
@ -222,7 +222,7 @@
<span>{{ t('status') }}</span>
</el-col>
</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">
<span>{{ item.name }}</span>
</el-col>
@ -241,7 +241,7 @@
<div class="bg-[#fff] my-3"
v-if="installCheckResult.conflict_files && installCheckResult.conflict_files.length">
<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-col :span="24">
<span>{{ item }}</span>
@ -252,7 +252,7 @@
<div class="bg-[#fff] my-3">
<p class="pl-[20px] ">{{ t('process') }}</p>
<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">
<span>{{ t('name') }}</span>
</el-col>
@ -263,7 +263,7 @@
<span>{{ t('status') }}</span>
</el-col>
</el-row>
<el-row class="pb-[10px] items">
<el-row class="pb-[10px] items pl-[15px]">
<el-col :span="12">
<span>php think queue:listen</span>
</el-col>
@ -545,4 +545,12 @@ const getAddonDetialFn = (data: AnyObject) => {
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
}
// --
.table-head-bg{
background: #f5f7f9;
}
html.dark .table-head-bg{
background: #141414;
}
</style>

View File

@ -3,9 +3,9 @@
<el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center">
<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') }}
</el-button>
</el-button> -->
</div>
<div class="mt-[20px]">
@ -40,8 +40,8 @@
<el-table-column prop="create_time" :label="t('createTime')" width="180" />
<el-table-column :label="t('operation')" fixed="right" width="130">
<template #default="{ row }">
<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="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
<el-button type="danger" link @click="deleteEvent(row.menu_key)">{{ t('delete') }}</el-button> -->
</template>
</el-table-column>
</el-table>
@ -60,7 +60,7 @@ import { ElMessageBox } from 'element-plus'
import EditMenu from '@/views/auth/components/edit-menu.vue'
import { useRoute } from 'vue-router'
const route = useRoute()
const pageName = route.meta.title;
const pageName = route.meta.title
const menusTableData = reactive({
loading: true,

View File

@ -4,9 +4,9 @@
<div class="flex justify-between items-center">
<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') }}
</el-button>
</el-button> -->
</div>
<div class="mt-[20px]">
@ -41,8 +41,8 @@
<el-table-column prop="create_time" :label="t('createTime')" width="180" />
<el-table-column :label="t('operation')" fixed="right" width="130">
<template #default="{ row }">
<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="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
<el-button type="danger" link @click="deleteEvent(row.menu_key)">{{ t('delete') }}</el-button> -->
</template>
</el-table-column>
</el-table>
@ -61,7 +61,7 @@ import { ElMessageBox } from 'element-plus'
import EditMenu from '@/views/auth/components/edit-menu.vue'
import { useRoute } from 'vue-router'
const route = useRoute()
const pageName = route.meta.title;
const pageName = route.meta.title
const menusTableData = reactive({
loading: true,

View File

@ -126,14 +126,4 @@ const infoSwitch = (res) => {
</script>
<style lang="scss" scoped>
: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>
<style lang="scss" scoped></style>

View File

@ -132,14 +132,4 @@ const infoSwitch = (res: AnyObject) => {
}
</script>
<style lang="scss" scoped>
: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>
<style lang="scss" scoped></style>

View File

@ -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(() => {

View File

@ -67,7 +67,7 @@
</div>
</el-col>
<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"/>
<span class="ml-[10px] text-[16px] text-[#666]">{{t('appMarketplace')}}</span>
</div>

View File

@ -9,9 +9,13 @@
<div class="flex items-center">
<span class="text-[14px] min-w-[110px] text-right mr-[20px]">{{ t('headimg') }}</span>
<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-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>
<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-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>
</div>
<div class="flex items-center mt-[20px]">
@ -31,20 +35,17 @@
<span class="text-[14px]">
{{ t('point') }}
</span>
<el-tooltip
effect="dark"
:content="t('adjust')"
placement="top"
>
<el-icon @click="adjustPoint(formData)" class="ml-2 cursor-pointer" :size="12"><EditPen color="#273CE2"/></el-icon>
<el-tooltip effect="dark" :content="t('adjust')" placement="top">
<el-icon @click="adjustPoint(formData)" class="ml-2 cursor-pointer"
:size="12">
<EditPen color="#273CE2" />
</el-icon>
</el-tooltip>
<el-tooltip
effect="dark"
:content="t('detail')"
placement="top"
>
<el-icon @click="infoPoint(formData)" class="ml-2 cursor-pointer" :size="12"><View /></el-icon>
<el-tooltip effect="dark" :content="t('detail')" placement="top">
<el-icon @click="infoPoint(formData)" class="ml-2 cursor-pointer"
:size="12">
<View />
</el-icon>
</el-tooltip>
</div>
</template>
@ -67,19 +68,17 @@
<span class="text-[14px]">
{{ t('balance') }}
</span>
<el-tooltip
effect="dark"
:content="t('adjust')"
placement="top"
>
<el-icon @click="adjustBalance(formData)" class="ml-2 cursor-pointer" :size="12"><EditPen color="#273CE2"/></el-icon>
<el-tooltip effect="dark" :content="t('adjust')" placement="top">
<el-icon @click="adjustBalance(formData)" class="ml-2 cursor-pointer"
:size="12">
<EditPen color="#273CE2" />
</el-icon>
</el-tooltip>
<el-tooltip
effect="dark"
:content="t('detail')"
placement="top"
>
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer" :size="12"><View /></el-icon>
<el-tooltip effect="dark" :content="t('detail')" placement="top">
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer"
:size="12">
<View />
</el-icon>
</el-tooltip>
</div>
</template>
@ -102,12 +101,11 @@
<span class="text-[14px]">
{{ t("money") }}
</span>
<el-tooltip
effect="dark"
:content="t('detail')"
placement="top"
>
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer" :size="12"><View/></el-icon>
<el-tooltip effect="dark" :content="t('detail')" placement="top">
<el-icon @click="infoBalance(formData)" class="ml-2 cursor-pointer"
:size="12">
<View />
</el-icon>
</el-tooltip>
</div>
</template>
@ -130,12 +128,11 @@
<span class="text-[14px]">
{{ t("commission") }}
</span>
<el-tooltip
effect="dark"
:content="t('detail')"
placement="top"
>
<el-icon @click="infoCommission(formData)" class="ml-2 cursor-pointer" :size="12"><View/></el-icon>
<el-tooltip effect="dark" :content="t('detail')" placement="top">
<el-icon @click="infoCommission(formData)" class="ml-2 cursor-pointer"
:size="12">
<View />
</el-icon>
</el-tooltip>
</div>
</template>
@ -156,74 +153,83 @@
</el-card>
<el-card class="box-card !border-none" shadow="never">
<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]">
{{ formData.username || t('notAvailable') }}
</span>
</div>
<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]">
{{ formData.nickname || t('notAvailable') }}
</span>
</div>
<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]">
{{ formData.mobile || t('notAvailable') }}
</span>
</div>
<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]">
{{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>
</div>
<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]">
{{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>
</div>
<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]">
{{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>
</div>
<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]">
{{ formData.wx_unionid || t('notAvailable') }}
</span>
</div>
<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]">
{{ formData.weapp_openid || t('notAvailable') }}
</span>
</div>
<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]">
{{ formData.wx_openid || t('notAvailable') }}
</span>
</div>
<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]">
{{ formData.register_channel_name || t('notAvailable') }}
</span>
</div>
<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]">
{{ formData.create_time || t('notAvailable') }}
</span>
</div>
<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]">
{{ formData.last_visit_time || t('notAvailable') }}
</span>
@ -253,64 +259,62 @@ const route = useRoute()
const appStore = useAppStore()
//
appStore.pageReturn = true;
appStore.pageReturn = true
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 formData: any = reactive({member_label_name: ''});
const formData: any = reactive({ member_label_name: '' })
const getMemberInfoFn = async () => {
loading.value = true;
loading.value = true
if (id) {
let data = await (await getMemberInfo(id)).data;
const data = await (await getMemberInfo(id)).data
if (!data || Object.keys(data).length == 0) {
ElMessage.error(t('memberNull'))
setTimeout(() => {
router.go(-1);
router.go(-1)
}, 2000)
return false;
return false
}
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) {
formData.member_label = Object.values(formData.member_label_array).map((item: any, index) => {
return item.label_id
});
})
formData.member_label_name = Object.values(formData.member_label_array).map((item: any, index) => {
return item.label_name
});
})
}
loading.value = false;
loading.value = false
} else {
loading.value = false;
loading.value = false
}
}
getMemberInfoFn();
getMemberInfoFn()
const pointDialog: Record<string, any> | null = ref(null)
const balanceDialog: Record<string, any> | null = ref(null)
const editMemberDialog: Record<string, any> | null = ref(null)
/**
* 修改会员信息
*/
const editMemberInfo = (type: any) => {
let data = ref({
const data = ref({
type,
id,
data: formData
});
})
editMemberDialog.value.setDialogType(data.value)
editMemberDialog.value.showDialog = true
}
@ -340,7 +344,6 @@ const infoPoint = () => {
router.push(`/member/point?id=${id}`)
}
/**
* 余额详情
*/
@ -361,9 +364,11 @@ const infoPoint = () => {
.el-col {
background-color: #FAFAFD;
}
.member-info {
left: 0px
}
.member-info-item {
overflow: hidden;
white-space: nowrap;

View File

@ -12,7 +12,7 @@
<span class="text-base">{{payItems.name }}</span>
</div>
<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 font-bold text-[#999] w-[110px]">{{t('settingDefaultPay')}}</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{
padding: 0;
}
.table-bg{
background: #f5f7f9;
}
html.dark .table-bg{
background: #141414;
}
</style>

View File

@ -28,7 +28,7 @@
</el-table>
</div>
<ali ref="aliDialog" @complete="loadSmsList()" />
<ali ref="aliyunDialog" @complete="loadSmsList()" />
<tencent ref="tencentDialog" @complete="loadSmsList()" />
</el-card>
</div>
@ -44,7 +44,7 @@ import { useRoute } from 'vue-router'
const route = useRoute()
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)
let smsTableData = reactive({

View File

@ -33,7 +33,7 @@
<storage-local ref="localDialog" @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()" />
</el-card>
</div>
@ -53,7 +53,7 @@ const pageName = route.meta.title;
const localDialog: 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)
let storageTableData = reactive({

View File

@ -183,15 +183,8 @@ const save = async (formEl: FormInstance | undefined) => {
<style lang="scss" scoped>
: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;
.el-alert__description{
margin: 0;
}
}
}
</style>

View File

@ -10,6 +10,7 @@
<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>
<img class="w-20 h-20" v-else src="@/assets/images/site_logo.png" alt="" >
</el-form-item>
<el-form-item :label="t('groupName')">

View File

@ -258,15 +258,8 @@ const openClose = (i, site_id) => {
<style lang="scss" scoped>
: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;
.el-alert__description{
margin: 0;
}
}
}
</style>