<template> <view class="page"> <view :class="['custom-header', { 'is-back': isBack }, bgColor]"> <view class="back-container" @click="handleBack"> <view class="back-text">返回</view> </view> <view class="content-container"> <view class="content-text">{{title}}</view> </view> </view> <view class="line-box"> <view :style="[{top:CustomBar + 'px'}]"> <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" :up="upOption" @up="upCallback"> <view class="cu-item" :class="modalName=='move-box-'+ index?'move-cur':''" v-for="(item, index) in dataList" :key="index" @touchstart="ListTouchStart" @touchmove="ListTouchMove" @touchend="ListTouchEnd" :data-target="'move-box-' + index"> <view class="item-box"> <view class="item-title"> 企业名称:{{item.qy.name}} </view> <view class="item-title"> 对接方式:{{item.method}} </view> <view class="item-title"> 沟通时间:{{item.contactDate.substring(0, 10)}} </view> <view class="item-title"> 挂钩干部:{{item.qy.des14}} </view> </view> </view> </mescroll-body> </view> <!-- <view style="height: 40rpx;"></view> --> </view> <view class="btn_add"> <button type="primary" @click="add">新增服务</button> </view> </view> </template> <script> import * as $auth from "@/common/auth.js" import loginService from "@/api/auth/loginService"; import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js"; import MescrollMoreItemMixin from "@/components/mescroll-uni/mixins/mescroll-more-item.js"; import lyServiceService from '@/api/service/lyServiceService.js' export default { mixins: [MescrollMixin, MescrollMoreItemMixin], // 使用mixin (在main.js注册全局组件) data() { return { canAdd: false, userid: "", isLogin: "", pageInfo: {}, loginid: "", title: "服务记录", isBack: true, // 是否显示返回按钮 bgColor: 'bg-blue', // 背景颜色 finish: true, curWord: "", //当前搜索关键词 range: [{ value: 999, text: "全部" }, { value: 1, text: "反馈大走访" }, { value: 2, text: "正在办理" }, { value: 3, text: "难以化解" }, { value: 4, text: "持续跟踪" }, { value: 5, text: "提请会办" }, ], dataList: [], // 数据列表 modalName: null, tablePage: { total: 0, currentPage: 1, pageSize: 10, orders: [] }, loading: false, parkId: '', parkList: [], parkList2: [], parkList3: [], parkList4: [], ddd1: "", }; }, onShow() { this.isLogin = this.$auth.checkisLogin(); }, created() { this.userid = $auth.getUserInfo().loginName; }, methods: { /*获取数据列表 */ upCallback(page) { this.loading = true lyServiceService.list({ current: page.num, size: page.size, orders: [{ column: 'a.create_date', asc: false }], }).then(({ data }) => { let curPageData = data.records this.mescroll.endBySize(curPageData.length, data.total); //如果是第一页需手动制空列表 if (page.num == 1) this.dataList = []; //追加新数据 this.dataList = this.dataList.concat(curPageData); }).catch(e => { //联网失败, 结束加载 this.mescroll.endErr(); }) }, change(val) { this.dataList = [] if (this.curWord == '') { this.curWord = 999 } this.upCallback(this.tablePage) }, updateCities(newCities) { this.cities = newCities; }, // 搜索 doSearch() { this.dataList = []; // 先清空列表,显示加载进度 this.mescroll.resetUpScroll(); }, // ListTouch触摸开始 ListTouchStart(e) { this.listTouchStart = e.touches[0].pageX }, // ListTouch计算方向 ListTouchMove(e) { this.listTouchDirection = e.touches[0].pageX - this.listTouchStart > -60 ? 'right' : 'left' }, // ListTouch计算滚动 ListTouchEnd(e) { if (this.listTouchDirection == 'left') { this.modalName = e.currentTarget.dataset.target } else { this.modalName = null } this.listTouchDirection = null }, handleBack() { // 返回逻辑,比如跳转至上一页 uni.redirectTo({ url: '/pages/index/Dzfindex' }) }, add() { if (this.isLogin == null) { uni.showModal({ title: '您还未登录,现在去登录?', showCancel: true, success: (res) => { if (res.confirm) { uni.showLoading() uni.reLaunch({ url: '/pages/login/login' }) } } }); } else { uni.navigateTo({ url: '/pages/service/addService' }) } }, switchTab(index) { this.activeTab = index; if (this.activeTab == 0) { this.searchForm.des1 = ""; } else { this.searchForm.des1 = this.activeTab; } this.doSearch(); } } } </script> <style> .page { height: 100vh; } .line-box { padding-left: 20rpx; padding-right: 20rpx; margin-top: 20rpx; height: 75vh; overflow: auto; } .mart-t { margin-top: 30rpx; } .center-box { margin-top: 20rpx; width: 100%; border-radius: 25rpx; border-radius: 25rpx; background: #fff; box-shadow: 0px 8px 16px 2px rgba(101, 101, 101, 0.2); padding-bottom: 30rpx; display: flex; flex-wrap: wrap; } .center-left-box { width: 100%; padding-bottom: 30rpx; display: flex; flex-wrap: wrap; } .btn-box-text { flex: 1; height: 20rpx; text-align: center; color: #000000; font-size: 14px; font-weight: 700; } .btn-box-1 { flex: 1; height: 30rpx; text-align: center; color: #36A7F3; font-size: x-large; font-weight: 700; } .btn-box-2 { flex: 1; height: 30rpx; text-align: center; color: #F3365A; font-size: x-large; font-weight: 700; } .btn-box-3 { flex: 1; height: 30rpx; text-align: center; color: #15D578; font-size: x-large; font-weight: 700; } .btn-box-4 { flex: 1; height: 30rpx; text-align: center; color: #F1A31B; font-size: x-large; font-weight: 700; } .btn-Imbox { flex: 1; height: 150rpx; padding-top: 8rpx; text-align: center; display: flex; flex-direction: column; justify-content: center; /* 子元素内部内容竖向居中 */ align-items: center; /* 子元素内部内容水平居中 */ text-align: center; /* 文字居中 */ } .btn-Imbox p { font-size: 14px; /* 文字大小,可根据需要调整 */ margin: 0; /* 去掉默认的外边距 */ font-weight: 700; } .center-img { width: 90rpx; height: 90rpx; margin-bottom: 10rpx; text-align: center; } .center-img2 { width: 70rpx; height: 70rpx; margin-top: 10rpx; margin-bottom: 20rpx; text-align: center; } .kuai-text { color: #000000; font-weight: 900; font-size: 34rpx; padding-top: 20rpx; padding-left: 20rpx; } .h-200 { height: 200rpx; } .swiper { width: 750rpx; height: 310rpx; } .swiper-item { width: 750rpx; height: 310rpx; background-color: aliceblue; } .font-size-35 { font-size: 35px !important; } .img-size { width: 80rpx; height: 80rpx; } .content-box { width: 437rpx; height: 200rpx; } .my-app .padding-sm { padding: 6px; } .grid .padding-sm .bg-white { box-shadow: 0 1px 4px #f9f9f9, 1px 1px 40px rgba(0, 0, 0, .06); } .bg-blue { background: #fff; color: #0081ff !important; } .text-white, .line-white, .lines-white { color: #0081ff !important; } .cu-bar .search-form { background-color: white; } .item-box { width: 710rpx; background: #FFFFFF; box-shadow: 0px 1px 3px 0px rgba(9, 2, 4, 0.1); border-radius: 10px; padding-top: 12rpx; padding-left: 38rpx; padding-right: 10rpx; padding-bottom: 15rpx; margin-top: 20rpx; } .item-title { font-size: 30rpx; margin-top: 12rpx; color: #010101; } .item-line { display: flex; height: 48rpx; margin-top: 20rpx; } .item-line2 { height: 48rpx; margin-top: 20rpx; } .subtitle { color: #E5880E; } .item-name { margin-top: 5rpx; font-size: 29rpx; color: #666666; } .item-name2 { font-size: 29rpx; color: #676D99; height: 40rpx; /* 这里假设两行的高度是80rpx */ overflow: hidden; /* 超出部分隐藏 */ text-overflow: ellipsis; /* 超出部分显示省略号 */ display: -webkit-box; /* 使用Webkit的行盒模型 */ -webkit-line-clamp: 1; /* 限制最多显示2行 */ -webkit-box-orient: vertical; /* 垂直排列 */ } .item-name3 { display: flex; width: 100%; padding-right: 30rpx; flex: 1; justify-content: flex-end; font-size: 29rpx; color: #FF4500; } .item-name31 { display: flex; width: 100%; padding-right: 30rpx; flex: 1; justify-content: flex-end; font-size: 29rpx; color: #2E8B57; } .item-content { color: #1497EF; font-size: 30rpx; } .btn-box { display: flex; } .line-zs { width: 2rpx; height: 30rpx; background: #36A7F3; } .edit-botton { width: 100rpx; height: 48rpx; line-height: 48rpx; color: #fff; font-size: 28rpx; margin-right: 20rpx; border-radius: 10rpx; background: #5A9EE9; text-align: center; } .del-botton { width: 100rpx; height: 48rpx; line-height: 48rpx; color: #fff; font-size: 28rpx; margin-right: 20rpx; border-radius: 10rpx; background: #F27C85; text-align: center; } .color-white { color: #808080; font-size: 40rpx; line-height: 60rpx; } .search-box { padding-left: 20rpx; padding-right: 20rpx; padding-top: 20rpx; margin-top: 20rpx; width: 100%; border-radius: 25rpx; border-radius: 25rpx; background: #fff; box-shadow: 0px 8px 16px 2px rgba(101, 101, 101, 0.2); padding-bottom: 30rpx; display: flex; flex-wrap: wrap; } .search-box1 { display: flex; } .input-box { background: #fff; height: 65rpx; width: 640rpx; display: flex; align-items: center; border-radius: 30rpx; padding-left: 30rpx; margin-right: 20rpx; } .input-boxinput { height: 75rpx; font-size: 15rpx; } .choose-box { background: #fff; width: 325rpx; border-radius: 23rpx; height: 70rpx; display: flex; align-items: center; justify-content: center; margin-right: 20rpx; border: 1rpx solid #808080; } .choose-box2 { background: #fff; width: 100%; border-radius: 23rpx; height: 70rpx; display: flex; padding-left: 29rpx; align-items: center; border: 1rpx solid #808080; } .choose-box3 { display: flex; } .choose-boxp { font-size: 32rpx; width: 80rpx; } .fixed-bottom-right { padding: 20rpx; position: fixed; bottom: 20px; /* 距离底部的距离 */ right: 20px; /* 距离右侧的距离 */ } .tabs { display: flex; justify-content: space-around; margin-bottom: 10px; } .tab-item { padding: 10px 10px; cursor: pointer; transition: all 0.3s; } .tab-item.active { color: #66b1ff; border-bottom: 2px solid #66b1ff; } .tab-content { padding: 20px; } .tab-item-content { display: none; } .tab-item-content.v-if { display: block; } .custom-header { display: flex; align-items: center; justify-content: center; padding: 10px; width: 100%; } .is-back { position: relative; } .back-container { position: absolute; left: 10px; cursor: pointer; } .back-text { color: white; /* 返回按钮文本颜色 */ } /* 背景颜色 */ .bg-blue { background-color: #4285f4; /* 假设这是一个蓝色背景 */ } .content-container { flex: 1; text-align: center; } .content-text { color: white; /* 标题文本颜色 */ font-weight: bold; } </style>