381 lines
7.9 KiB
Vue
381 lines
7.9 KiB
Vue
<template>
|
|
<view>
|
|
<u-sticky>
|
|
<view style="position: relative;">
|
|
<u-swiper :list="swiperList" keyName="src" interval='10000' circular height="470rpx"
|
|
bgColor="#ffffff"></u-swiper>
|
|
<view class="search-input">
|
|
<view style="width: 90%;margin: 0 auto;">
|
|
<u-search @search='search' searchIconColor='#e6e6e6' placeholderColor='#e6e6e6' color='#FFFFFF'
|
|
placeholder="搜索招聘/课程/技能" v-model="queryParams.asset_name" :showAction="false"></u-search>
|
|
</view>
|
|
</view>
|
|
<view class="tabs-list">
|
|
<view class="list">
|
|
<view class="left">
|
|
<view class="item" @click="btntabs(item)" v-for="(item,index) in tabsList" :key="index">
|
|
<image class="images" :src="queryParams.type==item.type?item.imgSelect:item.img"
|
|
mode=""></image>
|
|
<text :style="{color:queryParams.type==item.type?'#006EEF':'#707070'}"
|
|
class="text1">{{item.title}}</text>
|
|
</view>
|
|
</view>
|
|
<view @click="btnMore" class="right">
|
|
<image class="images1" src="../../static/img/demo/gengduo.png" mode=""></image>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</u-sticky>
|
|
<view v-if="assetList.length>0" class="last-update">
|
|
<topic-list @click.native="goTopicDetail(item)" :item="item" v-for="(item,index) in assetList"
|
|
:key="index"></topic-list>
|
|
</view>
|
|
<u-loadmore v-if="assetList.length>0" :status="status" />
|
|
<view v-if="assetList.length==0" class="default-img">
|
|
<image style='width: 400rpx;height: 200rpx' src="../../static/img/demo/default-img.png" mode=""></image>
|
|
<text class="desc">暂无内容,去其他的看看吧</text>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import TopicList from "@/pages/news/cpns/topic-list.vue"
|
|
import {
|
|
trainHas,
|
|
assetList,
|
|
assetInfo,
|
|
bannerList
|
|
} from '@/api/train.js'
|
|
import {
|
|
userInfo
|
|
} from '@/api/login.js'
|
|
export default {
|
|
components: {
|
|
TopicList
|
|
},
|
|
data() {
|
|
return {
|
|
queryParams: {
|
|
asset_name: "",
|
|
org_id: getApp().globalData.org_id,
|
|
type: 3,
|
|
page: 1,
|
|
limit: 20,
|
|
},
|
|
swiperList: [],
|
|
assetList: [],
|
|
|
|
tabsList: [{
|
|
img: '/static/img/demo/kecheng.png',
|
|
imgSelect: '/static/img/demo/kecheng-select.png',
|
|
title: '适应',
|
|
type: 3
|
|
}, {
|
|
img: '/static/img/demo/chuangye.png',
|
|
imgSelect: '/static/img/demo/chuangye-select.png',
|
|
title: '职业',
|
|
type: 2
|
|
},
|
|
{
|
|
img: '/static/img/demo/jineng.png',
|
|
imgSelect: '/static/img/demo/jineng-select.png',
|
|
title: '创业',
|
|
type: 4
|
|
},
|
|
{
|
|
img: '/static/img/demo/zhaopin.png',
|
|
imgSelect: '/static/img/demo/zhaopin-select.png',
|
|
title: '招聘',
|
|
type: 1
|
|
}
|
|
],
|
|
userInfo: {},
|
|
status: 'loadmore',
|
|
count: 0
|
|
}
|
|
},
|
|
onReachBottom() {
|
|
if (this.assetList.length >= this.count) {
|
|
this.status = 'nomore';
|
|
return
|
|
}
|
|
this.queryParams.page++
|
|
this.status = 'loading';
|
|
this.getList()
|
|
|
|
},
|
|
onLoad() {
|
|
// this.getUserInfo()
|
|
this.getList()
|
|
this.getBannerList()
|
|
},
|
|
onShow() {
|
|
|
|
},
|
|
methods: {
|
|
async getList() {
|
|
var that = this
|
|
try {
|
|
uni.showLoading({
|
|
title: '加载中...'
|
|
})
|
|
var res = await assetList(that.queryParams)
|
|
uni.hideLoading()
|
|
if (res.code == 0) {
|
|
if (res.data.length < that.queryParams.limit) {
|
|
that.status = 'nomore'
|
|
}
|
|
that.assetList = that.assetList.concat(res.data)
|
|
that.count = res.count
|
|
}
|
|
|
|
} catch (err) {
|
|
uni.showToast({
|
|
title: err.msg,
|
|
icon: 'none'
|
|
})
|
|
uni.hideLoading()
|
|
}
|
|
},
|
|
getBannerList() {
|
|
bannerList({
|
|
position: 'home',
|
|
org_id: getApp().globalData.org_id
|
|
}).then(res => {
|
|
this.swiperList = res.data
|
|
})
|
|
},
|
|
search() {
|
|
this.queryParams.page = 1
|
|
this.assetList = []
|
|
this.getList()
|
|
},
|
|
getUserInfo() {
|
|
userInfo().then(res => {
|
|
this.userInfo = res.data
|
|
uni.setStorageSync('userInfo', res.data)
|
|
})
|
|
},
|
|
getTrainHas() {
|
|
trainHas().then(res => {
|
|
if (!res.data.train) {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '请选择技能培训意向',
|
|
success: function(res) {
|
|
uni.navigateTo({
|
|
url: '/pages/home/train'
|
|
})
|
|
}
|
|
});
|
|
|
|
}
|
|
})
|
|
},
|
|
// swiper滑动
|
|
changeSwiper(e) {
|
|
this.tabIndex = e.detail.current
|
|
},
|
|
btntabs(item) {
|
|
this.getTrainHas()
|
|
this.queryParams.type = item.type
|
|
this.queryParams.page = 1
|
|
this.assetList = []
|
|
this.getList()
|
|
},
|
|
// 更多
|
|
btnMore() {
|
|
uni.navigateTo({
|
|
url: '/pages/news/news-topic-cate?type=' + this.queryParams.type
|
|
})
|
|
},
|
|
|
|
getFileType(url) {
|
|
// 从 URL 中提取文件名
|
|
const fileName = url.split('/').pop();
|
|
// 获取文件扩展名
|
|
const fileExtension = fileName.split('.').pop().toLowerCase();
|
|
|
|
// 定义文件类型映射
|
|
const fileTypes = {
|
|
'doc': 'doc',
|
|
'xls': 'xls',
|
|
'ppt': 'ppt',
|
|
'pdf': 'pdf',
|
|
'docx': 'docx',
|
|
'xlsx': 'xlsx',
|
|
'pptx': 'pptx'
|
|
};
|
|
// 返回对应的文件类型或 'unknown'
|
|
return fileTypes[fileExtension] || 'unknown';
|
|
},
|
|
|
|
getPdfInfo(item) {
|
|
var that = this
|
|
uni.showLoading({
|
|
title: '加载文档中..'
|
|
})
|
|
assetInfo({
|
|
id: item.asset_id
|
|
}).then(Response => {
|
|
uni.hideLoading()
|
|
uni.downloadFile({
|
|
url: Response.data.pdf_url,
|
|
success: function(res) {
|
|
uni.openDocument({
|
|
filePath: res.tempFilePath,
|
|
fileType: that.getFileType(Response.data.pdf_url),
|
|
showMenu: true,
|
|
success: function(res) {
|
|
uni.hideLoading()
|
|
},
|
|
fail: function(err) {
|
|
uni.hideLoading()
|
|
}
|
|
});
|
|
},
|
|
complete: function(r) {
|
|
uni.hideLoading()
|
|
}
|
|
});
|
|
})
|
|
},
|
|
//
|
|
goTopicDetail(item) {
|
|
switch (this.queryParams.type) {
|
|
case 1:
|
|
// 招聘
|
|
uni.navigateTo({
|
|
url: '/pages/home/detail?assets_id=' + item.asset_id
|
|
})
|
|
break;
|
|
case 2:
|
|
// 职业
|
|
this.getPdfInfo(item)
|
|
break;
|
|
case 4:
|
|
// 创业
|
|
this.getPdfInfo(item)
|
|
break;
|
|
case 3:
|
|
// 适应
|
|
uni.navigateTo({
|
|
url: '/pages/news/course?assets_id=' + item.asset_id
|
|
})
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
page {
|
|
background-color: #f7f8ff;
|
|
}
|
|
|
|
.search-input {
|
|
width: 100%;
|
|
// position: relative;
|
|
// bottom: 270rpx;
|
|
position: absolute;
|
|
bottom: 200rpx;
|
|
}
|
|
|
|
.tabs-list {
|
|
// border: solid 1px red;
|
|
width: 100%;
|
|
position: absolute;
|
|
bottom: -70rpx;
|
|
|
|
.list {
|
|
width: 95%;
|
|
margin: 0 auto;
|
|
display: flex;
|
|
align-items: center;
|
|
background-color: #FFFFFF;
|
|
border-radius: 20rpx;
|
|
// position: relative;
|
|
// bottom: 200rpx;
|
|
height: 180rpx;
|
|
|
|
.left {
|
|
width: 82%;
|
|
display: flex;
|
|
align-items: center;
|
|
// border: solid 1px red;
|
|
|
|
.item {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
|
|
.images {
|
|
width: 60rpx;
|
|
height: 60rpx;
|
|
}
|
|
|
|
.text1 {
|
|
font-size: 26rpx;
|
|
color: #000000;
|
|
margin-top: 10rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.right {
|
|
width: 18%;
|
|
display: flex;
|
|
justify-content: center;
|
|
|
|
.images1 {
|
|
width: 55rpx;
|
|
height: 55rpx;
|
|
padding-right: 10rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
.last-update {
|
|
// border: solid 1px red;
|
|
// position: relative;
|
|
// bottom: 200rpx;
|
|
width: 95%;
|
|
margin: 0 auto;
|
|
padding: 70rpx 0 20rpx;
|
|
|
|
}
|
|
|
|
.default-img {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding-top: 250rpx;
|
|
|
|
.desc {
|
|
font-family: PingFang SC, PingFang SC;
|
|
font-weight: 400;
|
|
font-size: 24rpx;
|
|
color: #595959;
|
|
margin-top: 30rpx;
|
|
}
|
|
}
|
|
|
|
/deep/.u-search__content {
|
|
background-color: rgba(255, 255, 255, 0.4) !important;
|
|
}
|
|
|
|
/deep/.u-search__content__input {
|
|
background-color: rgba(255, 255, 255, 0) !important;
|
|
}
|
|
</style> |