会员
This commit is contained in:
@@ -20,7 +20,7 @@ export function getActivity(id) {
|
||||
// 新增活动
|
||||
export function addActivity(data) {
|
||||
return request({
|
||||
url: '/back/activity/add',
|
||||
url: '/back/activity/addActivity',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@@ -29,8 +29,8 @@ export function addActivity(data) {
|
||||
// 修改活动
|
||||
export function updateActivity(data) {
|
||||
return request({
|
||||
url: '/back/activity/update',
|
||||
method: 'post',
|
||||
url: '/back/activity',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
@@ -41,4 +41,4 @@ export function delActivity(id) {
|
||||
url: '/back/activity/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,11 +9,17 @@
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择活动状态" clearable>
|
||||
<el-option label="进行中" value="1" />
|
||||
<el-option label="已结束" value="0" />
|
||||
<el-option label="未开始" value="2" />
|
||||
<!-- <el-form-item label="活动状态" prop="status">-->
|
||||
<!-- <el-select v-model="queryParams.status" placeholder="请选择活动状态" clearable>-->
|
||||
<!-- <el-option label="进行中" value="1" />-->
|
||||
<!-- <el-option label="已结束" value="0" />-->
|
||||
<!-- <el-option label="未开始" value="2" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="状态" prop="shelf">
|
||||
<el-select v-model="queryParams.shelf" placeholder="请选择商家状态" clearable>
|
||||
<el-option label="上架" value="1" />
|
||||
<el-option label="下架" value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -26,27 +32,36 @@
|
||||
<el-table v-loading="loading" :data="activityList">
|
||||
<el-table-column label="序号" align="center" type="index" width="60" />
|
||||
<el-table-column label="活动名称" align="center" prop="name" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="活动描述" align="center" prop="description" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="活动图片" align="center" prop="imageUrl" width="120">
|
||||
<el-table-column label="活动内容" align="center" prop="content" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="活动图片" align="center" prop="img" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-image
|
||||
style="width: 60px; height: 60px"
|
||||
:src="getImageUrlMethod(scope.row.imageUrl)"
|
||||
:preview-src-list="[getImageUrlMethod(scope.row.imageUrl)]"
|
||||
:src="baseUrl + scope.row.img"
|
||||
:preview-src-list="[baseUrl + scope.row.img]"
|
||||
fit="cover"
|
||||
v-if="scope.row.img"
|
||||
>
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
<i class="el-icon-picture-outline" v-else></i>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="开始时间" align="center" prop="startTime" width="120" />
|
||||
<el-table-column label="结束时间" align="center" prop="endTime" width="120" />
|
||||
<el-table-column label="活动状态" align="center" prop="status" width="100">
|
||||
<!-- <el-table-column label="活动状态" align="center" prop="status" width="100">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <el-tag :type="scope.row.s === '1' ? 'success' : scope.row.status === '2' ? 'warning' : 'info'">-->
|
||||
<!-- {{ scope.row.status === '1' ? '进行中' : scope.row.status === '2' ? '未开始' : '已结束' }}-->
|
||||
<!-- </el-tag>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column label="商家状态" align="center" prop="shelf" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.status === '1' ? 'success' : scope.row.status === '2' ? 'warning' : 'info'">
|
||||
{{ scope.row.status === '1' ? '进行中' : scope.row.status === '2' ? '未开始' : '已结束' }}
|
||||
<el-tag :type="scope.row.shelf === '1' ? 'success' : 'danger'">
|
||||
{{ scope.row.shelf === '1' ? '上架' : '下架' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -83,21 +98,24 @@
|
||||
<el-form-item label="活动名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入活动名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="活动描述" prop="description">
|
||||
<el-form-item label="活动内容" prop="content">
|
||||
<el-input
|
||||
v-model="form.description"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入活动描述"
|
||||
v-model="form.content"
|
||||
placeholder="请输入活动内容(只能填数字)"
|
||||
@input="validateNumberInput"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动图片" prop="imageUrl">
|
||||
<image-upload
|
||||
v-model="form.imageUrl"
|
||||
:limit="1"
|
||||
:file-type="['jpg', 'jpeg', 'png', 'gif']"
|
||||
<el-form-item label="活动图片" prop="img">
|
||||
<image-upload
|
||||
v-model="form.img"
|
||||
:limit="1"
|
||||
:file-type="['jpg', 'jpeg', 'png', 'gif']"
|
||||
action="/back/upload/config/file"
|
||||
:data="{type: 'activity'}"
|
||||
/>
|
||||
<div class="el-upload__tip" slot="tip">
|
||||
图片将保存到服务器,请确保上传的图片符合要求
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="开始时间" prop="startTime">
|
||||
<el-date-picker
|
||||
@@ -117,11 +135,10 @@
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动状态" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio label="0">已结束</el-radio>
|
||||
<el-radio label="1">进行中</el-radio>
|
||||
<el-radio label="2">未开始</el-radio>
|
||||
<el-form-item label="商家状态" prop="shelf">
|
||||
<el-radio-group v-model="form.shelf">
|
||||
<el-radio label="1">上架</el-radio>
|
||||
<el-radio label="2">下架</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动链接" prop="activityUrl">
|
||||
@@ -140,10 +157,26 @@
|
||||
import { listActivity, getActivity, delActivity, addActivity, updateActivity } from "@/api/activity/activity";
|
||||
import { getImageUrl } from "@/utils/image";
|
||||
|
||||
// 获取服务器基础URL
|
||||
const baseUrl = process.env.VUE_APP_BASE_API || '';
|
||||
|
||||
export default {
|
||||
name: "Activity",
|
||||
data() {
|
||||
// 验证结束时间必须大于开始时间
|
||||
const validateEndTime = (rule, value, callback) => {
|
||||
if (value && this.form.startTime) {
|
||||
if (new Date(value) <= new Date(this.form.startTime)) {
|
||||
callback(new Error('结束时间必须大于开始时间'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
return {
|
||||
baseUrl: process.env.VUE_APP_BASE_API,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
@@ -167,26 +200,42 @@ export default {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
name: null,
|
||||
status: null
|
||||
status: null,
|
||||
shelf: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
form: {
|
||||
id: null,
|
||||
name: null,
|
||||
content: null,
|
||||
img: null,
|
||||
startTime: null,
|
||||
endTime: null,
|
||||
status: "1",
|
||||
shelf: "1",
|
||||
activityUrl: null
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: "活动名称不能为空", trigger: "blur" }
|
||||
],
|
||||
description: [
|
||||
{ required: true, message: "活动描述不能为空", trigger: "blur" }
|
||||
content: [
|
||||
{ required: true, message: "活动内容不能为空", trigger: "blur" },
|
||||
{ pattern: /^\d+$/, message: "活动内容只能填数字", trigger: "blur" }
|
||||
],
|
||||
img: [
|
||||
{ required: true, message: "活动图片不能为空", trigger: "change" }
|
||||
],
|
||||
startTime: [
|
||||
{ required: true, message: "开始时间不能为空", trigger: "change" }
|
||||
],
|
||||
endTime: [
|
||||
{ required: true, message: "结束时间不能为空", trigger: "change" }
|
||||
{ required: true, message: "结束时间不能为空", trigger: "change" },
|
||||
{ validator: validateEndTime, trigger: "change" }
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: "活动状态不能为空", trigger: "change" }
|
||||
shelf: [
|
||||
{ required: true, message: "商家状态不能为空", trigger: "change" }
|
||||
]
|
||||
}
|
||||
};
|
||||
@@ -214,11 +263,12 @@ export default {
|
||||
this.form = {
|
||||
id: null,
|
||||
name: null,
|
||||
description: null,
|
||||
imageUrl: null,
|
||||
content: null,
|
||||
img: null,
|
||||
startTime: null,
|
||||
endTime: null,
|
||||
status: "1",
|
||||
shelf: "1",
|
||||
activityUrl: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
@@ -251,6 +301,22 @@ export default {
|
||||
const id = row.id || this.ids
|
||||
getActivity(id).then(response => {
|
||||
this.form = response.data;
|
||||
// 确保图片URL正确处理,用于回显
|
||||
if (this.form.img) {
|
||||
// 如果img不是完整URL,则处理为相对路径
|
||||
if (this.form.img.startsWith('http://') || this.form.img.startsWith('https://')) {
|
||||
// 完整URL保持不变
|
||||
} else {
|
||||
// 确保路径格式正确,移除baseUrl前缀(如果有)
|
||||
if (this.form.img.startsWith(baseUrl)) {
|
||||
this.form.img = this.form.img.substring(baseUrl.length);
|
||||
}
|
||||
// 确保路径不以/开头(因为上传组件期望的是相对路径)
|
||||
if (this.form.img.startsWith('/')) {
|
||||
this.form.img = this.form.img.substring(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.open = true;
|
||||
this.title = "修改活动";
|
||||
});
|
||||
@@ -287,8 +353,27 @@ export default {
|
||||
},
|
||||
// 获取图片完整URL的方法
|
||||
getImageUrlMethod(imagePath) {
|
||||
return getImageUrl(imagePath);
|
||||
if (!imagePath) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// 如果已经是完整URL,直接返回
|
||||
if (imagePath.startsWith('http://') || imagePath.startsWith('https://')) {
|
||||
return imagePath;
|
||||
}
|
||||
|
||||
// 确保路径以/开头
|
||||
if (!imagePath.startsWith('/')) {
|
||||
imagePath = '/' + imagePath;
|
||||
}
|
||||
|
||||
// 返回完整URL
|
||||
return baseUrl + imagePath;
|
||||
},
|
||||
// 验证活动内容只能输入数字
|
||||
validateNumberInput() {
|
||||
this.form.content = this.form.content.replace(/[^\d]/g, '');
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<el-table-column label="昵称" align="center" prop="nickname" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="性别" align="center" prop="gender" width="60">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.gender === 1 ? '男' : '女' }}</span>
|
||||
<span>{{ scope.row.gender === '1' ? '男' : scope.row.gender === '2' ? '女' : '未知' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="生日" align="center" prop="birthday" width="100">
|
||||
@@ -42,14 +42,14 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status" width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.status === 1 ? 'success' : 'danger'" size="mini">
|
||||
{{ scope.row.status === 1 ? '正常' : '黑名单' }}
|
||||
<el-tag :type="scope.row.status === '1' ? 'success' : 'danger'" size="mini">
|
||||
{{ scope.row.status === '1' ? '正常' : '黑名单' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="会员状态" align="center" prop="vipStatus" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.vipStatus === 1 ? 'vip' : '普通用户' }}</span>
|
||||
<span>{{ scope.row.vipStatus === '1' ? 'vip' : '普通用户' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="播放标签" align="center" prop="playTag" width="100">
|
||||
@@ -57,9 +57,9 @@
|
||||
<el-tag type="warning" size="mini">{{ scope.row.playTag }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="本周在线时长" align="center" prop="onlineTime" width="120">
|
||||
<el-table-column label="本周在线时长" align="center" prop="online" width="120">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.onlineTime }}小时</span>
|
||||
<span>{{ scope.row.online }}小时</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
|
||||
@@ -67,15 +67,15 @@
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
:style="{ color: scope.row.status === 1 ? '#F56C6C' : '#67C23A' }"
|
||||
:style="{ color: scope.row.status === '1' ? '#F56C6C' : '#67C23A' }"
|
||||
@click="handleStatusChange(scope.row)"
|
||||
>
|
||||
{{ scope.row.status === 1 ? '加入黑名单' : '取消加入黑名单' }}
|
||||
{{ scope.row.status === '1' ? '加入黑名单' : '取消加入黑名单' }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
@@ -134,9 +134,9 @@ export default {
|
||||
},
|
||||
/** 状态修改 */
|
||||
handleStatusChange(row) {
|
||||
const statusText = row.status === 1 ? "加入黑名单" : "取消加入黑名单";
|
||||
const newStatus = row.status === 1 ? 0 : 1;
|
||||
|
||||
const statusText = row.status === '1' ? "加入黑名单" : "取消加入黑名单";
|
||||
const newStatus = row.status === '1' ? '2' : '1';
|
||||
|
||||
this.$modal.confirm('确认要' + statusText + '用户"' + row.nickname + '"吗?').then(function() {
|
||||
return updateUserStatus(row.id, newStatus);
|
||||
}).then(() => {
|
||||
@@ -152,4 +152,4 @@ export default {
|
||||
.el-tag {
|
||||
border-radius: 12px;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user