feat:用户配置
This commit is contained in:
1 parent
711391fc4f
commit
ef873cd140
4 files changed
+112
-13
No files matched your search
Vendored
+1
-1
@@ -62,7 +62,7 @@
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[typescript]": {
|
||||
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
|
||||
"editor.defaultFormatter": "vscode.typescript-language-features"
|
||||
},
|
||||
"[typescriptreact]": {
|
||||
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export async function getRecentPage(data: any) {
|
||||
return await request.post({ url: `/member/recent-cfg/create-or-update`, data })
|
||||
}
|
||||
@@ -41,7 +41,11 @@ const open = async (id?: number) => {
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await UserApi.getUser(id)
|
||||
const data = await UserApi.getUser(id)
|
||||
if (data && data.memberTagList.length) {
|
||||
data.memberRecentTagList = data.memberTagList.map(item => item.tagBizType)
|
||||
}
|
||||
formData.value = data
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
|
||||
+101
-11
@@ -60,26 +60,68 @@
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="手机号" prop="mobile" width="120px" />
|
||||
<el-table-column align="center" label="昵称" prop="nickname" width="120px" />
|
||||
<el-table-column align="center" label="等级" prop="levelName" width="100px" />
|
||||
<el-table-column align="center" label="分组" prop="groupName" width="100px" />
|
||||
<el-table-column :show-overflow-tooltip="false" align="center" label="用户标签">
|
||||
<el-table-column align="center" label="会员" prop="nickname" />
|
||||
<el-table-column align="center" width="160px" label="用户标签">
|
||||
<template #default="{ row }">
|
||||
<div class="flex gap-2">
|
||||
<div class="grid grid-cols-2 gap-1">
|
||||
<dict-tag v-for="v in row.memberTagList" :key="v.tagBizType" :type="DICT_TYPE.MEMBER_RECENT_TAG"
|
||||
:value="v.tagBizType">
|
||||
{{ v }}
|
||||
</dict-tag>
|
||||
:value="v.tagBizType" />
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :show-overflow-tooltip="false" align="center" width="250px" label="用户配置">
|
||||
<template #default="{ row }">
|
||||
<div class="grid grid-cols-2 gap-1">
|
||||
<div class="switch-cell">
|
||||
<span>是否推送:</span>
|
||||
<span>
|
||||
<el-switch v-model="row.recentCfg.isPush" size="small" :active-value="true" :inactive-value="false"
|
||||
@change="memberCfgChange(row)" />
|
||||
</span>
|
||||
</div>
|
||||
<div class="switch-cell">
|
||||
<span>首页隐身:</span>
|
||||
<span>
|
||||
<el-switch v-model="row.recentCfg.homeHide" size="small" :active-value="true" :inactive-value="false"
|
||||
@change="memberCfgChange(row)" />
|
||||
</span>
|
||||
</div>
|
||||
<div class="switch-cell">
|
||||
<span>隐私保护</span>
|
||||
<span>
|
||||
<el-switch v-model="row.recentCfg.privacySecure" size="small" :active-value="true"
|
||||
:inactive-value="false" @change="memberCfgChange(row)" />
|
||||
</span>
|
||||
</div>
|
||||
<div class="switch-cell">
|
||||
<span>短信通知</span>
|
||||
<span>
|
||||
<el-switch v-model="row.recentCfg.shortNote" size="small" :active-value="true" :inactive-value="false"
|
||||
@change="memberCfgChange(row)" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="积分" prop="point" width="100px" />
|
||||
<el-table-column align="center" label="状态" prop="status" width="100px">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :formatter="dateFormatter" align="center" label="登录时间" prop="loginDate" width="180px" />
|
||||
<el-table-column :formatter="dateFormatter" align="center" label="注册时间" prop="createTime" width="180px" />
|
||||
<el-table-column align="center" label="时间" width="250px">
|
||||
<template #default="{ row }">
|
||||
<div>
|
||||
<div>
|
||||
<span>登录时间:</span>
|
||||
<span>{{ formatDate(row.loginDate) }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>注册时间:</span>
|
||||
<span>{{ formatDate(row.createTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :show-overflow-tooltip="false" align="center" fixed="right" label="操作" width="100px">
|
||||
<template #default="{ row }">
|
||||
<div class="flex items-center justify-center">
|
||||
@@ -135,9 +177,11 @@
|
||||
<CouponSendForm ref="couponSendFormRef" />
|
||||
<!-- 修改用户标签弹窗 -->
|
||||
<UserMemberTagForm ref="updateMemberTagFormRef" @success="getList" />
|
||||
<!-- 修改用户设置 -->
|
||||
<UserSettingForm ref="userSettingFormRef" @success="getList" />
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import * as UserApi from '@/api/member/user'
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import UserForm from './UserForm.vue'
|
||||
@@ -151,6 +195,8 @@ import UserMemberTagForm from "./components/UserMemberTagForm.vue"
|
||||
import { CouponSendForm } from '@/views/mall/promotion/coupon/components'
|
||||
import { checkPermi } from '@/utils/permission'
|
||||
|
||||
import * as RecentCfgApi from '@/api/member/recent-cfg'
|
||||
|
||||
defineOptions({ name: 'MemberUser' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
@@ -174,8 +220,27 @@ const updateLevelFormRef = ref() // 修改会员等级表单
|
||||
const updatePointFormRef = ref() // 修改会员积分表单
|
||||
const UpdateBalanceFormRef = ref() // 修改用户余额表单
|
||||
const updateMemberTagFormRef = ref() // 修改用户标签表单
|
||||
const userSettingFormRef = ref() // 修改用户设置表单
|
||||
const selectedIds = ref<number[]>([]) // 表格的选中 ID 数组
|
||||
|
||||
// 修改朋友圈配置
|
||||
const memberCfgChange = async (row: any) => {
|
||||
loading.value = true
|
||||
try {
|
||||
const _params = {
|
||||
...row.recentCfg,
|
||||
memberId: row.id
|
||||
}
|
||||
await RecentCfgApi.getRecentPage(_params)
|
||||
message.success("操作成功")
|
||||
getList()
|
||||
} catch (error) {
|
||||
console.log("|修改朋友圈配置|,意外的错误", error);
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
@@ -245,6 +310,9 @@ const handleCommand = (command: string, row: UserApi.UserVO) => {
|
||||
case 'handleUpdateMemberTag':
|
||||
updateMemberTagFormRef.value.open(row.id)
|
||||
break
|
||||
case 'handleUpdateMemberCfg':
|
||||
userSettingFormRef.value.open(row.id)
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
@@ -255,3 +323,25 @@ onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.switch-cell {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
span:first-child {
|
||||
width: 70px;
|
||||
}
|
||||
|
||||
span:last-child {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in new issue
Block a user