Files
2026-03-04 10:27:19 +08:00

448 lines
11 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-box">
<div class="con-box">
<!-- <view class="collection-search">
<view class="search-content">
<view class="header-input button-click">
<uni-icons class="iconsearch" color="#6A6A6A" type="search" size="22"></uni-icons>
<input
class="input"
v-model="searchKeyword"
@confirm="searchVideo"
placeholder="输入考试名称"
placeholder-class="inputplace"
/>
<uni-icons
v-if="searchKeyword"
class="clear-icon"
type="clear"
size="24"
color="#999"
@click="clearSearch"
/>
</view>
</view>
</view> -->
<scroll-view scroll-y class="main-scroll" @scrolltolower="handleScrollToLower">
<div class="cards" v-for="(item,index) in dataList" :key="item.examPaperId">
<div class="cardHead">
<div class="cardHeadLeft">
<div class="cardTitle">{{item.title}}</div>
</div>
<div class="rightBtn">
<uni-tag :inverted="true" v-if="item.status==2" text="已发布" type="success" />
<uni-tag :inverted="true" v-else-if="item.status==0" text="未发布" type="error" />
<uni-tag :inverted="true" v-else text="失效" />
</div>
</div>
<div class="heng"></div>
<div class="cardCon">
<div class="conten">发布时间{{item.publishTime}}</div>
<div class="conten">审核状态
<uni-tag :inverted="true" size="mini" v-if="item.shenhe==1" text="已通过" type="success" />
<uni-tag :inverted="true" size="mini" v-if="item.shenhe==2" text="未通过" type="error" />
<uni-tag :inverted="true" size="mini" v-if="item.shenhe==0" text="待审核" />
</div>
<div class="flooter">
<div v-if="item.status == '0' && item.shenhe == '1'" @click="handlePublishClick(scope.row,2)" >发布</div>
<div v-else @click="handlePublishClick(item,0)" >取消发布</div>
<div @click="handleDetail(item)">查看</div>
<div v-if="item.status == '0'" @click="handleOperation(item)">编辑</div>
<div v-if="item.status == '0'" @click="handleDeleteClick(item)">删除</div>
</div>
</div>
</div>
</scroll-view>
</div>
<div class="footer">
<div class="footerBtn" @click="handleOperation()">新增</div>
</div>
</div>
</template>
<script setup>
import { inject, ref, reactive } from 'vue';
import { onLoad, onShow } from '@dcloudio/uni-app';
const { $api, navTo, navBack,urls } = inject('globalFunction');
import config from "@/config.js"
const userInfo = ref({});
const Authorization = ref('');
const searchKeyword = ref('');
const dataList=ref([])
const pageSize=ref(10)
const pageNum=ref(1)
const totalNum=ref(0)
const baseUrl = config.imgBaseUrl
const handleScrollToLower = () => {
getDataList('add');
};
onLoad(() => {
});
onShow(()=>{
Authorization.value=uni.getStorageSync('Padmin-Token')||''
getDataList('refresh');
})
// 搜索视频
function searchVideo() {
getDataList('refresh');
}
// 清除搜索内容
function clearSearch() {
searchKeyword.value = '';
getDataList('refresh');
}
function getDataList(type = 'add') {
let maxPage=Math.ceil(totalNum.value/pageSize.value)
let params={}
if (type === 'refresh') {
pageNum.value = 1;
params={
title:"",
pageSize:pageSize.value,
pageNum:pageNum.value,
type:1
}
$api.myRequest('/train/public/announcement/list', params).then((resData) => {
if(resData.code==200){
dataList.value=resData.rows
totalNum.value=resData.total
}
});
}
if (type === 'add' && pageNum.value < maxPage) {
pageNum.value += 1;
params={
address:"",
pageSize:pageSize.value,
pageNum:pageNum.value,
type:1
}
$api.myRequest('/train/public/train/organ/table', params).then((resData) => {
if(resData.code==200){
dataList.value=dataList.value.concat(resData.rows)
totalNum.value=resData.total
}
});
}
}
function handlePublishClick(row,status){
if(status=='2'){
$api.myRequest('/train/public/announcement/publish', {id: row.id},'get',9100).then((resData) => {
if(resData.code==200){
$api.msg('发布成功');
getDataList('refresh');
}
});
} else {
$api.myRequest('/train/public/announcement/unpublish', {id: row.id},'get',9100).then((resData) => {
if(resData.code==200){
$api.msg('取消发布成功');
getDataList('refresh');
}
});
}
}
// 删除通知公告
function handleDeleteClick(row) {
uni.showModal({
title: '确认删除',
content: '确认删除该通知公告吗?',
success: (res) => {
if (res.confirm) {
$api.myRequest('/train/public/announcement/delete', {id: row.id},'get',9100).then((resData) => {
if(resData.code==200){
$api.msg('已删除');
getDataList('refresh');
}
});
}
}
});
}
function handleOperation(row) {
if(row){
navTo(`/packageB/notice/trainingAnnouncement/postedEdit?id=${row.id}`);
}else{
navTo(`/packageB/notice/trainingAnnouncement/postedEdit`);
}
}
function handleDetail(row){
navTo(`/packageB/notice/trainingAnnouncement/postedDetail?id=${row.id}`);
}
</script>
<style lang="stylus" scoped>
.app-box{
width: 100%;
height: 100vh;
position: relative;
.con-box{
position: absolute;
width: 100%;
height: 92%;
left: 0;
top:0;
z-index: 10;
padding: 20rpx 28rpx;
box-sizing: border-box;
overflow: hidden;
.collection-search{
padding: 10rpx 20rpx;
.search-content{
position: relative
display: flex
align-items: center
padding: 14rpx 0
.header-input{
padding: 0
width: calc(100%);
position: relative
.iconsearch{
position: absolute
left: 30rpx;
top: 50%
transform: translate(0, -50%)
z-index: 1
}
.input{
padding: 0 80rpx 0 80rpx
height: 80rpx;
background: #FFFFFF;
border-radius: 75rpx 75rpx 75rpx 75rpx;
border: 2rpx solid #ECECEC
font-size: 28rpx;
}
.clear-icon{
position: absolute
right: 30rpx;
top: 50%
transform: translate(0, -50%)
z-index: 1
cursor: pointer
}
.inputplace{
font-weight: 400;
font-size: 28rpx;
color: #B5B5B5;
}
}
}
}
.main-scroll {
width: 100%;
height: 100%;
.cards{
width: 100%;
min-height: 260rpx;
height: auto;
background: linear-gradient(0deg, #E3EFFF 0%, #FBFDFF 100%);
// box-shadow: 0px 0px 6px 0px rgba(0,71,200,0.32);
border-radius: 12rpx;
border: 2px solid #EDF5FF;
margin-bottom: 30rpx;
padding: 30rpx 40rpx 0;
box-sizing: border-box
.cardHead{
display: flex;
align-items: center;
justify-content: space-between;
.cardHeadLeft{
display: flex;
align-items: center
width: 70%;
.cardTitle{
font-weight: bold;
font-size: 28rpx;
color: #0069CB;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.titleType{
border-radius: 4px;
font-size: 22rpx;
color: #157EFF;
width: 100rpx;
height: 38rpx;
text-align: center;
line-height: 38rpx;
margin-left: 10rpx;
}
}
}
.heng{
width: 30%;
height: 4rpx;
background: linear-gradient(88deg, #015EEA 0%, #00C0FA 100%);
margin: 10rpx 0 20rpx;
}
.cardCon{
display: flex;
flex-wrap: wrap;
.conten{
width: 100%;
font-size: 24rpx;
color: #666666;
display: flex;
align-items: center
margin-bottom: 10rpx;
}
.status-tags{
display: flex;
align-items: center;
}
}
.flooter{
width: 100%;
border-top: 1px solid #ccc;
display: flex;
justify-content: flex-end;
align-items: center;
margin-top: 10rpx;
view{
font-size: 28rpx;
margin-left: 30rpx;
color: #2175F3;
padding-top: 14rpx;
}
}
}
}
}
.cards2{
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100vh;
background-color: rgba(0,0,0,0.5);
z-index: 10000;
padding: 100rpx 50rpx;
box-sizing: border-box;
.cardCon{
height: 70%;
background-color: #fff;
padding: 20rpx;
box-sizing: border-box;
.cardHead{
display: flex;
align-items: center;
justify-content: space-between;
font-size: 30rpx;
font-weight: 600;
}
}
}
.footer{
width: 100%;
height: 120rpx;
background: #fff;
position: fixed;
z-index: 10;
bottom: 0;
left: 0;
display: flex;
align-content: center;
justify-content: center;
}
.footerBtn{
width: 90%;
height: 90rpx;
line-height: 90rpx;
text-align: center
border-radius: 10rpx;
color: #fff;
background: #409EFF;
}
}
.titleType{
display: inline-block
border-radius: 4px;
font-size: 22rpx;
color: #157EFF;
width: 100rpx;
height: 38rpx;
text-align: center;
line-height: 38rpx;
margin-left: 10rpx;
}
.primary{
border: 1px solid #157EFF!important;
color: #157EFF!important
}
.success{
border: 1px solid #05A636!important;
color: #05A636!important
}
.info{
border: 1px solid #898989!important;
color: #898989!important
}
.tertiary{
border: 1px solid #E6A340!important;
color: #E6A340!important
}
.primary2{
border: 1px solid #F56C6C!important;
color: #F56C6C!important
}
.rightBtn{
width: 140rpx;
height: 44rpx;
line-height: 44rpx;
// background: linear-gradient(90deg, #00C0FA 0%, #1271FF 100%);
// border-radius: 4px;
// color: #fff;
// font-size: 24rpx;
text-align: center;
}
.detailTitle{
font-size: 32rpx;
font-weight: 600;
margin: 30rpx 0;
}
.detailCon{
font-size: 28rpx;
line-height: 40rpx;
}
.exam-info {
display: flex;
justify-content: space-between;
margin-bottom: 35rpx;
margin-top: 20rpx;
}
.info-item {
flex: 1;
text-align: center;
}
.info-value {
font-family: 'D-DIN-Medium';
font-size: 26rpx;
font-weight: 600;
color: #409EFF;
margin-bottom: 8rpx;
}
.info-label {
font-size: 26rpx;
color: #333;
}
.info-divider {
width: 2px;
background-color: #C3E1FF;
}
</style>