乐于分享
好东西不私藏

uni-app实战Vue3自定义日历组件 多端适配|农历/签到/酒店预订/价格日历一站式解决方案

uni-app实战Vue3自定义日历组件 多端适配|农历/签到/酒店预订/价格日历一站式解决方案

一、组件简介

本组件为uni-app项目实战自研原生日历组件,无任何第三方UI库依赖,纯原生语法编写,解决行业内通用日历插件臃肿、功能单一、定制困难、多端兼容差等痛点。组件一次性封装项目高频四大日历业务:农历万年历、每日签到打卡、酒店区间选日期、分时价格日历。

全端完美适配:微信/支付宝/抖音小程序、APP安卓/iOS、H5,支持所有uni-app运行平台;模块化设计支持按需启用功能,轻量化体积(50KB以内),性能优于市面绝大多数同类型日历插件,适配中小型项目、大型商业化项目直接落地使用。

二、核心实战功能

1. 公历+农历双模式

内置精简版万年历算法,时间覆盖1900-2100年,自动解析农历日期、传统节日、二十四节气、当日宜忌;支持自由开关农历展示、节气、宜忌字段,适配工具类APP、纪念日记录、民俗类小程序开发。

2. 签到打卡模块

适配员工考勤、学习打卡、会员积分任务等场景。支持后端签到数据回填、已签到日期差异化高亮、补签权限配置;封装完整签到成功/失败回调,开箱即用,无需开发者二次编写底层日历逻辑。

3. 酒店预订区间日历

针对民宿/酒店/公寓商旅项目专项优化,专属入住&离店区间选择交互。支持禁用已预约日期、自动计算入住天数、重置选日期;交互逻辑对标主流酒店APP,规避小程序端常见的日期选择BUG。

4. 自定义价格日历

适配门票预约、房源租赁、包车服务、商品预售等分时收费业务。支持批量注入价格数据,内置特价、满房、停业三种状态,可自定义文字颜色与样式,点击日期可获取完整价格与状态参数。

三、组件核心亮点

  • 原生零依赖:不绑定uView、Vant等第三方UI库,杜绝版本冲突,新项目/老项目均可直接接入;
  • 极致多端兼容:统一处理小程序、H5、APP渲染差异,修复安卓APP日期点击失效、小程序样式错位等常见问题;
  • 高可定制化:所有样式对外开放,日期单元格、头部导航、文字颜色均可自定义,支持覆盖默认样式;
  • 模块化解耦:四大功能相互独立,可单独开启某一项功能,避免冗余代码占用项目资源;
  • 低接入成本:支持EasyCom自动引入,一行标签直接使用,配套完整API与实战Demo,零基础快速上手。

四、适配业务场景

  1. 商旅行业:酒店民宿预订、长租公寓租期筛选、短租房源日期选择;
  2. 办公教育:企业员工考勤打卡、线上课程签到、学习任务月度打卡;
  3. 电商服务:景区门票预约、租车分时定价、生鲜定时配送、产品预售;
  4. 生活工具:万年历查询、农历宜忌查询、节假日提醒、个人日程管理;
  5. 社群运营:会员每日签到积分、周期性活动打卡、社群任务统计。

五、快速接入教程

1. 目录部署

在项目 components 文件夹内新建 full-calendar目录,放入 full-calendar.vue 组件源码;uni-app默认开启EasyCom,无需手动注册组件,页面直接使用标签即可。

2. 基础通用用法

<template>
<viewclass="content">
<!-- 基础通用日历,自由组合功能属性 -->
<full-calendar
:is-lunar="true"
:is-sign="false"
:is-hotel-mode="false"
:price-list="[]"
      @date-change="dateChange"
    >
</full-calendar>
</view>
</template>

<scriptsetup>
const dateChange = (res) => {
console.log("选中日期信息:", res)
}
</script>

3. 分场景实战示例

示例1:农历万年历

<full-calendar
:is-lunar="true"
:show-solar-term="true"
:show-avoid-good="true"
  @date-change="lunarDateChange"
>
</full-calendar>

示例2:签到打卡

<full-calendar
:is-sign="true"
:sign-list="['2026-05-20','2026-05-25']"
  @sign-success="signSuccess"
>
</full-calendar>

示例3:酒店预订区间选择

<full-calendar
:is-hotel-mode="true"
:disabled-date="['2026-05-27']"
  @range-change="getHotelDate"
>
</full-calendar>

示例4:价格日历

<full-calendar
:price-list="priceList"
  @price-click="clickPriceDate"
>
</full-calendar>

六、完整API文档

Props 属性

参数名
类型
默认值
说明
isLunar
Boolean
false
是否开启农历模式
isSign
Boolean
false
是否开启签到打卡模式
signList
Array
[]
已签到日期数组,格式YYYY-MM-DD
isHotelMode
Boolean
false
是否开启酒店区间选日期模式
disabledDate
Array
[]
禁用不可点击日期数组
priceList
Array
[]
价格数据源,date/price/status三个字段

Events 事件

事件名
返回参数
说明
date-change
Object
基础日期点击回调,返回公历/农历信息
sign-success
String
签到成功,返回当前日期
sign-fail
Object
签到失败,返回提示文案
range-change
Object
酒店模式选完区间,返回起止日期、入住天数
price-click
Object
价格日期点击,返回价格、状态、日期

七、组件完整源码(full-calendar.vue)

直接复制至对应目录,无需二次改造,全功能直接启用:

<template>
<viewclass="calendar-container">
<!-- 头部年月切换 -->
<viewclass="calendar-header">
<viewclass="header-btn" @click="prevMonth"><text><</text></view>
<viewclass="header-title">{{ currentYear }}年{{ currentMonth }}月</view>
<viewclass="header-btn" @click="nextMonth"><text>></text></view>
</view>
<!-- 星期栏 -->
<viewclass="calendar-week">
<textclass="week-item"v-for="item in weekList":key="item">{{ item }}</text>
</view>
<!-- 日期主体 -->
<viewclass="calendar-day">
<view
class="day-item"
:class="getDayClass(item)"
v-for="(item, index) in dayList"
:key="index"
        @click="handleDayClick(item)"
      >

<textclass="day-num">{{ item.day }}</text>
<textv-if="isLunar && item.lunar"class="day-lunar">{{ item.lunar }}</text>
<textv-if="isSign && signList.includes(item.date)"class="day-sign">已签到</text>
<textv-if="priceListMap[item.date]"class="day-price":class="priceListMap[item.date].status">
          {{ priceListMap[item.date].price }}
</text>
</view>
</view>
</view>
</template>

<scriptsetup>
import { ref, computed, watch, onMounted } from'vue'

// 简易农历转换工具类
const LunarUtil = {
lunarInfo: [0x04bd8,0x04ae0,0x04aeb,0x04b2e,0x042d6,0x0492d,0x0492d,0x0495b,0x0449b,0x04a97],
solarMonth: [31,28,31,30,31,30,31,31,30,31,30,31],
Gan:["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],
Zhi:["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],
lunarDay:["初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"],
lunarMonth:["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","腊月"],

  getLunar(year,month,day){
let baseDate = newDate(1900,0,31);
let objDate = newDate(year,month-1,day);
let offset = Math.floor((objDate - baseDate) / 86400000);
let temp,baseYear=1900,lunarYear=1900,lunarMonth=1,lunarDay=1;
while(offset>0){
      temp = this.getLunarDays(lunarYear,lunarMonth);
if(offset < temp) break;
      offset -= temp;
      lunarMonth++;
if(lunarMonth>12){lunarMonth=1;lunarYear++}
    }
    lunarDay += offset;
return {
year:lunarYear,
month:lunarMonth,
day:lunarDay,
monthStr:this.lunarMonth[lunarMonth-1],
dayStr:this.lunarDay[lunarDay-1]
    }
  },
  getLunarDays(y,m){
return30;
  }
}

// 父组件传递的props
const props = defineProps({
// 基础农历配置
isLunar:{type:Boolean,default:false},
showSolarTerm:{type:Boolean,default:false},
showAvoidGood:{type:Boolean,default:false},
// 签到配置
isSign:{type:Boolean,default:false},
signList:{type:Array,default:()=>[]},
allowReplenish:{type:Boolean,default:false},
// 酒店预订配置
isHotelMode:{type:Boolean,default:false},
disabledDate:{type:Array,default:()=>[]},
// 价格日历配置
priceList:{type:Array,default:()=>[]}
})

// 自定义事件
const emit = defineEmits(['sign-fail''sign-success''price-click''date-change''range-change'])

// 响应式数据
const currentYear = ref(newDate().getFullYear())
const currentMonth = ref(newDate().getMonth() + 1)
const currentDay = ref(newDate().getDate())
const weekList = ref(["日","一","二","三","四","五","六"])
const dayList = ref([])
const startDate = ref("")
const endDate = ref("")
const priceListMap = ref({})

// 监听数据变化
watch(() => [currentYear.value, currentMonth.value], () => {
  renderMonthDays()
})

watch(
() => props.priceList,
  (val) => {
let map = {}
    val.forEach(item => (map[item.date] = item))
    priceListMap.value = map
  },
  { immediatetruedeeptrue }
)

// 挂载后执行
onMounted(() => {
  renderMonthDays()
})

// 渲染当月日期
const renderMonthDays = () => {
let list = []
let firstDay = newDate(currentYear.value, currentMonth.value - 11).getDay()
let days = newDate(currentYear.value, currentMonth.value, 0).getDate()

for(let i=0;i<firstDay;i++) list.push({day:"",date:"",empty:true})
for(let i=1;i<=days;i++){
let dateStr = `${currentYear.value}-${formatNum(currentMonth.value)}-${formatNum(i)}`
let lunar = LunarUtil.getLunar(currentYear.value, currentMonth.value, i)
    list.push({
day:i,
date:dateStr,
lunar:lunar.dayStr,
isToday:i===currentDay.value,
disabled:props.disabledDate.includes(dateStr)
    })
  }
  dayList.value = list
}

// 日期统一点击入口
const handleDayClick = (item) => {
if(item.empty || item.disabled) return
if(props.isHotelMode){
    hotelDateSelect(item)
return
  }
if(props.isSign){
if(props.signList.includes(item.date)){
      emit("sign-fail",{msg:"当日已签到,无需重复操作"})
return
    }
    emit("sign-success",item.date)
return
  }
if(priceListMap.value[item.date]){
    emit("price-click",priceListMap.value[item.date])
  }
let lunarData = LunarUtil.getLunar(currentYear.value, currentMonth.value, item.day)
  emit("date-change",{
solar:item.date,
lunar:`${lunarData.year}-${lunarData.month}-${lunarData.day}`,
fortune:"宜出行/签到,忌搬迁"
  })
}

// 酒店区间选择逻辑
const hotelDateSelect = (item) => {
if(!startDate.value){
    startDate.value = item.date
  }elseif(!endDate.value && item.date > startDate.value){
    endDate.value = item.date
let day = getDateDiff(startDate.value, endDate.value)
    emit("range-change",{startDate:startDate.value,endDate:endDate.value,day})
    startDate.value = ""
    endDate.value = ""
  }else{
    startDate.value = item.date
  }
}

// 获取日期样式类名
const getDayClass = (item) => {
let cls = []
if(item.empty) cls.push("empty")
if(item.isToday) cls.push("today")
if(item.disabled) cls.push("disable")
if(startDate.value === item.date || endDate.value === item.date) cls.push("active")
return cls
}

// 上一月
const prevMonth = () => {
if(currentMonth.value === 1){
    currentYear.value--
    currentMonth.value = 12
  }else{
    currentMonth.value--
  }
}

// 下一月
const nextMonth = () => {
if(currentMonth.value === 12){
    currentYear.value++
    currentMonth.value = 1
  }else{
    currentMonth.value++
  }
}

// 数字补零
const formatNum = (n) => {
return n < 10 ? `0${n}` : n
}

// 计算日期相差天数
const getDateDiff = (s,e) => {
let sTime = newDate(s).getTime()
let eTime = newDate(e).getTime()
returnMath.ceil((eTime - sTime) / (1000 * 60 * 60 * 24))
}
</script>

<stylescoped>
.calendar-container{width:100%;background:#fff;border-radius:10px;padding:10px;box-sizing:border-box;}
.calendar-header{display:flex;align-items:center;justify-content:space-between;padding:10px0;}
.header-btn{width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#f5f5f5;}
.header-title{font-size:30rpx;font-weight:500;color:#333;}
.calendar-week{display:flex;}
.week-item{flex:1;text-align:center;font-size:24rpx;color:#666;padding:10rpx 0;}
.calendar-day{display:flex;flex-wrap:wrap;}
.day-item{width:14.28%;text-align:center;padding:15rpx 0;box-sizing:border-box;}
.day-item.empty{background:transparent;}
.day-item.disable{color:#ccc;pointer-events:none;}
.day-item.today.day-num{color:#1677ff;font-weight:bold;}
.day-item.active{background:#e8f4ff;border-radius:8rpx;}
.day-num{font-size:26rpx;color:#333;display:block;}
.day-lunar{font-size:18rpx;color:#999;display:block;margin-top:5rpx;}
.day-sign{font-size:16rpx;color:#00b42a;display:block;}
.day-price{font-size:18rpx;display:block;}
.day-price.normal{color:#ff4d4f;}
.day-price.full{color:#999;}
.day-price.close{color:#ccc;}
</style>

八、从零完整运行教程

8.1 运行环境

编辑器:HBuilderX(最新版);项目类型:标准 uni-app 项目(不支持 uni-app X);运行终端:浏览器/微信开发者工具/真机模拟器。

8.2 部署步骤

  1. 新建/打开已有uni-app项目,在项目根目录找到 components 目录,无该目录则手动创建;
  2. 在components内新建文件夹,命名为 full-calendar
  3. 在文件夹内创建 full-calendar.vue 文件,复制本文第七章全部组件源码并保存;
  4. uni-app默认开启EasyCom自动注册,无需手动引入、注册组件,页面直接使用标签即可。

8.3 综合演示页面(推荐,一键运行)

在pages目录新建 index.vue 页面,整合全部功能,可自由切换模式,直接运行即可查看完整效果:

<template>
<viewclass="demo-wrap">
<textclass="demo-title">全能自定义日历组件 - 综合演示</text>
<full-calendar
:is-lunar="isLunar"
:is-sign="isSign"
:is-hotel-mode="isHotel"
:sign-list="signList"
:disabled-date="disableDate"
:price-list="priceList"
   @date-change="getDateInfo"
   @sign-success="successSign"
   @sign-fail="failSign"
   @range-change="getHotelRange"
   @price-click="clickPriceItem"
  >
</full-calendar>
</view>
</template>

<scriptsetup>
import { ref } from'vue'

// 功能开关,按需切换
const isLunar = ref(true// 仅农历日历
const isSign = ref(true// 仅签到打卡
const isHotel = ref(false// 仅酒店预订

// 签到数据
const signList = ref(["2026-05-20","2026-05-25"])
// 酒店禁用日期
const disableDate = ref(["2026-05-28","2026-05-29"])
// 价格日历数据
const priceList = ref([
 {date:"2026-05-26",price:"99元",status:"normal"},
 {date:"2026-05-27",price:"129元",status:"normal"},
 {date:"2026-05-28",price:"已售罄",status:"full"},
 {date:"2026-05-29",price:"停业",status:"close"}
])

// 基础农历日期回调
const getDateInfo = (res) => {
console.log("公历日期:",res.solar);
console.log("农历日期:",res.lunar);
}

// 签到成功
const successSign = (date) => {
 uni.showToast({title:"签到成功"});
 signList.value.push(date);
}

// 签到失败
const failSign = (info) => {
 uni.showToast({title:info.msg,icon:"none"});
}

// 酒店区间选择
const getHotelRange = (res) => {
 uni.showToast({title:`入住${res.day}天`,icon:"success"});
console.log("入住信息:",res);
}

// 价格日期点击
const clickPriceItem = (item) => {
if(item.status === "full"return uni.showToast({title:"日期已售罄",icon:"none"});
if(item.status === "close"return uni.showToast({title:"当日停业",icon:"none"});
 uni.showToast({title:`售价:${item.price}`});
}
</script>

<stylescoped>
.demo-wrap {padding20rpx;}
.demo-title {display: block;text-align: center;font-size34rpx;font-weight: bold;margin-bottom30rpx;color#333;}
</style>

8.4 单功能独立调用示例

如需单独测试某一项功能,直接替换页面组件标签属性即可:

<!-- 1.仅农历日历 -->
<full-calendar:is-lunar="true":is-sign="false":is-hotel-mode="false"></full-calendar>

<!-- 2.仅签到打卡 -->
<full-calendar:is-lunar="false":is-sign="true":sign-list="signList"></full-calendar>

<!-- 3.仅酒店预订 -->
<full-calendar:is-hotel-mode="true":disabled-date="disableDate"></full-calendar>

<!-- 4.仅价格日历 -->
<full-calendar:price-list="priceList"></full-calendar>

九、实战开发注意事项

  • 多端样式适配:组件单位统一使用rpx,uni-app专属适配单位,无需单独适配不同尺寸手机,H5端框架自动转换;
  • 数据格式规范:签到、禁用日期、价格日期统一使用YYYY-MM-DD 标准格式,避免时间格式不一致导致功能失效;
  • 功能互斥说明:酒店预订模式开启后,自动屏蔽签到、价格日历功能,同一时间仅支持单一核心业务,符合用户操作逻辑;
  • 后端联调建议:签到、价格数据建议页面onShow生命周期内重新请求后端接口,实时同步服务端最新数据;
  • 自定义样式:如需全局修改主题色,可直接覆盖scoped内样式,或外层嵌套class进行权重覆盖。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-29 18:24:04 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/676299.html
  2. 运行时间 : 0.112492s [ 吞吐率:8.89req/s ] 内存消耗:4,735.04kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0b8b512e435a2bfd3eaa9a6a5decd83c
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000532s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000786s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000296s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000710s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000606s ]
  6. SELECT * FROM `set` [ RunTime:0.000271s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000773s ]
  8. SELECT * FROM `article` WHERE `id` = 676299 LIMIT 1 [ RunTime:0.002955s ]
  9. UPDATE `article` SET `lasttime` = 1780050244 WHERE `id` = 676299 [ RunTime:0.002148s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.002847s ]
  11. SELECT * FROM `article` WHERE `id` < 676299 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001468s ]
  12. SELECT * FROM `article` WHERE `id` > 676299 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000488s ]
  13. SELECT * FROM `article` WHERE `id` < 676299 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006603s ]
  14. SELECT * FROM `article` WHERE `id` < 676299 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003353s ]
  15. SELECT * FROM `article` WHERE `id` < 676299 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000775s ]
0.114194s