Browse Source

对接口

lihuilin/feature-20250718094329-25周年庆后台
wangxiangwen4 1 month ago
parent
commit
445b42bf09
  1. 4
      activitylink/.env.development
  2. 37
      activitylink/src/api/manage/activity.js
  3. 8
      activitylink/src/api/manage/level.js
  4. 21
      activitylink/src/stone/activityStone.js
  5. 7
      activitylink/src/stone/giftFixedListStone.js
  6. 38
      activitylink/src/views/homePage.vue
  7. 339
      activitylink/src/views/zhongchou/activity/index.vue
  8. 4
      activitylink/src/views/zhongchou/level/index.vue
  9. 25
      activitylink/vite.config.js

4
activitylink/.env.development

@ -6,7 +6,9 @@ VITE_PUBLIC_PATH = /
#新数据接口 #新数据接口
# VITE_APP_API_BASE_URL = "http://39.101.133.168:8828/link" # VITE_APP_API_BASE_URL = "http://39.101.133.168:8828/link"
VITE_APP_BASE_API = 'http://47.92.148.30:3003/mock/3267'
# VITE_APP_BASE_API = 'http://47.92.148.30:3003/mock/3267'
# VITE_APP_BASE_API = 'http://39.98.127.73/price'
VITE_APP_BASE_API = '/api'
# Whether to open mock # Whether to open mock
VITE_USE_MOCK = true VITE_USE_MOCK = true

37
activitylink/src/api/manage/activity.js

@ -1,9 +1,40 @@
import request from '@/utils/request' import request from '@/utils/request'
export function deleteUser(id) {
export function getActivityList() {
return request({ return request({
url: '/admin/user/delete',
url: '/admin/funding/getActivity',
method: 'get',
})
}
export function changeStatusbyId(id,status) {
return request({
url: '/admin/funding/updateActivityStatus',
method: 'post', method: 'post',
params: { id }
params: { id,status }
}) })
}
/**
* 添加活动
* @param {Object} data 活动数据对象
* @returns Promise
*/
export function addActivityandtime(data) {
return request({
url: '/admin/funding/addActivity',
method: 'post',
data // 使用 data 字段发送请求体(JSON 格式)
})
}
export function getDetailList() {
return request({
url: '/admin/funding/getActivityDetail',
method: 'post',
})
} }

8
activitylink/src/api/manage/level.js

@ -1,10 +1,10 @@
import request from '@/utils/request' import request from '@/utils/request'
export function deleteUser(id) {
export function deleteUser() {
return request({ return request({
url: '/admin/user/delete',
method: 'post',
params: { id }
url: '/admin/funding/getActivity',
method: 'get',
}) })
} }

21
activitylink/src/stone/activityStone.js

@ -0,0 +1,21 @@
// src/stone/giftFixedListStone.js
import { defineStore } from "pinia";
import { ref } from 'vue';
export const useactivitytone = defineStore('activityStone', () => {
// 响应式属性
const selectactivityId = ref(0);
// 方法
const setselectedactivityId = (name) => {
selectactivityId.value = name;
};
// 暴露出去
return {
selectactivityId,
setselectedactivityId,
};
});

7
activitylink/src/stone/giftFixedListStone.js

@ -11,16 +11,11 @@ export const usegiftFixedListStone = defineStore('giftFixedListStone', () => {
fixedGiftName.value = name; fixedGiftName.value = name;
}; };
const getList = async () => {
// 示例请求逻辑
// const res = await axios.get('xxx')
return '123';
};
// 暴露出去 // 暴露出去
return { return {
fixedGiftName, fixedGiftName,
setFixedGiftName, setFixedGiftName,
getList
}; };
}); });

38
activitylink/src/views/homePage.vue

@ -26,27 +26,27 @@ const username = ref("");
const password = ref(""); const password = ref("");
// username.value=='90038794' && password.value=='697522' // username.value=='90038794' && password.value=='697522'
const loginHandler = async () => { const loginHandler = async () => {
try {
const response = await adminlogin({
username: username.value,
password: password.value
})
// try {
// const response = await adminlogin({
// username: username.value,
// password: password.value
// })
router.push('/zhongchou/mainimg')
// code == 200 // code == 200
if (response.code ) {
const token = response.code
// if (response.code ) {
// const token = response.code
// token localStorage
localStorage.setItem('token', token)
ElMessage.success('登录成功,欢迎您使用本系统')
router.push('/zhongchou/mainimg')
} else {
ElMessage.error(response.message || '登录失败,请检查用户名或密码')
}
} catch (error) {
ElMessage.error('登录失败,请稍后再试')
console.error('登录错误:', error)
}
// // token localStorage
// localStorage.setItem('token', token)
// ElMessage.success('使')
// router.push('/zhongchou/mainimg')
// } else {
// ElMessage.error(response.message || '')
// }
// } catch (error) {
// ElMessage.error('')
// console.error(':', error)
// }
} }
</script> </script>
<style scoped> <style scoped>

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

@ -1,8 +1,8 @@
<template> <template>
<!-- 1代表活动进行中 0代表活动已结束 -->
<!-- 1代表活动进行中 0代表活动已结束 -->
<el-card style="margin-top:50px; ; min-height: 90vh; max-height: 90vh; ">
<!-- <div style="width: 100%;"> -->
<el-card style="margin-top:50px; ; min-height: 90vh; max-height: 90vh; ">
<!-- <div style="width: 100%;"> -->
<!-- 活动管理 --> <!-- 活动管理 -->
<!-- 这里可以添加等级管理的具体内容 --> <!-- 这里可以添加等级管理的具体内容 -->
<div class="gray-container"> <div class="gray-container">
@ -13,158 +13,186 @@
<!-- 其他内容区域 --> <!-- 其他内容区域 -->
<div class="content-area"> <div class="content-area">
<el-table :data="currentPageData" style="width: auto" :row-style="{ height: '60px' }"> <el-table :data="currentPageData" style="width: auto" :row-style="{ height: '60px' }">
<el-table-column prop="name" label="活动名称"></el-table-column>
<el-table-column prop="stock1" label="股票一"></el-table-column>
<el-table-column prop="stock2" label="股票二"></el-table-column>
<el-table-column label="数据统计">
<template #default="{ $index }">
<a href="#" style="color: red;" @click.prevent="goToDetail">查看详情</a>
</template>
</el-table-column>
<el-table-column label="设置数据">
<template #default="{ $index }">
<a href="#" style="color: red;" @click.prevent="goToSet">设置</a>
</template>
</el-table-column>
<el-table-column label="状态">
<template #default="{ row }">
<el-switch
v-model="row.status"
:active-value="'1'"
:inactive-value="'0'"
active-color="#13ce66"
inactive-color="#ff4949"
/>
</template>
</el-table-column>
</el-table>
<el-dialog
v-model="centerDialogVisible"
title="添加活动"
width="500"
align-center
@closed="cancel"
>
<el-table-column prop="activityName" label="活动名称"></el-table-column>
<el-table-column prop="marketOne" label="股票一"></el-table-column>
<el-table-column prop="marketTwo" label="股票二"></el-table-column>
<!-- 新增两列 -->
<el-table-column prop="startTime" label="开始时间"></el-table-column>
<el-table-column prop="endTime" label="结束时间"></el-table-column>
<el-table-column label="数据统计">
<template #default="scope">
<a href="#" style="color: red;" @click.prevent="goToDetail(scope.row)">查看详情</a>
</template>
</el-table-column>
<el-table-column label="设置数据">
<template #default="{ $index }">
<a href="#" style="color: red;" @click.prevent="goToSet">设置</a>
</template>
</el-table-column>
<el-table-column label="状态">
<template #default="{ row }">
<el-switch
v-model="row.status"
:active-value="1"
:inactive-value="0"
active-color="#13ce66"
inactive-color="#ff4949"
@change="() => updateStatus(row)"
/>
</template>
</el-table-column>
</el-table>
<el-dialog
v-model="centerDialogVisible"
title="添加活动"
width="500"
align-center
@closed="cancel"
>
<el-form ref="addForm" :model="activity" label-width="80px"> <el-form ref="addForm" :model="activity" label-width="80px">
<el-form-item label="活动名称" prop="name">
<el-input v-model="activity.name" placeholder="请输入活动名称" />
<el-form-item label="活动名称" prop="activityName">
<el-input v-model="activity.activityName" placeholder="请输入活动名称" />
</el-form-item> </el-form-item>
<el-form-item label="股票一" prop="stock1">
<el-input v-model="activity.stock1" placeholder="请输入股票一" />
<el-form-item label="股票一" prop="marketOne">
<el-input v-model="activity.marketOne" placeholder="请输入股票一" />
</el-form-item> </el-form-item>
<el-form-item label="股票二" prop="stock2">
<el-input v-model="activity.stock2" placeholder="请输入股票二" />
<el-form-item label="股票二" prop="marketTwo">
<el-input v-model="activity.marketTwo" placeholder="请输入股票二" />
</el-form-item> </el-form-item>
<el-form-item label="活动状态" prop="status"> <el-form-item label="活动状态" prop="status">
<el-select v-model="activity.status" placeholder="请选择活动状态"> <el-select v-model="activity.status" placeholder="请选择活动状态">
<el-option label="进行中" value="1" v-model="activity.status"></el-option>
<el-option label="已结束" value="0" v-model="activity.status"></el-option>
<el-option label="启用" value="1" />
<el-option label="禁用" value="0" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 新增开始时间 -->
<el-form-item label="开始时间" prop="startTime">
<el-date-picker
v-model="activity.startTime"
type="datetime"
placeholder="请选择开始时间"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
style="width: 100%"
/>
</el-form-item>
<!-- 新增结束时间 -->
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="activity.endTime"
type="datetime"
placeholder="请选择结束时间"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
style="width: 100%"
/>
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="addActivity">
提交
</el-button>
</div>
</template>
</el-dialog>
<div class="dialog-footer">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="addActivity">
提交
</el-button>
</div>
</template>
</el-dialog>
</div> </div>
</div> </div>
<!-- 分页控件移动到这里 -->
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="tableData.length"
style="margin-top: 20px; text-align: center;"
/>
<!-- </div> -->
</el-card>
<!-- 分页控件移动到这里 -->
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="tableData.length"
style="margin-top: 20px; text-align: center;"
/>
<!-- </div> -->
</el-card>
<router-view></router-view> <router-view></router-view>
</template> </template>
<script setup> <script setup>
import { ref, computed } from 'vue';
import { ref, computed, onMounted } from 'vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { getActivityList , changeStatusbyId ,addActivityandtime} from '@/api/manage/activity';
import { ElMessage } from 'element-plus';
import { useactivitytone } from '@/stone/activityStone';
const router = useRouter(); const router = useRouter();
const centerDialogVisible = ref(false)
//
const tableData = ref([
{ name: '周年庆众筹', stock1: '美股', stock2: '港股', status: '0' },
{ name: '中秋众筹', stock1: 'A股', stock2: '美股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
{ name: '国庆众筹', stock1: '港股', stock2: '日股', status: '0' },
// ... ...
]);
//
const centerDialogVisible = ref(false);
// 使 ref
const tableData = ref([]);
const activityStone = useactivitytone();
//
const cancel = () => { const cancel = () => {
centerDialogVisible.value = false
activity.value ={
name: '',
stock1: '',
stock2: '',
status: ''
}
}
centerDialogVisible.value = false;
resetForm();
};
const addActivityShow = () => {
centerDialogVisible.value = true
}
//
const addActivity = () => {
centerDialogVisible.value = false
//TODO:
activity.value ={
name: '',
stock1: '',
stock2: '',
status: ''
const resetForm = () => {
activity.value = {
activityName: '',
marketOne: '',
marketTwo: '',
status: '',
startTime: '',
endTime: ''
};
} }
const addActivityShow = () => {
centerDialogVisible.value = true;
};
//
const addActivity = async () => {
try {
const activityData = {
activityName: activity.value.activityName,
marketOne: activity.value.marketOne,
marketTwo: activity.value.marketTwo,
status: Number(activity.value.status), //
startTime: activity.value.startTime,
endTime: activity.value.endTime
}
const response = await addActivityandtime(activityData)
if (response.code === 200) {
ElMessage.success('活动添加成功')
centerDialogVisible.value = false
fetchActivityList() //
} else {
ElMessage.error(response.message || '活动添加失败')
}
} catch (error) {
console.error('添加活动失败:', error)
ElMessage.error('请求失败,请重试')
}
} }
const activity =ref({
name: '',
stock1: '',
stock2: '',
status: ''
const activity = ref({
activityName: '',
marketOne: '',
marketTwo: '',
status: '',
startTime: '',
endTime: ''
}) })
// //
const currentPage = ref(1); const currentPage = ref(1);
const pageSize = ref(10); // 5
const pageSize = ref(10); // 10
// //
const currentPageData = computed(() => { const currentPageData = computed(() => {
@ -173,8 +201,6 @@ const currentPageData = computed(() => {
return tableData.value.slice(start, end); return tableData.value.slice(start, end);
}); });
// //
const handleSizeChange = (val) => { const handleSizeChange = (val) => {
pageSize.value = val; pageSize.value = val;
@ -185,12 +211,61 @@ const handleCurrentChange = (val) => {
}; };
// //
const goToDetail = () => {
const goToDetail = (row) => {
activityStone.setselectedactivity(row.id);
router.push({ name: 'activityDetail' }); router.push({ name: 'activityDetail' });
}; };
const goToSet = () => { const goToSet = () => {
router.push({ name: 'activitySet' }); router.push({ name: 'activitySet' });
}; };
//
const fetchActivityList = async () => {
try {
const response = await getActivityList();
if (response.code === 200) {
tableData.value = response.data.map(item => ({
id: item.id,
activityName: item.activityName,
marketOne: item.marketOne,
marketTwo: item.marketTwo,
status: Number(item.status), // el-switch
startTime: item.startTime,
endTime: item.endTime
}));
} else {
console.error('获取活动列表失败:', response.message);
}
} catch (error) {
console.error('获取活动列表失败:', error);
}
};
const updateStatus = async (row) => {
try {
const response = await changeStatusbyId(row.id, row.status)
if (response.code === 200) {
ElMessage.success('操作成功:修改状态成功')
} else if (response.code === 400) {
ElMessage.error(response.message || '当前有活动正在启用,修改状态失败')
//
row.status = row.status === 1 ? 0 : 1
} else {
ElMessage.error('状态修改失败')
row.status = row.status === 1 ? 0 : 1
}
} catch (error) {
console.error('请求失败:', error)
ElMessage.error('请求失败,请重试')
//
row.status = row.status === 1 ? 0 : 1
}
}
//
onMounted(() => {
fetchActivityList();
});
</script> </script>
<style scoped> <style scoped>
@ -216,7 +291,7 @@ const goToSet = () => {
} }
.marginTop { .marginTop {
margin-top: 10px;
margin-top: 10px;
} }
table { table {

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

@ -207,9 +207,9 @@
onMounted(() => { onMounted(() => {
// //
const id = 1
deleteUser(id).then(response => {
deleteUser().then(response => {
console.log('删除成功:', response) console.log('删除成功:', response)
}).catch(error => { }).catch(error => {
console.error('删除失败:', error) console.error('删除失败:', error)

25
activitylink/vite.config.js

@ -8,5 +8,26 @@ export default defineConfig({
alias: { alias: {
'@': path.resolve(__dirname, './src') '@': path.resolve(__dirname, './src')
} }
}
})
},
// server: {
// proxy: {
// '/api': {
// target: 'http://39.98.127.73',
// changeOrigin: true,
// rewrite: (path) => path.replace(/^\/api/, '/price/admin'),
// },
// },
// },
server: {
proxy: {
'/api': {
target: 'https://dbqb.nfdxy.net/devLotApi', // 后端基础地址
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''), // 移除 /api 前缀
// 或者更精确的重写(根据后端路径调整):
// rewrite: (path) => path.replace(/^\/api\/admin/, '/admin'),
},
},
},
})
Loading…
Cancel
Save