81 changed files with 15292 additions and 3803 deletions
@ -1,15 +1,11 @@ |
|||||
import http from '../common/axios.js' |
import http from '../common/axios.js' |
||||
|
|
||||
//获取学员信息
|
export default { |
||||
function userAgreement(data) { |
//获取用户协议
|
||||
|
userAgreement(data) { |
||||
let url = '/agreement/' + data |
let url = '/agreement/' + data |
||||
return http.get(url, data).then(res => { |
return http.get(url, data).then(res => { |
||||
return res; |
return res; |
||||
}) |
}) |
||||
} |
} |
||||
|
|
||||
|
|
||||
|
|
||||
export default { |
|
||||
userAgreement, |
|
||||
} |
} |
||||
@ -0,0 +1,49 @@ |
|||||
|
import http from '../common/axios.js' |
||||
|
|
||||
|
//全部api接口
|
||||
|
export default { |
||||
|
// getDemo(data = {}) {
|
||||
|
// let url = '/member/member_edit'
|
||||
|
// return http.get(url, data).then(res => {
|
||||
|
// return res;
|
||||
|
// })
|
||||
|
// },
|
||||
|
// postDemo(data = {}) {
|
||||
|
// let url = '/member/member_edit'
|
||||
|
// return http.post(url, data).then(res => {
|
||||
|
// return res;
|
||||
|
// })
|
||||
|
// },
|
||||
|
|
||||
|
//公共接口相关
|
||||
|
//教师/销售端登陆
|
||||
|
personnelLogin(data = {}) { |
||||
|
let url = '/personnelLogin' |
||||
|
return http.post(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
//教师/销售端详情
|
||||
|
getPersonnelInfo(data = {}) { |
||||
|
let url = '/personnel/info' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
//教练接口相关
|
||||
|
|
||||
|
|
||||
|
|
||||
|
//销售接口相关
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
//学生接口相关
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,171 @@ |
|||||
|
import http from '../common/axios.js' |
||||
|
|
||||
|
//销售相关接口
|
||||
|
export default { |
||||
|
//获取销售人员详情
|
||||
|
member(data = {}) { |
||||
|
let url = '/member/member' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//修改销售人员详情
|
||||
|
memberEdit(data = {}) { |
||||
|
let url = '/member/member_edit' |
||||
|
return http.post(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//线索列表
|
||||
|
salesList(data = {}) { |
||||
|
let url = '/member/sales_list' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//转移跟进任务
|
||||
|
createTask(data = {}) { |
||||
|
let url = '/member/create_task' |
||||
|
return http.post(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//写新跟进
|
||||
|
createFollow(data = {}) { |
||||
|
let url = '/member/create_follow' |
||||
|
return http.post(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//小区列表
|
||||
|
getCampusesList(data = {}) { |
||||
|
let url = '/member/get_campuses_list' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//添加线索
|
||||
|
setSales(data) { |
||||
|
let url = '/member/set_sales' |
||||
|
return http.post(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//我的客户
|
||||
|
myClient(data) { |
||||
|
let url = '/member/my_client' |
||||
|
return http.post(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//客户详情
|
||||
|
clientInfo(data={}) { |
||||
|
let url = '/member/client_info' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//跟进记录
|
||||
|
followList(data={}) { |
||||
|
let url = '/member/follow_list' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//拨打电话记录列表
|
||||
|
listCallUp(data={}) { |
||||
|
let url = '/member/list_call_up' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//公海-领取客户
|
||||
|
getSales(data = {}) { |
||||
|
let url = '/member/get_sales' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//客户列表-- 查重
|
||||
|
clientList(data = {}) { |
||||
|
let url = '/member/client_list' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//数据页面
|
||||
|
performance(data = {}) { |
||||
|
let url = '/member/performance' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//已签客户列表
|
||||
|
signClient(data = {}) { |
||||
|
let url = '/member/sign_client' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//添加拨打电话记录
|
||||
|
setCallUp(data = {}) { |
||||
|
let url = '/member/set_call_up' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//销售端首页
|
||||
|
xsIndex(data = {}) { |
||||
|
let url = '/member/xs_index' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//销售端首页
|
||||
|
selectCourseList(data = {}) { |
||||
|
let url = '/member/select_course_list' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//合同列表
|
||||
|
contractsList(data = {}) { |
||||
|
let url = '/member/contracts_list' |
||||
|
return http.get(url, data).then(res => { |
||||
|
return res; |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,459 @@ |
|||||
|
<!--课程-详情列表--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
<view class="main_section"> |
||||
|
<view class="section_1"> |
||||
|
<view class="title">班级:{{courseInfo.classes_name}}</view> |
||||
|
<view class="title">时间:{{courseInfo.date_time}} {{courseInfo.time_slot.replace(',', ' - ')}}</view> |
||||
|
<view class="title">地点:{{courseInfo.address}}</view> |
||||
|
<view class="title">课程:{{courseInfo.courses_name}}</view> |
||||
|
<view class="title">教练:{{courseInfo.staff_name}}</view> |
||||
|
<view class="title">人数:{{courseInfo.students_count}}</view> |
||||
|
|
||||
|
<view |
||||
|
v-if="courseInfo.status == 1" |
||||
|
class="tag" |
||||
|
style="background-color: #FAD24E;">上课中 |
||||
|
</view> |
||||
|
<view |
||||
|
v-if="courseInfo.status == 2" |
||||
|
class="tag" |
||||
|
style="background-color: #e2e2e2;">已结束 |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="section_2"> |
||||
|
<view :class="['table', tableType==1 ? 'select':'']" @click="switchTag(1)">签到情况</view> |
||||
|
<view :class="['table', tableType==2 ? 'select':'']" @click="switchTag(2)">作业情况</view> |
||||
|
</view> |
||||
|
|
||||
|
<!--签到情况--> |
||||
|
<view class="section_3" v-if="tableType == 1"> |
||||
|
|
||||
|
<view class="tip_title" v-if="courseInfo.sign_list.length == 0">暂无数据</view> |
||||
|
|
||||
|
<view class="item" v-for="(v,k) in courseInfo.sign_list" :key="k"> |
||||
|
<view class="left"> |
||||
|
<image class="pic" model="aspectFit" :src="$util.img(v.header)"></image> |
||||
|
<view class="box"> |
||||
|
<view class="title">{{v.name}}</view> |
||||
|
<view class="title">课程截止时间:{{v.create_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="right"> |
||||
|
<view class="tag" v-if="v.status == 2">请假</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
|
||||
|
<!--作业情况--> |
||||
|
<view class="section_4" v-if="tableType == 2"> |
||||
|
<view class="item_box"> |
||||
|
<!-- 待批改--> |
||||
|
<fui-collapse-item @change="changeCollapse(1)" open="true" isBorder="false" contentBg="#434544"> |
||||
|
<view class="title_box"> |
||||
|
<text>待批改({{courseInfo.assignments.dpg_list.length}})</text> |
||||
|
</view> |
||||
|
<template v-slot:content> |
||||
|
<view class="ul"> |
||||
|
<view |
||||
|
v-for="(v,k) in courseInfo.assignments.dpg_list" |
||||
|
:key="k" |
||||
|
class="li" |
||||
|
@click="openViewWorkDetails(v)" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<image class="pic" model="aspectFit" :src="$util.img(v.header)"></image> |
||||
|
<view class="box"> |
||||
|
<view class="title">{{v.name}}</view> |
||||
|
<view class="title">课程截止时间:{{v.tj_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="btn">查看并批改</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
</fui-collapse-item> |
||||
|
</view> |
||||
|
|
||||
|
<!-- 未提交--> |
||||
|
<view class="item_box"> |
||||
|
<fui-collapse-item @change="changeCollapse(2)" isBorder="false" contentBg="#434544"> |
||||
|
<view class="title_box"> |
||||
|
<text>未提交({{courseInfo.assignments.wtj_list.length}})</text> |
||||
|
</view> |
||||
|
<template v-slot:content> |
||||
|
<view class="ul"> |
||||
|
<view |
||||
|
class="li" |
||||
|
v-for="(v,k) in courseInfo.assignments.wtj_list" |
||||
|
:key="k" |
||||
|
@click="openViewWorkDetails(v)" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<image class="pic" model="aspectFit" :src="$util.img(v.header)"></image> |
||||
|
<view class="box"> |
||||
|
<view class="title">{{v.name}}</view> |
||||
|
<!-- <view class="title">课程截止时间:2025-05-25</view>--> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<!-- <view class="btn">查看并批改</view>--> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
</fui-collapse-item> |
||||
|
</view> |
||||
|
|
||||
|
<!-- 已提交--> |
||||
|
<view class="item_box"> |
||||
|
<fui-collapse-item @change="changeCollapse(3)" isBorder="false" contentBg="#434544"> |
||||
|
<view class="title_box"> |
||||
|
<text>已提交({{courseInfo.assignments.ypg_list.length}})</text> |
||||
|
</view> |
||||
|
<template v-slot:content> |
||||
|
<view class="ul"> |
||||
|
<view |
||||
|
class="li" |
||||
|
v-for="(v,k) in courseInfo.assignments.ypg_list" |
||||
|
:key="k" |
||||
|
@click="openViewWorkDetails(v)"> |
||||
|
<view class="left"> |
||||
|
<image class="pic" model="aspectFit" :src="$util.img(v.header)"></image> |
||||
|
<view class="box"> |
||||
|
<view class="title">{{v.name}}</view> |
||||
|
<!-- <view class="title">课程截止时间:2025-05-25</view>--> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<!-- <view class="btn">查看并批改</view>--> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
</fui-collapse-item> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import memberApi from '@/api/member.js'; |
||||
|
import AQTabber from "@/components/AQ/AQTabber.vue" |
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
AQTabber, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
course_id: '',//课程id |
||||
|
courseInfo: { |
||||
|
sign_list: [],//签到列表 |
||||
|
assignments: { |
||||
|
dpg_list: [], // 待批改作业列表 |
||||
|
wtj_list: [], // 未提交作业列表 |
||||
|
ypg_list: [] // 已批改作业列表 |
||||
|
}, |
||||
|
},//课时详情 |
||||
|
|
||||
|
tableType: 1,//1=签到情况,2=作业情况 |
||||
|
} |
||||
|
}, |
||||
|
onLoad(options) { |
||||
|
this.course_id = options.id |
||||
|
}, |
||||
|
onShow(){ |
||||
|
this.init() |
||||
|
}, |
||||
|
methods: { |
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
this.getCourseInfo() |
||||
|
}, |
||||
|
|
||||
|
//教练端-课程详情 |
||||
|
async getCourseInfo(){ |
||||
|
let res = await memberApi.courseInfo({id:this.course_id}) |
||||
|
if(res.code != 1){ |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
this.courseInfo = res.data |
||||
|
console.log('课程详情',this.courseInfo) |
||||
|
}, |
||||
|
|
||||
|
//切换标签 |
||||
|
switchTag(type) { |
||||
|
this.tableType = type |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
//打开课时详情页 |
||||
|
openViewCourseInfo(item){ |
||||
|
uni.navigateTo({ |
||||
|
url: '/pages/coach/course/info' |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
// 作业情况 |
||||
|
changeCollapse(type){}, |
||||
|
|
||||
|
//跳转页面-作业详情 |
||||
|
openViewWorkDetails(item){ |
||||
|
let id = item.id |
||||
|
uni.navigateTo({ |
||||
|
url: `/pages/coach/student/work_details?id=${id}` |
||||
|
}) |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
|
||||
|
.main_box{ |
||||
|
background: #292929 ; |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section{ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #292929; |
||||
|
.title{ |
||||
|
padding: 40rpx 0rpx; |
||||
|
|
||||
|
/* 小程序端样式 */ |
||||
|
// #ifdef MP-WEIXIN |
||||
|
padding: 80rpx 0rpx; |
||||
|
// #endif |
||||
|
|
||||
|
font-size: 30rpx; |
||||
|
color: #fff; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section{ |
||||
|
min-height: 100vh; |
||||
|
background: #292929 100%; |
||||
|
padding: 30rpx 24rpx; |
||||
|
padding-top: 40rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 24rpx; |
||||
|
color: #FFFFFF; |
||||
|
|
||||
|
.section_1{ |
||||
|
position: relative; |
||||
|
padding: 18rpx 34rpx 50rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 15rpx; |
||||
|
color: #fff; |
||||
|
font-size: 24rpx; |
||||
|
background-color: #434544; |
||||
|
border-radius: 22rpx; |
||||
|
.tag{ |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
right: 0; |
||||
|
|
||||
|
width: 110rpx; |
||||
|
height: 60rpx; |
||||
|
line-height: 55rpx; |
||||
|
border-radius: 0rpx 24rpx 0rpx 24rpx; |
||||
|
color: #fff; |
||||
|
font-size: 24rpx; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.section_2{ |
||||
|
margin-top: 44rpx; |
||||
|
color: #fff; |
||||
|
font-size: 30rpx; |
||||
|
|
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
.table{ |
||||
|
width: 50%; |
||||
|
height: 64rpx; |
||||
|
background-color: #1684FCFF; |
||||
|
|
||||
|
line-height: 62rpx; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.table:nth-child(1){ |
||||
|
border-top-left-radius: 8rpx; |
||||
|
border-bottom-left-radius: 8rpx; |
||||
|
} |
||||
|
.table:nth-child(2){ |
||||
|
border-top-right-radius: 8rpx; |
||||
|
border-bottom-right-radius: 8rpx; |
||||
|
} |
||||
|
|
||||
|
.select{ |
||||
|
background-color: #fff; |
||||
|
color: #1684FCFF; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.section_3{ |
||||
|
margin-top: 44rpx; |
||||
|
min-height: 20vh; |
||||
|
padding: 30rpx 0; |
||||
|
border-radius: 22rpx; |
||||
|
background-color: #434544; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
//提示 |
||||
|
.tip_title{ |
||||
|
text-align: center; |
||||
|
font-size: 30rpx; |
||||
|
color: #FFFFFF; |
||||
|
} |
||||
|
.item{ |
||||
|
border-top: 1px solid #D7D7D7; |
||||
|
padding: 20rpx 33rpx 20rpx 14rpx; |
||||
|
|
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
.left{ |
||||
|
width: 80%; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
gap: 26rpx; |
||||
|
.pic{ |
||||
|
width: 92rpx; |
||||
|
height: 92rpx; |
||||
|
border-radius: 50%; |
||||
|
background-color: #797979FF; |
||||
|
} |
||||
|
.box{ |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 10rpx; |
||||
|
.title{ |
||||
|
color: #fff; |
||||
|
font-size: 24rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.right{ |
||||
|
.tag{ |
||||
|
width: 93rpx; |
||||
|
height: 93rpx; |
||||
|
border-radius: 50%; |
||||
|
line-height: 90rpx; |
||||
|
font-size: 26rpx; |
||||
|
background-color: rgba(254,250,131,0.62); |
||||
|
color: rgba(255,255,255,1); |
||||
|
text-align: center; |
||||
|
border: 0rpx solid rgba(254,250,131,0.62); |
||||
|
//旋转45° |
||||
|
transform: rotate(-30deg); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.item:nth-child(1){ |
||||
|
border-top: 0px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.section_4{ |
||||
|
margin-top: 44rpx; |
||||
|
padding: 30rpx 0; |
||||
|
border-radius: 22rpx; |
||||
|
background-color: #434544; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
.item_box{ |
||||
|
margin-bottom: 30rpx; |
||||
|
padding-left: 24rpx; |
||||
|
padding-right: 32rpx; |
||||
|
|
||||
|
|
||||
|
font-size: 28rpx; |
||||
|
color: #fff; |
||||
|
background-color: #434544; |
||||
|
::v-deep .fui-collapse-item__title{ |
||||
|
background-color: #434544 !important; |
||||
|
} |
||||
|
::v-deep .fui-collapse__border-color{ |
||||
|
border-top: none !important; /* 取消上边框 */ |
||||
|
background: #434544 !important; |
||||
|
} |
||||
|
.title_box{ |
||||
|
} |
||||
|
.ul{ |
||||
|
background-color: #434544; |
||||
|
.li{ |
||||
|
background-color: #434544; |
||||
|
border-top: 1px solid #D7D7D7; |
||||
|
padding: 20rpx 33rpx 20rpx 14rpx; |
||||
|
|
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
.left{ |
||||
|
width: 80%; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
gap: 26rpx; |
||||
|
.pic{ |
||||
|
width: 92rpx; |
||||
|
height: 92rpx; |
||||
|
border-radius: 50%; |
||||
|
background-color: #797979FF; |
||||
|
} |
||||
|
.box{ |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 10rpx; |
||||
|
.title{ |
||||
|
color: #fff; |
||||
|
font-size: 24rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.right{ |
||||
|
.btn{ |
||||
|
background-color: #a4adb3; |
||||
|
color: #fff; |
||||
|
|
||||
|
width: 160rpx; |
||||
|
height: 60rpx; |
||||
|
line-height: 60rpx; |
||||
|
border-radius: 8rpx; |
||||
|
background-color: rgba(164,173,179,1); |
||||
|
color: rgba(255,255,255,1); |
||||
|
font-size: 24rpx; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.li:nth-child(1){ |
||||
|
border-top: none !important; /* 取消上边框 */ |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
</style> |
||||
@ -0,0 +1,497 @@ |
|||||
|
<!--我的考勤-详情--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
<fui-segmented-control |
||||
|
:values="optionTable" |
||||
|
type="text" |
||||
|
activeColor="#29d3b4" |
||||
|
color="#fff" |
||||
|
@click="segmented"> |
||||
|
</fui-segmented-control> |
||||
|
|
||||
|
<view class="main_section"> |
||||
|
<!--考勤--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.type == '1'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 100vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="title_box">普通考勤</view> |
||||
|
<view class="subhead_box">请假</view> |
||||
|
<view class="subhead_box">2025-01-01 00:00:00 - 2505-01-01 00:00:00</view> |
||||
|
|
||||
|
<view class="ul"> |
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content">迟到</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content">早退</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通记录</view> |
||||
|
<view class="content">本周考勤情况:周一到周五均按时打卡,未请假,综合表现良好。 |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</scroll-view> |
||||
|
|
||||
|
<!--请假--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.type == '2'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 100vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="title_box">普通考勤</view> |
||||
|
<view class="subhead_box">请假</view> |
||||
|
<view class="subhead_box">2025-01-01 00:00:00 - 2505-01-01 00:00:00</view> |
||||
|
|
||||
|
<view class="ul"> |
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content">迟到</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content">早退</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通记录</view> |
||||
|
<view class="content">本周考勤情况:周一到周五均按时打卡,未请假,综合表现良好。 |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</scroll-view> |
||||
|
|
||||
|
<!--异常--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.type == '3'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 100vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">篮球课</view> |
||||
|
<view class="content">考勤正常</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="title_box">普通考勤</view> |
||||
|
<view class="subhead_box">请假</view> |
||||
|
<view class="subhead_box">2025-01-01 00:00:00 - 2505-01-01 00:00:00</view> |
||||
|
|
||||
|
<view class="ul"> |
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content">迟到</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content">早退</view> |
||||
|
<view class="content">2025-01-01 00:00:00 - 2025-01-01 00:00:00</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li"> |
||||
|
<view class="left"> |
||||
|
<image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通记录</view> |
||||
|
<view class="content">本周考勤情况:周一到周五均按时打卡,未请假,综合表现良好。 |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</scroll-view> |
||||
|
|
||||
|
<view class="section_btn"> |
||||
|
<view class="btn">请假</view> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import marketApi from '@/api/market.js'; |
||||
|
import AQTabber from "@/components/AQ/AQTabber.vue" |
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
AQTabber, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
//tab切换 |
||||
|
optionTable: [ |
||||
|
{ |
||||
|
id: 1, |
||||
|
name: '考勤' |
||||
|
}, |
||||
|
{ |
||||
|
id: 2, |
||||
|
name: '请假' |
||||
|
}, |
||||
|
{ |
||||
|
id: 3, |
||||
|
name: '异常' |
||||
|
} |
||||
|
], |
||||
|
|
||||
|
loading:false,//加载状态 |
||||
|
lowerThreshold: 100,//距离底部多远触发 |
||||
|
isReachedBottom: false,//防止重复加载|true=不可加载|false=可加载 |
||||
|
|
||||
|
//筛选条件 |
||||
|
filteredData:{ |
||||
|
page:1,//当前页码 |
||||
|
limit:10,//每页返回数据条数 |
||||
|
total:10,//数据总条数 |
||||
|
type: '1',//1=考勤,2=请假,3=异常 |
||||
|
}, |
||||
|
tableList:[],//表格数据 |
||||
|
} |
||||
|
}, |
||||
|
onLoad(options) {}, |
||||
|
onShow(){ |
||||
|
this.init()//初始化 |
||||
|
}, |
||||
|
methods: { |
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
await this.getList(); |
||||
|
}, |
||||
|
|
||||
|
//切换tag列表 |
||||
|
async segmented(e) { |
||||
|
//重置为第一页 |
||||
|
await this.resetFilteredData() |
||||
|
this.filteredData.type = e.id//1=考勤,2=请假,3=异常 |
||||
|
await this.getList() |
||||
|
}, |
||||
|
|
||||
|
//加载更多(下一页) |
||||
|
loadMoreData() { |
||||
|
//判断是否加载 |
||||
|
if (!this.isReachedBottom) { |
||||
|
this.isReachedBottom = true;//设置为不可请求状态 |
||||
|
this.getList(); |
||||
|
} |
||||
|
}, |
||||
|
//重置为第一页 |
||||
|
async resetFilteredData() { |
||||
|
this.isReachedBottom = false; // 重置状态,以便下次触发加载更多 |
||||
|
|
||||
|
this.filteredData.page = 1//当前页码 |
||||
|
this.filteredData.limit = 10//每页返回数据条数 |
||||
|
this.filteredData.total = 10//数据总条数 |
||||
|
}, |
||||
|
//获取列表 |
||||
|
async getList(){ |
||||
|
this.loading = true |
||||
|
|
||||
|
let data = {...this.filteredData} |
||||
|
|
||||
|
//判断是否还有数据 |
||||
|
if(this.filteredData.page * this.filteredData.limit > this.filteredData.total){ |
||||
|
this.loading = false |
||||
|
uni.showToast({ |
||||
|
title: '暂无更多', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
if(data.page == 1){ |
||||
|
this.tableList = [] |
||||
|
} |
||||
|
|
||||
|
let res = await marketApi.myClient(data) |
||||
|
this.loading = false |
||||
|
this.isReachedBottom = false; |
||||
|
if (res.code != 1){ |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
this.tableList = this.tableList.concat(res.data.list.data); // 使用 concat 方法 将新数据追加到数组中 |
||||
|
|
||||
|
console.log('列表',this.tableList) |
||||
|
this.filteredData.total = res.data.list.total |
||||
|
this.filteredData.page++ |
||||
|
|
||||
|
this.countArr = { |
||||
|
type_0:res.data.count[0], |
||||
|
type_1:res.data.count[1], |
||||
|
type_2:res.data.count[2], |
||||
|
type_3:res.data.count[3], |
||||
|
max_count:res.data.gh.max_count, |
||||
|
lq_count:res.data.gh.lq_count, |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
|
||||
|
.main_box{ |
||||
|
background: #292929 ; |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section{ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #29d3b4; |
||||
|
.title{ |
||||
|
padding: 40rpx 0rpx; |
||||
|
|
||||
|
/* 小程序端样式 */ |
||||
|
// #ifdef MP-WEIXIN |
||||
|
padding: 80rpx 0rpx; |
||||
|
// #endif |
||||
|
|
||||
|
font-size: 30rpx; |
||||
|
color: #315d55; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section{ |
||||
|
min-height: 100vh; |
||||
|
background: #292929 100%; |
||||
|
padding: 0 24rpx; |
||||
|
padding-top: 32rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 28rpx; |
||||
|
.section_1{ |
||||
|
color: #fff; |
||||
|
font-size: 28rpx; |
||||
|
.ul{ |
||||
|
margin-top: 23rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 24rpx; |
||||
|
.li{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
gap: 43rpx; |
||||
|
.left{ |
||||
|
image{ |
||||
|
width: 174rpx; |
||||
|
height: 174rpx; |
||||
|
border-radius: 24rpx; |
||||
|
background-color: #333333; |
||||
|
} |
||||
|
} |
||||
|
.right{ |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 18rpx; |
||||
|
.content{ |
||||
|
font-size: 24rpx; |
||||
|
} |
||||
|
.content:nth-child(1){ |
||||
|
font-size: 28rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.title_box{ |
||||
|
margin-top: 46rpx; |
||||
|
font-size: 28rpx; |
||||
|
} |
||||
|
.subhead_box{ |
||||
|
margin-top: 22rpx; |
||||
|
font-size: 24rpx; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.section_btn{ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
.btn{ |
||||
|
width: 722rpx; |
||||
|
height: 64rpx; |
||||
|
line-height: 64rpx; |
||||
|
border-radius: 8rpx; |
||||
|
background-color: rgba(32,202,175,1); |
||||
|
color: rgba(255,255,255,1); |
||||
|
font-size: 28rpx; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
</style> |
||||
@ -0,0 +1,129 @@ |
|||||
|
<!--文章-详情--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
|
||||
|
<view class="main_section"> |
||||
|
<view class="section_1"> |
||||
|
<view class="titile">{{infoData.title}}</view> |
||||
|
<view class="content" v-html="infoData.content"></view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import commonApi from '@/api/common.js'; |
||||
|
|
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
//筛选条件 |
||||
|
filteredData:{ |
||||
|
id: '1', |
||||
|
}, |
||||
|
|
||||
|
infoData: { |
||||
|
title: '文章标题xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx111111',//文章标题 |
||||
|
content: ` |
||||
|
<p>aspectFit:保持纵横比缩放图片,使图片的长边能完全显示出来</p> |
||||
|
<p><img src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/cat-2.png" alt="uniapp" loading="lazy"></p> |
||||
|
`,//文章内容 |
||||
|
},//文章详情 |
||||
|
} |
||||
|
}, |
||||
|
onLoad(options) { |
||||
|
this.filteredData.id = options.id//发信人id |
||||
|
}, |
||||
|
onShow(){ |
||||
|
this.init() |
||||
|
}, |
||||
|
//下拉刷新 |
||||
|
async onPullDownRefresh() { |
||||
|
await this.getInfo() |
||||
|
}, |
||||
|
methods: { |
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
await this.getInfo(); |
||||
|
}, |
||||
|
//获取文章详情 |
||||
|
//获取课程详情 |
||||
|
async getInfo(){ |
||||
|
let res = await memberApi.courseInfo({ |
||||
|
id: this.filteredData.id, |
||||
|
}) |
||||
|
if(res.code != 1){ |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
this.infoData = res.data |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
.main_box { |
||||
|
background: #fff; |
||||
|
word-wrap: break-word; /* 允许长单词或 URL 换行 */ |
||||
|
word-break: break-all; /* 强制所有字符换行 */ |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #29d3b4; |
||||
|
|
||||
|
.title { |
||||
|
padding: 20rpx 0; |
||||
|
font-size: 30rpx; |
||||
|
color: #315d55; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section { |
||||
|
min-height: 100vh; |
||||
|
background: #fff; |
||||
|
padding: 0 0rpx; |
||||
|
padding-top: 32rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 28rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 20rpx; |
||||
|
|
||||
|
.section { |
||||
|
background-color: #434544; |
||||
|
padding: 40rpx 40rpx; |
||||
|
} |
||||
|
|
||||
|
.section_1{ |
||||
|
padding: 0 24rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 30rpx; |
||||
|
.titile{ |
||||
|
font-size: 40rpx; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
.describe { |
||||
|
color: #999999; |
||||
|
padding-left: 30rpx; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,262 @@ |
|||||
|
<!--合同列表-列表--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
|
||||
|
<view class="main_section"> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 90vh;" |
||||
|
> |
||||
|
<view |
||||
|
class="item" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
> |
||||
|
<view class="top"> |
||||
|
<view class="">企业合同</view> |
||||
|
<view class="btn" @click="downloadFile($util.img(v.file_data))">下载合同 <fui-icon name="arrowright" color="#A4ADB3" size="35"></fui-icon></view> |
||||
|
</view> |
||||
|
<view class="bottom"> |
||||
|
<view class="box"> |
||||
|
<view class="title">合同名称:</view> |
||||
|
<view class="content">{{v.title}}</view> |
||||
|
</view> |
||||
|
<view class="box"> |
||||
|
<view class="title">签署方:</view> |
||||
|
<view class="content">{{v.signatory_a}}</view> |
||||
|
</view> |
||||
|
<view class="box"> |
||||
|
<view class="title">签署方:</view> |
||||
|
<view class="content">{{v.signatory_b}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</scroll-view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import marketApi from '@/api/market.js'; |
||||
|
import commonApi from '@/api/common.js'; |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
loading:false,//加载状态 |
||||
|
lowerThreshold: 100,//距离底部多远触发 |
||||
|
isReachedBottom: false,//防止重复加载|true=不可加载|false=可加载 |
||||
|
|
||||
|
//筛选条件 |
||||
|
filteredData:{ |
||||
|
page:1,//当前页码 |
||||
|
limit:10,//每页返回数据条数 |
||||
|
total:10,//数据总条数 |
||||
|
}, |
||||
|
tableList:[],//聊天数据列表 |
||||
|
} |
||||
|
}, |
||||
|
onLoad(options) {}, |
||||
|
onShow(){ |
||||
|
this.init() |
||||
|
}, |
||||
|
//下拉刷新 |
||||
|
async onPullDownRefresh() { |
||||
|
//重置为第一页 |
||||
|
await this.resetFilteredData() |
||||
|
await this.getList() |
||||
|
}, |
||||
|
methods: { |
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
await this.getList(); |
||||
|
}, |
||||
|
//加载更多(下一页) |
||||
|
loadMoreData() { |
||||
|
//判断是否加载 |
||||
|
if (!this.isReachedBottom) { |
||||
|
this.isReachedBottom = true;//设置为不可请求状态 |
||||
|
this.getList(); |
||||
|
} |
||||
|
}, |
||||
|
//重置为第一页 |
||||
|
async resetFilteredData() { |
||||
|
this.isReachedBottom = false; // 重置状态,以便下次触发加载更多 |
||||
|
|
||||
|
this.filteredData.page = 1//当前页码 |
||||
|
this.filteredData.limit = 10//每页返回数据条数 |
||||
|
this.filteredData.total = 10//数据总条数 |
||||
|
}, |
||||
|
|
||||
|
//获取合同列表 |
||||
|
async getList(){ |
||||
|
this.loading = true |
||||
|
|
||||
|
let data = {...this.filteredData} |
||||
|
|
||||
|
//判断是否还有数据 |
||||
|
if(this.filteredData.page * this.filteredData.limit > this.filteredData.total){ |
||||
|
this.loading = false |
||||
|
uni.showToast({ |
||||
|
title: '暂无更多', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
if(data.page == 1){ |
||||
|
this.tableList = [] |
||||
|
} |
||||
|
|
||||
|
let res = await marketApi.contractsList(data)//获取合同列表 |
||||
|
this.loading = false |
||||
|
this.isReachedBottom = false; |
||||
|
if (res.code != 1){ |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
this.tableList = this.tableList.concat(res.data.data); // 使用 concat 方法 将新数据追加到数组中 |
||||
|
// this.tableList.unshift(...res.data.data); // 将新数据插入到数组头部 |
||||
|
|
||||
|
console.log('列表',this.tableList) |
||||
|
this.filteredData.total = res.data.total |
||||
|
this.filteredData.page++ |
||||
|
}, |
||||
|
|
||||
|
//跳转文章详情 |
||||
|
openViewArticleInfo(item) { |
||||
|
let id = item.id |
||||
|
let redirect = item.redirect//重定向地址 |
||||
|
uni.navigateTo({ |
||||
|
url: `/pages/common/article_info?id=${id}` |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//下载文件 |
||||
|
async downloadFile(fileUrl) { |
||||
|
if (!fileUrl) { |
||||
|
this.$util.showToast({ |
||||
|
title: '暂无电子发票' |
||||
|
}); |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
uni.downloadFile({ |
||||
|
url: fileUrl, |
||||
|
success: function (res) { |
||||
|
console.log('下载成功'); |
||||
|
// uni.openDocument({ |
||||
|
// filePath: res.tempFilePath, |
||||
|
// fileType: 'pdf', |
||||
|
// success: function (res) { |
||||
|
// console.log('打开文档成功'); |
||||
|
// } |
||||
|
// }); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
.main_box { |
||||
|
background: #292929; |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #29d3b4; |
||||
|
|
||||
|
.title { |
||||
|
padding: 20rpx 0; |
||||
|
font-size: 30rpx; |
||||
|
color: #315d55; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section { |
||||
|
min-height: 100vh; |
||||
|
background: #292929 100%; |
||||
|
padding: 0 0rpx; |
||||
|
padding-top: 32rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 28rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 20rpx; |
||||
|
|
||||
|
.section { |
||||
|
background-color: #434544; |
||||
|
padding: 40rpx 40rpx; |
||||
|
} |
||||
|
|
||||
|
.section_1{ |
||||
|
padding: 0 24rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
|
||||
|
.item{ |
||||
|
margin-bottom: 38rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
padding: 32rpx 24rpx; |
||||
|
border-radius: 14rpx; |
||||
|
background-color: #434544; |
||||
|
color: #fff; |
||||
|
.top{ |
||||
|
font-size: 28rpx; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
.btn{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
color: #29D3B4; |
||||
|
} |
||||
|
} |
||||
|
.bottom{ |
||||
|
font-size: 26rpx; |
||||
|
margin-top: 25rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 15rpx; |
||||
|
.box{ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
.title{ |
||||
|
width: 180rpx; |
||||
|
} |
||||
|
.content{ |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
.describe { |
||||
|
color: #999999; |
||||
|
padding-left: 30rpx; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,329 @@ |
|||||
|
<!--聊天记录-列表--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
|
||||
|
<view class="main_section"> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 80vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="item_box" v-for="(v,k) in tableList" :key="k"> |
||||
|
<view class="time_section" v-if="v.create_time">{{v.create_time}}</view> |
||||
|
|
||||
|
<view class="li" v-if="v.direction == `left`"> |
||||
|
<view class="item left_item"> |
||||
|
<view class="text_box">{{v.content}}</view> |
||||
|
</view> |
||||
|
<view class="item"></view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="li" v-if="v.direction == `right`"> |
||||
|
<view class="item"></view> |
||||
|
<view class="item right_item"> |
||||
|
<view class="text_box">{{v.content}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
</view> |
||||
|
<view class="input_section"> |
||||
|
<view class="left_box"> |
||||
|
<input class="input" v-model="formData.content" type="text" placeholder="请输入"> |
||||
|
</view> |
||||
|
<view class="right_box"> |
||||
|
<image @click="submitForm()" class="send_img" src="@/static/images/common/fa_song.png"></image> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import memberApi from '@/api/member.js'; |
||||
|
import commonApi from '@/api/common.js'; |
||||
|
import AQUplodeImgMulti from '@/components/AQ/AQUplodeImgMulti'; |
||||
|
import AQTabber from "@/components/AQ/AQTabber" |
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
AQTabber, |
||||
|
AQUplodeImgMulti, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
loading:false,//加载状态 |
||||
|
lowerThreshold: 100,//距离底部多远触发 |
||||
|
isReachedBottom: false,//防止重复加载|true=不可加载|false=可加载 |
||||
|
|
||||
|
//筛选条件 |
||||
|
filteredData:{ |
||||
|
page:1,//当前页码 |
||||
|
limit:10,//每页返回数据条数 |
||||
|
total:10,//数据总条数 |
||||
|
hair_staff_id: '',//发信人id |
||||
|
}, |
||||
|
tableList:[],//聊天数据列表 |
||||
|
|
||||
|
formData: { |
||||
|
content: '', |
||||
|
}, |
||||
|
} |
||||
|
}, |
||||
|
onLoad(options) { |
||||
|
this.filteredData.hair_staff_id = options.hair_staff_id//发信人id |
||||
|
}, |
||||
|
onShow(){ |
||||
|
this.init() |
||||
|
}, |
||||
|
//下拉刷新 |
||||
|
async onPullDownRefresh() { |
||||
|
//加载更多(下一页) |
||||
|
await this.loadMoreData() |
||||
|
}, |
||||
|
methods: { |
||||
|
|
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
await this.getList(); |
||||
|
}, |
||||
|
|
||||
|
//加载更多(下一页) |
||||
|
loadMoreData() { |
||||
|
//判断是否加载 |
||||
|
if (!this.isReachedBottom) { |
||||
|
this.isReachedBottom = true;//设置为不可请求状态 |
||||
|
this.getList(); |
||||
|
} |
||||
|
}, |
||||
|
//重置为第一页 |
||||
|
async resetFilteredData() { |
||||
|
this.isReachedBottom = false; // 重置状态,以便下次触发加载更多 |
||||
|
|
||||
|
this.filteredData.page = 1//当前页码 |
||||
|
this.filteredData.limit = 10//每页返回数据条数 |
||||
|
this.filteredData.total = 10//数据总条数 |
||||
|
}, |
||||
|
|
||||
|
//获取列表 |
||||
|
async getList(){ |
||||
|
this.loading = true |
||||
|
|
||||
|
let data = {...this.filteredData} |
||||
|
|
||||
|
//判断是否还有数据 |
||||
|
if(this.filteredData.page * this.filteredData.limit > this.filteredData.total){ |
||||
|
this.loading = false |
||||
|
uni.showToast({ |
||||
|
title: '暂无更多', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
if(data.page == 1){ |
||||
|
this.tableList = [] |
||||
|
} |
||||
|
|
||||
|
let res = await commonApi.getContactMessage(data)//获取消息列表 |
||||
|
this.loading = false |
||||
|
this.isReachedBottom = false; |
||||
|
if (res.code != 1){ |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
// this.tableList = this.tableList.concat(res.data.data); // 使用 concat 方法 将新数据追加到数组中 |
||||
|
this.tableList.unshift(...res.data.data); // 将新数据插入到数组头部 |
||||
|
|
||||
|
console.log('列表',this.tableList) |
||||
|
this.filteredData.total = res.data.total |
||||
|
this.filteredData.page++ |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//######AQ上传文件组件相关###### |
||||
|
// 上传文件回调 |
||||
|
AQUploadSuccess(res) { |
||||
|
console.log('接收AQ上传回调xxx1', res) |
||||
|
// 使用 split 方法分割字符串 |
||||
|
let _inputValue = [] |
||||
|
if (res.filePathArr.length) { |
||||
|
_inputValue = res.filePathArr |
||||
|
} |
||||
|
this.formData[res.inputName] = _inputValue |
||||
|
// console.log('接收AQ上传回调xxx1',res) |
||||
|
// console.log('接收AQ上传回调xxx2',this.formData.member_store_certification_arr) |
||||
|
}, |
||||
|
|
||||
|
//发送站内信 |
||||
|
async submitForm() { |
||||
|
let data = { |
||||
|
hair_staff_id: this.filteredData.hair_staff_id, |
||||
|
content: this.formData.content, |
||||
|
} |
||||
|
if (!data.content) { |
||||
|
//反馈内容为必填项 |
||||
|
uni.showToast({ |
||||
|
title: '请输入内容', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
let res = await commonApi.sendMessage(data) |
||||
|
if (res.code != 1) { |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} else { |
||||
|
let content = this.formData.content |
||||
|
this.formData.content = ''//清空输入框 |
||||
|
let msgData = { |
||||
|
"id": '', |
||||
|
"hair_staff_id": this.filteredData.hair_staff_id, |
||||
|
"closed_staff_id": '', |
||||
|
"content": content, |
||||
|
"status": 1, |
||||
|
"type": 2, |
||||
|
"create_time": "", |
||||
|
"redirect": null, |
||||
|
"title": null, |
||||
|
"direction": "right", |
||||
|
"show_time": "" |
||||
|
} |
||||
|
//将发送的消息放在最下方 |
||||
|
this.tableList = this.tableList.concat(msgData); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
.main_box { |
||||
|
background: #292929; |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #29d3b4; |
||||
|
|
||||
|
.title { |
||||
|
padding: 20rpx 0; |
||||
|
font-size: 30rpx; |
||||
|
color: #315d55; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section { |
||||
|
min-height: 100vh; |
||||
|
background: #292929 100%; |
||||
|
padding: 0 0rpx; |
||||
|
padding-top: 32rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 28rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 20rpx; |
||||
|
|
||||
|
.section { |
||||
|
background-color: #434544; |
||||
|
padding: 40rpx 40rpx; |
||||
|
} |
||||
|
|
||||
|
.section_1{ |
||||
|
color: #FFFFFF; |
||||
|
font-size: 28rpx; |
||||
|
padding: 0 24rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 40rpx; |
||||
|
.ul{ |
||||
|
.time_section{ |
||||
|
text-align: center; |
||||
|
font-size: 28rpx; |
||||
|
color: #989898; |
||||
|
} |
||||
|
.li{ |
||||
|
margin: 40rpx 0; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
.item{ |
||||
|
max-width: 70%; |
||||
|
padding: 32rpx; |
||||
|
border-radius: 32rpx; |
||||
|
word-wrap: break-word; /* 允许长单词或 URL 换行 */ |
||||
|
word-break: break-all; /* 强制所有字符换行 */ |
||||
|
.text_box{} |
||||
|
} |
||||
|
.left_item{ |
||||
|
background-color: #f4f6f9; |
||||
|
color: #343434; |
||||
|
} |
||||
|
.right_item{ |
||||
|
background-color: #1684fc; |
||||
|
color: #fff; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//输入框板块 |
||||
|
.input_section{ |
||||
|
width: 100%; |
||||
|
position: fixed; |
||||
|
bottom: 0; |
||||
|
|
||||
|
padding: 50rpx 50rpx; |
||||
|
display: flex; |
||||
|
justify-content:space-between; |
||||
|
align-items: center; |
||||
|
.left_box{ |
||||
|
width: 70%; |
||||
|
.input{ |
||||
|
background-color: #f4f6f9; |
||||
|
height: 88rpx; |
||||
|
padding: 28rpx; |
||||
|
font-size: 28rpx; |
||||
|
border-radius: 32rpx; |
||||
|
|
||||
|
width: 532rpx; |
||||
|
color: #292929; |
||||
|
font-size: 28rpx; |
||||
|
} |
||||
|
} |
||||
|
.right_box{ |
||||
|
border-radius: 50%; |
||||
|
background-color: #a2cefe; |
||||
|
width: 88rpx; |
||||
|
height: 88rpx; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
.send_img{ |
||||
|
width: 36rpx; |
||||
|
height: 36rpx; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.describe { |
||||
|
color: #999999; |
||||
|
padding-left: 30rpx; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,498 @@ |
|||||
|
<!--我的考勤-详情--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
<fui-segmented-control |
||||
|
:values="optionTable" |
||||
|
:current="(Number(filteredData.status))" |
||||
|
type="text" |
||||
|
activeColor="#29d3b4" |
||||
|
color="#fff" |
||||
|
@click="segmented"> |
||||
|
</fui-segmented-control> |
||||
|
|
||||
|
<view class="main_section"> |
||||
|
<!-- 教练端--> |
||||
|
<view v-if="userType == 1"> |
||||
|
|
||||
|
<!--全部--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.status == '0'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 80vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<image :src="$util.img(v.courses.thumbnail)" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">{{v.courses.name}}</view> |
||||
|
<view class="content"> |
||||
|
{{v.status == 1 ? '考勤正常':'请假'}} |
||||
|
|
||||
|
</view> |
||||
|
<view class="content">{{v.add_time}} - {{v.end_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
|
||||
|
<!--考勤--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.status == '1'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 80vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<image :src="$util.img(v.courses.thumbnail)" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">{{v.courses.name}}</view> |
||||
|
<view class="content"> |
||||
|
{{v.status == 1 ? '考勤正常':'请假'}} |
||||
|
|
||||
|
</view> |
||||
|
<view class="content">{{v.add_time}} - {{v.end_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
|
||||
|
<!--请假--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.status == '2'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 80vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<image :src="$util.img(v.courses.thumbnail)" model="aspectFill"></image> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">{{v.courses.name}}</view> |
||||
|
<view class="content"> |
||||
|
{{v.status == 1 ? '考勤正常':'请假'}} |
||||
|
|
||||
|
</view> |
||||
|
<view class="content">{{v.add_time}} - {{v.end_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
|
||||
|
</view> |
||||
|
<!-- 销售端--> |
||||
|
<view v-else> |
||||
|
<!--全部--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.status == '0'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 80vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<!-- <image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image>--> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content"> |
||||
|
{{v.status == 1 ? '考勤正常':'请假'}} |
||||
|
</view> |
||||
|
<view class="content">{{v.add_time}} - {{v.end_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</scroll-view> |
||||
|
|
||||
|
<!--考勤--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.status == '1'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 80vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<!-- <image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image>--> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content"> |
||||
|
{{v.status == 1 ? '考勤正常':'请假'}} |
||||
|
</view> |
||||
|
<view class="content">{{v.add_time}} - {{v.end_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</scroll-view> |
||||
|
|
||||
|
<!--请假--> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
v-if="filteredData.status == '2'" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 80vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<!-- <image src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png" model="aspectFill"></image>--> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="content">普通考勤</view> |
||||
|
<view class="content"> |
||||
|
{{v.status == 1 ? '考勤正常':'请假'}} |
||||
|
</view> |
||||
|
<view class="content">{{v.add_time}} - {{v.end_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
|
||||
|
</view> |
||||
|
|
||||
|
<!--请假按钮--> |
||||
|
<view class="section_btn"> |
||||
|
<view class="btn" @click="openShow()">请假</view> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
|
||||
|
<!-- 请假提示框--> |
||||
|
<fui-dialog :show="show" :content="content" maskClosable @click="onClick" @close="closeShow"></fui-dialog> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import commonApi from '@/api/common.js'; |
||||
|
import marketApi from '@/api/market.js'; |
||||
|
import AQTabber from "@/components/AQ/AQTabber.vue" |
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
AQTabber, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
userType: '', //用户类型|1=教练,2=销售 |
||||
|
//tab切换 |
||||
|
optionTable: [ |
||||
|
{ |
||||
|
id: 0, |
||||
|
name: '全部' |
||||
|
}, |
||||
|
{ |
||||
|
id: 1, |
||||
|
name: '考勤' |
||||
|
}, |
||||
|
{ |
||||
|
id: 2, |
||||
|
name: '请假' |
||||
|
} |
||||
|
], |
||||
|
|
||||
|
|
||||
|
loading:false,//加载状态 |
||||
|
lowerThreshold: 100,//距离底部多远触发 |
||||
|
isReachedBottom: false,//防止重复加载|true=不可加载|false=可加载 |
||||
|
|
||||
|
//筛选条件 |
||||
|
filteredData:{ |
||||
|
page:1,//当前页码 |
||||
|
limit:10,//每页返回数据条数 |
||||
|
total:10,//数据总条数 |
||||
|
status:'0'//0全部 1考勤 2请假 |
||||
|
}, |
||||
|
tableList:[],//表格数据 |
||||
|
|
||||
|
//请假表单 |
||||
|
formData:{ |
||||
|
date:'',//请假日期 |
||||
|
}, |
||||
|
|
||||
|
//请假提示框相关 |
||||
|
show:false,//是否展示 |
||||
|
content:'',//请假提示语 |
||||
|
} |
||||
|
}, |
||||
|
onLoad(options) {}, |
||||
|
onShow(){ |
||||
|
this.init()//初始化 |
||||
|
}, |
||||
|
methods: { |
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
this.userType = uni.getStorageSync('userType') |
||||
|
// this.userType = 2 |
||||
|
this.getCurrentDate()//获取并格式化当前日期 |
||||
|
await this.getList(); |
||||
|
}, |
||||
|
|
||||
|
// 获取并格式化当前日期 |
||||
|
getCurrentDate() { |
||||
|
let now = new Date(); |
||||
|
let year = now.getFullYear(); |
||||
|
let month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要加 1 |
||||
|
let day = String(now.getDate()).padStart(2, '0'); |
||||
|
|
||||
|
|
||||
|
let res = `${year}-${month}-${day}` |
||||
|
|
||||
|
this.content = `${res} 是否确认请假?` |
||||
|
|
||||
|
this.formData.date = res |
||||
|
}, |
||||
|
|
||||
|
//切换tag列表 |
||||
|
async segmented(e) { |
||||
|
console.log(e) |
||||
|
//重置为第一页 |
||||
|
await this.resetFilteredData() |
||||
|
|
||||
|
//e.id|0全部 1考勤 2请假 |
||||
|
let status = e.id |
||||
|
this.filteredData.status = String(status) |
||||
|
await this.getList() |
||||
|
}, |
||||
|
|
||||
|
//加载更多(下一页) |
||||
|
loadMoreData() { |
||||
|
//判断是否加载 |
||||
|
if (!this.isReachedBottom) { |
||||
|
this.isReachedBottom = true;//设置为不可请求状态 |
||||
|
this.getList(); |
||||
|
} |
||||
|
}, |
||||
|
//重置为第一页 |
||||
|
async resetFilteredData() { |
||||
|
this.isReachedBottom = false; // 重置状态,以便下次触发加载更多 |
||||
|
|
||||
|
this.filteredData.page = 1//当前页码 |
||||
|
this.filteredData.limit = 10//每页返回数据条数 |
||||
|
this.filteredData.total = 10//数据总条数 |
||||
|
}, |
||||
|
//获取列表 |
||||
|
async getList(){ |
||||
|
this.loading = true |
||||
|
|
||||
|
let data = {...this.filteredData} |
||||
|
|
||||
|
//判断是否还有数据 |
||||
|
if(this.filteredData.page * this.filteredData.limit > this.filteredData.total){ |
||||
|
this.loading = false |
||||
|
uni.showToast({ |
||||
|
title: '暂无更多', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
if(data.page == 1){ |
||||
|
this.tableList = [] |
||||
|
} |
||||
|
|
||||
|
let res = await commonApi.clockingList(data) |
||||
|
this.loading = false |
||||
|
this.isReachedBottom = false; |
||||
|
if (res.code != 1){ |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
this.tableList = this.tableList.concat(res.data.data); // 使用 concat 方法 将新数据追加到数组中 |
||||
|
|
||||
|
console.log('列表',this.tableList) |
||||
|
this.filteredData.total = res.data.total |
||||
|
this.filteredData.page++ |
||||
|
}, |
||||
|
|
||||
|
//打开请假提示框 |
||||
|
openShow(){ |
||||
|
this.show = true |
||||
|
}, |
||||
|
//关闭请假提示框 |
||||
|
closeShow(){ |
||||
|
this.show = false |
||||
|
}, |
||||
|
//点击确认请假按钮 |
||||
|
onClick(e){ |
||||
|
console.log('xxx',e) |
||||
|
if(e.index == 0){ |
||||
|
//取消按钮 |
||||
|
this.closeShow() |
||||
|
}else{ |
||||
|
//确认按钮 |
||||
|
this.submitRest() |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//发起请假请求 |
||||
|
async submitRest() { |
||||
|
|
||||
|
this.closeShow() |
||||
|
|
||||
|
let param = {...this.formData} |
||||
|
let res = await commonApi.clockingRest(param) |
||||
|
if (res.code != 1) { |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
uni.showToast({ |
||||
|
title: '操作成功', |
||||
|
icon: 'success' |
||||
|
}) |
||||
|
|
||||
|
//延迟1s执行 |
||||
|
setTimeout(() => { |
||||
|
this.segmented({id:0})//初始化 |
||||
|
}, 1500) |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
|
||||
|
.main_box{ |
||||
|
background: #292929 ; |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section{ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #29d3b4; |
||||
|
.title{ |
||||
|
padding: 40rpx 0rpx; |
||||
|
|
||||
|
/* 小程序端样式 */ |
||||
|
// #ifdef MP-WEIXIN |
||||
|
padding: 80rpx 0rpx; |
||||
|
// #endif |
||||
|
|
||||
|
font-size: 30rpx; |
||||
|
color: #315d55; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section{ |
||||
|
min-height: 100vh; |
||||
|
background: #292929 100%; |
||||
|
padding: 0 24rpx; |
||||
|
padding-top: 32rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 28rpx; |
||||
|
.section_1{ |
||||
|
color: #fff; |
||||
|
font-size: 28rpx; |
||||
|
.ul{ |
||||
|
margin-top: 23rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 24rpx; |
||||
|
.li{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
gap: 43rpx; |
||||
|
.left{ |
||||
|
image{ |
||||
|
width: 174rpx; |
||||
|
height: 174rpx; |
||||
|
border-radius: 24rpx; |
||||
|
background-color: #333333; |
||||
|
} |
||||
|
} |
||||
|
.right{ |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 18rpx; |
||||
|
.content{ |
||||
|
font-size: 24rpx; |
||||
|
} |
||||
|
.content:nth-child(1){ |
||||
|
font-size: 28rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.title_box{ |
||||
|
margin-top: 46rpx; |
||||
|
font-size: 28rpx; |
||||
|
} |
||||
|
.subhead_box{ |
||||
|
margin-top: 22rpx; |
||||
|
font-size: 24rpx; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.section_btn{ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
.btn{ |
||||
|
width: 722rpx; |
||||
|
height: 64rpx; |
||||
|
line-height: 64rpx; |
||||
|
border-radius: 8rpx; |
||||
|
background-color: rgba(32,202,175,1); |
||||
|
color: rgba(255,255,255,1); |
||||
|
font-size: 28rpx; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
</style> |
||||
@ -0,0 +1,262 @@ |
|||||
|
<!--我的消息-列表--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
|
||||
|
<view class="main_section"> |
||||
|
<view class="section_1"> |
||||
|
|
||||
|
<!-- <view class="item" @click="openViewSysMsgList()">--> |
||||
|
<!-- <view class="left">--> |
||||
|
<!-- <image class="pic" src="@/static/images/common/xi_tong_xiao_xi.png"></image>--> |
||||
|
<!-- <view>系统消息</view>--> |
||||
|
<!-- </view>--> |
||||
|
<!-- <view class="right">--> |
||||
|
<!-- <view>99</view>--> |
||||
|
<!-- <fui-icon name="arrowright" :size="60"></fui-icon>--> |
||||
|
<!-- </view>--> |
||||
|
<!-- </view>--> |
||||
|
|
||||
|
<view |
||||
|
v-for="(v,k) in contactList" |
||||
|
:key="k" |
||||
|
class="item" |
||||
|
@click="openViewImChatInfo(v)" |
||||
|
> |
||||
|
<view class="left"> |
||||
|
<image |
||||
|
v-if="v.type==2" |
||||
|
class="pic" |
||||
|
:src="(v.header ? $util.img(v.header) : `@/static/images/common/yong_hu.png`)" |
||||
|
model="aspectFit" |
||||
|
></image> |
||||
|
|
||||
|
<image v-else class="pic" src="@/static/images/common/xi_tong_xiao_xi.png"></image> |
||||
|
|
||||
|
<view>{{v.name}}</view> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view>{{v.count >= 99 ? '99':v.count}}</view> |
||||
|
<fui-icon name="arrowright" :size="60"></fui-icon> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import memberApi from '@/api/member.js'; |
||||
|
import commonApi from '@/api/common.js'; |
||||
|
import AQUplodeImgMulti from '@/components/AQ/AQUplodeImgMulti'; |
||||
|
import AQTabber from "@/components/AQ/AQTabber" |
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
AQTabber, |
||||
|
AQUplodeImgMulti, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
formData: { |
||||
|
images_arr: [], |
||||
|
images: '', |
||||
|
content: '', |
||||
|
mailbox: '', |
||||
|
}, |
||||
|
|
||||
|
//联系人列表 |
||||
|
contactList:[], |
||||
|
} |
||||
|
}, |
||||
|
onLoad() { |
||||
|
}, |
||||
|
onShow() { |
||||
|
this.init(); |
||||
|
}, |
||||
|
methods: { |
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
this.getContactList() |
||||
|
}, |
||||
|
|
||||
|
//获取联系人列表 |
||||
|
async getContactList(){ |
||||
|
let res = await commonApi.getContactList() |
||||
|
console.log('获取联系人列表', res) |
||||
|
if (res.code != 1) { |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
this.contactList = res.data |
||||
|
}, |
||||
|
|
||||
|
//######AQ上传文件组件相关###### |
||||
|
// 上传文件回调 |
||||
|
AQUploadSuccess(res) { |
||||
|
console.log('接收AQ上传回调xxx1', res) |
||||
|
// 使用 split 方法分割字符串 |
||||
|
let _inputValue = [] |
||||
|
if (res.filePathArr.length) { |
||||
|
_inputValue = res.filePathArr |
||||
|
} |
||||
|
this.formData[res.inputName] = _inputValue |
||||
|
// console.log('接收AQ上传回调xxx1',res) |
||||
|
// console.log('接收AQ上传回调xxx2',this.formData.member_store_certification_arr) |
||||
|
}, |
||||
|
|
||||
|
async submitForm() { |
||||
|
let data = {...this.formData} |
||||
|
data.images = data.images_arr.join(',') |
||||
|
if (!data.content) { |
||||
|
//反馈内容为必填项 |
||||
|
uni.showToast({ |
||||
|
title: '反馈内容为必填项', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
let res = await memberApi.setFeedback(data) |
||||
|
if (res.code != 1) { |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: '提交成功', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
//延迟1s执行 |
||||
|
setTimeout(() => { |
||||
|
this.$util.openHomeView(); |
||||
|
}, 1000); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//跳转页面-系统消息列表 |
||||
|
openViewSysMsgList(e){ |
||||
|
let hair_staff_id = e.hair_staff_id//发信人id |
||||
|
uni.navigateTo({ |
||||
|
url: `/pages/common/sys_msg_list?hair_staff_id=${hair_staff_id}` |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//跳转页面-聊天页面 |
||||
|
openViewImChatInfo(e){ |
||||
|
|
||||
|
if(e.type == 1){ |
||||
|
//系统消息 |
||||
|
this.openViewSysMsgList(e) |
||||
|
}else{ |
||||
|
//站内信 |
||||
|
let hair_staff_id = e.hair_staff_id//发信人id |
||||
|
uni.navigateTo({ |
||||
|
url: `/pages/common/im_chat_info?hair_staff_id=${hair_staff_id}` |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
.main_box { |
||||
|
background: #292929; |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #29d3b4; |
||||
|
|
||||
|
.title { |
||||
|
padding: 20rpx 0; |
||||
|
font-size: 30rpx; |
||||
|
color: #315d55; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section { |
||||
|
min-height: 100vh; |
||||
|
background: #292929 100%; |
||||
|
padding: 0 0rpx; |
||||
|
padding-top: 32rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 28rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 20rpx; |
||||
|
|
||||
|
.section { |
||||
|
background-color: #434544; |
||||
|
padding: 40rpx 40rpx; |
||||
|
} |
||||
|
|
||||
|
.section_1{ |
||||
|
padding: 0 24rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 38rpx; |
||||
|
.item{ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
|
||||
|
padding: 40rpx 18rpx 36rpx; |
||||
|
|
||||
|
border-radius: 14rpx; |
||||
|
background-color: rgba(255,255,255,1); |
||||
|
border: 2rpx solid rgba(187,187,187,1); |
||||
|
|
||||
|
.left{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
gap: 16rpx; |
||||
|
.pic{ |
||||
|
width: 68rpx; |
||||
|
height: 68rpx; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
view{ |
||||
|
color: #D9001B; |
||||
|
font-size: 32rpx; |
||||
|
} |
||||
|
} |
||||
|
.right{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
view{ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 50rpx; |
||||
|
height: 50rpx; |
||||
|
padding: 5rpx; |
||||
|
border: 1px solid #BBBBBB; |
||||
|
border-radius: 50%; |
||||
|
color: #D9001B; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
.describe { |
||||
|
color: #999999; |
||||
|
padding-left: 30rpx; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,225 @@ |
|||||
|
<!--系统消息-列表--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
|
||||
|
<view class="main_section"> |
||||
|
<scroll-view |
||||
|
class="section_1" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 90vh;" |
||||
|
> |
||||
|
<view |
||||
|
class="item" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
@click="openViewArticleInfo(v)" |
||||
|
> |
||||
|
<view class="title">{{v.title}}</view> |
||||
|
<!-- <image--> |
||||
|
<!-- class="img_box"--> |
||||
|
<!-- :src="$util.img('/upload/attachment/image/202504/02/1743562333d1bb6666f969da1b7170381d0845153e_local.png')"--> |
||||
|
<!-- model="aspectFit"--> |
||||
|
<!-- ></image>--> |
||||
|
|
||||
|
<view class="content" v-html="v.content"></view> |
||||
|
|
||||
|
<view class="time">{{v.show_time}}</view> |
||||
|
</view> |
||||
|
|
||||
|
</scroll-view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import commonApi from '@/api/common.js'; |
||||
|
|
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
loading:false,//加载状态 |
||||
|
lowerThreshold: 100,//距离底部多远触发 |
||||
|
isReachedBottom: false,//防止重复加载|true=不可加载|false=可加载 |
||||
|
|
||||
|
//筛选条件 |
||||
|
filteredData:{ |
||||
|
page:1,//当前页码 |
||||
|
limit:10,//每页返回数据条数 |
||||
|
total:10,//数据总条数 |
||||
|
hair_staff_id: '',//发信人id |
||||
|
}, |
||||
|
tableList:[],//聊天数据列表 |
||||
|
} |
||||
|
}, |
||||
|
onLoad(options) { |
||||
|
this.filteredData.hair_staff_id = options.hair_staff_id//发信人id |
||||
|
}, |
||||
|
onShow(){ |
||||
|
this.init() |
||||
|
}, |
||||
|
//下拉刷新 |
||||
|
async onPullDownRefresh() { |
||||
|
//重置为第一页 |
||||
|
await this.resetFilteredData() |
||||
|
await this.getList() |
||||
|
}, |
||||
|
methods: { |
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
await this.getList(); |
||||
|
}, |
||||
|
//加载更多(下一页) |
||||
|
loadMoreData() { |
||||
|
//判断是否加载 |
||||
|
if (!this.isReachedBottom) { |
||||
|
this.isReachedBottom = true;//设置为不可请求状态 |
||||
|
this.getList(); |
||||
|
} |
||||
|
}, |
||||
|
//重置为第一页 |
||||
|
async resetFilteredData() { |
||||
|
this.isReachedBottom = false; // 重置状态,以便下次触发加载更多 |
||||
|
|
||||
|
this.filteredData.page = 1//当前页码 |
||||
|
this.filteredData.limit = 10//每页返回数据条数 |
||||
|
this.filteredData.total = 10//数据总条数 |
||||
|
}, |
||||
|
|
||||
|
//获取列表 |
||||
|
async getList(){ |
||||
|
this.loading = true |
||||
|
|
||||
|
let data = {...this.filteredData} |
||||
|
|
||||
|
//判断是否还有数据 |
||||
|
if(this.filteredData.page * this.filteredData.limit > this.filteredData.total){ |
||||
|
this.loading = false |
||||
|
uni.showToast({ |
||||
|
title: '暂无更多', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
if(data.page == 1){ |
||||
|
this.tableList = [] |
||||
|
} |
||||
|
|
||||
|
let res = await commonApi.getContactMessage(data)//获取消息列表 |
||||
|
this.loading = false |
||||
|
this.isReachedBottom = false; |
||||
|
if (res.code != 1){ |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
this.tableList = this.tableList.concat(res.data.data); // 使用 concat 方法 将新数据追加到数组中 |
||||
|
// this.tableList.unshift(...res.data.data); // 将新数据插入到数组头部 |
||||
|
|
||||
|
console.log('列表',this.tableList) |
||||
|
this.filteredData.total = res.data.total |
||||
|
this.filteredData.page++ |
||||
|
}, |
||||
|
|
||||
|
//跳转文章详情 |
||||
|
openViewArticleInfo(item) { |
||||
|
let id = item.id |
||||
|
let redirect = item.redirect//重定向地址 |
||||
|
uni.navigateTo({ |
||||
|
url: `/pages/common/article_info?id=${id}` |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
.main_box { |
||||
|
background: #292929; |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #29d3b4; |
||||
|
|
||||
|
.title { |
||||
|
padding: 20rpx 0; |
||||
|
font-size: 30rpx; |
||||
|
color: #315d55; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section { |
||||
|
min-height: 100vh; |
||||
|
background: #292929 100%; |
||||
|
padding: 0 0rpx; |
||||
|
padding-top: 32rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 28rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 20rpx; |
||||
|
|
||||
|
.section { |
||||
|
background-color: #434544; |
||||
|
padding: 40rpx 40rpx; |
||||
|
} |
||||
|
|
||||
|
.section_1{ |
||||
|
padding: 0 24rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
|
||||
|
.item{ |
||||
|
margin-bottom: 38rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
|
||||
|
padding: 32rpx 24rpx; |
||||
|
border-radius: 14rpx; |
||||
|
background-color: rgba(255,255,255,1); |
||||
|
border: 2rpx solid rgba(187,187,187,1); |
||||
|
|
||||
|
color: #4F4F4F; |
||||
|
font-size: 32rpx; |
||||
|
|
||||
|
.title{ |
||||
|
} |
||||
|
.img_box{ |
||||
|
margin-top: 30rpx; |
||||
|
width: 100%; |
||||
|
} |
||||
|
.content{ |
||||
|
margin-top: 30rpx; |
||||
|
} |
||||
|
.time{ |
||||
|
display: flex; |
||||
|
justify-content: flex-end; |
||||
|
margin-top: 36rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
.describe { |
||||
|
color: #999999; |
||||
|
padding-left: 30rpx; |
||||
|
} |
||||
|
</style> |
||||
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,275 @@ |
|||||
|
<!--已签客户-列表--> |
||||
|
<template> |
||||
|
<view class="main_box"> |
||||
|
<!--自定义导航栏--> |
||||
|
<!-- <view class="navbar_section">--> |
||||
|
<!-- <view class="title">班级详情</view>--> |
||||
|
<!-- </view>--> |
||||
|
|
||||
|
<view class="main_section"> |
||||
|
<!-- 班级成员列表--> |
||||
|
<scroll-view |
||||
|
class="section_4" |
||||
|
scroll-y="true" |
||||
|
:lower-threshold="lowerThreshold" |
||||
|
@scrolltolower="loadMoreData" |
||||
|
style="height: 83vh;" |
||||
|
> |
||||
|
<view class="ul"> |
||||
|
<view class="li" |
||||
|
v-for="(v,k) in tableList" |
||||
|
:key="k" |
||||
|
@click="openViewStudentInfo(v)"> |
||||
|
<view class="left"> |
||||
|
<view class="box_1"> |
||||
|
<image class="pic" |
||||
|
v-if="v.header" :src="$util.img(v.header)"></image> |
||||
|
<image v-else class="pic" src="@/static/images/index/myk.png"></image> |
||||
|
<!-- <view class="tag_box">--> |
||||
|
<!-- 即将到期--> |
||||
|
<!-- </view>--> |
||||
|
</view> |
||||
|
<view class="box_2"> |
||||
|
<view class="name">{{v.name}}</view> |
||||
|
<view class="date">课程截止时间:{{v.end_time}}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="item"> |
||||
|
<view>{{v.have_study_time}}</view> |
||||
|
<view>已上课时</view> |
||||
|
</view> |
||||
|
<view class="item"> |
||||
|
<view>{{v.end_study_time ? v.end_study_time:0}}</view> |
||||
|
<view>剩余课时</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
</view> |
||||
|
|
||||
|
<!-- 底部导航--> |
||||
|
<!-- <AQTabber/>--> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import marketApi from '@/api/market.js'; |
||||
|
import AQTabber from "@/components/AQ/AQTabber.vue" |
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
AQTabber, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
loading:false,//加载状态 |
||||
|
lowerThreshold: 100,//距离底部多远触发 |
||||
|
isReachedBottom: false,//防止重复加载|true=不可加载|false=可加载 |
||||
|
|
||||
|
//筛选条件 |
||||
|
filteredData:{ |
||||
|
page:1,//当前页码 |
||||
|
limit:10,//每页返回数据条数 |
||||
|
total:10,//数据总条数 |
||||
|
name: '',//班级名称 |
||||
|
}, |
||||
|
tableList:[],//聊天数据列表 |
||||
|
} |
||||
|
}, |
||||
|
onLoad() { |
||||
|
}, |
||||
|
onShow() { |
||||
|
this.init(); |
||||
|
}, |
||||
|
methods: { |
||||
|
//初始化 |
||||
|
async init(){ |
||||
|
await this.getList()//获取已签客户 |
||||
|
}, |
||||
|
|
||||
|
//加载更多(下一页) |
||||
|
loadMoreData() { |
||||
|
//判断是否加载 |
||||
|
if (!this.isReachedBottom) { |
||||
|
this.isReachedBottom = true;//设置为不可请求状态 |
||||
|
this.getList(); |
||||
|
} |
||||
|
}, |
||||
|
//重置为第一页 |
||||
|
async resetFilteredData() { |
||||
|
this.isReachedBottom = false; // 重置状态,以便下次触发加载更多 |
||||
|
|
||||
|
this.filteredData.page = 1//当前页码 |
||||
|
this.filteredData.limit = 10//每页返回数据条数 |
||||
|
this.filteredData.total = 10//数据总条数 |
||||
|
}, |
||||
|
//获取列表 |
||||
|
async getList(){ |
||||
|
this.loading = true |
||||
|
|
||||
|
let data = {...this.filteredData} |
||||
|
|
||||
|
//判断是否还有数据 |
||||
|
if(this.filteredData.page * this.filteredData.limit > this.filteredData.total){ |
||||
|
this.loading = false |
||||
|
uni.showToast({ |
||||
|
title: '暂无更多', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
if(data.page == 1){ |
||||
|
this.tableList = [] |
||||
|
} |
||||
|
|
||||
|
let res = await marketApi.signClient(data) |
||||
|
this.loading = false |
||||
|
this.isReachedBottom = false; |
||||
|
if (res.code != 1){ |
||||
|
uni.showToast({ |
||||
|
title: res.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
this.tableList = this.tableList.concat(res.data.data); // 使用 concat 方法 将新数据追加到数组中 |
||||
|
|
||||
|
console.log('列表',this.tableList) |
||||
|
this.filteredData.total = res.data.total |
||||
|
this.filteredData.page++ |
||||
|
}, |
||||
|
|
||||
|
//打开学员详情页 |
||||
|
openViewStudentInfo(item){ |
||||
|
let students_id= item.id |
||||
|
uni.navigateTo({ |
||||
|
url: `/pages/coach/student/info?students_id=${students_id}` |
||||
|
}) |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
|
||||
|
.main_box{ |
||||
|
background: #292929 ; |
||||
|
} |
||||
|
|
||||
|
//自定义导航栏 |
||||
|
.navbar_section{ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
background: #292929; |
||||
|
.title{ |
||||
|
padding: 40rpx 0rpx; |
||||
|
|
||||
|
/* 小程序端样式 */ |
||||
|
// #ifdef MP-WEIXIN |
||||
|
padding: 80rpx 0rpx; |
||||
|
// #endif |
||||
|
|
||||
|
font-size: 30rpx; |
||||
|
color: #fff; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.main_section{ |
||||
|
min-height: 95vh; |
||||
|
background: #292929 100%; |
||||
|
padding: 0 24rpx; |
||||
|
padding-top: 40rpx; |
||||
|
padding-bottom: 150rpx; |
||||
|
font-size: 24rpx; |
||||
|
color: #FFFFFF; |
||||
|
//班级成员列表 |
||||
|
.section_4{ |
||||
|
.ul{ |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 10rpx; |
||||
|
.li{ |
||||
|
padding: 20rpx 0; |
||||
|
padding-bottom: 40rpx; |
||||
|
border-bottom: 2px solid #D7D7D7; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
.left{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
gap: 30rpx; |
||||
|
.box_1{ |
||||
|
padding-left: 20rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
position: relative; |
||||
|
.pic{ |
||||
|
width: 84rpx; |
||||
|
height: 84rpx; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
.tag_box{ |
||||
|
position: absolute; |
||||
|
bottom: -30rpx; |
||||
|
width: 120rpx; |
||||
|
height: 38rpx; |
||||
|
background-color: #F59A23; |
||||
|
border-radius: 4rpx; |
||||
|
line-height: 35rpx; |
||||
|
text-align: center; |
||||
|
font-size: 20rpx; |
||||
|
} |
||||
|
} |
||||
|
.box_2{ |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 20rpx; |
||||
|
.name{ |
||||
|
font-size: 28rpx; |
||||
|
} |
||||
|
.date{ |
||||
|
font-size: 24rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.right{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
gap: 14rpx; |
||||
|
.item{ |
||||
|
border: 1px solid #00E5BB; |
||||
|
border-radius: 10rpx; |
||||
|
width: 102rpx; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
view{ |
||||
|
text-align: center; |
||||
|
height: 50rpx; |
||||
|
line-height: 50rpx; |
||||
|
} |
||||
|
view:nth-child(1){ |
||||
|
font-size: 32rpx; |
||||
|
background-color: #fff; |
||||
|
color: #00e5bb; |
||||
|
} |
||||
|
view:nth-child(2){ |
||||
|
font-size: 20rpx; |
||||
|
background-color: #00e5bb; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
</style> |
||||
|
After Width: | Height: | Size: 237 B |
|
After Width: | Height: | Size: 729 B |
|
After Width: | Height: | Size: 625 B |
|
After Width: | Height: | Size: 872 B |
|
After Width: | Height: | Size: 543 B |
|
After Width: | Height: | Size: 560 B |
@ -0,0 +1,30 @@ |
|||||
|
## 1.4.12(2024-09-21) |
||||
|
- 修复 calendar在选择日期范围后重新选择日期需要点两次的Bug |
||||
|
## 1.4.11(2024-01-10) |
||||
|
- 修复 回到今天时,月份显示不一致问题 |
||||
|
## 1.4.10(2023-04-10) |
||||
|
- 修复 某些情况 monthSwitch 未触发的Bug |
||||
|
## 1.4.9(2023-02-02) |
||||
|
- 修复 某些情况切换月份错误的Bug |
||||
|
## 1.4.8(2023-01-30) |
||||
|
- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/161964) |
||||
|
## 1.4.7(2022-09-16) |
||||
|
- 优化 支持使用 uni-scss 控制主题色 |
||||
|
## 1.4.6(2022-09-08) |
||||
|
- 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件的Bug |
||||
|
## 1.4.5(2022-02-25) |
||||
|
- 修复 条件编译 nvue 不支持的 css 样式的Bug |
||||
|
## 1.4.4(2022-02-25) |
||||
|
- 修复 条件编译 nvue 不支持的 css 样式的Bug |
||||
|
## 1.4.3(2021-09-22) |
||||
|
- 修复 startDate、 endDate 属性失效的Bug |
||||
|
## 1.4.2(2021-08-24) |
||||
|
- 新增 支持国际化 |
||||
|
## 1.4.1(2021-08-05) |
||||
|
- 修复 弹出层被 tabbar 遮盖的Bug |
||||
|
## 1.4.0(2021-07-30) |
||||
|
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) |
||||
|
## 1.3.16(2021-05-12) |
||||
|
- 新增 组件示例地址 |
||||
|
## 1.3.15(2021-02-04) |
||||
|
- 调整为uni_modules目录规范 |
||||
@ -0,0 +1,544 @@ |
|||||
|
/** |
||||
|
* @1900-2100区间内的公历、农历互转 |
||||
|
* @charset UTF-8 |
||||
|
* @github https://github.com/jjonline/calendar.js
|
||||
|
* @Author Jea杨(JJonline@JJonline.Cn) |
||||
|
* @Time 2014-7-21 |
||||
|
* @Time 2016-8-13 Fixed 2033hex、Attribution Annals |
||||
|
* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug |
||||
|
* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year |
||||
|
* @Version 1.0.3 |
||||
|
* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
|
||||
|
* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
|
||||
|
*/ |
||||
|
/* eslint-disable */ |
||||
|
var calendar = { |
||||
|
|
||||
|
/** |
||||
|
* 农历1900-2100的润大小信息表 |
||||
|
* @Array Of Property |
||||
|
* @return Hex |
||||
|
*/ |
||||
|
lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
|
||||
|
0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
|
||||
|
0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
|
||||
|
0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
|
||||
|
0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
|
||||
|
0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
|
||||
|
0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
|
||||
|
0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
|
||||
|
0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
|
||||
|
0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
|
||||
|
0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
|
||||
|
0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
|
||||
|
0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
|
||||
|
0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
|
||||
|
0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
|
||||
|
/** Add By JJonline@JJonline.Cn**/ |
||||
|
0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
|
||||
|
0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
|
||||
|
0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
|
||||
|
0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
|
||||
|
0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
|
||||
|
0x0d520], // 2100
|
||||
|
|
||||
|
/** |
||||
|
* 公历每个月份的天数普通表 |
||||
|
* @Array Of Property |
||||
|
* @return Number |
||||
|
*/ |
||||
|
solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], |
||||
|
|
||||
|
/** |
||||
|
* 天干地支之天干速查表 |
||||
|
* @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], |
||||
|
|
||||
|
/** |
||||
|
* 天干地支之地支速查表 |
||||
|
* @Array Of Property |
||||
|
* @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], |
||||
|
|
||||
|
/** |
||||
|
* 天干地支之地支速查表<=>生肖 |
||||
|
* @Array Of Property |
||||
|
* @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], |
||||
|
|
||||
|
/** |
||||
|
* 24节气速查表 |
||||
|
* @Array Of Property |
||||
|
* @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], |
||||
|
|
||||
|
/** |
||||
|
* 1900-2100各年的24节气日期速查表 |
||||
|
* @Array Of Property |
||||
|
* @return 0x string For splice |
||||
|
*/ |
||||
|
sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', |
||||
|
'97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', |
||||
|
'97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', |
||||
|
'97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', |
||||
|
'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', |
||||
|
'97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', |
||||
|
'97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', |
||||
|
'9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', |
||||
|
'97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', |
||||
|
'97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', |
||||
|
'97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', |
||||
|
'9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', |
||||
|
'97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', |
||||
|
'97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', |
||||
|
'97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', |
||||
|
'9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', |
||||
|
'97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', |
||||
|
'97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', |
||||
|
'9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', |
||||
|
'7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', |
||||
|
'97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', |
||||
|
'97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', |
||||
|
'9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', |
||||
|
'7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', |
||||
|
'97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', |
||||
|
'97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', |
||||
|
'9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', |
||||
|
'7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', |
||||
|
'97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', |
||||
|
'9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', |
||||
|
'7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', |
||||
|
'7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', |
||||
|
'97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', |
||||
|
'9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', |
||||
|
'7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', |
||||
|
'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', |
||||
|
'97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', |
||||
|
'9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', |
||||
|
'7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', |
||||
|
'7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', |
||||
|
'977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', |
||||
|
'7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', |
||||
|
'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', |
||||
|
'7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', |
||||
|
'977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', |
||||
|
'7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', |
||||
|
'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', |
||||
|
'7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', |
||||
|
'977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', |
||||
|
'7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', |
||||
|
'7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', |
||||
|
'7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', |
||||
|
'7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', |
||||
|
'7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', |
||||
|
'7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', |
||||
|
'7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', |
||||
|
'7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', |
||||
|
'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', |
||||
|
'7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', |
||||
|
'7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', |
||||
|
'7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', |
||||
|
'7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', |
||||
|
'7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', |
||||
|
'665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', |
||||
|
'7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', |
||||
|
'7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', |
||||
|
'7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], |
||||
|
|
||||
|
/** |
||||
|
* 数字转中文速查表 |
||||
|
* @Array Of Property |
||||
|
* @trans ['日','一','二','三','四','五','六','七','八','九','十'] |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], |
||||
|
|
||||
|
/** |
||||
|
* 日期转农历称呼速查表 |
||||
|
* @Array Of Property |
||||
|
* @trans ['初','十','廿','卅'] |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], |
||||
|
|
||||
|
/** |
||||
|
* 月份转农历称呼速查表 |
||||
|
* @Array Of Property |
||||
|
* @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], |
||||
|
|
||||
|
/** |
||||
|
* 返回农历y年一整年的总天数 |
||||
|
* @param lunar Year |
||||
|
* @return Number |
||||
|
* @eg:var count = calendar.lYearDays(1987) ;//count=387
|
||||
|
*/ |
||||
|
lYearDays: function (y) { |
||||
|
var i; var sum = 348 |
||||
|
for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } |
||||
|
return (sum + this.leapDays(y)) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 |
||||
|
* @param lunar Year |
||||
|
* @return Number (0-12) |
||||
|
* @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
|
||||
|
*/ |
||||
|
leapMonth: function (y) { // 闰字编码 \u95f0
|
||||
|
return (this.lunarInfo[y - 1900] & 0xf) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 返回农历y年闰月的天数 若该年没有闰月则返回0 |
||||
|
* @param lunar Year |
||||
|
* @return Number (0、29、30) |
||||
|
* @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
|
||||
|
*/ |
||||
|
leapDays: function (y) { |
||||
|
if (this.leapMonth(y)) { |
||||
|
return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) |
||||
|
} |
||||
|
return (0) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 |
||||
|
* @param lunar Year |
||||
|
* @return Number (-1、29、30) |
||||
|
* @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
|
||||
|
*/ |
||||
|
monthDays: function (y, m) { |
||||
|
if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
|
||||
|
return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 返回公历(!)y年m月的天数 |
||||
|
* @param solar Year |
||||
|
* @return Number (-1、28、29、30、31) |
||||
|
* @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
|
||||
|
*/ |
||||
|
solarDays: function (y, m) { |
||||
|
if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
|
||||
|
var ms = m - 1 |
||||
|
if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29
|
||||
|
return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) |
||||
|
} else { |
||||
|
return (this.solarMonth[ms]) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 农历年份转换为干支纪年 |
||||
|
* @param lYear 农历年的年份数 |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
toGanZhiYear: function (lYear) { |
||||
|
var ganKey = (lYear - 3) % 10 |
||||
|
var zhiKey = (lYear - 3) % 12 |
||||
|
if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干
|
||||
|
if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支
|
||||
|
return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 公历月、日判断所属星座 |
||||
|
* @param cMonth [description] |
||||
|
* @param cDay [description] |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
toAstro: function (cMonth, cDay) { |
||||
|
var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' |
||||
|
var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] |
||||
|
return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 传入offset偏移量返回干支 |
||||
|
* @param offset 相对甲子的偏移量 |
||||
|
* @return Cn string |
||||
|
*/ |
||||
|
toGanZhi: function (offset) { |
||||
|
return this.Gan[offset % 10] + this.Zhi[offset % 12] |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 传入公历(!)y年获得该年第n个节气的公历日期 |
||||
|
* @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 |
||||
|
* @return day Number |
||||
|
* @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
|
||||
|
*/ |
||||
|
getTerm: function (y, n) { |
||||
|
if (y < 1900 || y > 2100) { return -1 } |
||||
|
if (n < 1 || n > 24) { return -1 } |
||||
|
var _table = this.sTermInfo[y - 1900] |
||||
|
var _info = [ |
||||
|
parseInt('0x' + _table.substr(0, 5)).toString(), |
||||
|
parseInt('0x' + _table.substr(5, 5)).toString(), |
||||
|
parseInt('0x' + _table.substr(10, 5)).toString(), |
||||
|
parseInt('0x' + _table.substr(15, 5)).toString(), |
||||
|
parseInt('0x' + _table.substr(20, 5)).toString(), |
||||
|
parseInt('0x' + _table.substr(25, 5)).toString() |
||||
|
] |
||||
|
var _calday = [ |
||||
|
_info[0].substr(0, 1), |
||||
|
_info[0].substr(1, 2), |
||||
|
_info[0].substr(3, 1), |
||||
|
_info[0].substr(4, 2), |
||||
|
|
||||
|
_info[1].substr(0, 1), |
||||
|
_info[1].substr(1, 2), |
||||
|
_info[1].substr(3, 1), |
||||
|
_info[1].substr(4, 2), |
||||
|
|
||||
|
_info[2].substr(0, 1), |
||||
|
_info[2].substr(1, 2), |
||||
|
_info[2].substr(3, 1), |
||||
|
_info[2].substr(4, 2), |
||||
|
|
||||
|
_info[3].substr(0, 1), |
||||
|
_info[3].substr(1, 2), |
||||
|
_info[3].substr(3, 1), |
||||
|
_info[3].substr(4, 2), |
||||
|
|
||||
|
_info[4].substr(0, 1), |
||||
|
_info[4].substr(1, 2), |
||||
|
_info[4].substr(3, 1), |
||||
|
_info[4].substr(4, 2), |
||||
|
|
||||
|
_info[5].substr(0, 1), |
||||
|
_info[5].substr(1, 2), |
||||
|
_info[5].substr(3, 1), |
||||
|
_info[5].substr(4, 2) |
||||
|
] |
||||
|
return parseInt(_calday[n - 1]) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 传入农历数字月份返回汉语通俗表示法 |
||||
|
* @param lunar month |
||||
|
* @return Cn string |
||||
|
* @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
|
||||
|
*/ |
||||
|
toChinaMonth: function (m) { // 月 => \u6708
|
||||
|
if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
|
||||
|
var s = this.nStr3[m - 1] |
||||
|
s += '\u6708'// 加上月字
|
||||
|
return s |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 传入农历日期数字返回汉字表示法 |
||||
|
* @param lunar day |
||||
|
* @return Cn string |
||||
|
* @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
|
||||
|
*/ |
||||
|
toChinaDay: function (d) { // 日 => \u65e5
|
||||
|
var s |
||||
|
switch (d) { |
||||
|
case 10: |
||||
|
s = '\u521d\u5341'; break |
||||
|
case 20: |
||||
|
s = '\u4e8c\u5341'; break |
||||
|
case 30: |
||||
|
s = '\u4e09\u5341'; break |
||||
|
default : |
||||
|
s = this.nStr2[Math.floor(d / 10)] |
||||
|
s += this.nStr1[d % 10] |
||||
|
} |
||||
|
return (s) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” |
||||
|
* @param y year |
||||
|
* @return Cn string |
||||
|
* @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
|
||||
|
*/ |
||||
|
getAnimal: function (y) { |
||||
|
return this.Animals[(y - 4) % 12] |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 传入阳历年月日获得详细的公历、农历object信息 <=>JSON |
||||
|
* @param y solar year |
||||
|
* @param m solar month |
||||
|
* @param d solar day |
||||
|
* @return JSON object |
||||
|
* @eg:console.log(calendar.solar2lunar(1987,11,01)); |
||||
|
*/ |
||||
|
solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31
|
||||
|
// 年份限定、上限
|
||||
|
if (y < 1900 || y > 2100) { |
||||
|
return -1// undefined转换为数字变为NaN
|
||||
|
} |
||||
|
// 公历传参最下限
|
||||
|
if (y == 1900 && m == 1 && d < 31) { |
||||
|
return -1 |
||||
|
} |
||||
|
// 未传参 获得当天
|
||||
|
if (!y) { |
||||
|
var objDate = new Date() |
||||
|
} else { |
||||
|
var objDate = new Date(y, parseInt(m) - 1, d) |
||||
|
} |
||||
|
var i; var leap = 0; var temp = 0 |
||||
|
// 修正ymd参数
|
||||
|
var y = objDate.getFullYear() |
||||
|
var m = objDate.getMonth() + 1 |
||||
|
var d = objDate.getDate() |
||||
|
var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 |
||||
|
for (i = 1900; i < 2101 && offset > 0; i++) { |
||||
|
temp = this.lYearDays(i) |
||||
|
offset -= temp |
||||
|
} |
||||
|
if (offset < 0) { |
||||
|
offset += temp; i-- |
||||
|
} |
||||
|
|
||||
|
// 是否今天
|
||||
|
var isTodayObj = new Date() |
||||
|
var isToday = false |
||||
|
if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { |
||||
|
isToday = true |
||||
|
} |
||||
|
// 星期几
|
||||
|
var nWeek = objDate.getDay() |
||||
|
var cWeek = this.nStr1[nWeek] |
||||
|
// 数字表示周几顺应天朝周一开始的惯例
|
||||
|
if (nWeek == 0) { |
||||
|
nWeek = 7 |
||||
|
} |
||||
|
// 农历年
|
||||
|
var year = i |
||||
|
var leap = this.leapMonth(i) // 闰哪个月
|
||||
|
var isLeap = false |
||||
|
|
||||
|
// 效验闰月
|
||||
|
for (i = 1; i < 13 && offset > 0; i++) { |
||||
|
// 闰月
|
||||
|
if (leap > 0 && i == (leap + 1) && isLeap == false) { |
||||
|
--i |
||||
|
isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数
|
||||
|
} else { |
||||
|
temp = this.monthDays(year, i)// 计算农历普通月天数
|
||||
|
} |
||||
|
// 解除闰月
|
||||
|
if (isLeap == true && i == (leap + 1)) { isLeap = false } |
||||
|
offset -= temp |
||||
|
} |
||||
|
// 闰月导致数组下标重叠取反
|
||||
|
if (offset == 0 && leap > 0 && i == leap + 1) { |
||||
|
if (isLeap) { |
||||
|
isLeap = false |
||||
|
} else { |
||||
|
isLeap = true; --i |
||||
|
} |
||||
|
} |
||||
|
if (offset < 0) { |
||||
|
offset += temp; --i |
||||
|
} |
||||
|
// 农历月
|
||||
|
var month = i |
||||
|
// 农历日
|
||||
|
var day = offset + 1 |
||||
|
// 天干地支处理
|
||||
|
var sm = m - 1 |
||||
|
var gzY = this.toGanZhiYear(year) |
||||
|
|
||||
|
// 当月的两个节气
|
||||
|
// bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
|
||||
|
var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始
|
||||
|
var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始
|
||||
|
|
||||
|
// 依据12节气修正干支月
|
||||
|
var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) |
||||
|
if (d >= firstNode) { |
||||
|
gzM = this.toGanZhi((y - 1900) * 12 + m + 12) |
||||
|
} |
||||
|
|
||||
|
// 传入的日期的节气与否
|
||||
|
var isTerm = false |
||||
|
var Term = null |
||||
|
if (firstNode == d) { |
||||
|
isTerm = true |
||||
|
Term = this.solarTerm[m * 2 - 2] |
||||
|
} |
||||
|
if (secondNode == d) { |
||||
|
isTerm = true |
||||
|
Term = this.solarTerm[m * 2 - 1] |
||||
|
} |
||||
|
// 日柱 当月一日与 1900/1/1 相差天数
|
||||
|
var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 |
||||
|
var gzD = this.toGanZhi(dayCyclical + d - 1) |
||||
|
// 该日期所属的星座
|
||||
|
var astro = this.toAstro(m, d) |
||||
|
|
||||
|
return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON |
||||
|
* @param y lunar year |
||||
|
* @param m lunar month |
||||
|
* @param d lunar day |
||||
|
* @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] |
||||
|
* @return JSON object |
||||
|
* @eg:console.log(calendar.lunar2solar(1987,9,10)); |
||||
|
*/ |
||||
|
lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
|
||||
|
var isLeapMonth = !!isLeapMonth |
||||
|
var leapOffset = 0 |
||||
|
var leapMonth = this.leapMonth(y) |
||||
|
var leapDay = this.leapDays(y) |
||||
|
if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
|
||||
|
if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值
|
||||
|
var day = this.monthDays(y, m) |
||||
|
var _day = day |
||||
|
// bugFix 2016-9-25
|
||||
|
// if month is leap, _day use leapDays method
|
||||
|
if (isLeapMonth) { |
||||
|
_day = this.leapDays(y, m) |
||||
|
} |
||||
|
if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
|
||||
|
|
||||
|
// 计算农历的时间差
|
||||
|
var offset = 0 |
||||
|
for (var i = 1900; i < y; i++) { |
||||
|
offset += this.lYearDays(i) |
||||
|
} |
||||
|
var leap = 0; var isAdd = false |
||||
|
for (var i = 1; i < m; i++) { |
||||
|
leap = this.leapMonth(y) |
||||
|
if (!isAdd) { // 处理闰月
|
||||
|
if (leap <= i && leap > 0) { |
||||
|
offset += this.leapDays(y); isAdd = true |
||||
|
} |
||||
|
} |
||||
|
offset += this.monthDays(y, i) |
||||
|
} |
||||
|
// 转换闰月农历 需补充该年闰月的前一个月的时差
|
||||
|
if (isLeapMonth) { offset += day } |
||||
|
// 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
|
||||
|
var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) |
||||
|
var calObj = new Date((offset + d - 31) * 86400000 + stmap) |
||||
|
var cY = calObj.getUTCFullYear() |
||||
|
var cM = calObj.getUTCMonth() + 1 |
||||
|
var cD = calObj.getUTCDate() |
||||
|
|
||||
|
return this.solar2lunar(cY, cM, cD) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export default calendar |
||||
@ -0,0 +1,12 @@ |
|||||
|
{ |
||||
|
"uni-calender.ok": "ok", |
||||
|
"uni-calender.cancel": "cancel", |
||||
|
"uni-calender.today": "today", |
||||
|
"uni-calender.MON": "MON", |
||||
|
"uni-calender.TUE": "TUE", |
||||
|
"uni-calender.WED": "WED", |
||||
|
"uni-calender.THU": "THU", |
||||
|
"uni-calender.FRI": "FRI", |
||||
|
"uni-calender.SAT": "SAT", |
||||
|
"uni-calender.SUN": "SUN" |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
import en from './en.json' |
||||
|
import zhHans from './zh-Hans.json' |
||||
|
import zhHant from './zh-Hant.json' |
||||
|
export default { |
||||
|
en, |
||||
|
'zh-Hans': zhHans, |
||||
|
'zh-Hant': zhHant |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
{ |
||||
|
"uni-calender.ok": "确定", |
||||
|
"uni-calender.cancel": "取消", |
||||
|
"uni-calender.today": "今日", |
||||
|
"uni-calender.SUN": "日", |
||||
|
"uni-calender.MON": "一", |
||||
|
"uni-calender.TUE": "二", |
||||
|
"uni-calender.WED": "三", |
||||
|
"uni-calender.THU": "四", |
||||
|
"uni-calender.FRI": "五", |
||||
|
"uni-calender.SAT": "六" |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
{ |
||||
|
"uni-calender.ok": "確定", |
||||
|
"uni-calender.cancel": "取消", |
||||
|
"uni-calender.today": "今日", |
||||
|
"uni-calender.SUN": "日", |
||||
|
"uni-calender.MON": "一", |
||||
|
"uni-calender.TUE": "二", |
||||
|
"uni-calender.WED": "三", |
||||
|
"uni-calender.THU": "四", |
||||
|
"uni-calender.FRI": "五", |
||||
|
"uni-calender.SAT": "六" |
||||
|
} |
||||
@ -0,0 +1,187 @@ |
|||||
|
<template> |
||||
|
<view class="uni-calendar-item__weeks-box" :class="{ |
||||
|
'uni-calendar-item--disable':weeks.disable, |
||||
|
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay, |
||||
|
'uni-calendar-item--checked':(calendar.fullDate === weeks.fullDate && !weeks.isDay) , |
||||
|
'uni-calendar-item--before-checked':weeks.beforeMultiple, |
||||
|
'uni-calendar-item--multiple': weeks.multiple, |
||||
|
'uni-calendar-item--after-checked':weeks.afterMultiple, |
||||
|
}" |
||||
|
@click="choiceDate(weeks)"> |
||||
|
<view class="uni-calendar-item__weeks-box-item"> |
||||
|
<text v-if="selected&&weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text> |
||||
|
<text class="uni-calendar-item__weeks-box-text" :class="{ |
||||
|
'uni-calendar-item--isDay-text': weeks.isDay, |
||||
|
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay, |
||||
|
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay, |
||||
|
'uni-calendar-item--before-checked':weeks.beforeMultiple, |
||||
|
'uni-calendar-item--multiple': weeks.multiple, |
||||
|
'uni-calendar-item--after-checked':weeks.afterMultiple, |
||||
|
'uni-calendar-item--disable':weeks.disable, |
||||
|
}">{{weeks.date}}</text> |
||||
|
<text v-if="!lunar&&!weeks.extraInfo && weeks.isDay" class="uni-calendar-item__weeks-lunar-text" :class="{ |
||||
|
'uni-calendar-item--isDay-text':weeks.isDay, |
||||
|
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay, |
||||
|
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay, |
||||
|
'uni-calendar-item--before-checked':weeks.beforeMultiple, |
||||
|
'uni-calendar-item--multiple': weeks.multiple, |
||||
|
'uni-calendar-item--after-checked':weeks.afterMultiple, |
||||
|
}">{{todayText}}</text> |
||||
|
<text v-if="lunar&&!weeks.extraInfo" class="uni-calendar-item__weeks-lunar-text" :class="{ |
||||
|
'uni-calendar-item--isDay-text':weeks.isDay, |
||||
|
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay, |
||||
|
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay, |
||||
|
'uni-calendar-item--before-checked':weeks.beforeMultiple, |
||||
|
'uni-calendar-item--multiple': weeks.multiple, |
||||
|
'uni-calendar-item--after-checked':weeks.afterMultiple, |
||||
|
'uni-calendar-item--disable':weeks.disable, |
||||
|
}">{{weeks.isDay ? todayText : (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}</text> |
||||
|
<text v-if="weeks.extraInfo&&weeks.extraInfo.info" class="uni-calendar-item__weeks-lunar-text" :class="{ |
||||
|
'uni-calendar-item--extra':weeks.extraInfo.info, |
||||
|
'uni-calendar-item--isDay-text':weeks.isDay, |
||||
|
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay, |
||||
|
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay, |
||||
|
'uni-calendar-item--before-checked':weeks.beforeMultiple, |
||||
|
'uni-calendar-item--multiple': weeks.multiple, |
||||
|
'uni-calendar-item--after-checked':weeks.afterMultiple, |
||||
|
'uni-calendar-item--disable':weeks.disable, |
||||
|
}">{{weeks.extraInfo.info}}</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { initVueI18n } from '@dcloudio/uni-i18n' |
||||
|
import i18nMessages from './i18n/index.js' |
||||
|
const { t } = initVueI18n(i18nMessages) |
||||
|
|
||||
|
export default { |
||||
|
emits:['change'], |
||||
|
props: { |
||||
|
weeks: { |
||||
|
type: Object, |
||||
|
default () { |
||||
|
return {} |
||||
|
} |
||||
|
}, |
||||
|
calendar: { |
||||
|
type: Object, |
||||
|
default: () => { |
||||
|
return {} |
||||
|
} |
||||
|
}, |
||||
|
selected: { |
||||
|
type: Array, |
||||
|
default: () => { |
||||
|
return [] |
||||
|
} |
||||
|
}, |
||||
|
lunar: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
todayText() { |
||||
|
return t("uni-calender.today") |
||||
|
}, |
||||
|
}, |
||||
|
methods: { |
||||
|
choiceDate(weeks) { |
||||
|
this.$emit('change', weeks) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
$uni-font-size-base:14px; |
||||
|
$uni-text-color:#333; |
||||
|
$uni-font-size-sm:12px; |
||||
|
$uni-color-error: #e43d33; |
||||
|
$uni-opacity-disabled: 0.3; |
||||
|
$uni-text-color-disable:#c0c0c0; |
||||
|
$uni-primary: #2979ff !default; |
||||
|
.uni-calendar-item__weeks-box { |
||||
|
flex: 1; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: column; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item__weeks-box-text { |
||||
|
font-size: $uni-font-size-base; |
||||
|
color: $uni-text-color; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item__weeks-lunar-text { |
||||
|
font-size: $uni-font-size-sm; |
||||
|
color: $uni-text-color; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item__weeks-box-item { |
||||
|
position: relative; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: column; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item__weeks-box-circle { |
||||
|
position: absolute; |
||||
|
top: 5px; |
||||
|
right: 5px; |
||||
|
width: 8px; |
||||
|
height: 8px; |
||||
|
border-radius: 8px; |
||||
|
background-color: $uni-color-error; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item--disable { |
||||
|
background-color: rgba(249, 249, 249, $uni-opacity-disabled); |
||||
|
color: $uni-text-color-disable; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item--isDay-text { |
||||
|
color: $uni-primary; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item--isDay { |
||||
|
background-color: $uni-primary; |
||||
|
opacity: 0.8; |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item--extra { |
||||
|
color: $uni-color-error; |
||||
|
opacity: 0.8; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item--checked { |
||||
|
background-color: $uni-primary; |
||||
|
color: #fff; |
||||
|
opacity: 0.8; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar-item--multiple { |
||||
|
background-color: $uni-primary; |
||||
|
color: #fff; |
||||
|
opacity: 0.8; |
||||
|
} |
||||
|
.uni-calendar-item--before-checked { |
||||
|
background-color: #ff5a5f; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.uni-calendar-item--after-checked { |
||||
|
background-color: #ff5a5f; |
||||
|
color: #fff; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,567 @@ |
|||||
|
<template> |
||||
|
<view class="uni-calendar"> |
||||
|
<view v-if="!insert&&show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}" @click="clean"></view> |
||||
|
<view v-if="insert || show" class="uni-calendar__content" :class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow}"> |
||||
|
<view v-if="!insert" class="uni-calendar__header uni-calendar--fixed-top"> |
||||
|
<view class="uni-calendar__header-btn-box" @click="close"> |
||||
|
<text class="uni-calendar__header-text uni-calendar--fixed-width">{{cancelText}}</text> |
||||
|
</view> |
||||
|
<view class="uni-calendar__header-btn-box" @click="confirm"> |
||||
|
<text class="uni-calendar__header-text uni-calendar--fixed-width">{{okText}}</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="uni-calendar__header"> |
||||
|
<view class="uni-calendar__header-btn-box" @click.stop="pre"> |
||||
|
<view class="uni-calendar__header-btn uni-calendar--left"></view> |
||||
|
</view> |
||||
|
<picker mode="date" :value="date" fields="month" @change="bindDateChange"> |
||||
|
<text class="uni-calendar__header-text">{{ (nowDate.year||'') +' / '+( nowDate.month||'')}}</text> |
||||
|
</picker> |
||||
|
<view class="uni-calendar__header-btn-box" @click.stop="next"> |
||||
|
<view class="uni-calendar__header-btn uni-calendar--right"></view> |
||||
|
</view> |
||||
|
<text class="uni-calendar__backtoday" @click="backToday">{{todayText}}</text> |
||||
|
|
||||
|
</view> |
||||
|
<view class="uni-calendar__box"> |
||||
|
<view v-if="showMonth" class="uni-calendar__box-bg"> |
||||
|
<text class="uni-calendar__box-bg-text">{{nowDate.month}}</text> |
||||
|
</view> |
||||
|
<view class="uni-calendar__weeks"> |
||||
|
<view class="uni-calendar__weeks-day"> |
||||
|
<text class="uni-calendar__weeks-day-text">{{SUNText}}</text> |
||||
|
</view> |
||||
|
<view class="uni-calendar__weeks-day"> |
||||
|
<text class="uni-calendar__weeks-day-text">{{monText}}</text> |
||||
|
</view> |
||||
|
<view class="uni-calendar__weeks-day"> |
||||
|
<text class="uni-calendar__weeks-day-text">{{TUEText}}</text> |
||||
|
</view> |
||||
|
<view class="uni-calendar__weeks-day"> |
||||
|
<text class="uni-calendar__weeks-day-text">{{WEDText}}</text> |
||||
|
</view> |
||||
|
<view class="uni-calendar__weeks-day"> |
||||
|
<text class="uni-calendar__weeks-day-text">{{THUText}}</text> |
||||
|
</view> |
||||
|
<view class="uni-calendar__weeks-day"> |
||||
|
<text class="uni-calendar__weeks-day-text">{{FRIText}}</text> |
||||
|
</view> |
||||
|
<view class="uni-calendar__weeks-day"> |
||||
|
<text class="uni-calendar__weeks-day-text">{{SATText}}</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex"> |
||||
|
<view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex"> |
||||
|
<calendar-item class="uni-calendar-item--hook" :weeks="weeks" :calendar="calendar" :selected="selected" :lunar="lunar" @change="choiceDate"></calendar-item> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import Calendar from './util.js'; |
||||
|
import CalendarItem from './uni-calendar-item.vue' |
||||
|
|
||||
|
import { initVueI18n } from '@dcloudio/uni-i18n' |
||||
|
import i18nMessages from './i18n/index.js' |
||||
|
const { t } = initVueI18n(i18nMessages) |
||||
|
|
||||
|
/** |
||||
|
* Calendar 日历 |
||||
|
* @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等 |
||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=56 |
||||
|
* @property {String} date 自定义当前时间,默认为今天 |
||||
|
* @property {Boolean} lunar 显示农历 |
||||
|
* @property {String} startDate 日期选择范围-开始日期 |
||||
|
* @property {String} endDate 日期选择范围-结束日期 |
||||
|
* @property {Boolean} range 范围选择 |
||||
|
* @property {Boolean} insert = [true|false] 插入模式,默认为false |
||||
|
* @value true 弹窗模式 |
||||
|
* @value false 插入模式 |
||||
|
* @property {Boolean} clearDate = [true|false] 弹窗模式是否清空上次选择内容 |
||||
|
* @property {Array} selected 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] |
||||
|
* @property {Boolean} showMonth 是否选择月份为背景 |
||||
|
* @event {Function} change 日期改变,`insert :ture` 时生效 |
||||
|
* @event {Function} confirm 确认选择`insert :false` 时生效 |
||||
|
* @event {Function} monthSwitch 切换月份时触发 |
||||
|
* @example <uni-calendar :insert="true":lunar="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" /> |
||||
|
*/ |
||||
|
export default { |
||||
|
components: { |
||||
|
CalendarItem |
||||
|
}, |
||||
|
emits:['close','confirm','change','monthSwitch'], |
||||
|
props: { |
||||
|
date: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
selected: { |
||||
|
type: Array, |
||||
|
default () { |
||||
|
return [] |
||||
|
} |
||||
|
}, |
||||
|
lunar: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
startDate: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
endDate: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
range: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
insert: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
}, |
||||
|
showMonth: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
}, |
||||
|
clearDate: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
show: false, |
||||
|
weeks: [], |
||||
|
calendar: {}, |
||||
|
nowDate: '', |
||||
|
aniMaskShow: false |
||||
|
} |
||||
|
}, |
||||
|
computed:{ |
||||
|
/** |
||||
|
* for i18n |
||||
|
*/ |
||||
|
|
||||
|
okText() { |
||||
|
return t("uni-calender.ok") |
||||
|
}, |
||||
|
cancelText() { |
||||
|
return t("uni-calender.cancel") |
||||
|
}, |
||||
|
todayText() { |
||||
|
return t("uni-calender.today") |
||||
|
}, |
||||
|
monText() { |
||||
|
return t("uni-calender.MON") |
||||
|
}, |
||||
|
TUEText() { |
||||
|
return t("uni-calender.TUE") |
||||
|
}, |
||||
|
WEDText() { |
||||
|
return t("uni-calender.WED") |
||||
|
}, |
||||
|
THUText() { |
||||
|
return t("uni-calender.THU") |
||||
|
}, |
||||
|
FRIText() { |
||||
|
return t("uni-calender.FRI") |
||||
|
}, |
||||
|
SATText() { |
||||
|
return t("uni-calender.SAT") |
||||
|
}, |
||||
|
SUNText() { |
||||
|
return t("uni-calender.SUN") |
||||
|
}, |
||||
|
}, |
||||
|
watch: { |
||||
|
date(newVal) { |
||||
|
// this.cale.setDate(newVal) |
||||
|
this.init(newVal) |
||||
|
}, |
||||
|
startDate(val){ |
||||
|
this.cale.resetSatrtDate(val) |
||||
|
this.cale.setDate(this.nowDate.fullDate) |
||||
|
this.weeks = this.cale.weeks |
||||
|
}, |
||||
|
endDate(val){ |
||||
|
this.cale.resetEndDate(val) |
||||
|
this.cale.setDate(this.nowDate.fullDate) |
||||
|
this.weeks = this.cale.weeks |
||||
|
}, |
||||
|
selected(newVal) { |
||||
|
this.cale.setSelectInfo(this.nowDate.fullDate, newVal) |
||||
|
this.weeks = this.cale.weeks |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.cale = new Calendar({ |
||||
|
selected: this.selected, |
||||
|
startDate: this.startDate, |
||||
|
endDate: this.endDate, |
||||
|
range: this.range, |
||||
|
}) |
||||
|
this.init(this.date) |
||||
|
}, |
||||
|
methods: { |
||||
|
// 取消穿透 |
||||
|
clean() {}, |
||||
|
bindDateChange(e) { |
||||
|
const value = e.detail.value + '-1' |
||||
|
this.setDate(value) |
||||
|
|
||||
|
const { year,month } = this.cale.getDate(value) |
||||
|
this.$emit('monthSwitch', { |
||||
|
year, |
||||
|
month |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* 初始化日期显示 |
||||
|
* @param {Object} date |
||||
|
*/ |
||||
|
init(date) { |
||||
|
this.cale.setDate(date) |
||||
|
this.weeks = this.cale.weeks |
||||
|
this.nowDate = this.calendar = this.cale.getInfo(date) |
||||
|
}, |
||||
|
/** |
||||
|
* 打开日历弹窗 |
||||
|
*/ |
||||
|
open() { |
||||
|
// 弹窗模式并且清理数据 |
||||
|
if (this.clearDate && !this.insert) { |
||||
|
this.cale.cleanMultipleStatus() |
||||
|
// this.cale.setDate(this.date) |
||||
|
this.init(this.date) |
||||
|
} |
||||
|
this.show = true |
||||
|
this.$nextTick(() => { |
||||
|
setTimeout(() => { |
||||
|
this.aniMaskShow = true |
||||
|
}, 50) |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* 关闭日历弹窗 |
||||
|
*/ |
||||
|
close() { |
||||
|
this.aniMaskShow = false |
||||
|
this.$nextTick(() => { |
||||
|
setTimeout(() => { |
||||
|
this.show = false |
||||
|
this.$emit('close') |
||||
|
}, 300) |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* 确认按钮 |
||||
|
*/ |
||||
|
confirm() { |
||||
|
this.setEmit('confirm') |
||||
|
this.close() |
||||
|
}, |
||||
|
/** |
||||
|
* 变化触发 |
||||
|
*/ |
||||
|
change() { |
||||
|
if (!this.insert) return |
||||
|
this.setEmit('change') |
||||
|
}, |
||||
|
/** |
||||
|
* 选择月份触发 |
||||
|
*/ |
||||
|
monthSwitch() { |
||||
|
let { |
||||
|
year, |
||||
|
month |
||||
|
} = this.nowDate |
||||
|
this.$emit('monthSwitch', { |
||||
|
year, |
||||
|
month: Number(month) |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* 派发事件 |
||||
|
* @param {Object} name |
||||
|
*/ |
||||
|
setEmit(name) { |
||||
|
let { |
||||
|
year, |
||||
|
month, |
||||
|
date, |
||||
|
fullDate, |
||||
|
lunar, |
||||
|
extraInfo |
||||
|
} = this.calendar |
||||
|
this.$emit(name, { |
||||
|
range: this.cale.multipleStatus, |
||||
|
year, |
||||
|
month, |
||||
|
date, |
||||
|
fulldate: fullDate, |
||||
|
lunar, |
||||
|
extraInfo: extraInfo || {} |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* 选择天触发 |
||||
|
* @param {Object} weeks |
||||
|
*/ |
||||
|
choiceDate(weeks) { |
||||
|
if (weeks.disable) return |
||||
|
this.calendar = weeks |
||||
|
// 设置多选 |
||||
|
this.cale.setMultiple(this.calendar.fullDate) |
||||
|
this.weeks = this.cale.weeks |
||||
|
this.change() |
||||
|
}, |
||||
|
/** |
||||
|
* 回到今天 |
||||
|
*/ |
||||
|
backToday() { |
||||
|
const nowYearMonth = `${this.nowDate.year}-${this.nowDate.month}` |
||||
|
const date = this.cale.getDate(new Date()) |
||||
|
const todayYearMonth = `${date.year}-${date.month}` |
||||
|
|
||||
|
this.init(date.fullDate) |
||||
|
|
||||
|
if(nowYearMonth !== todayYearMonth) { |
||||
|
this.monthSwitch() |
||||
|
} |
||||
|
|
||||
|
this.change() |
||||
|
}, |
||||
|
/** |
||||
|
* 上个月 |
||||
|
*/ |
||||
|
pre() { |
||||
|
const preDate = this.cale.getDate(this.nowDate.fullDate, -1, 'month').fullDate |
||||
|
this.setDate(preDate) |
||||
|
this.monthSwitch() |
||||
|
|
||||
|
}, |
||||
|
/** |
||||
|
* 下个月 |
||||
|
*/ |
||||
|
next() { |
||||
|
const nextDate = this.cale.getDate(this.nowDate.fullDate, +1, 'month').fullDate |
||||
|
this.setDate(nextDate) |
||||
|
this.monthSwitch() |
||||
|
}, |
||||
|
/** |
||||
|
* 设置日期 |
||||
|
* @param {Object} date |
||||
|
*/ |
||||
|
setDate(date) { |
||||
|
this.cale.setDate(date) |
||||
|
this.weeks = this.cale.weeks |
||||
|
this.nowDate = this.cale.getInfo(date) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
$uni-bg-color-mask: rgba($color: #000000, $alpha: 0.4); |
||||
|
$uni-border-color: #EDEDED; |
||||
|
$uni-text-color: #333; |
||||
|
$uni-bg-color-hover:#f1f1f1; |
||||
|
$uni-font-size-base:14px; |
||||
|
$uni-text-color-placeholder: #808080; |
||||
|
$uni-color-subtitle: #555555; |
||||
|
$uni-text-color-grey:#999; |
||||
|
.uni-calendar { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__mask { |
||||
|
position: fixed; |
||||
|
bottom: 0; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
background-color: $uni-bg-color-mask; |
||||
|
transition-property: opacity; |
||||
|
transition-duration: 0.3s; |
||||
|
opacity: 0; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
z-index: 99; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.uni-calendar--mask-show { |
||||
|
opacity: 1 |
||||
|
} |
||||
|
|
||||
|
.uni-calendar--fixed { |
||||
|
position: fixed; |
||||
|
/* #ifdef APP-NVUE */ |
||||
|
bottom: 0; |
||||
|
/* #endif */ |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
transition-property: transform; |
||||
|
transition-duration: 0.3s; |
||||
|
transform: translateY(460px); |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
bottom: calc(var(--window-bottom)); |
||||
|
z-index: 99; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.uni-calendar--ani-show { |
||||
|
transform: translateY(0); |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__content { |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__header { |
||||
|
position: relative; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: row; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
height: 50px; |
||||
|
border-bottom-color: $uni-border-color; |
||||
|
border-bottom-style: solid; |
||||
|
border-bottom-width: 1px; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar--fixed-top { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: row; |
||||
|
justify-content: space-between; |
||||
|
border-top-color: $uni-border-color; |
||||
|
border-top-style: solid; |
||||
|
border-top-width: 1px; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar--fixed-width { |
||||
|
width: 50px; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__backtoday { |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
top: 25rpx; |
||||
|
padding: 0 5px; |
||||
|
padding-left: 10px; |
||||
|
height: 25px; |
||||
|
line-height: 25px; |
||||
|
font-size: 12px; |
||||
|
border-top-left-radius: 25px; |
||||
|
border-bottom-left-radius: 25px; |
||||
|
color: $uni-text-color; |
||||
|
background-color: $uni-bg-color-hover; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__header-text { |
||||
|
text-align: center; |
||||
|
width: 100px; |
||||
|
font-size: $uni-font-size-base; |
||||
|
color: $uni-text-color; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__header-btn-box { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
width: 50px; |
||||
|
height: 50px; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__header-btn { |
||||
|
width: 10px; |
||||
|
height: 10px; |
||||
|
border-left-color: $uni-text-color-placeholder; |
||||
|
border-left-style: solid; |
||||
|
border-left-width: 2px; |
||||
|
border-top-color: $uni-color-subtitle; |
||||
|
border-top-style: solid; |
||||
|
border-top-width: 2px; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar--left { |
||||
|
transform: rotate(-45deg); |
||||
|
} |
||||
|
|
||||
|
.uni-calendar--right { |
||||
|
transform: rotate(135deg); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.uni-calendar__weeks { |
||||
|
position: relative; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: row; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__weeks-item { |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__weeks-day { |
||||
|
flex: 1; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: column; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
height: 45px; |
||||
|
border-bottom-color: #F5F5F5; |
||||
|
border-bottom-style: solid; |
||||
|
border-bottom-width: 1px; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__weeks-day-text { |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__box { |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__box-bg { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.uni-calendar__box-bg-text { |
||||
|
font-size: 200px; |
||||
|
font-weight: bold; |
||||
|
color: $uni-text-color-grey; |
||||
|
opacity: 0.1; |
||||
|
text-align: center; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
line-height: 1; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,360 @@ |
|||||
|
import CALENDAR from './calendar.js' |
||||
|
|
||||
|
class Calendar { |
||||
|
constructor({ |
||||
|
date, |
||||
|
selected, |
||||
|
startDate, |
||||
|
endDate, |
||||
|
range |
||||
|
} = {}) { |
||||
|
// 当前日期
|
||||
|
this.date = this.getDate(new Date()) // 当前初入日期
|
||||
|
// 打点信息
|
||||
|
this.selected = selected || []; |
||||
|
// 范围开始
|
||||
|
this.startDate = startDate |
||||
|
// 范围结束
|
||||
|
this.endDate = endDate |
||||
|
this.range = range |
||||
|
// 多选状态
|
||||
|
this.cleanMultipleStatus() |
||||
|
// 每周日期
|
||||
|
this.weeks = {} |
||||
|
// this._getWeek(this.date.fullDate)
|
||||
|
} |
||||
|
/** |
||||
|
* 设置日期 |
||||
|
* @param {Object} date |
||||
|
*/ |
||||
|
setDate(date) { |
||||
|
this.selectDate = this.getDate(date) |
||||
|
this._getWeek(this.selectDate.fullDate) |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 清理多选状态 |
||||
|
*/ |
||||
|
cleanMultipleStatus() { |
||||
|
this.multipleStatus = { |
||||
|
before: '', |
||||
|
after: '', |
||||
|
data: [] |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 重置开始日期 |
||||
|
*/ |
||||
|
resetSatrtDate(startDate) { |
||||
|
// 范围开始
|
||||
|
this.startDate = startDate |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 重置结束日期 |
||||
|
*/ |
||||
|
resetEndDate(endDate) { |
||||
|
// 范围结束
|
||||
|
this.endDate = endDate |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取任意时间 |
||||
|
*/ |
||||
|
getDate(date, AddDayCount = 0, str = 'day') { |
||||
|
if (!date) { |
||||
|
date = new Date() |
||||
|
} |
||||
|
if (typeof date !== 'object') { |
||||
|
date = date.replace(/-/g, '/') |
||||
|
} |
||||
|
const dd = new Date(date) |
||||
|
switch (str) { |
||||
|
case 'day': |
||||
|
dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
|
||||
|
break |
||||
|
case 'month': |
||||
|
if (dd.getDate() === 31 && AddDayCount>0) { |
||||
|
dd.setDate(dd.getDate() + AddDayCount) |
||||
|
} else { |
||||
|
const preMonth = dd.getMonth() |
||||
|
dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期
|
||||
|
const nextMonth = dd.getMonth() |
||||
|
// 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
|
||||
|
if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){ |
||||
|
dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount)) |
||||
|
} |
||||
|
// 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
|
||||
|
if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){ |
||||
|
dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount)) |
||||
|
} |
||||
|
} |
||||
|
break |
||||
|
case 'year': |
||||
|
dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
|
||||
|
break |
||||
|
} |
||||
|
const y = dd.getFullYear() |
||||
|
const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
|
||||
|
const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
|
||||
|
return { |
||||
|
fullDate: y + '-' + m + '-' + d, |
||||
|
year: y, |
||||
|
month: m, |
||||
|
date: d, |
||||
|
day: dd.getDay() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 获取上月剩余天数 |
||||
|
*/ |
||||
|
_getLastMonthDays(firstDay, full) { |
||||
|
let dateArr = [] |
||||
|
for (let i = firstDay; i > 0; i--) { |
||||
|
const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() |
||||
|
dateArr.push({ |
||||
|
date: beforeDate, |
||||
|
month: full.month - 1, |
||||
|
lunar: this.getlunar(full.year, full.month - 1, beforeDate), |
||||
|
disable: true |
||||
|
}) |
||||
|
} |
||||
|
return dateArr |
||||
|
} |
||||
|
/** |
||||
|
* 获取本月天数 |
||||
|
*/ |
||||
|
_currentMonthDys(dateData, full) { |
||||
|
let dateArr = [] |
||||
|
let fullDate = this.date.fullDate |
||||
|
for (let i = 1; i <= dateData; i++) { |
||||
|
let nowDate = full.year + '-' + (full.month < 10 ? |
||||
|
full.month : full.month) + '-' + (i < 10 ? |
||||
|
'0' + i : i) |
||||
|
// 是否今天
|
||||
|
let isDay = fullDate === nowDate |
||||
|
// 获取打点信息
|
||||
|
let info = this.selected && this.selected.find((item) => { |
||||
|
if (this.dateEqual(nowDate, item.date)) { |
||||
|
return item |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
// 日期禁用
|
||||
|
let disableBefore = true |
||||
|
let disableAfter = true |
||||
|
if (this.startDate) { |
||||
|
// let dateCompBefore = this.dateCompare(this.startDate, fullDate)
|
||||
|
// disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
|
||||
|
disableBefore = this.dateCompare(this.startDate, nowDate) |
||||
|
} |
||||
|
|
||||
|
if (this.endDate) { |
||||
|
// let dateCompAfter = this.dateCompare(fullDate, this.endDate)
|
||||
|
// disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
|
||||
|
disableAfter = this.dateCompare(nowDate, this.endDate) |
||||
|
} |
||||
|
let multiples = this.multipleStatus.data |
||||
|
let checked = false |
||||
|
let multiplesStatus = -1 |
||||
|
if (this.range) { |
||||
|
if (multiples) { |
||||
|
multiplesStatus = multiples.findIndex((item) => { |
||||
|
return this.dateEqual(item, nowDate) |
||||
|
}) |
||||
|
} |
||||
|
if (multiplesStatus !== -1) { |
||||
|
checked = true |
||||
|
} |
||||
|
} |
||||
|
let data = { |
||||
|
fullDate: nowDate, |
||||
|
year: full.year, |
||||
|
date: i, |
||||
|
multiple: this.range ? checked : false, |
||||
|
beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate), |
||||
|
afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate), |
||||
|
month: full.month, |
||||
|
lunar: this.getlunar(full.year, full.month, i), |
||||
|
disable: !(disableBefore && disableAfter), |
||||
|
isDay |
||||
|
} |
||||
|
if (info) { |
||||
|
data.extraInfo = info |
||||
|
} |
||||
|
|
||||
|
dateArr.push(data) |
||||
|
} |
||||
|
return dateArr |
||||
|
} |
||||
|
/** |
||||
|
* 获取下月天数 |
||||
|
*/ |
||||
|
_getNextMonthDays(surplus, full) { |
||||
|
let dateArr = [] |
||||
|
for (let i = 1; i < surplus + 1; i++) { |
||||
|
dateArr.push({ |
||||
|
date: i, |
||||
|
month: Number(full.month) + 1, |
||||
|
lunar: this.getlunar(full.year, Number(full.month) + 1, i), |
||||
|
disable: true |
||||
|
}) |
||||
|
} |
||||
|
return dateArr |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取当前日期详情 |
||||
|
* @param {Object} date |
||||
|
*/ |
||||
|
getInfo(date) { |
||||
|
if (!date) { |
||||
|
date = new Date() |
||||
|
} |
||||
|
const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) |
||||
|
return dateInfo |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 比较时间大小 |
||||
|
*/ |
||||
|
dateCompare(startDate, endDate) { |
||||
|
// 计算截止时间
|
||||
|
startDate = new Date(startDate.replace('-', '/').replace('-', '/')) |
||||
|
// 计算详细项的截止时间
|
||||
|
endDate = new Date(endDate.replace('-', '/').replace('-', '/')) |
||||
|
if (startDate <= endDate) { |
||||
|
return true |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 比较时间是否相等 |
||||
|
*/ |
||||
|
dateEqual(before, after) { |
||||
|
// 计算截止时间
|
||||
|
before = new Date(before.replace('-', '/').replace('-', '/')) |
||||
|
// 计算详细项的截止时间
|
||||
|
after = new Date(after.replace('-', '/').replace('-', '/')) |
||||
|
if (before.getTime() - after.getTime() === 0) { |
||||
|
return true |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 获取日期范围内所有日期 |
||||
|
* @param {Object} begin |
||||
|
* @param {Object} end |
||||
|
*/ |
||||
|
geDateAll(begin, end) { |
||||
|
var arr = [] |
||||
|
var ab = begin.split('-') |
||||
|
var ae = end.split('-') |
||||
|
var db = new Date() |
||||
|
db.setFullYear(ab[0], ab[1] - 1, ab[2]) |
||||
|
var de = new Date() |
||||
|
de.setFullYear(ae[0], ae[1] - 1, ae[2]) |
||||
|
var unixDb = db.getTime() - 24 * 60 * 60 * 1000 |
||||
|
var unixDe = de.getTime() - 24 * 60 * 60 * 1000 |
||||
|
for (var k = unixDb; k <= unixDe;) { |
||||
|
k = k + 24 * 60 * 60 * 1000 |
||||
|
arr.push(this.getDate(new Date(parseInt(k))).fullDate) |
||||
|
} |
||||
|
return arr |
||||
|
} |
||||
|
/** |
||||
|
* 计算阴历日期显示 |
||||
|
*/ |
||||
|
getlunar(year, month, date) { |
||||
|
return CALENDAR.solar2lunar(year, month, date) |
||||
|
} |
||||
|
/** |
||||
|
* 设置打点 |
||||
|
*/ |
||||
|
setSelectInfo(data, value) { |
||||
|
this.selected = value |
||||
|
this._getWeek(data) |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取多选状态 |
||||
|
*/ |
||||
|
setMultiple(fullDate) { |
||||
|
let { |
||||
|
before, |
||||
|
after |
||||
|
} = this.multipleStatus |
||||
|
|
||||
|
if (!this.range) return |
||||
|
if (before && after) { |
||||
|
this.multipleStatus.before = fullDate |
||||
|
this.multipleStatus.after = '' |
||||
|
this.multipleStatus.data = [] |
||||
|
} else { |
||||
|
if (!before) { |
||||
|
this.multipleStatus.before = fullDate |
||||
|
} else { |
||||
|
this.multipleStatus.after = fullDate |
||||
|
if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { |
||||
|
this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); |
||||
|
} else { |
||||
|
this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
this._getWeek(fullDate) |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取每周数据 |
||||
|
* @param {Object} dateData |
||||
|
*/ |
||||
|
_getWeek(dateData) { |
||||
|
const { |
||||
|
year, |
||||
|
month |
||||
|
} = this.getDate(dateData) |
||||
|
let firstDay = new Date(year, month - 1, 1).getDay() |
||||
|
let currentDay = new Date(year, month, 0).getDate() |
||||
|
let dates = { |
||||
|
lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
|
||||
|
currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
|
||||
|
nextMonthDays: [], // 下个月开始几天
|
||||
|
weeks: [] |
||||
|
} |
||||
|
let canlender = [] |
||||
|
const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) |
||||
|
dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) |
||||
|
canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) |
||||
|
let weeks = {} |
||||
|
// 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
|
||||
|
for (let i = 0; i < canlender.length; i++) { |
||||
|
if (i % 7 === 0) { |
||||
|
weeks[parseInt(i / 7)] = new Array(7) |
||||
|
} |
||||
|
weeks[parseInt(i / 7)][i % 7] = canlender[i] |
||||
|
} |
||||
|
this.canlender = canlender |
||||
|
this.weeks = weeks |
||||
|
} |
||||
|
|
||||
|
//静态方法
|
||||
|
// static init(date) {
|
||||
|
// if (!this.instance) {
|
||||
|
// this.instance = new Calendar(date);
|
||||
|
// }
|
||||
|
// return this.instance;
|
||||
|
// }
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
export default Calendar |
||||
@ -0,0 +1,86 @@ |
|||||
|
{ |
||||
|
"id": "uni-calendar", |
||||
|
"displayName": "uni-calendar 日历", |
||||
|
"version": "1.4.12", |
||||
|
"description": "日历组件", |
||||
|
"keywords": [ |
||||
|
"uni-ui", |
||||
|
"uniui", |
||||
|
"日历", |
||||
|
"", |
||||
|
"打卡", |
||||
|
"日历选择" |
||||
|
], |
||||
|
"repository": "https://github.com/dcloudio/uni-ui", |
||||
|
"engines": { |
||||
|
"HBuilderX": "" |
||||
|
}, |
||||
|
"directories": { |
||||
|
"example": "../../temps/example_temps" |
||||
|
}, |
||||
|
"dcloudext": { |
||||
|
"sale": { |
||||
|
"regular": { |
||||
|
"price": "0.00" |
||||
|
}, |
||||
|
"sourcecode": { |
||||
|
"price": "0.00" |
||||
|
} |
||||
|
}, |
||||
|
"contact": { |
||||
|
"qq": "" |
||||
|
}, |
||||
|
"declaration": { |
||||
|
"ads": "无", |
||||
|
"data": "无", |
||||
|
"permissions": "无" |
||||
|
}, |
||||
|
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", |
||||
|
"type": "component-vue" |
||||
|
}, |
||||
|
"uni_modules": { |
||||
|
"dependencies": [], |
||||
|
"encrypt": [], |
||||
|
"platforms": { |
||||
|
"cloud": { |
||||
|
"tcb": "y", |
||||
|
"aliyun": "y", |
||||
|
"alipay": "n" |
||||
|
}, |
||||
|
"client": { |
||||
|
"App": { |
||||
|
"app-vue": "y", |
||||
|
"app-nvue": "y" |
||||
|
}, |
||||
|
"H5-mobile": { |
||||
|
"Safari": "y", |
||||
|
"Android Browser": "y", |
||||
|
"微信浏览器(Android)": "y", |
||||
|
"QQ浏览器(Android)": "y" |
||||
|
}, |
||||
|
"H5-pc": { |
||||
|
"Chrome": "y", |
||||
|
"IE": "y", |
||||
|
"Edge": "y", |
||||
|
"Firefox": "y", |
||||
|
"Safari": "y" |
||||
|
}, |
||||
|
"小程序": { |
||||
|
"微信": "y", |
||||
|
"阿里": "y", |
||||
|
"百度": "y", |
||||
|
"字节跳动": "y", |
||||
|
"QQ": "y" |
||||
|
}, |
||||
|
"快应用": { |
||||
|
"华为": "u", |
||||
|
"联盟": "u" |
||||
|
}, |
||||
|
"Vue": { |
||||
|
"vue2": "y", |
||||
|
"vue3": "y" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,103 @@ |
|||||
|
|
||||
|
|
||||
|
## Calendar 日历 |
||||
|
> **组件名:uni-calendar** |
||||
|
> 代码块: `uCalendar` |
||||
|
|
||||
|
|
||||
|
日历组件 |
||||
|
|
||||
|
> **注意事项** |
||||
|
> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 |
||||
|
> - 本组件农历转换使用的js是 [@1900-2100区间内的公历、农历互转](https://github.com/jjonline/calendar.js) |
||||
|
> - 仅支持自定义组件模式 |
||||
|
> - `date`属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date() |
||||
|
> - 通过 `insert` 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意 |
||||
|
> - 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动 |
||||
|
|
||||
|
|
||||
|
### 安装方式 |
||||
|
|
||||
|
本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 |
||||
|
|
||||
|
如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) |
||||
|
|
||||
|
### 基本用法 |
||||
|
|
||||
|
在 ``template`` 中使用组件 |
||||
|
|
||||
|
```html |
||||
|
<view> |
||||
|
<uni-calendar |
||||
|
:insert="true" |
||||
|
:lunar="true" |
||||
|
:start-date="'2019-3-2'" |
||||
|
:end-date="'2019-5-20'" |
||||
|
@change="change" |
||||
|
/> |
||||
|
</view> |
||||
|
``` |
||||
|
|
||||
|
### 通过方法打开日历 |
||||
|
|
||||
|
需要设置 `insert` 为 `false` |
||||
|
|
||||
|
```html |
||||
|
<view> |
||||
|
<uni-calendar |
||||
|
ref="calendar" |
||||
|
:insert="false" |
||||
|
@confirm="confirm" |
||||
|
/> |
||||
|
<button @click="open">打开日历</button> |
||||
|
</view> |
||||
|
``` |
||||
|
|
||||
|
```javascript |
||||
|
|
||||
|
export default { |
||||
|
data() { |
||||
|
return {}; |
||||
|
}, |
||||
|
methods: { |
||||
|
open(){ |
||||
|
this.$refs.calendar.open(); |
||||
|
}, |
||||
|
confirm(e) { |
||||
|
console.log(e); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
|
||||
|
## API |
||||
|
|
||||
|
### Calendar Props |
||||
|
|
||||
|
| 属性名 | 类型 | 默认值| 说明 | |
||||
|
| - | - | - | - | |
||||
|
| date | String |- | 自定义当前时间,默认为今天 | |
||||
|
| lunar | Boolean | false | 显示农历 | |
||||
|
| startDate | String |- | 日期选择范围-开始日期 | |
||||
|
| endDate | String |- | 日期选择范围-结束日期 | |
||||
|
| range | Boolean | false | 范围选择 | |
||||
|
| insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 | |
||||
|
|clearDate |Boolean |true |弹窗模式是否清空上次选择内容 | |
||||
|
| selected | Array |- | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] | |
||||
|
|showMonth | Boolean | true | 是否显示月份为背景 | |
||||
|
|
||||
|
### Calendar Events |
||||
|
|
||||
|
| 事件名 | 说明 |返回值| |
||||
|
| - | - | - | |
||||
|
| open | 弹出日历组件,`insert :false` 时生效|- | |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
## 组件示例 |
||||
|
|
||||
|
点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar) |
||||
@ -0,0 +1,42 @@ |
|||||
|
## 2.0.10(2024-06-07) |
||||
|
- 优化 uni-app x 中,size 属性的类型 |
||||
|
## 2.0.9(2024-01-12) |
||||
|
fix: 修复图标大小默认值错误的问题 |
||||
|
## 2.0.8(2023-12-14) |
||||
|
- 修复 项目未使用 ts 情况下,打包报错的bug |
||||
|
## 2.0.7(2023-12-14) |
||||
|
- 修复 size 属性为 string 时,不加单位导致尺寸异常的bug |
||||
|
## 2.0.6(2023-12-11) |
||||
|
- 优化 兼容老版本icon类型,如 top ,bottom 等 |
||||
|
## 2.0.5(2023-12-11) |
||||
|
- 优化 兼容老版本icon类型,如 top ,bottom 等 |
||||
|
## 2.0.4(2023-12-06) |
||||
|
- 优化 uni-app x 下示例项目图标排序 |
||||
|
## 2.0.3(2023-12-06) |
||||
|
- 修复 nvue下引入组件报错的bug |
||||
|
## 2.0.2(2023-12-05) |
||||
|
-优化 size 属性支持单位 |
||||
|
## 2.0.1(2023-12-05) |
||||
|
- 新增 uni-app x 支持定义图标 |
||||
|
## 1.3.5(2022-01-24) |
||||
|
- 优化 size 属性可以传入不带单位的字符串数值 |
||||
|
## 1.3.4(2022-01-24) |
||||
|
- 优化 size 支持其他单位 |
||||
|
## 1.3.3(2022-01-17) |
||||
|
- 修复 nvue 有些图标不显示的bug,兼容老版本图标 |
||||
|
## 1.3.2(2021-12-01) |
||||
|
- 优化 示例可复制图标名称 |
||||
|
## 1.3.1(2021-11-23) |
||||
|
- 优化 兼容旧组件 type 值 |
||||
|
## 1.3.0(2021-11-19) |
||||
|
- 新增 更多图标 |
||||
|
- 优化 自定义图标使用方式 |
||||
|
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) |
||||
|
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) |
||||
|
## 1.1.7(2021-11-08) |
||||
|
## 1.2.0(2021-07-30) |
||||
|
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) |
||||
|
## 1.1.5(2021-05-12) |
||||
|
- 新增 组件示例地址 |
||||
|
## 1.1.4(2021-02-05) |
||||
|
- 调整为uni_modules目录规范 |
||||
@ -0,0 +1,91 @@ |
|||||
|
<template> |
||||
|
<text class="uni-icons" :style="styleObj"> |
||||
|
<slot>{{unicode}}</slot> |
||||
|
</text> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { fontData, IconsDataItem } from './uniicons_file' |
||||
|
|
||||
|
/** |
||||
|
* Icons 图标 |
||||
|
* @description 用于展示 icon 图标 |
||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=28 |
||||
|
* @property {Number,String} size 图标大小 |
||||
|
* @property {String} type 图标图案,参考示例 |
||||
|
* @property {String} color 图标颜色 |
||||
|
* @property {String} customPrefix 自定义图标 |
||||
|
* @event {Function} click 点击 Icon 触发事件 |
||||
|
*/ |
||||
|
export default { |
||||
|
name: "uni-icons", |
||||
|
props: { |
||||
|
type: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
color: { |
||||
|
type: String, |
||||
|
default: '#333333' |
||||
|
}, |
||||
|
size: { |
||||
|
type: [Number, String], |
||||
|
default: 16 |
||||
|
}, |
||||
|
fontFamily: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return {}; |
||||
|
}, |
||||
|
computed: { |
||||
|
unicode() : string { |
||||
|
let codes = fontData.find((item : IconsDataItem) : boolean => { return item.font_class == this.type }) |
||||
|
if (codes !== null) { |
||||
|
return codes.unicode |
||||
|
} |
||||
|
return '' |
||||
|
}, |
||||
|
iconSize() : string { |
||||
|
const size = this.size |
||||
|
if (typeof size == 'string') { |
||||
|
const reg = /^[0-9]*$/g |
||||
|
return reg.test(size as string) ? '' + size + 'px' : '' + size; |
||||
|
// return '' + this.size |
||||
|
} |
||||
|
return this.getFontSize(size as number) |
||||
|
}, |
||||
|
styleObj() : UTSJSONObject { |
||||
|
if (this.fontFamily !== '') { |
||||
|
return { color: this.color, fontSize: this.iconSize, fontFamily: this.fontFamily } |
||||
|
} |
||||
|
return { color: this.color, fontSize: this.iconSize } |
||||
|
} |
||||
|
}, |
||||
|
created() { }, |
||||
|
methods: { |
||||
|
/** |
||||
|
* 字体大小 |
||||
|
*/ |
||||
|
getFontSize(size : number) : string { |
||||
|
return size + 'px'; |
||||
|
}, |
||||
|
}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
@font-face { |
||||
|
font-family: UniIconsFontFamily; |
||||
|
src: url('./uniicons.ttf'); |
||||
|
} |
||||
|
|
||||
|
.uni-icons { |
||||
|
font-family: UniIconsFontFamily; |
||||
|
font-size: 18px; |
||||
|
font-style: normal; |
||||
|
color: #333; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,110 @@ |
|||||
|
<template> |
||||
|
<!-- #ifdef APP-NVUE --> |
||||
|
<text :style="styleObj" class="uni-icons" @click="_onClick">{{unicode}}</text> |
||||
|
<!-- #endif --> |
||||
|
<!-- #ifndef APP-NVUE --> |
||||
|
<text :style="styleObj" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"> |
||||
|
<slot></slot> |
||||
|
</text> |
||||
|
<!-- #endif --> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { fontData } from './uniicons_file_vue.js'; |
||||
|
|
||||
|
const getVal = (val) => { |
||||
|
const reg = /^[0-9]*$/g |
||||
|
return (typeof val === 'number' || reg.test(val)) ? val + 'px' : val; |
||||
|
} |
||||
|
|
||||
|
// #ifdef APP-NVUE |
||||
|
var domModule = weex.requireModule('dom'); |
||||
|
import iconUrl from './uniicons.ttf' |
||||
|
domModule.addRule('fontFace', { |
||||
|
'fontFamily': "uniicons", |
||||
|
'src': "url('" + iconUrl + "')" |
||||
|
}); |
||||
|
// #endif |
||||
|
|
||||
|
/** |
||||
|
* Icons 图标 |
||||
|
* @description 用于展示 icons 图标 |
||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=28 |
||||
|
* @property {Number} size 图标大小 |
||||
|
* @property {String} type 图标图案,参考示例 |
||||
|
* @property {String} color 图标颜色 |
||||
|
* @property {String} customPrefix 自定义图标 |
||||
|
* @event {Function} click 点击 Icon 触发事件 |
||||
|
*/ |
||||
|
export default { |
||||
|
name: 'UniIcons', |
||||
|
emits: ['click'], |
||||
|
props: { |
||||
|
type: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
color: { |
||||
|
type: String, |
||||
|
default: '#333333' |
||||
|
}, |
||||
|
size: { |
||||
|
type: [Number, String], |
||||
|
default: 16 |
||||
|
}, |
||||
|
customPrefix: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
fontFamily: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
icons: fontData |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
unicode() { |
||||
|
let code = this.icons.find(v => v.font_class === this.type) |
||||
|
if (code) { |
||||
|
return code.unicode |
||||
|
} |
||||
|
return '' |
||||
|
}, |
||||
|
iconSize() { |
||||
|
return getVal(this.size) |
||||
|
}, |
||||
|
styleObj() { |
||||
|
if (this.fontFamily !== '') { |
||||
|
return `color: ${this.color}; font-size: ${this.iconSize}; font-family: ${this.fontFamily};` |
||||
|
} |
||||
|
return `color: ${this.color}; font-size: ${this.iconSize};` |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
_onClick() { |
||||
|
this.$emit('click') |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
@import './uniicons.css'; |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: uniicons; |
||||
|
src: url('./uniicons.ttf'); |
||||
|
} |
||||
|
|
||||
|
/* #endif */ |
||||
|
.uni-icons { |
||||
|
font-family: uniicons; |
||||
|
text-decoration: none; |
||||
|
text-align: center; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,664 @@ |
|||||
|
|
||||
|
.uniui-cart-filled:before { |
||||
|
content: "\e6d0"; |
||||
|
} |
||||
|
|
||||
|
.uniui-gift-filled:before { |
||||
|
content: "\e6c4"; |
||||
|
} |
||||
|
|
||||
|
.uniui-color:before { |
||||
|
content: "\e6cf"; |
||||
|
} |
||||
|
|
||||
|
.uniui-wallet:before { |
||||
|
content: "\e6b1"; |
||||
|
} |
||||
|
|
||||
|
.uniui-settings-filled:before { |
||||
|
content: "\e6ce"; |
||||
|
} |
||||
|
|
||||
|
.uniui-auth-filled:before { |
||||
|
content: "\e6cc"; |
||||
|
} |
||||
|
|
||||
|
.uniui-shop-filled:before { |
||||
|
content: "\e6cd"; |
||||
|
} |
||||
|
|
||||
|
.uniui-staff-filled:before { |
||||
|
content: "\e6cb"; |
||||
|
} |
||||
|
|
||||
|
.uniui-vip-filled:before { |
||||
|
content: "\e6c6"; |
||||
|
} |
||||
|
|
||||
|
.uniui-plus-filled:before { |
||||
|
content: "\e6c7"; |
||||
|
} |
||||
|
|
||||
|
.uniui-folder-add-filled:before { |
||||
|
content: "\e6c8"; |
||||
|
} |
||||
|
|
||||
|
.uniui-color-filled:before { |
||||
|
content: "\e6c9"; |
||||
|
} |
||||
|
|
||||
|
.uniui-tune-filled:before { |
||||
|
content: "\e6ca"; |
||||
|
} |
||||
|
|
||||
|
.uniui-calendar-filled:before { |
||||
|
content: "\e6c0"; |
||||
|
} |
||||
|
|
||||
|
.uniui-notification-filled:before { |
||||
|
content: "\e6c1"; |
||||
|
} |
||||
|
|
||||
|
.uniui-wallet-filled:before { |
||||
|
content: "\e6c2"; |
||||
|
} |
||||
|
|
||||
|
.uniui-medal-filled:before { |
||||
|
content: "\e6c3"; |
||||
|
} |
||||
|
|
||||
|
.uniui-fire-filled:before { |
||||
|
content: "\e6c5"; |
||||
|
} |
||||
|
|
||||
|
.uniui-refreshempty:before { |
||||
|
content: "\e6bf"; |
||||
|
} |
||||
|
|
||||
|
.uniui-location-filled:before { |
||||
|
content: "\e6af"; |
||||
|
} |
||||
|
|
||||
|
.uniui-person-filled:before { |
||||
|
content: "\e69d"; |
||||
|
} |
||||
|
|
||||
|
.uniui-personadd-filled:before { |
||||
|
content: "\e698"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrowthinleft:before { |
||||
|
content: "\e6d2"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrowthinup:before { |
||||
|
content: "\e6d3"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrowthindown:before { |
||||
|
content: "\e6d4"; |
||||
|
} |
||||
|
|
||||
|
.uniui-back:before { |
||||
|
content: "\e6b9"; |
||||
|
} |
||||
|
|
||||
|
.uniui-forward:before { |
||||
|
content: "\e6ba"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrow-right:before { |
||||
|
content: "\e6bb"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrow-left:before { |
||||
|
content: "\e6bc"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrow-up:before { |
||||
|
content: "\e6bd"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrow-down:before { |
||||
|
content: "\e6be"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrowthinright:before { |
||||
|
content: "\e6d1"; |
||||
|
} |
||||
|
|
||||
|
.uniui-down:before { |
||||
|
content: "\e6b8"; |
||||
|
} |
||||
|
|
||||
|
.uniui-bottom:before { |
||||
|
content: "\e6b8"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrowright:before { |
||||
|
content: "\e6d5"; |
||||
|
} |
||||
|
|
||||
|
.uniui-right:before { |
||||
|
content: "\e6b5"; |
||||
|
} |
||||
|
|
||||
|
.uniui-up:before { |
||||
|
content: "\e6b6"; |
||||
|
} |
||||
|
|
||||
|
.uniui-top:before { |
||||
|
content: "\e6b6"; |
||||
|
} |
||||
|
|
||||
|
.uniui-left:before { |
||||
|
content: "\e6b7"; |
||||
|
} |
||||
|
|
||||
|
.uniui-arrowup:before { |
||||
|
content: "\e6d6"; |
||||
|
} |
||||
|
|
||||
|
.uniui-eye:before { |
||||
|
content: "\e651"; |
||||
|
} |
||||
|
|
||||
|
.uniui-eye-filled:before { |
||||
|
content: "\e66a"; |
||||
|
} |
||||
|
|
||||
|
.uniui-eye-slash:before { |
||||
|
content: "\e6b3"; |
||||
|
} |
||||
|
|
||||
|
.uniui-eye-slash-filled:before { |
||||
|
content: "\e6b4"; |
||||
|
} |
||||
|
|
||||
|
.uniui-info-filled:before { |
||||
|
content: "\e649"; |
||||
|
} |
||||
|
|
||||
|
.uniui-reload:before { |
||||
|
content: "\e6b2"; |
||||
|
} |
||||
|
|
||||
|
.uniui-micoff-filled:before { |
||||
|
content: "\e6b0"; |
||||
|
} |
||||
|
|
||||
|
.uniui-map-pin-ellipse:before { |
||||
|
content: "\e6ac"; |
||||
|
} |
||||
|
|
||||
|
.uniui-map-pin:before { |
||||
|
content: "\e6ad"; |
||||
|
} |
||||
|
|
||||
|
.uniui-location:before { |
||||
|
content: "\e6ae"; |
||||
|
} |
||||
|
|
||||
|
.uniui-starhalf:before { |
||||
|
content: "\e683"; |
||||
|
} |
||||
|
|
||||
|
.uniui-star:before { |
||||
|
content: "\e688"; |
||||
|
} |
||||
|
|
||||
|
.uniui-star-filled:before { |
||||
|
content: "\e68f"; |
||||
|
} |
||||
|
|
||||
|
.uniui-calendar:before { |
||||
|
content: "\e6a0"; |
||||
|
} |
||||
|
|
||||
|
.uniui-fire:before { |
||||
|
content: "\e6a1"; |
||||
|
} |
||||
|
|
||||
|
.uniui-medal:before { |
||||
|
content: "\e6a2"; |
||||
|
} |
||||
|
|
||||
|
.uniui-font:before { |
||||
|
content: "\e6a3"; |
||||
|
} |
||||
|
|
||||
|
.uniui-gift:before { |
||||
|
content: "\e6a4"; |
||||
|
} |
||||
|
|
||||
|
.uniui-link:before { |
||||
|
content: "\e6a5"; |
||||
|
} |
||||
|
|
||||
|
.uniui-notification:before { |
||||
|
content: "\e6a6"; |
||||
|
} |
||||
|
|
||||
|
.uniui-staff:before { |
||||
|
content: "\e6a7"; |
||||
|
} |
||||
|
|
||||
|
.uniui-vip:before { |
||||
|
content: "\e6a8"; |
||||
|
} |
||||
|
|
||||
|
.uniui-folder-add:before { |
||||
|
content: "\e6a9"; |
||||
|
} |
||||
|
|
||||
|
.uniui-tune:before { |
||||
|
content: "\e6aa"; |
||||
|
} |
||||
|
|
||||
|
.uniui-auth:before { |
||||
|
content: "\e6ab"; |
||||
|
} |
||||
|
|
||||
|
.uniui-person:before { |
||||
|
content: "\e699"; |
||||
|
} |
||||
|
|
||||
|
.uniui-email-filled:before { |
||||
|
content: "\e69a"; |
||||
|
} |
||||
|
|
||||
|
.uniui-phone-filled:before { |
||||
|
content: "\e69b"; |
||||
|
} |
||||
|
|
||||
|
.uniui-phone:before { |
||||
|
content: "\e69c"; |
||||
|
} |
||||
|
|
||||
|
.uniui-email:before { |
||||
|
content: "\e69e"; |
||||
|
} |
||||
|
|
||||
|
.uniui-personadd:before { |
||||
|
content: "\e69f"; |
||||
|
} |
||||
|
|
||||
|
.uniui-chatboxes-filled:before { |
||||
|
content: "\e692"; |
||||
|
} |
||||
|
|
||||
|
.uniui-contact:before { |
||||
|
content: "\e693"; |
||||
|
} |
||||
|
|
||||
|
.uniui-chatbubble-filled:before { |
||||
|
content: "\e694"; |
||||
|
} |
||||
|
|
||||
|
.uniui-contact-filled:before { |
||||
|
content: "\e695"; |
||||
|
} |
||||
|
|
||||
|
.uniui-chatboxes:before { |
||||
|
content: "\e696"; |
||||
|
} |
||||
|
|
||||
|
.uniui-chatbubble:before { |
||||
|
content: "\e697"; |
||||
|
} |
||||
|
|
||||
|
.uniui-upload-filled:before { |
||||
|
content: "\e68e"; |
||||
|
} |
||||
|
|
||||
|
.uniui-upload:before { |
||||
|
content: "\e690"; |
||||
|
} |
||||
|
|
||||
|
.uniui-weixin:before { |
||||
|
content: "\e691"; |
||||
|
} |
||||
|
|
||||
|
.uniui-compose:before { |
||||
|
content: "\e67f"; |
||||
|
} |
||||
|
|
||||
|
.uniui-qq:before { |
||||
|
content: "\e680"; |
||||
|
} |
||||
|
|
||||
|
.uniui-download-filled:before { |
||||
|
content: "\e681"; |
||||
|
} |
||||
|
|
||||
|
.uniui-pyq:before { |
||||
|
content: "\e682"; |
||||
|
} |
||||
|
|
||||
|
.uniui-sound:before { |
||||
|
content: "\e684"; |
||||
|
} |
||||
|
|
||||
|
.uniui-trash-filled:before { |
||||
|
content: "\e685"; |
||||
|
} |
||||
|
|
||||
|
.uniui-sound-filled:before { |
||||
|
content: "\e686"; |
||||
|
} |
||||
|
|
||||
|
.uniui-trash:before { |
||||
|
content: "\e687"; |
||||
|
} |
||||
|
|
||||
|
.uniui-videocam-filled:before { |
||||
|
content: "\e689"; |
||||
|
} |
||||
|
|
||||
|
.uniui-spinner-cycle:before { |
||||
|
content: "\e68a"; |
||||
|
} |
||||
|
|
||||
|
.uniui-weibo:before { |
||||
|
content: "\e68b"; |
||||
|
} |
||||
|
|
||||
|
.uniui-videocam:before { |
||||
|
content: "\e68c"; |
||||
|
} |
||||
|
|
||||
|
.uniui-download:before { |
||||
|
content: "\e68d"; |
||||
|
} |
||||
|
|
||||
|
.uniui-help:before { |
||||
|
content: "\e679"; |
||||
|
} |
||||
|
|
||||
|
.uniui-navigate-filled:before { |
||||
|
content: "\e67a"; |
||||
|
} |
||||
|
|
||||
|
.uniui-plusempty:before { |
||||
|
content: "\e67b"; |
||||
|
} |
||||
|
|
||||
|
.uniui-smallcircle:before { |
||||
|
content: "\e67c"; |
||||
|
} |
||||
|
|
||||
|
.uniui-minus-filled:before { |
||||
|
content: "\e67d"; |
||||
|
} |
||||
|
|
||||
|
.uniui-micoff:before { |
||||
|
content: "\e67e"; |
||||
|
} |
||||
|
|
||||
|
.uniui-closeempty:before { |
||||
|
content: "\e66c"; |
||||
|
} |
||||
|
|
||||
|
.uniui-clear:before { |
||||
|
content: "\e66d"; |
||||
|
} |
||||
|
|
||||
|
.uniui-navigate:before { |
||||
|
content: "\e66e"; |
||||
|
} |
||||
|
|
||||
|
.uniui-minus:before { |
||||
|
content: "\e66f"; |
||||
|
} |
||||
|
|
||||
|
.uniui-image:before { |
||||
|
content: "\e670"; |
||||
|
} |
||||
|
|
||||
|
.uniui-mic:before { |
||||
|
content: "\e671"; |
||||
|
} |
||||
|
|
||||
|
.uniui-paperplane:before { |
||||
|
content: "\e672"; |
||||
|
} |
||||
|
|
||||
|
.uniui-close:before { |
||||
|
content: "\e673"; |
||||
|
} |
||||
|
|
||||
|
.uniui-help-filled:before { |
||||
|
content: "\e674"; |
||||
|
} |
||||
|
|
||||
|
.uniui-paperplane-filled:before { |
||||
|
content: "\e675"; |
||||
|
} |
||||
|
|
||||
|
.uniui-plus:before { |
||||
|
content: "\e676"; |
||||
|
} |
||||
|
|
||||
|
.uniui-mic-filled:before { |
||||
|
content: "\e677"; |
||||
|
} |
||||
|
|
||||
|
.uniui-image-filled:before { |
||||
|
content: "\e678"; |
||||
|
} |
||||
|
|
||||
|
.uniui-locked-filled:before { |
||||
|
content: "\e668"; |
||||
|
} |
||||
|
|
||||
|
.uniui-info:before { |
||||
|
content: "\e669"; |
||||
|
} |
||||
|
|
||||
|
.uniui-locked:before { |
||||
|
content: "\e66b"; |
||||
|
} |
||||
|
|
||||
|
.uniui-camera-filled:before { |
||||
|
content: "\e658"; |
||||
|
} |
||||
|
|
||||
|
.uniui-chat-filled:before { |
||||
|
content: "\e659"; |
||||
|
} |
||||
|
|
||||
|
.uniui-camera:before { |
||||
|
content: "\e65a"; |
||||
|
} |
||||
|
|
||||
|
.uniui-circle:before { |
||||
|
content: "\e65b"; |
||||
|
} |
||||
|
|
||||
|
.uniui-checkmarkempty:before { |
||||
|
content: "\e65c"; |
||||
|
} |
||||
|
|
||||
|
.uniui-chat:before { |
||||
|
content: "\e65d"; |
||||
|
} |
||||
|
|
||||
|
.uniui-circle-filled:before { |
||||
|
content: "\e65e"; |
||||
|
} |
||||
|
|
||||
|
.uniui-flag:before { |
||||
|
content: "\e65f"; |
||||
|
} |
||||
|
|
||||
|
.uniui-flag-filled:before { |
||||
|
content: "\e660"; |
||||
|
} |
||||
|
|
||||
|
.uniui-gear-filled:before { |
||||
|
content: "\e661"; |
||||
|
} |
||||
|
|
||||
|
.uniui-home:before { |
||||
|
content: "\e662"; |
||||
|
} |
||||
|
|
||||
|
.uniui-home-filled:before { |
||||
|
content: "\e663"; |
||||
|
} |
||||
|
|
||||
|
.uniui-gear:before { |
||||
|
content: "\e664"; |
||||
|
} |
||||
|
|
||||
|
.uniui-smallcircle-filled:before { |
||||
|
content: "\e665"; |
||||
|
} |
||||
|
|
||||
|
.uniui-map-filled:before { |
||||
|
content: "\e666"; |
||||
|
} |
||||
|
|
||||
|
.uniui-map:before { |
||||
|
content: "\e667"; |
||||
|
} |
||||
|
|
||||
|
.uniui-refresh-filled:before { |
||||
|
content: "\e656"; |
||||
|
} |
||||
|
|
||||
|
.uniui-refresh:before { |
||||
|
content: "\e657"; |
||||
|
} |
||||
|
|
||||
|
.uniui-cloud-upload:before { |
||||
|
content: "\e645"; |
||||
|
} |
||||
|
|
||||
|
.uniui-cloud-download-filled:before { |
||||
|
content: "\e646"; |
||||
|
} |
||||
|
|
||||
|
.uniui-cloud-download:before { |
||||
|
content: "\e647"; |
||||
|
} |
||||
|
|
||||
|
.uniui-cloud-upload-filled:before { |
||||
|
content: "\e648"; |
||||
|
} |
||||
|
|
||||
|
.uniui-redo:before { |
||||
|
content: "\e64a"; |
||||
|
} |
||||
|
|
||||
|
.uniui-images-filled:before { |
||||
|
content: "\e64b"; |
||||
|
} |
||||
|
|
||||
|
.uniui-undo-filled:before { |
||||
|
content: "\e64c"; |
||||
|
} |
||||
|
|
||||
|
.uniui-more:before { |
||||
|
content: "\e64d"; |
||||
|
} |
||||
|
|
||||
|
.uniui-more-filled:before { |
||||
|
content: "\e64e"; |
||||
|
} |
||||
|
|
||||
|
.uniui-undo:before { |
||||
|
content: "\e64f"; |
||||
|
} |
||||
|
|
||||
|
.uniui-images:before { |
||||
|
content: "\e650"; |
||||
|
} |
||||
|
|
||||
|
.uniui-paperclip:before { |
||||
|
content: "\e652"; |
||||
|
} |
||||
|
|
||||
|
.uniui-settings:before { |
||||
|
content: "\e653"; |
||||
|
} |
||||
|
|
||||
|
.uniui-search:before { |
||||
|
content: "\e654"; |
||||
|
} |
||||
|
|
||||
|
.uniui-redo-filled:before { |
||||
|
content: "\e655"; |
||||
|
} |
||||
|
|
||||
|
.uniui-list:before { |
||||
|
content: "\e644"; |
||||
|
} |
||||
|
|
||||
|
.uniui-mail-open-filled:before { |
||||
|
content: "\e63a"; |
||||
|
} |
||||
|
|
||||
|
.uniui-hand-down-filled:before { |
||||
|
content: "\e63c"; |
||||
|
} |
||||
|
|
||||
|
.uniui-hand-down:before { |
||||
|
content: "\e63d"; |
||||
|
} |
||||
|
|
||||
|
.uniui-hand-up-filled:before { |
||||
|
content: "\e63e"; |
||||
|
} |
||||
|
|
||||
|
.uniui-hand-up:before { |
||||
|
content: "\e63f"; |
||||
|
} |
||||
|
|
||||
|
.uniui-heart-filled:before { |
||||
|
content: "\e641"; |
||||
|
} |
||||
|
|
||||
|
.uniui-mail-open:before { |
||||
|
content: "\e643"; |
||||
|
} |
||||
|
|
||||
|
.uniui-heart:before { |
||||
|
content: "\e639"; |
||||
|
} |
||||
|
|
||||
|
.uniui-loop:before { |
||||
|
content: "\e633"; |
||||
|
} |
||||
|
|
||||
|
.uniui-pulldown:before { |
||||
|
content: "\e632"; |
||||
|
} |
||||
|
|
||||
|
.uniui-scan:before { |
||||
|
content: "\e62a"; |
||||
|
} |
||||
|
|
||||
|
.uniui-bars:before { |
||||
|
content: "\e627"; |
||||
|
} |
||||
|
|
||||
|
.uniui-checkbox:before { |
||||
|
content: "\e62b"; |
||||
|
} |
||||
|
|
||||
|
.uniui-checkbox-filled:before { |
||||
|
content: "\e62c"; |
||||
|
} |
||||
|
|
||||
|
.uniui-shop:before { |
||||
|
content: "\e62f"; |
||||
|
} |
||||
|
|
||||
|
.uniui-headphones:before { |
||||
|
content: "\e630"; |
||||
|
} |
||||
|
|
||||
|
.uniui-cart:before { |
||||
|
content: "\e631"; |
||||
|
} |
||||
Binary file not shown.
@ -0,0 +1,664 @@ |
|||||
|
|
||||
|
export type IconsData = { |
||||
|
id : string |
||||
|
name : string |
||||
|
font_family : string |
||||
|
css_prefix_text : string |
||||
|
description : string |
||||
|
glyphs : Array<IconsDataItem> |
||||
|
} |
||||
|
|
||||
|
export type IconsDataItem = { |
||||
|
font_class : string |
||||
|
unicode : string |
||||
|
} |
||||
|
|
||||
|
|
||||
|
export const fontData = [ |
||||
|
{ |
||||
|
"font_class": "arrow-down", |
||||
|
"unicode": "\ue6be" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "arrow-left", |
||||
|
"unicode": "\ue6bc" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "arrow-right", |
||||
|
"unicode": "\ue6bb" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "arrow-up", |
||||
|
"unicode": "\ue6bd" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "auth", |
||||
|
"unicode": "\ue6ab" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "auth-filled", |
||||
|
"unicode": "\ue6cc" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "back", |
||||
|
"unicode": "\ue6b9" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "bars", |
||||
|
"unicode": "\ue627" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "calendar", |
||||
|
"unicode": "\ue6a0" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "calendar-filled", |
||||
|
"unicode": "\ue6c0" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "camera", |
||||
|
"unicode": "\ue65a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "camera-filled", |
||||
|
"unicode": "\ue658" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cart", |
||||
|
"unicode": "\ue631" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cart-filled", |
||||
|
"unicode": "\ue6d0" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chat", |
||||
|
"unicode": "\ue65d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chat-filled", |
||||
|
"unicode": "\ue659" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chatboxes", |
||||
|
"unicode": "\ue696" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chatboxes-filled", |
||||
|
"unicode": "\ue692" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chatbubble", |
||||
|
"unicode": "\ue697" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chatbubble-filled", |
||||
|
"unicode": "\ue694" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "checkbox", |
||||
|
"unicode": "\ue62b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "checkbox-filled", |
||||
|
"unicode": "\ue62c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "checkmarkempty", |
||||
|
"unicode": "\ue65c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "circle", |
||||
|
"unicode": "\ue65b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "circle-filled", |
||||
|
"unicode": "\ue65e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "clear", |
||||
|
"unicode": "\ue66d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "close", |
||||
|
"unicode": "\ue673" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "closeempty", |
||||
|
"unicode": "\ue66c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cloud-download", |
||||
|
"unicode": "\ue647" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cloud-download-filled", |
||||
|
"unicode": "\ue646" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cloud-upload", |
||||
|
"unicode": "\ue645" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cloud-upload-filled", |
||||
|
"unicode": "\ue648" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "color", |
||||
|
"unicode": "\ue6cf" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "color-filled", |
||||
|
"unicode": "\ue6c9" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "compose", |
||||
|
"unicode": "\ue67f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "contact", |
||||
|
"unicode": "\ue693" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "contact-filled", |
||||
|
"unicode": "\ue695" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "down", |
||||
|
"unicode": "\ue6b8" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "bottom", |
||||
|
"unicode": "\ue6b8" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "download", |
||||
|
"unicode": "\ue68d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "download-filled", |
||||
|
"unicode": "\ue681" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "email", |
||||
|
"unicode": "\ue69e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "email-filled", |
||||
|
"unicode": "\ue69a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "eye", |
||||
|
"unicode": "\ue651" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "eye-filled", |
||||
|
"unicode": "\ue66a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "eye-slash", |
||||
|
"unicode": "\ue6b3" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "eye-slash-filled", |
||||
|
"unicode": "\ue6b4" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "fire", |
||||
|
"unicode": "\ue6a1" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "fire-filled", |
||||
|
"unicode": "\ue6c5" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "flag", |
||||
|
"unicode": "\ue65f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "flag-filled", |
||||
|
"unicode": "\ue660" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "folder-add", |
||||
|
"unicode": "\ue6a9" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "folder-add-filled", |
||||
|
"unicode": "\ue6c8" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "font", |
||||
|
"unicode": "\ue6a3" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "forward", |
||||
|
"unicode": "\ue6ba" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "gear", |
||||
|
"unicode": "\ue664" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "gear-filled", |
||||
|
"unicode": "\ue661" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "gift", |
||||
|
"unicode": "\ue6a4" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "gift-filled", |
||||
|
"unicode": "\ue6c4" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "hand-down", |
||||
|
"unicode": "\ue63d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "hand-down-filled", |
||||
|
"unicode": "\ue63c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "hand-up", |
||||
|
"unicode": "\ue63f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "hand-up-filled", |
||||
|
"unicode": "\ue63e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "headphones", |
||||
|
"unicode": "\ue630" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "heart", |
||||
|
"unicode": "\ue639" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "heart-filled", |
||||
|
"unicode": "\ue641" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "help", |
||||
|
"unicode": "\ue679" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "help-filled", |
||||
|
"unicode": "\ue674" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "home", |
||||
|
"unicode": "\ue662" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "home-filled", |
||||
|
"unicode": "\ue663" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "image", |
||||
|
"unicode": "\ue670" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "image-filled", |
||||
|
"unicode": "\ue678" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "images", |
||||
|
"unicode": "\ue650" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "images-filled", |
||||
|
"unicode": "\ue64b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "info", |
||||
|
"unicode": "\ue669" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "info-filled", |
||||
|
"unicode": "\ue649" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "left", |
||||
|
"unicode": "\ue6b7" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "link", |
||||
|
"unicode": "\ue6a5" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "list", |
||||
|
"unicode": "\ue644" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "location", |
||||
|
"unicode": "\ue6ae" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "location-filled", |
||||
|
"unicode": "\ue6af" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "locked", |
||||
|
"unicode": "\ue66b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "locked-filled", |
||||
|
"unicode": "\ue668" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "loop", |
||||
|
"unicode": "\ue633" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "mail-open", |
||||
|
"unicode": "\ue643" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "mail-open-filled", |
||||
|
"unicode": "\ue63a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "map", |
||||
|
"unicode": "\ue667" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "map-filled", |
||||
|
"unicode": "\ue666" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "map-pin", |
||||
|
"unicode": "\ue6ad" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "map-pin-ellipse", |
||||
|
"unicode": "\ue6ac" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "medal", |
||||
|
"unicode": "\ue6a2" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "medal-filled", |
||||
|
"unicode": "\ue6c3" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "mic", |
||||
|
"unicode": "\ue671" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "mic-filled", |
||||
|
"unicode": "\ue677" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "micoff", |
||||
|
"unicode": "\ue67e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "micoff-filled", |
||||
|
"unicode": "\ue6b0" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "minus", |
||||
|
"unicode": "\ue66f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "minus-filled", |
||||
|
"unicode": "\ue67d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "more", |
||||
|
"unicode": "\ue64d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "more-filled", |
||||
|
"unicode": "\ue64e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "navigate", |
||||
|
"unicode": "\ue66e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "navigate-filled", |
||||
|
"unicode": "\ue67a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "notification", |
||||
|
"unicode": "\ue6a6" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "notification-filled", |
||||
|
"unicode": "\ue6c1" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "paperclip", |
||||
|
"unicode": "\ue652" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "paperplane", |
||||
|
"unicode": "\ue672" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "paperplane-filled", |
||||
|
"unicode": "\ue675" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "person", |
||||
|
"unicode": "\ue699" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "person-filled", |
||||
|
"unicode": "\ue69d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "personadd", |
||||
|
"unicode": "\ue69f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "personadd-filled", |
||||
|
"unicode": "\ue698" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "personadd-filled-copy", |
||||
|
"unicode": "\ue6d1" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "phone", |
||||
|
"unicode": "\ue69c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "phone-filled", |
||||
|
"unicode": "\ue69b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "plus", |
||||
|
"unicode": "\ue676" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "plus-filled", |
||||
|
"unicode": "\ue6c7" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "plusempty", |
||||
|
"unicode": "\ue67b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "pulldown", |
||||
|
"unicode": "\ue632" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "pyq", |
||||
|
"unicode": "\ue682" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "qq", |
||||
|
"unicode": "\ue680" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "redo", |
||||
|
"unicode": "\ue64a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "redo-filled", |
||||
|
"unicode": "\ue655" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "refresh", |
||||
|
"unicode": "\ue657" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "refresh-filled", |
||||
|
"unicode": "\ue656" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "refreshempty", |
||||
|
"unicode": "\ue6bf" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "reload", |
||||
|
"unicode": "\ue6b2" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "right", |
||||
|
"unicode": "\ue6b5" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "scan", |
||||
|
"unicode": "\ue62a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "search", |
||||
|
"unicode": "\ue654" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "settings", |
||||
|
"unicode": "\ue653" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "settings-filled", |
||||
|
"unicode": "\ue6ce" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "shop", |
||||
|
"unicode": "\ue62f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "shop-filled", |
||||
|
"unicode": "\ue6cd" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "smallcircle", |
||||
|
"unicode": "\ue67c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "smallcircle-filled", |
||||
|
"unicode": "\ue665" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "sound", |
||||
|
"unicode": "\ue684" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "sound-filled", |
||||
|
"unicode": "\ue686" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "spinner-cycle", |
||||
|
"unicode": "\ue68a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "staff", |
||||
|
"unicode": "\ue6a7" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "staff-filled", |
||||
|
"unicode": "\ue6cb" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "star", |
||||
|
"unicode": "\ue688" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "star-filled", |
||||
|
"unicode": "\ue68f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "starhalf", |
||||
|
"unicode": "\ue683" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "trash", |
||||
|
"unicode": "\ue687" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "trash-filled", |
||||
|
"unicode": "\ue685" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "tune", |
||||
|
"unicode": "\ue6aa" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "tune-filled", |
||||
|
"unicode": "\ue6ca" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "undo", |
||||
|
"unicode": "\ue64f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "undo-filled", |
||||
|
"unicode": "\ue64c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "up", |
||||
|
"unicode": "\ue6b6" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "top", |
||||
|
"unicode": "\ue6b6" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "upload", |
||||
|
"unicode": "\ue690" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "upload-filled", |
||||
|
"unicode": "\ue68e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "videocam", |
||||
|
"unicode": "\ue68c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "videocam-filled", |
||||
|
"unicode": "\ue689" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "vip", |
||||
|
"unicode": "\ue6a8" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "vip-filled", |
||||
|
"unicode": "\ue6c6" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "wallet", |
||||
|
"unicode": "\ue6b1" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "wallet-filled", |
||||
|
"unicode": "\ue6c2" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "weibo", |
||||
|
"unicode": "\ue68b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "weixin", |
||||
|
"unicode": "\ue691" |
||||
|
} |
||||
|
] as IconsDataItem[] |
||||
|
|
||||
|
// export const fontData = JSON.parse<IconsDataItem>(fontDataJson)
|
||||
@ -0,0 +1,649 @@ |
|||||
|
|
||||
|
export const fontData = [ |
||||
|
{ |
||||
|
"font_class": "arrow-down", |
||||
|
"unicode": "\ue6be" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "arrow-left", |
||||
|
"unicode": "\ue6bc" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "arrow-right", |
||||
|
"unicode": "\ue6bb" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "arrow-up", |
||||
|
"unicode": "\ue6bd" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "auth", |
||||
|
"unicode": "\ue6ab" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "auth-filled", |
||||
|
"unicode": "\ue6cc" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "back", |
||||
|
"unicode": "\ue6b9" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "bars", |
||||
|
"unicode": "\ue627" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "calendar", |
||||
|
"unicode": "\ue6a0" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "calendar-filled", |
||||
|
"unicode": "\ue6c0" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "camera", |
||||
|
"unicode": "\ue65a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "camera-filled", |
||||
|
"unicode": "\ue658" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cart", |
||||
|
"unicode": "\ue631" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cart-filled", |
||||
|
"unicode": "\ue6d0" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chat", |
||||
|
"unicode": "\ue65d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chat-filled", |
||||
|
"unicode": "\ue659" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chatboxes", |
||||
|
"unicode": "\ue696" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chatboxes-filled", |
||||
|
"unicode": "\ue692" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chatbubble", |
||||
|
"unicode": "\ue697" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "chatbubble-filled", |
||||
|
"unicode": "\ue694" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "checkbox", |
||||
|
"unicode": "\ue62b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "checkbox-filled", |
||||
|
"unicode": "\ue62c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "checkmarkempty", |
||||
|
"unicode": "\ue65c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "circle", |
||||
|
"unicode": "\ue65b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "circle-filled", |
||||
|
"unicode": "\ue65e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "clear", |
||||
|
"unicode": "\ue66d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "close", |
||||
|
"unicode": "\ue673" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "closeempty", |
||||
|
"unicode": "\ue66c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cloud-download", |
||||
|
"unicode": "\ue647" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cloud-download-filled", |
||||
|
"unicode": "\ue646" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cloud-upload", |
||||
|
"unicode": "\ue645" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "cloud-upload-filled", |
||||
|
"unicode": "\ue648" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "color", |
||||
|
"unicode": "\ue6cf" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "color-filled", |
||||
|
"unicode": "\ue6c9" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "compose", |
||||
|
"unicode": "\ue67f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "contact", |
||||
|
"unicode": "\ue693" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "contact-filled", |
||||
|
"unicode": "\ue695" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "down", |
||||
|
"unicode": "\ue6b8" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "bottom", |
||||
|
"unicode": "\ue6b8" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "download", |
||||
|
"unicode": "\ue68d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "download-filled", |
||||
|
"unicode": "\ue681" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "email", |
||||
|
"unicode": "\ue69e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "email-filled", |
||||
|
"unicode": "\ue69a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "eye", |
||||
|
"unicode": "\ue651" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "eye-filled", |
||||
|
"unicode": "\ue66a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "eye-slash", |
||||
|
"unicode": "\ue6b3" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "eye-slash-filled", |
||||
|
"unicode": "\ue6b4" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "fire", |
||||
|
"unicode": "\ue6a1" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "fire-filled", |
||||
|
"unicode": "\ue6c5" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "flag", |
||||
|
"unicode": "\ue65f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "flag-filled", |
||||
|
"unicode": "\ue660" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "folder-add", |
||||
|
"unicode": "\ue6a9" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "folder-add-filled", |
||||
|
"unicode": "\ue6c8" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "font", |
||||
|
"unicode": "\ue6a3" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "forward", |
||||
|
"unicode": "\ue6ba" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "gear", |
||||
|
"unicode": "\ue664" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "gear-filled", |
||||
|
"unicode": "\ue661" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "gift", |
||||
|
"unicode": "\ue6a4" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "gift-filled", |
||||
|
"unicode": "\ue6c4" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "hand-down", |
||||
|
"unicode": "\ue63d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "hand-down-filled", |
||||
|
"unicode": "\ue63c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "hand-up", |
||||
|
"unicode": "\ue63f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "hand-up-filled", |
||||
|
"unicode": "\ue63e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "headphones", |
||||
|
"unicode": "\ue630" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "heart", |
||||
|
"unicode": "\ue639" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "heart-filled", |
||||
|
"unicode": "\ue641" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "help", |
||||
|
"unicode": "\ue679" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "help-filled", |
||||
|
"unicode": "\ue674" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "home", |
||||
|
"unicode": "\ue662" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "home-filled", |
||||
|
"unicode": "\ue663" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "image", |
||||
|
"unicode": "\ue670" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "image-filled", |
||||
|
"unicode": "\ue678" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "images", |
||||
|
"unicode": "\ue650" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "images-filled", |
||||
|
"unicode": "\ue64b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "info", |
||||
|
"unicode": "\ue669" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "info-filled", |
||||
|
"unicode": "\ue649" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "left", |
||||
|
"unicode": "\ue6b7" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "link", |
||||
|
"unicode": "\ue6a5" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "list", |
||||
|
"unicode": "\ue644" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "location", |
||||
|
"unicode": "\ue6ae" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "location-filled", |
||||
|
"unicode": "\ue6af" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "locked", |
||||
|
"unicode": "\ue66b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "locked-filled", |
||||
|
"unicode": "\ue668" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "loop", |
||||
|
"unicode": "\ue633" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "mail-open", |
||||
|
"unicode": "\ue643" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "mail-open-filled", |
||||
|
"unicode": "\ue63a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "map", |
||||
|
"unicode": "\ue667" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "map-filled", |
||||
|
"unicode": "\ue666" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "map-pin", |
||||
|
"unicode": "\ue6ad" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "map-pin-ellipse", |
||||
|
"unicode": "\ue6ac" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "medal", |
||||
|
"unicode": "\ue6a2" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "medal-filled", |
||||
|
"unicode": "\ue6c3" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "mic", |
||||
|
"unicode": "\ue671" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "mic-filled", |
||||
|
"unicode": "\ue677" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "micoff", |
||||
|
"unicode": "\ue67e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "micoff-filled", |
||||
|
"unicode": "\ue6b0" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "minus", |
||||
|
"unicode": "\ue66f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "minus-filled", |
||||
|
"unicode": "\ue67d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "more", |
||||
|
"unicode": "\ue64d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "more-filled", |
||||
|
"unicode": "\ue64e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "navigate", |
||||
|
"unicode": "\ue66e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "navigate-filled", |
||||
|
"unicode": "\ue67a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "notification", |
||||
|
"unicode": "\ue6a6" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "notification-filled", |
||||
|
"unicode": "\ue6c1" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "paperclip", |
||||
|
"unicode": "\ue652" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "paperplane", |
||||
|
"unicode": "\ue672" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "paperplane-filled", |
||||
|
"unicode": "\ue675" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "person", |
||||
|
"unicode": "\ue699" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "person-filled", |
||||
|
"unicode": "\ue69d" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "personadd", |
||||
|
"unicode": "\ue69f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "personadd-filled", |
||||
|
"unicode": "\ue698" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "personadd-filled-copy", |
||||
|
"unicode": "\ue6d1" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "phone", |
||||
|
"unicode": "\ue69c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "phone-filled", |
||||
|
"unicode": "\ue69b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "plus", |
||||
|
"unicode": "\ue676" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "plus-filled", |
||||
|
"unicode": "\ue6c7" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "plusempty", |
||||
|
"unicode": "\ue67b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "pulldown", |
||||
|
"unicode": "\ue632" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "pyq", |
||||
|
"unicode": "\ue682" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "qq", |
||||
|
"unicode": "\ue680" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "redo", |
||||
|
"unicode": "\ue64a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "redo-filled", |
||||
|
"unicode": "\ue655" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "refresh", |
||||
|
"unicode": "\ue657" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "refresh-filled", |
||||
|
"unicode": "\ue656" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "refreshempty", |
||||
|
"unicode": "\ue6bf" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "reload", |
||||
|
"unicode": "\ue6b2" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "right", |
||||
|
"unicode": "\ue6b5" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "scan", |
||||
|
"unicode": "\ue62a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "search", |
||||
|
"unicode": "\ue654" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "settings", |
||||
|
"unicode": "\ue653" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "settings-filled", |
||||
|
"unicode": "\ue6ce" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "shop", |
||||
|
"unicode": "\ue62f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "shop-filled", |
||||
|
"unicode": "\ue6cd" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "smallcircle", |
||||
|
"unicode": "\ue67c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "smallcircle-filled", |
||||
|
"unicode": "\ue665" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "sound", |
||||
|
"unicode": "\ue684" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "sound-filled", |
||||
|
"unicode": "\ue686" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "spinner-cycle", |
||||
|
"unicode": "\ue68a" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "staff", |
||||
|
"unicode": "\ue6a7" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "staff-filled", |
||||
|
"unicode": "\ue6cb" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "star", |
||||
|
"unicode": "\ue688" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "star-filled", |
||||
|
"unicode": "\ue68f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "starhalf", |
||||
|
"unicode": "\ue683" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "trash", |
||||
|
"unicode": "\ue687" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "trash-filled", |
||||
|
"unicode": "\ue685" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "tune", |
||||
|
"unicode": "\ue6aa" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "tune-filled", |
||||
|
"unicode": "\ue6ca" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "undo", |
||||
|
"unicode": "\ue64f" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "undo-filled", |
||||
|
"unicode": "\ue64c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "up", |
||||
|
"unicode": "\ue6b6" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "top", |
||||
|
"unicode": "\ue6b6" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "upload", |
||||
|
"unicode": "\ue690" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "upload-filled", |
||||
|
"unicode": "\ue68e" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "videocam", |
||||
|
"unicode": "\ue68c" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "videocam-filled", |
||||
|
"unicode": "\ue689" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "vip", |
||||
|
"unicode": "\ue6a8" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "vip-filled", |
||||
|
"unicode": "\ue6c6" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "wallet", |
||||
|
"unicode": "\ue6b1" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "wallet-filled", |
||||
|
"unicode": "\ue6c2" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "weibo", |
||||
|
"unicode": "\ue68b" |
||||
|
}, |
||||
|
{ |
||||
|
"font_class": "weixin", |
||||
|
"unicode": "\ue691" |
||||
|
} |
||||
|
] |
||||
|
|
||||
|
// export const fontData = JSON.parse<IconsDataItem>(fontDataJson)
|
||||
@ -0,0 +1,89 @@ |
|||||
|
{ |
||||
|
"id": "uni-icons", |
||||
|
"displayName": "uni-icons 图标", |
||||
|
"version": "2.0.10", |
||||
|
"description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", |
||||
|
"keywords": [ |
||||
|
"uni-ui", |
||||
|
"uniui", |
||||
|
"icon", |
||||
|
"图标" |
||||
|
], |
||||
|
"repository": "https://github.com/dcloudio/uni-ui", |
||||
|
"engines": { |
||||
|
"HBuilderX": "^3.2.14" |
||||
|
}, |
||||
|
"directories": { |
||||
|
"example": "../../temps/example_temps" |
||||
|
}, |
||||
|
"dcloudext": { |
||||
|
"sale": { |
||||
|
"regular": { |
||||
|
"price": "0.00" |
||||
|
}, |
||||
|
"sourcecode": { |
||||
|
"price": "0.00" |
||||
|
} |
||||
|
}, |
||||
|
"contact": { |
||||
|
"qq": "" |
||||
|
}, |
||||
|
"declaration": { |
||||
|
"ads": "无", |
||||
|
"data": "无", |
||||
|
"permissions": "无" |
||||
|
}, |
||||
|
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", |
||||
|
"type": "component-vue" |
||||
|
}, |
||||
|
"uni_modules": { |
||||
|
"dependencies": ["uni-scss"], |
||||
|
"encrypt": [], |
||||
|
"platforms": { |
||||
|
"cloud": { |
||||
|
"tcb": "y", |
||||
|
"aliyun": "y", |
||||
|
"alipay": "n" |
||||
|
}, |
||||
|
"client": { |
||||
|
"App": { |
||||
|
"app-vue": "y", |
||||
|
"app-nvue": "y", |
||||
|
"app-uvue": "y" |
||||
|
}, |
||||
|
"H5-mobile": { |
||||
|
"Safari": "y", |
||||
|
"Android Browser": "y", |
||||
|
"微信浏览器(Android)": "y", |
||||
|
"QQ浏览器(Android)": "y" |
||||
|
}, |
||||
|
"H5-pc": { |
||||
|
"Chrome": "y", |
||||
|
"IE": "y", |
||||
|
"Edge": "y", |
||||
|
"Firefox": "y", |
||||
|
"Safari": "y" |
||||
|
}, |
||||
|
"小程序": { |
||||
|
"微信": "y", |
||||
|
"阿里": "y", |
||||
|
"百度": "y", |
||||
|
"字节跳动": "y", |
||||
|
"QQ": "y", |
||||
|
"钉钉": "y", |
||||
|
"快手": "y", |
||||
|
"飞书": "y", |
||||
|
"京东": "y" |
||||
|
}, |
||||
|
"快应用": { |
||||
|
"华为": "y", |
||||
|
"联盟": "y" |
||||
|
}, |
||||
|
"Vue": { |
||||
|
"vue2": "y", |
||||
|
"vue3": "y" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
## Icons 图标 |
||||
|
> **组件名:uni-icons** |
||||
|
> 代码块: `uIcons` |
||||
|
|
||||
|
用于展示 icons 图标 。 |
||||
|
|
||||
|
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) |
||||
|
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 |
||||
Loading…
Reference in new issue