15 Commits

Author SHA1 Message Date
wangxiangwen 11397c6703 Merge branch 'milestone0718-2025周年庆后台' of http://39.101.133.168:8807/lihuilin/AnniversaryBackstage into milestone0718-2025周年庆后台 3 weeks ago
wangxiangwen 885ead2d70 去掉选择状态+对添加内定抽奖的精网号和姓名限制 3 weeks ago
lihuilin f1b24fbe8c 导入用户表单高度 3 weeks ago
lihuilin 36210dcb05 Merge branch 'milestone0718-2025周年庆后台' of http://39.101.133.168:8807/lihuilin/AnniversaryBackstage into milestone0718-2025周年庆后台 3 weeks ago
lihuilin cb92088357 show-overflow-tooltip 3 weeks ago
wangxiangwen d96e658496 防抖+过长名字隐 3 weeks ago
wangxiangwen da3c102e0a 添加活动名称不能有空格 3 weeks ago
wangxiangwen fa7096fe8f Merge branch 'milestone0718-2025周年庆后台' of http://39.101.133.168:8807/lihuilin/AnniversaryBackstage into milestone0718-2025周年庆后台 3 weeks ago
wangxiangwen 4d0bec1451 Merge branch 'wangxiangwen/feature-20250716103042-周年活动+众筹前台页面' into milestone0718-2025周年庆后台 3 weeks ago
lihuilin 0bce54a038 内定表格高度 3 weeks ago
lihuilin 9d7b302980 Merge branch 'lihuilin/feature-20250718094329-25周年庆后台' into milestone0718-2025周年庆后台 3 weeks ago
lihuilin d55cbe0779 Merge branch 'milestone0718-2025周年庆后台' of http://39.101.133.168:8807/lihuilin/AnniversaryBackstage into milestone0718-2025周年庆后台 3 weeks ago
lihuilin e36f961c6e 这是一次拉取 3 weeks ago
lihuilin 7037bb0039 导入用户高度 3 weeks ago
lihuilin 441f235135 gradeId传参解决 4 weeks ago
  1. 28
      activitylink/src/views/zhongchou/activity/index.vue
  2. 50
      activitylink/src/views/zhongchou/gift/importFixedList/index.vue
  3. 102
      activitylink/src/views/zhongchou/gift/importuser/index.vue
  4. 6
      activitylink/src/views/zhongchou/gift/index.vue
  5. 15
      activitylink/src/views/zhongchou/level/index.vue

28
activitylink/src/views/zhongchou/activity/index.vue

@ -14,7 +14,7 @@
<div class="content-area">
<div class="table-container">
<el-table :data="currentPageData" style="width: auto" :row-style="{ height: '60px' } ">
<el-table-column prop="activityName" label="活动名称"></el-table-column>
<el-table-column prop="activityName" label="活动名称" show-overflow-tooltip></el-table-column>
<el-table-column prop="marketOne" label="市场一"></el-table-column>
<el-table-column prop="marketTwo" label="市场二"></el-table-column>
@ -106,12 +106,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="活动状态" prop="status">
<!-- <el-form-item label="活动状态" prop="status">
<el-select v-model="activity.status" placeholder="请选择活动状态">
<el-option label="启用" value="1" />
<el-option label="禁用" value="0" />
</el-select>
</el-form-item>
</el-form-item> -->
<!-- 新增开始时间 -->
<el-form-item label="开始时间" prop="startTime">
@ -204,9 +204,9 @@ const fetchMarketList = async () => {
} catch (error) {
console.error('请求市场列表失败:', error)
}
}
}//
const isSubmitting = ref(false);
//
const cancel = () => {
centerDialogVisible.value = false;
@ -232,7 +232,15 @@ const addActivityShow = () => {
const addForm = ref(); // addForm ref
const addActivity = async () => {
//
if (isSubmitting.value) {
ElMessage.warning('操作过于频繁,请稍后再试');
return;
}
try {
isSubmitting.value = true; //
const valid = await new Promise((resolve, reject) => {
addForm.value.validate(valid => {
if (valid) {
@ -244,12 +252,14 @@ const addActivity = async () => {
});
if (!valid) {
isSubmitting.value = false; //
return;
}
//
if (!activity.value.activityName || activity.value.activityName.trim() === '') {
ElMessage.error('活动名称不能为空');
isSubmitting.value = false; //
return;
}
@ -257,6 +267,7 @@ const addActivity = async () => {
const cleanedActivityName = activity.value.activityName.replace(/\s/g, '');
if (cleanedActivityName !== activity.value.activityName) {
ElMessage.error('活动名称中不能包含空格');
isSubmitting.value = false; //
return;
}
@ -265,7 +276,7 @@ const addActivity = async () => {
activityName: activity.value.activityName,
marketOne: activity.value.marketOne,
marketTwo: activity.value.marketTwo,
status: Number(activity.value.status),
status: 0,
startTime: activity.value.startTime,
endTime: activity.value.endTime
}
@ -283,6 +294,11 @@ const addActivity = async () => {
} catch (error) {
console.error('添加活动失败:', error);
ElMessage.error('请求失败,请重试');
} finally {
// 3
setTimeout(() => {
isSubmitting.value = false;
}, 3000);
}
};

50
activitylink/src/views/zhongchou/gift/importFixedList/index.vue

@ -18,16 +18,17 @@
</div>
</div>
<!-- 用户表格 -->
<el-table :data="tableData" style="width: 100%;" :row-style="{ height: '60px' }"
<div class="table-container">
<el-table :data="tableData" style="width: 100%;height:640px" :row-style="{ height: '60px' }"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="200" />
<el-table-column type="index" label="ID" width="250">
<el-table-column type="index" label="ID" width="250" show-overflow-tooltip>
<template #default="scope">
{{ pagination.pageSize * (pagination.pageNum - 1) + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="username" label="姓名" width="250" />
<el-table-column prop="jwcode" label="精网号" width="300" />
<el-table-column prop="username" label="姓名" width="250" show-overflow-tooltip />
<el-table-column prop="jwcode" label="精网号" width="300" show-overflow-tooltip />
<el-table-column label="操作">
<template #default="scope">
<el-button text size="small" type="danger" @click="delUser(scope.row)">删除</el-button>
@ -43,11 +44,12 @@
:total="pagination.total" :page-sizes="[10, 20, 50, 100]" @size-change="handleSizeChange"
@current-change="handleCurrentChange" />
</div>
</div>
</el-card>
<el-dialog v-model="addVisible" title="添加用户" width="500" align-center>
<el-form :model="addObj" label-width="80px">
<el-form-item label="姓名" prop="username">
<el-input v-model="addObj.username" placeholder="请输入用户姓名" />
<el-input v-model="addObj.username" placeholder="请输入用户姓名" @input="trimUsername"/>
</el-form-item>
<el-form-item label="精网号" prop="jwcode">
<el-input v-model="addObj.jwcode" placeholder="请输入精网号" @input="trimAddJwcode" />
@ -166,6 +168,19 @@ const submitAdd = async () => {
ElMessage.error('请填写完整信息')
return
}
//
if (addObj.value.username.length > 30) {
ElMessage.error('姓名最长为30个字符')
return
}
// 5-12
if (addObj.value.jwcode.length < 5 || addObj.value.jwcode.length > 12) {
ElMessage.error('精网号必须为5-12位数字')
return
}
try {
const response = await addFixUser(addObj.value)
if (response.code === 200) {
@ -243,7 +258,17 @@ const trimJwcode = (value) => {
searchObj.value.jwcode = value.replace(/\D/g, '')
}
const trimAddJwcode = (value) => {
addObj.value.jwcode = value.replace(/\D/g, '')
// 5-12
const numericValue = value.replace(/\D/g, '');
addObj.value.jwcode = numericValue.slice(0, 12); // 12
}
//
const trimUsername = (value) => {
//
const filteredValue = value.replace(/[^\u4e00-\u9fa5a-zA-Z]/g, '');
// 30
addObj.value.username = filteredValue.slice(0, 30);
}
const handleSizeChange = (val) => {
pagination.value.pageSize = val
@ -263,16 +288,7 @@ onMounted(() => {
})
</script>
<style scoped>
.el-card {
border-radius: 8px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
.el-table {
margin-top: 10px;
}
.el-pagination {
margin: 0;
.table-container {
overflow-y: auto;
}
</style>

102
activitylink/src/views/zhongchou/gift/importuser/index.vue

@ -3,7 +3,7 @@
<el-button type="primary" @click="goBack" style="margin-right:20px">返回</el-button>
<span style="font-size: 1.5em; font-weight: bold;">导入抽奖用户</span>
</div>
<el-card style="min-height: 85vh; max-height: 85vh;">
<el-card style="height:87vh">
<div style="margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center;">
<div style="display: flex; gap: 10px; align-items: center;">
姓名<el-input v-model="searchObj.username" placeholder="请输入姓名" style="width: 150px;" clearable></el-input>
@ -17,25 +17,24 @@
<input type="file" ref="fileInput" style="display: none" accept=".xlsx,.xls" @change="handleFileChange" />
</div>
</div>
<!-- 用户表格 -->
<div class="table-container">
<el-table :data="tableData" style="width: 100%;" :row-style="{ height: '58px' }"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="200" />
<el-table-column type="index" label="ID" width="250">
<template #default="scope">
{{ pagination.pageSize * (pagination.pageNum - 1) + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="username" label="姓名" width="250" />
<el-table-column prop="jwcode" label="精网号" width="300" />
<el-table-column label="操作">
<template #default="scope">
<el-button text size="small" type="danger" @click="delUser(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- 用户表格 -->
<el-table :data="tableData" style="width: 100%;height:640px" :row-style="{ height: '60px' }"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="200" />
<el-table-column type="index" label="ID" width="250" show-overflow-tooltip>
<template #default="scope">
{{ pagination.pageSize * (pagination.pageNum - 1) + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="username" label="姓名" width="250" show-overflow-tooltip />
<el-table-column prop="jwcode" label="精网号" width="300" show-overflow-tooltip />
<el-table-column label="操作">
<template #default="scope">
<el-button text size="small" type="danger" @click="delUser(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 底部操作区域 -->
<div style="margin-top: 20px; display: flex; justify-content: space-between; align-items: center;">
<el-button type="danger" @click="batchDelete">批量删除</el-button>
@ -45,11 +44,13 @@
:total="pagination.total" :page-sizes="[10, 20, 50, 100]" @size-change="handleSizeChange"
@current-change="handleCurrentChange" />
</div>
</div>
</el-card>
<el-dialog v-model="addVisible" title="添加用户" width="500" align-center>
<el-form :model="addObj" label-width="80px">
<el-form-item label="姓名" prop="username">
<el-input v-model="addObj.username" placeholder="请输入用户姓名" />
<el-input v-model="addObj.username" placeholder="请输入用户姓名" @input="trimUsername" />
</el-form-item>
<el-form-item label="精网号" prop="jwcode">
<el-input v-model="addObj.jwcode" placeholder="请输入精网号" @input="trimAddJwcode" />
@ -144,11 +145,25 @@ const getUsers = async () => {
}
}
//
// submitAdd
const submitAdd = async () => {
if (!addObj.value.username || !addObj.value.jwcode) {
ElMessage.error('请填写完整信息')
return
}
//
if (addObj.value.username.length > 30) {
ElMessage.error('姓名最长为30个字符')
return
}
// 5-12
if (addObj.value.jwcode.length < 5 || addObj.value.jwcode.length > 12) {
ElMessage.error('精网号必须为5-12位数字')
return
}
try {
const response = await addUser(addObj.value)
if (response.code === 200) {
@ -225,7 +240,17 @@ const trimJwcode = (value) => {
searchObj.value.jwcode = value.replace(/\D/g, '')
}
const trimAddJwcode = (value) => {
addObj.value.jwcode = value.replace(/\D/g, '')
// 5-12
const numericValue = value.replace(/\D/g, '');
addObj.value.jwcode = numericValue.slice(0, 12); // 12
}
//
const trimUsername = (value) => {
//
const filteredValue = value.replace(/[^\u4e00-\u9fa5a-zA-Z]/g, '');
// 30
addObj.value.username = filteredValue.slice(0, 30);
}
const handleSizeChange = (val) => {
pagination.value.pageSize = val
@ -246,43 +271,10 @@ onMounted(() => {
</script>
<style scoped>
.el-card {
border-radius: 8px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
.el-table {
margin-top: 10px;
}
.el-pagination {
margin: 0;
}
.table-container {
height: 650px; /* 设置固定高度 */
overflow-y: auto; /* 启用垂直滚动条 */
overflow-x: hidden; /* 隐藏水平滚动条(如果不需要的话) */
border: 1px solid #ebeef5; /* 可选:添加边框 */
border-radius: 4px; /* 可选:添加圆角 */
}
/* 可选:自定义滚动条样式 */
.table-container::-webkit-scrollbar {
width: 8px;
overflow-y: auto;
}
.table-container::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 4px;
}
.table-container::-webkit-scrollbar-thumb {
background: #c1c1c1;
border-radius: 4px;
}
.table-container::-webkit-scrollbar-thumb:hover {
background: #a8a8a8;
}
</style>

6
activitylink/src/views/zhongchou/gift/index.vue

@ -20,8 +20,8 @@
</el-icon>
</template>
</el-table-column>
<el-table-column prop="prizeName" label="名称" width="300" align="center"></el-table-column>
<el-table-column prop="gradeName" label="等级" width="200" align="center"></el-table-column>
<el-table-column prop="prizeName" label="名称" width="300" align="center" show-overflow-tooltip></el-table-column>
<el-table-column prop="gradeName" label="等级" width="200" align="center" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button type="primary" text @click="goToimportFixedList(scope.row)">导入内定名单</el-button>
@ -319,7 +319,7 @@ const goToimportFixedList = (row) => {
query: {
prizeName: row.prizeName,
gradeName: row.gradeName,
gradeId: row.id //
gradeId: row.gradeId //
}
});
}

15
activitylink/src/views/zhongchou/level/index.vue

@ -10,15 +10,15 @@
<!-- 等级表格 -->
<div class="table-container">
<el-table :data="tableData" style="width: 100%" :row-style="{ height: '60px' }">
<el-table-column type="index" label="ID" width="120px" fixed="left">
<el-table-column type="index" label="ID" width="120px" fixed="left" show-overflow-tooltip>
<template #default="scope">
{{ pagination.pageSize * (pagination.pageNum - 1) + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="gradeName" label="等级名称" width="240" align="center" />
<el-table-column prop="amount" label="数量" width="250" align="center" />
<el-table-column prop="perWin" label="每轮抽取人数" width="300" align="center" />
<el-table-column prop="sort" label="排序" width="240" align="center" />
<el-table-column prop="gradeName" label="等级名称" width="240" align="center" show-overflow-tooltip />
<el-table-column prop="amount" label="数量" width="250" align="center" show-overflow-tooltip />
<el-table-column prop="perWin" label="每轮抽取人数" width="300" align="center" show-overflow-tooltip />
<el-table-column prop="sort" label="排序" width="240" align="center" show-overflow-tooltip />
<el-table-column prop="operation" fixed="right" width="240" label="操作" align="center">
<template #default="scope">
<div style="display: flex; gap: 10px; justify-content: center;">
@ -29,12 +29,11 @@
</el-table-column>
</el-table>
</div>
</div>
<!-- 分页 -->
<!-- 分页 -->
<el-pagination class="pagination" v-model:current-page="pagination.pageNum" v-model:page-size="pagination.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="pagination.total" :page-sizes="[10, 20, 50, 100]"
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
<!-- 添加 -->
<el-dialog v-model="addVisible" :title="dialogTitle" width=400px @closed="resetForm">

Loading…
Cancel
Save