You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

258 lines
8.5 KiB

<template>
<div class="common-layout">
<el-container>
<el-header class="header">
<el-text class="header-text">抢点班作业后台管理</el-text>
<el-button class="header-button" type="primary" text style="float: right;" @click="logout">退出登录</el-button>
</el-header>
<el-main class="main">
<div class="main-title">
抢点班作业列表
</div>
<div class="list">
<el-button class="main-button" type="primary" style="float: left;" @click="newAssignment">新建作业</el-button>
<el-table :data="assignments" style="width: 100%" :header-cell-style="{ 'text-align': 'center' }"
:cell-style="{ 'text-align': 'center' }">
<el-table-column label="序号">
<template #default="scope">
{{ scope.$index + (PageNo - 1) * PageSize + 1 }}
</template>
</el-table-column>
<el-table-column prop="name" label="作业名称"></el-table-column>
<el-table-column label="内容归属">
<template v-slot="scope">
<span v-if="scope.row.clubType == '1'">牧民俱乐部</span>
<span v-else-if="scope.row.clubType == '2'">博古论坛</span>
<span v-else-if="scope.row.clubType == '3'">神枪手俱乐部</span>
<span v-else-if="scope.row.clubType == '4'">环球俱乐部</span>
<span v-else-if="scope.row.clubType == '5'">价值投资</span>
<span v-else-if="scope.row.clubType == '6'">波段行情</span>
<span v-else-if="scope.row.clubType == '7'">抄底卖顶</span>
<span v-else-if="scope.row.clubType == '8'">资金及仓位管理</span>
<span v-else-if="scope.row.clubType == '9'">财富的游戏</span>
</template>
</el-table-column>
<el-table-column prop="article" label="关联文章">
<template #default="{ row }">
<el-tooltip class="tooltip" v-if="row.article" :content="row.article.title" placement="bottom"
:disabled="row.article.title.length <= 10" effect="light">
{{ row.article.title.slice(0, 10) || '—' }}
</el-tooltip>
<span v-else>—</span>
</template>
</el-table-column>
<el-table-column prop="live" label="关联直播">
<template #default="{ row }">
<el-tooltip class="tooltip" v-if="row.live" :content="row.live.name" placement="bottom"
:disabled="row.live.name.length <= 10" effect="light">
{{ row.live.name.slice(0, 10) || '—' }}
</el-tooltip>
<span v-else>—</span>
</template>
</el-table-column>
<el-table-column prop="count" label="填写份数"></el-table-column>
<el-table-column label="提交时间">
<template v-slot="scope">
{{ scope.row.startDate.split(' ')[0] }} 至 {{ scope.row.endDate.split(' ')[0] }}
</template>
</el-table-column>
<el-table-column prop="status" label="状态">
<template #default="{ row }">
<span v-if="row.status === 0">未上架</span>
<span v-else-if="row.status === 1">发布中</span>
<span v-else-if="row.status === 2">已下架</span>
</template>
</el-table-column>
<el-table-column prop="createdAt" label="发布时间"></el-table-column>
<el-table-column label="操作">
<template #default="scope">
<el-button type="primary" link @click="viewDetails(scope.row)">查看明细</el-button>
<el-button type="primary" link v-if="scope.row.status != '2'" @click="editAssignment(scope.row)">编辑</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="page">
<el-pagination v-model:current-page="PageNo" v-model:page-size="PageSize" :page-sizes="[20, 50, 100, 200]"
:size="size" :disabled="disabled" :background="background" layout="total,prev,next,sizes,jumper"
:total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</el-main>
</el-container>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import { ElMessage } from 'element-plus';
import ClassListApi from '../api/ClassListApi';
import axios from 'axios';
import { useRouter } from 'vue-router';
import LoginApi from '../api/LoginApi';
import { useTokenStore } from '../stores/token';
import { useUserStore } from '../stores/user';
const router = useRouter();
const assignments = ref([]);
// 初始化页码,这里假设初始页码为1,你可以根据实际需求修改
const PageNo = ref(1);
// 初始化页面大小,这里假设初始页面大小为10,同样可按需修改
const PageSize = ref(20);
const size = ref('default');
const disabled = ref(false);
const background = ref(true);
const total = ref(0);
// 处理页面大小改变的事件函数,将新的页面大小赋值给PageSize变量
const handleSizeChange = (newPageSize) => {
PageSize.value = newPageSize;
getAssignments(PageNo.value, PageSize.value);
};
// 处理当前页码改变的事件函数,将新的页码赋值给PageNo变量
const handleCurrentChange = (newPageNo) => {
PageNo.value = newPageNo;
getAssignments(PageNo.value, PageSize.value);
};
const getAssignments = (PageNo, PageSize) => {
ClassListApi.getClassList(PageNo, PageSize)
.then((response) => {
assignments.value = response.data.list;
total.value = response.data.total;
console.log(assignments.value);
})
.catch((error) => {
console.error('获取作业列表失败', error);
});
};
//在组件初始化时(类似mounted生命周期的效果)获取一次初始数据
onMounted(() => {
getAssignments(PageNo.value, PageSize.value);
const token = useTokenStore();
console.log(token);
console.log(token.value);
console.log(token.token)
console.log("=============");
});
const newAssignment = () => {
router.push('/addwork')
}
// 查看明细按钮的点击事件处理函数
const viewDetails = async(row) => {
try {
router.push({
name: 'workdetail',
params: { id: row.id },
});
console.log(row.id)
} catch (error) {
console.log('获取数据出错:', error)
}
};
// 编辑按钮的点击事件处理函数
const editAssignment = async (row) => {
try {
router.push({
name: 'updatework',
params: { id: row.id },
});
console.log(row.id)
} catch (error) {
console.log('获取数据出错:', error)
}
};
// // 退出登录
// const logout = () => {
// LoginApi.logout().then(res => {
// console.log(res);
// // 移除axios请求拦截器中设置token的逻辑,恢复到初始状态
// // axios.interceptors.request.eject(axios.interceptors.request.handlers.find(
// // handler => handler.fulfilled && handler.fulfilled.toString().includes('token')
// // ));
// config.headers['token'] = ` `;
// }).catch(err => {
// // 处理退出登录接口调用失败的情况,比如提示错误信息等
// ElMessage.error('退出登录失败,请稍后重试');
// }).finally(() => {
// // 无论接口调用成功与否,都进行页面跳转
// router.push('/');
// });
// }
// //退出登录
// const logout = () => {
// LoginApi.logout().then(res => {
// console.log(res)
// })
// router.push('/')
// }
//退出
const logout=async()=>{
try {
await LoginApi.logout()
} catch (error) {
console.log(error)
}
//清除登录信息
const tokenStore = useTokenStore();
const userStore = useUserStore();
tokenStore.clear();
userStore.clear();
router.push('/')
}
</script>
<style scoped>
.page {
margin-left: 70%;
}
.header {
height: 100px;
line-height: 100px;
padding: 0 80px;
}
.header-text {
font-size: 22px;
font-weight: 500;
color: black;
float: left;
}
.header-button {
margin-top: 30px;
}
.main {
padding: 20px 203px;
background-color: #F8F8F8;
}
.list {
padding: 0 60px;
background-color: white;
}
.main-title {
font-size: 16px;
background-color: white;
font-weight: bold;
height: 52px;
border-bottom: 2px solid #ececec;
padding: 0 60px;
line-height: 52px;
}
.main-button {
margin: 15px 0;
padding: 12px 20px;
height: 40px;
}
</style>