Browse Source

让漆哥试试跨域

lihuilin/feature-20250718094329-25周年庆后台
lhl 4 weeks ago
parent
commit
15d9507012
  1. 2
      activitylink/package-lock.json
  2. 2
      activitylink/src/views/zhongchou/gift/index.vue
  3. 434
      activitylink/src/views/zhongchou/level/index.vue
  4. 27
      activitylink/vite.config.js

2
activitylink/package-lock.json

@ -968,7 +968,7 @@
},
"node_modules/pinia-plugin-persistedstate": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.4.1.tgz",
"resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.4.1.tgz",
"integrity": "sha512-lmuMPpXla2zJKjxEq34e1E9P9jxkWEhcVwwioCCE0izG45kkTOvQfCzvwhW3i38cvnaWC7T1eRdkd15Re59ldw==",
"license": "MIT",
"dependencies": {

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

@ -143,7 +143,7 @@ const editForm = ref({
gradeId: '',
imageUrl: null
})
const uploadUrl = 'https://39.101.133.168:8828/hljw/api/aws/upload';
const uploadUrl = '/hljw/api/aws/upload';
const formRef = ref(null)
const uploadRef = ref(null)

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

@ -1,282 +1,282 @@
<template>
<h2>等级管理</h2>
<el-card style=" display: flex; flex-direction: column;">
<div class="level-management-container" style="flex: 1; overflow-y: auto;">
<!-- 添加等级按钮 -->
<div class="action-buttons">
<el-button type="primary" @click="showAddDialog">添加等级</el-button>
</div>
<el-card style=" display: flex; flex-direction: column;">
<div class="level-management-container" style="flex: 1; overflow-y: auto;">
<!-- 添加等级按钮 -->
<div class="action-buttons">
<el-button type="primary" @click="showAddDialog">添加等级</el-button>
</div>
<!-- 等级表格 -->
<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" >
<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="operation" fixed="right" width="240" label="操作" align="center">
<template #default="scope">
<div style="display: flex; gap: 10px; justify-content: center;">
<el-button text type="warning" @click="editLevel(scope.row)">编辑</el-button>
<el-button text type="danger" @click="deleteLevel(scope.row)">删除</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
<!-- 等级表格 -->
<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">
<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="operation" fixed="right" width="240" label="操作" align="center">
<template #default="scope">
<div style="display: flex; gap: 10px; justify-content: center;">
<el-button text type="warning" @click="editLevel(scope.row)">编辑</el-button>
<el-button text type="danger" @click="deleteGrade(scope.row)">删除</el-button>
</div>
</template>
</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" />
<!-- 分页 -->
<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" />
<!-- 添加 -->
<el-dialog v-model="addVisible" :title="dialogTitle" width=400px @closed="resetForm">
<el-form :model="addForm" label-width="120px">
<el-form-item label="等级名称" align="center">
<el-input v-model="addForm.gradeName" placeholder="请输入等级名称"></el-input>
</el-form-item>
<el-form-item label="数量" align="center">
<el-input v-model="addForm.amount" :precision="0" :min="0" placeholder="请输入数量"
style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="每轮抽取人数" align="center">
<el-input v-model="addForm.perWin" :precision="0" :min="0" placeholder="请输入抽取人数"
style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="排序" align="center">
<el-input v-model="addForm.sort" :precision="0" :min="0" placeholder="请输入排序等级"
style="width: 100%;"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span>
<el-button @click="addVisible = false">取消</el-button>
<el-button type="primary" @click="submitAdd">确认</el-button>
</span>
</template>
</el-dialog>
<!-- 编辑 -->
<el-dialog v-model="editVisible" :title="dialogTitle" width=400px @closed="resetForm">
<el-form :model="editForm" label-width="120px">
<el-form-item label="等级名称" align="center">
<el-input v-model="editForm.gradeName" placeholder="请输入等级名称"></el-input>
</el-form-item>
<el-form-item label="数量" align="center">
<el-input v-model="editForm.amount" :precision="0" :min="0" placeholder="请输入数量"
style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="每轮抽取人数" align="center">
<el-input v-model="editForm.perWin" :precision="0" :min="0" placeholder="请输入抽取人数"
style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="排序" align="center">
<el-input v-model="editForm.sort" :precision="0" :min="0" placeholder="请输入排序等级"
style="width: 100%;"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span>
<el-button @click="editVisible = false">取消</el-button>
<el-button type="primary" @click="submitEdit">确认</el-button>
</span>
</template>
</el-dialog>
<!-- 添加 -->
<el-dialog v-model="addVisible" :title="dialogTitle" width=400px @closed="resetForm">
<el-form :model="addForm" label-width="120px">
<el-form-item label="等级名称" align="center">
<el-input v-model="addForm.gradeName" placeholder="请输入等级名称"></el-input>
</el-form-item>
<el-form-item label="数量" align="center">
<el-input v-model="addForm.amount" :precision="0" :min="0" placeholder="请输入数量"
style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="每轮抽取人数" align="center">
<el-input v-model="addForm.perWin" :precision="0" :min="0" placeholder="请输入抽取人数"
style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="排序" align="center">
<el-input v-model="addForm.sort" :precision="0" :min="0" placeholder="请输入排序等级"
style="width: 100%;"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span>
<el-button @click="addVisible = false">取消</el-button>
<el-button type="primary" @click="submitAdd">确认</el-button>
</span>
</template>
</el-dialog>
<!-- 编辑 -->
<el-dialog v-model="editVisible" :title="dialogTitle" width=400px @closed="resetForm">
<el-form :model="editForm" label-width="120px">
<el-form-item label="等级名称" align="center">
<el-input v-model="editForm.gradeName" placeholder="请输入等级名称"></el-input>
</el-form-item>
<el-form-item label="数量" align="center">
<el-input v-model="editForm.amount" :precision="0" :min="0" placeholder="请输入数量"
style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="每轮抽取人数" align="center">
<el-input v-model="editForm.perWin" :precision="0" :min="0" placeholder="请输入抽取人数"
style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="排序" align="center">
<el-input v-model="editForm.sort" :precision="0" :min="0" placeholder="请输入排序等级"
style="width: 100%;"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span>
<el-button @click="editVisible = false">取消</el-button>
<el-button type="primary" @click="submitEdit">确认</el-button>
</span>
</template>
</el-dialog>
</el-card>
</el-card>
</template>
<script setup>
import { ref, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getLevelList, addLevel, deleteLevel, updateGrade } from '@/api/manage/level'
import { getLevelList, addLevel, deleteGrade, updateGrade } from '@/api/manage/level'
const tableData = ref([])
const pagination = ref({
pageNum: 1,
pageSize: 10,
total:0
pageNum: 1,
pageSize: 10,
total: 0
})
const addVisible = ref(false)
const editVisible = ref(false)
const dialogTitle = ref('')
const addForm = ref({
gradeName: '',
amount: '',
perWin: '',
sort: ''
gradeName: '',
amount: '',
perWin: '',
sort: ''
})
const editForm = ref({})
//
const showAddDialog = () => {
dialogTitle.value = '添加等级'
addVisible.value = true
dialogTitle.value = '添加等级'
addVisible.value = true
}
//
const editLevel = (row) => {
dialogTitle.value = '编辑等级'
editForm.value = {
id: row.id,
gradeName: row.gradeName,
amount: row.amount,
perWin: row.perWin,
sort: row.sort
}
editVisible.value = true
dialogTitle.value = '编辑等级'
editForm.value = {
id: row.id,
gradeName: row.gradeName,
amount: row.amount,
perWin: row.perWin,
sort: row.sort
}
editVisible.value = true
}
//
const getLevels = async () => {
try {
const res = await getLevelList({
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize
})
try {
const res = await getLevelList({
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize
})
if (res.code === 200) {
tableData.value = res.data.list
pagination.value.total = res.data.total
} else {
ElMessage.error(res.message || '获取数据失败')
}
} catch (error) {
console.error('请求失败:', error)
ElMessage.error('请求失败,请重试')
}
if (res.code === 200) {
tableData.value = res.data.list
pagination.value.total = res.data.total
} else {
ElMessage.error(res.message || '获取数据失败')
}
} catch (error) {
console.error('请求失败:', error)
ElMessage.error('请求失败,请重试')
}
}
//
const submitAdd = async () => {
if (!addForm.value.gradeName || addForm.value.amount === '' || addForm.value.sort === '' || addForm.value.perWin === '') {
ElMessage.error('请填写完整信息')
return
}
try {
const data = {
gradeName: String(addForm.value.gradeName),
amount: String(addForm.value.amount),
sort: String(addForm.value.sort),
perWin: String(addForm.value.perWin)
}
console.log('看看添加参数',data)
const response = await addLevel(data)
if (response.code === 200) {
ElMessage.success('添加成功')
addVisible.value = false
getLevels()
} else {
ElMessage.error(response.message || '添加失败')
}
} catch (error) {
console.error('添加等级失败:', error)
ElMessage.error('添加失败,请重试')
}
if (!addForm.value.gradeName || addForm.value.amount === '' || addForm.value.sort === '' || addForm.value.perWin === '') {
ElMessage.error('请填写完整信息')
return
}
try {
const data = {
gradeName: String(addForm.value.gradeName),
amount: String(addForm.value.amount),
sort: String(addForm.value.sort),
perWin: String(addForm.value.perWin)
}
console.log('看看添加参数', data)
const response = await addLevel(data)
if (response.code === 200) {
ElMessage.success('添加成功')
addVisible.value = false
getLevels()
} else {
ElMessage.error(response.message || '添加失败')
}
} catch (error) {
console.error('添加等级失败:', error)
ElMessage.error('添加失败,请重试')
}
}
//
const submitEdit = async () => {
if (!editForm.value.id || !editForm.value.gradeName || !editForm.value.amount || !editForm.value.perWin || !editForm.value.sort) {
ElMessage.error('请填写完整信息')
return
}
try {
const editData = {
id: editForm.value.id,
gradeName: editForm.value.gradeName,
amount: editForm.value.amount,
perWin: editForm.value.perWin,
sort: editForm.value.sort
}
console.log('看看编辑参数',editData)
const response = await updateGrade(editData)
if (response.code === 200) {
ElMessage.success('修改成功')
editVisible.value = false
getLevels()
} else {
ElMessage.error(response.message || '修改失败')
}
} catch (error) {
console.error('编辑等级失败:', error)
ElMessage.error('修改失败,请重试')
}
if (!editForm.value.id || !editForm.value.gradeName || !editForm.value.amount || !editForm.value.perWin || !editForm.value.sort) {
ElMessage.error('请填写完整信息')
return
}
try {
const editData = {
id: editForm.value.id,
gradeName: editForm.value.gradeName,
amount: editForm.value.amount,
perWin: editForm.value.perWin,
sort: editForm.value.sort
}
console.log('看看编辑参数', editData)
const response = await updateGrade(editData)
if (response.code === 200) {
ElMessage.success('修改成功')
editVisible.value = false
getLevels()
} else {
ElMessage.error(response.message || '修改失败')
}
} catch (error) {
console.error('编辑等级失败:', error)
ElMessage.error('修改失败,请重试')
}
}
//
const deleteLevel = (row) => {
ElMessageBox.confirm('确定要删除该等级吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
try {
const id = String(row.id)
console.log('删除等级的id是:', id)
const response = await deleteGrade(id)
if (response.code === 200) {
ElMessage.success('删除成功')
getLevels()
} else {
ElMessage.error(response.message || '删除失败')
}
} catch (error) {
console.error('删除失败:', error)
ElMessage.error('删除失败,请重试')
}
}).catch(() => {
ElMessage.info('已取消删除')
})
const deleteLevel = (row) => {
ElMessageBox.confirm('确定要删除该等级吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
try {
const id = String(row.id)
console.log('删除等级的id是:', id)
const response = await deleteGrade(id)
if (response.code === 200) {
ElMessage.success('删除成功')
getLevels()
} else {
ElMessage.error(response.message || '删除失败')
}
} catch (error) {
console.error('删除失败:', error)
ElMessage.error('删除失败,请重试')
}
}).catch(() => {
ElMessage.info('已取消删除')
})
}
//
const resetForm = () => {
addForm.value = {
gradeName: '',
amount: '',
perWin: '',
sort: ''
}
addForm.value = {
gradeName: '',
amount: '',
perWin: '',
sort: ''
}
}
const handleSizeChange = (val) => {
pagination.value.pageSize = val
pagination.value.pageNum = 1
getLevels()
pagination.value.pageSize = val
pagination.value.pageNum = 1
getLevels()
}
const handleCurrentChange = (val) => {
pagination.value.pageNum = val
getLevels()
pagination.value.pageNum = val
getLevels()
}
onMounted(() => {
getLevels()
getLevels()
})
</script>
<style scoped>
.level-management-container {
padding: 20px;
width: 100%;
box-sizing: border-box;
min-height: 80vh;
padding: 20px;
width: 100%;
box-sizing: border-box;
min-height: 80vh;
}
.pagination {
padding: 10px 20px;
background-color: #fff;
border-top: 1px solid #ebeef5;
display: flex;
justify-content: flex-start;
/* 改为左对齐 */
padding: 10px 20px;
background-color: #fff;
border-top: 1px solid #ebeef5;
display: flex;
justify-content: flex-start;
/* 改为左对齐 */
}
.action-buttons {
margin-bottom: 20px;
margin-bottom: 20px;
}
.table-container {
max-height: 650px;
overflow-y: auto;
max-height: 650px;
overflow-y: auto;
}
</style>

27
activitylink/vite.config.js

@ -4,23 +4,28 @@ import path from 'path';
export default defineConfig({
// 设置打包后静态资源的基础路径为 testBack
base: '/testBack/',
base: '/testBack/',
plugins: [vue()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
}
},
server: {
proxy: {
'/api': {
target: 'https://dbqb.nfdxy.net', // 后端基础地址
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''), // 移除 /api 前缀
// 或者更精确的重写(根据后端路径调整):
// rewrite: (path) => path.replace(/^\/api\/admin/, '/admin'),
},
},
server: {
proxy: {
'/api': {
target: 'https://dbqb.nfdxy.net', // 后端基础地址
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''), // 移除 /api 前缀
// 或者更精确的重写(根据后端路径调整):
// rewrite: (path) => path.replace(/^\/api\/admin/, '/admin'),
},
'/hljw/api/aws/upload': {
target: 'http://39.101.133.168:8828', // 上传接口的基础地址
changeOrigin: true, // 开启跨域
rewrite: (path) => path.replace(/^\/hljw/, '/hljw'), // 保留原路径
}
},
},
},
);
Loading…
Cancel
Save