driverSchool/newPages/newIndex/index.vue
2025-04-15 17:47:29 +08:00

428 lines
11 KiB
Vue
Raw 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>
<view class="page flex-col">
<view class="top_">
<u-swiper class="lunbo_" :list="swiperList" keyName="swiperPicture" radius="10" height="300" indicator
indicatorMode="line"></u-swiper>
</view>
<view class="section_2 flex-col">
<view class="list_1 flex-row">
<view
class="image-text_1 flex-col align-items-center justify-content-center;"
v-for="(item, index) in loopData0"
:key="index"
@click="handleItemClick(item)"
>
<image
class="label_1"
referrerpolicy="no-referrer"
:src="item.url"
/>
<text class="text-group_1" v-text="item.text"></text>
</view>
</view>
<view class="box_4 flex-row justify-between">
<view class="image-text_2 flex-row justify-between">
<!-- <u-notice-bar direction="column" duration="10000" bgColor="#e9f1ff" color="black" :text="textList.map(item => item.title)" @click="handleNoticeClick" icon="/static/lanhu_shouye2gai/FigmaDDSSlicePNGd2c17b5f24182e597acbfa50481040c1.png"></u-notice-bar> -->
<u-notice-bar
direction="column"
duration="10000"
bgColor="#e9f1ff"
color="black"
:text="textList"
@click="handleNoticeClick"
icon="/static/lanhu_shouye2gai/FigmaDDSSlicePNGd2c17b5f24182e597acbfa50481040c1.png"
/>
</view>
<view class="group_3 flex-col justify-between">
<view class="block_5 flex-col"></view>
<view class="block_6 flex-col"></view>
<view class="block_7 flex-col"></view>
</view>
</view>
<view class="box_5 flex-row justify-between">
<text class="text_2">优质驾校</text>
<view class="image-text_3 flex-row justify-between">
<text class="text-group_3" @click="goSchoolList()">查看更多</text>
<image
class="thumbnail_2"
referrerpolicy="no-referrer"
src="/static/lanhu_shouye2gai/FigmaDDSSlicePNGc8586e4d9e76802e4b93ae8fb3654b38.png"
/>
</view>
</view>
<view class="itemContent">
<!-- 使用 scroll-view 包裹 SchoolInfo 组件 -->
<scroll-view class="school-scroll-view" scroll-y @scrolltolower="onReachBottomCus"
refresher-enabled @refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
<SchoolInfo style="" v-for="(school, index) in schoolList" :key="index" :schoolInfo="school"
@click="goSchoolDetail(school)"/>
</scroll-view>
</view>
</view>
<tabbar :msg='msg'></tabbar>
</view>
</template>
<script>
import SchoolInfo from './SchoolInfo.vue';
import request from "@/utils/request";
import {
getCoachId,
getInviteId,
getLocalUserInfo,
getToken,
removeCoachId,
removeInviteId,
removeTenantId,
setCoachId,
setInviteId,
setLocalUserInfo,
setStaffType,
setTenantId
} from '@/utils/auth'
export default {
components: {
SchoolInfo
},
data() {
return {
loopData0: [
{
url: '/static/lanhu_shouye2gai/xcbm.png',
text: '学车报名'
},
{
url: '/static/lanhu_shouye2gai/yyxl.png',
text: '预约训练'
},
{
url: '/static/lanhu_shouye2gai/kslr.png',
text: '考试结果录入'
},
{
url: '/static/lanhu_shouye2gai/pj.png',
text: '评价'
},
],
swiperList: [],
msg: "1",
constants: {},
schoolList: [],
//下来刷新状态
isTriggered: false,
pageNo: 1,
pageSize: 10,
total: 0,
imageUrl: this.$imagesUrl,
textList:[],
noticeList: [],
qTenantId: null,
qCoachId: null,
};
},
onLoad(query) {
// setInviteId('JLPXF1')
// this.getTenantIdByInviteId()
this.getSwiperList()
this.getTextList()
const q = decodeURIComponent(query.q) // 获取到二维码原始链接内容
let theRequest = this.getUrlValue(q)
if(theRequest.hasOwnProperty("inviteId")){
//扫码邀请过来的设置邀请者code
setInviteId(theRequest['inviteId'])
this.getTenantIdByInviteId()
//先登录
uni.reLaunch({
url: '/pages/login/login'
})
}else{
removeInviteId()
removeCoachId()
removeTenantId()
this.getList()
/* uni.reLaunch({
url: '/pages-home/home/home'
}) */
}
},
methods: {
getTenantIdByInviteId(){
console.log('1122', getInviteId())
if(!getInviteId()){
console.log(1)
this.getList()
return
}
request({
url: '/app-api/dl-drive-school-coach-small/getCoachByUniqueCode',
method: 'GET',
params: {
uniqueCode: getInviteId()
}
}).then(res => {
console.log(123)
if(res.data != null){
this.qTenantId = res.data.tenantId
this.qCoachId = res.data.userId
setTenantId(res.data.tenantId)
this.getList()
if(res.data.type == 'jl'){
setCoachId(res.data.userId)
setStaffType('02')
}
if(res.data.type == 'yg'){
setCoachId(res.data.userId)
setStaffType('01')
}
}
})
},
getList() {
const params = {
pageNo: this.pageNo,
pageSize: this.pageSize,
serviceCodes: 'jiaxiao',
};
if (this.qTenantId) {
params.tenantId = this.qTenantId;
}
console.log('params', params)
request({
url: '/userClient/base/companySmallProgram/pageNoTenantId',
method: 'GET',
params: params,
tenantIdFlag: false
}).then(res => {
res.data.records.forEach(item => {
item.features = ['有接送', '规模大']
item.imageUrl = this.imageUrl + '/' + item.photo
})
this.schoolList = this.schoolList.concat(res.data.records)
this.isTriggered = false
this.total = res.data.total
console.log(res)
})
},
getUrlValue(url) {
var theRequest = new Object();
if (url.indexOf("?") != -1) {
//有参数
var str = url.split("?")[1];
var strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
}
}
return theRequest
},
/**
* 实时讯息
*/
/* async getTextList() {
let res = await request({
url: '/app-api/base/notice/pageList',
method: 'get',
params: {
pageNum: 1,
pageSize: 10000,
parentServer: 'jiaxiao',
server: 'wx'
}
})
this.textList = []
res.data.records.forEach(item => {
this.textList.push(item.title)
})
}, */
async getTextList() {
let res = await request({
url: '/app-api/base/notice/pageList',
method: 'get',
params: {
pageNum: 1,
pageSize: 10000,
parentServer: 'jiaxiao',
server: 'wx'
}
})
this.noticeList = res.data.records // 保留原始数据
this.textList = res.data.records.map(item => item.title) // 提取 title 用于展示
},
handleNoticeClick(index) {
const currentNotice = this.noticeList[index]
if (currentNotice && currentNotice.id) {
uni.navigateTo({
url: `/pagesA/noticeContent/index?id=${currentNotice.id}`
})
}
},
getSwiperList() {
request({
url: '/app-api/drivingSchool/text/swiper/list',
method: 'GET'
}).then(res => {
res.data.forEach(item => {
item.swiperPicture = this.imageUrl + item.swiperPicture
})
this.swiperList = res.data
})
},
/**
* 上滑加载数据
*/
onReachBottomCus() {
//判断 如果页码*页容量大于等于总条数,提示该页数据加载完毕
if (this.pageNo * this.pageSize >= this.total) {
uni.$u.toast('没有更多数据了')
return
}
//页码+1,调用获取数据的方法获取第二页数据
this.pageNo++
//此处调用自己获取数据列表的方法
this.getList()
},
/**
* 下拉刷新数据
*/
onRefresherrefresh() {
this.isTriggered = true
this.pageNo = 1
this.total = 0
this.schoolList = []
this.getList()
},
goSchoolList() {
uni.navigateTo({
url: '/newPages/schoolList/index',
});
},
goSchoolDetail(data) {
uni.navigateTo({
url: `/newPages/schoolDetail/index?id=${data.id}&tenantId=${data.tenantId}&schoolName=${data.corpName}`,
// url: '/newPages/schoolDetail/index',
});
},
handleItemClick(item) {
// 根据 item.text 判断点击的是哪一项
switch (item.text) {
case '学车报名':
uni.navigateTo({
url: '/newPages/schoolList/index'
});
break;
case '预约训练':
if (!getToken()) {
/* uni.showToast({
title: '请先登录',
icon: 'none',
duration: 2000
}); */
uni.showModal({
title: '未登录',
content: '请先登录',
confirmText: '去登录',
success: (res) => {
if (res.confirm) {
uni.navigateTo({
url: '/pages/login/login'
});
}
}
});
return;
}
uni.navigateTo({
url: '/pagesA/appointment/index'
});
break;
case '考试结果录入':
if (!getToken()) {
uni.showModal({
title: '未登录',
content: '请先登录',
confirmText: '去登录',
success: (res) => {
if (res.confirm) {
uni.navigateTo({
url: '/pages/login/login'
});
}
}
});
return;
}
uni.navigateTo({
url: '/pagesA/examinationList/index'
});
break;
case '评价':
if (!getToken()) {
uni.showModal({
title: '未登录',
content: '请先登录',
confirmText: '去登录',
success: (res) => {
if (res.confirm) {
uni.navigateTo({
url: '/pages/login/login'
});
}
}
});
return;
}
uni.navigateTo({
url: '/pagesA/evaluate/index'
});
break;
default:
console.warn('未知的点击项:', item.text);
break;
}
}
}
};
</script>
<style lang='scss'>
@import '../common/common.scss';
@import './assets/style/index.rpx.scss';
// 新增样式,使文字居中显示
.text-group_1 {
text-align: center;
}
// 修改 image-text_1 样式,使其内容垂直排列并居中
.image-text_1 {
display: flex;
flex-direction: column;
align-items: center; // 使内容水平居中
justify-content: center; // 可根据需要使内容垂直居中
}
// 新增 scroll-view 样式
.school-scroll-view {
height: 500rpx; // 设置一个固定高度,根据需要调整
overflow-y: auto;
margin-left: 22rpx;
}
.itemContent {
padding: 30rpx 0;
display: flex;
flex-direction: column;
row-gap: 20rpx;
}
.top_ {
//padding-top: 200rpx;
}
</style>