Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
N
nyx
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
发现
nyx
Commits
c866a4d1
Commit
c866a4d1
authored
Aug 11, 2020
by
jscat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nyx weapp: 主流程更新
1. 添加活动日程功能
parent
28b27f62
显示空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
1090 行增加
和
44 行删除
+1090
-44
增值产品-小程序及app/doc/create_table_sql/流程及数据测试.sql
+54
-37
增值产品-小程序及app/nyx-master/app.json
+2
-1
增值产品-小程序及app/nyx-master/component/calendar/index.js
+3
-0
增值产品-小程序及app/nyx-master/component/calendar/index.json
+5
-0
增值产品-小程序及app/nyx-master/component/calendar/index.wxml
+89
-0
增值产品-小程序及app/nyx-master/component/calendar/index.wxss
+219
-0
增值产品-小程序及app/nyx-master/component/calendar/theme/iconfont.wxss
+30
-0
增值产品-小程序及app/nyx-master/component/calendar/theme/theme-default.wxss
+53
-0
增值产品-小程序及app/nyx-master/component/calendar/theme/theme-elegant.wxss
+50
-0
增值产品-小程序及app/nyx-master/pages/my/my-orders/my-orders.wxss
+309
-0
增值产品-小程序及app/nyx-master/pages/schedule/schedule.js
+189
-0
增值产品-小程序及app/nyx-master/pages/schedule/schedule.json
+7
-0
增值产品-小程序及app/nyx-master/pages/schedule/schedule.wxml
+15
-0
增值产品-小程序及app/nyx-master/pages/schedule/schedule.wxss
+43
-0
增值产品-小程序及app/nyx_app_key/.idea/workspace.xml
+22
-6
没有找到文件。
增值产品-小程序及app/doc/create_table_sql/流程及数据测试.sql
查看文件 @
c866a4d1
/*
/*
/*
目标: 梳理流程 DIN
主流程 : main
数据优化: 添加测试数据, 新增数据字段
子流程 : 好友助力
功能优化: 新增一个接口
页面优化: 比如loadmore
文件优化: 更改文件名
主流程 : flow,
数据优化: data, 添加测试数据, 新增数据字段
页面优化: page, 比如loadmore, 比如考虑display:flex
子流程 : flow, 比如好友助力
功能优化: code, 新增一个接口
文件优化: file, 更改文件名
跟别人比, 优势是什么,
专业的活动运营
- 活动复制: 拷贝-编辑-发布
- 活动日历: 参考-参加-消费
一. 商家活动创建流程:
...
...
@@ -79,12 +88,12 @@
1. 竞答
主流程: activity -> quiz-info -> matchTest -> quiz-result -> my-points -> scan
子流程:
子流程:
好友助力
--311 done 进入竞答, weapp activity.wxml
--312 done 点击进入竞答详情页面 weapp activity.wxml <navigator>
--313 回到首页 weapp quiz-info.wxml bindtap="toHome"
--314 页面分享 weapp quiz-info.js options.from == 'button'
--315 右上角分享 weapp quiz-info.js onShareAppMessage()
--313
done
回到首页 weapp quiz-info.wxml bindtap="toHome"
--314
done
页面分享 weapp quiz-info.js options.from == 'button'
--315
done
右上角分享 weapp quiz-info.js onShareAppMessage()
--316 done 立即参与 weapp quiz-info.wxml bindtap="toGame"
--317 done 转到竞答页 weapp quiz-info.js wx.navigateTo(/matchTest)
--318 done 下一题 weapp matchTest.wxml bindtap="onTypeNext"
...
...
@@ -93,11 +102,11 @@
--3111 done 查看积分 weapp quiz-result.wxml bindtap="onCheckPoints" to my-points.wxml
--3112 done 分享战绩 weapp quiz-result.wxml open-type="share"
--3113 done 返回首页 weapp quiz-result.wxml bindtap="toHome"
--3114 好友助力
--3114 好友助力
(子流程)
2. 活动
主流程: activity -> activity-info ->
cart ->
order -> my-orders -> scan
子流程:
主流程: activity -> activity-info -> order -> my-orders -> scan
子流程:
cart
--321 done 进入活动, weapp activity.wxml
图片 note_image
标题 title
...
...
@@ -107,8 +116,8 @@
where 1=1
and tag='活动'
--322
点击进入活动详情页面 weapp activity-info.wxml todo 新增 activity-info.wxml todo
-1:1的image
tips: 需要通过
activity_id重新获取数据, 因为
unit_price/product_desc 这个阶段不知道
--322
done 点击进入活动详情页面 weapp activity-info.wxml done 新增 activity-info.wxml done
-1:1的image
tips: 需要通过
activity_id 重新获取数据, 因为
unit_price/product_desc 这个阶段不知道
图片 note_image
价格 unit_price1/unit_price2
...
...
@@ -116,12 +125,12 @@
类别 product_desc1/product_desc2
描述 content
select * from view_activity_
product
select * from view_activity_
detail
where activity_id='aid_005'
--323 页面分享 weapp activity-info.js options.from == 'button'
--324 回到首页 weapp activity-info.wxml bindtap="toHome"
--325 右上角分享 weapp activity-info.js onShareAppMessage()
--323
done
页面分享 weapp activity-info.js options.from == 'button'
--324
done
回到首页 weapp activity-info.wxml bindtap="toHome"
--325
done
右上角分享 weapp activity-info.js onShareAppMessage()
--326 立即购买 (直接跳转到结算页 order.wxml) weapp activity-info.wxml bindtap="toBuy"
-- 弹出模态框 weapp activity-info.wxml 确定 bindtap="toConfirmOrder"
...
...
@@ -133,7 +142,7 @@
-- 跳转到商品结算页 weapp activity-info.wxml <navigator> /order.wxml
--327 加入购物车 (直接添加到购物车图标, 特点: 可多个) todo 购物车数据存在客户端
--327
todo
加入购物车 (直接添加到购物车图标, 特点: 可多个) todo 购物车数据存在客户端
-- 弹出模态框 weapp activity-info.wxml 确定 bindtap="toConfirmCart"
-- 类别1/类别2 weapp activity-info.wxml bindtap="tab"
切换类别 product_desc 和价格 unit_price 显示已选: product_desc
...
...
@@ -143,7 +152,7 @@
tbl_order_item product_id, product_desc, unit_price, quantity, total_price, product_image
tbl_order_item product_id, product_desc, unit_price, quantity, total_price, product_image
--328 购物车 (点击购物车图标) weapp cart.wxml
--328
todo
购物车 (点击购物车图标) weapp cart.wxml
-- 编辑 weapp cart.wxml bindtap="onEdit"
酒肆活动 编辑
member_name (Renaissance Bar) · title (酒集市)
...
...
@@ -153,7 +162,7 @@
product_image unit_price quantity
全选 合计: 去结算 (bindtap="toOrder")
-- 完成 weapp cart.wxml bindtap="onFinish"
--
todo
完成 weapp cart.wxml bindtap="onFinish"
酒肆活动 完成
member_name (Renaissance Bar) · title (酒集市)
图片 product_desc
...
...
@@ -164,7 +173,7 @@
数据存储在小程序客户端
-- 删除所选 weapp cart.wxml bindtap="onDelete"
--
todo
删除所选 weapp cart.wxml bindtap="onDelete"
如果是全选 更改订单状态 tbl_order order_status 为 00-订单取消
如果是单个 更改子项状态 tbl_order_item item_status 为 00-订单取消 todo 添加item_status
...
...
@@ -172,7 +181,7 @@
-- 点击"确定"之后 跳转到"去结算"页面
-- 默认剩下的所有item为全选状态
-- 去结算 weapp cart.wxml bindtap="toOrder"
--
todo
去结算 weapp cart.wxml bindtap="toOrder"
-- 结算页 weapp order.wxml bindtap="toPay"
member_name (Renaissance Bar) · title (酒集市)
...
...
@@ -195,26 +204,34 @@
--如果失败, 回到order.xml
--待支付页 todo weapp order-onpay.wxml
-- todo 待支付页 weapp order-onpay.wxml
-- done 我的订单 weapp /my/my-order/my-order.wxml 参考tb
member_name (Renaissance Bar) · title (酒集市)
图片 product_desc
note_image unit_price quantity
图片 product_desc
note_image unit_price quantity
-- 我的订单 weapp /my/my-order/my-order.wxml
商品金额 total_price
优惠券码:mid_123 二维码
四. 用户到店使用流程
1. 竞答
--411 进入个人 我的->我的积分 weapp my.wxml
--412 进入我的积分 weapp my.wxml <navigator> /points.wxml
--413 可用|不可用 weapp points.wxml bindtap="tab"
--414 可用-助力清单 weapp points.wxml bindtap="onClickPoints"
--415 可用-优惠券码 weapp points.wxml bindtap="onClickBarcode"
--416 不可用-助力清单 weapp points.wxml bindtap="onClickPoints"
--417 扫一扫 weapp activity.wxml bindtap="getQRCode"
--418 扫码流程 weapp activity.js getQRCode() start with mid 更新 tbl_match 表 match_status
--411
done
进入个人 我的->我的积分 weapp my.wxml
--412
done
进入我的积分 weapp my.wxml <navigator> /points.wxml
--413
done
可用|不可用 weapp points.wxml bindtap="tab"
--414
done
可用-助力清单 weapp points.wxml bindtap="onClickPoints"
--415
done
可用-优惠券码 weapp points.wxml bindtap="onClickBarcode"
--416
done
不可用-助力清单 weapp points.wxml bindtap="onClickPoints"
--417
done
扫一扫 weapp activity.wxml bindtap="getQRCode"
--418
done
扫码流程 weapp activity.js getQRCode() start with mid 更新 tbl_match 表 match_status
2. 活动
--421 进入个人 我的->我的活动 weapp my.xml
--422 进入我的活动 weapp order.wxml <navigator> /order.wxml
--421
done
进入个人 我的->我的活动 weapp my.xml
--422
done
进入我的活动 weapp order.wxml <navigator> /order.wxml
--423 可使用|待付款|不可用 weapp /order.wxml bindtap="tab"
--424 可使用页面 weapp /order.wxml
--425 可使用-优惠券码 weapp order.wxml bindtap="onClickBarcode"
...
...
增值产品-小程序及app/nyx-master/app.json
查看文件 @
c866a4d1
{
{
...
...
@@ -2,6 +2,7 @@
"pages"
:
[
"pages/activity/activity"
,
"pages/mall/order/order"
,
"pages/schedule/schedule"
,
"pages/activity/quiz-result/quiz-result"
,
"pages/activity/quiz-info/quiz-info"
,
"pages/activity/activity-info/activity-info"
,
...
...
增值产品-小程序及app/nyx-master/component/calendar/index.js
0 → 100644
查看文件 @
c866a4d1
!
function
(
e
){
var
t
=
{};
function
a
(
n
){
if
(
t
[
n
])
return
t
[
n
].
exports
;
var
r
=
t
[
n
]
=
{
i
:
n
,
l
:
!
1
,
exports
:{}};
return
e
[
n
].
call
(
r
.
exports
,
r
,
r
.
exports
,
a
),
r
.
l
=!
0
,
r
.
exports
}
a
.
m
=
e
,
a
.
c
=
t
,
a
.
d
=
function
(
e
,
t
,
n
){
a
.
o
(
e
,
t
)
||
Object
.
defineProperty
(
e
,
t
,{
enumerable
:
!
0
,
get
:
n
})},
a
.
r
=
function
(
e
){
"undefined"
!=
typeof
Symbol
&&
Symbol
.
toStringTag
&&
Object
.
defineProperty
(
e
,
Symbol
.
toStringTag
,{
value
:
"Module"
}),
Object
.
defineProperty
(
e
,
"__esModule"
,{
value
:
!
0
})},
a
.
t
=
function
(
e
,
t
){
if
(
1
&
t
&&
(
e
=
a
(
e
)),
8
&
t
)
return
e
;
if
(
4
&
t
&&
"object"
==
typeof
e
&&
e
&&
e
.
__esModule
)
return
e
;
var
n
=
Object
.
create
(
null
);
if
(
a
.
r
(
n
),
Object
.
defineProperty
(
n
,
"default"
,{
enumerable
:
!
0
,
value
:
e
}),
2
&
t
&&
"string"
!=
typeof
e
)
for
(
var
r
in
e
)
a
.
d
(
n
,
r
,
function
(
t
){
return
e
[
t
]}.
bind
(
null
,
r
));
return
n
},
a
.
n
=
function
(
e
){
var
t
=
e
&&
e
.
__esModule
?
function
(){
return
e
.
default
}:
function
(){
return
e
};
return
a
.
d
(
t
,
"a"
,
t
),
t
},
a
.
o
=
function
(
e
,
t
){
return
Object
.
prototype
.
hasOwnProperty
.
call
(
e
,
t
)},
a
.
p
=
""
,
a
(
a
.
s
=
8
)}([
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
=
class
{
constructor
(
e
){
this
.
Component
=
e
}
getData
(
e
){
const
t
=
this
.
Component
.
data
;
if
(
!
e
)
return
t
;
if
(
e
.
includes
(
"."
)){
return
e
.
split
(
"."
).
reduce
((
e
,
t
)
=>
e
[
t
],
t
)}
return
this
.
Component
.
data
[
e
]}
setData
(
e
,
t
=
(()
=>
{})){
e
&&
"object"
==
typeof
e
&&
this
.
Component
.
setData
(
e
,
t
)}};
t
.
default
=
n
},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
getSystemInfo
=
o
,
t
.
isComponent
=
function
(
e
){
return
e
&&
void
0
!==
e
.
__wxExparserNodeId__
&&
"function"
==
typeof
e
.
setData
},
t
.
isIos
=
i
,
t
.
shallowEqual
=
function
e
(
t
,
a
){
if
(
t
===
a
)
return
!
0
;
if
(
"object"
==
typeof
t
&&
null
!=
t
&&
"object"
==
typeof
a
&&
null
!=
a
){
if
(
Object
.
keys
(
t
).
length
!==
Object
.
keys
(
a
).
length
)
return
!
1
;
for
(
var
n
in
t
){
if
(
!
a
.
hasOwnProperty
(
n
))
return
!
1
;
if
(
!
e
(
t
[
n
],
a
[
n
]))
return
!
1
}
return
!
0
}
return
!
1
},
t
.
getCurrentPage
=
d
,
t
.
getComponent
=
function
(
e
){
const
t
=
new
c
;
let
a
=
d
()
||
{};
if
(
a
.
selectComponent
&&
"function"
==
typeof
a
.
selectComponent
){
if
(
e
)
return
a
.
selectComponent
(
e
);
t
.
warn
(
"请传入组件ID"
)}
else
t
.
warn
(
"该基础库暂不支持多个小程序日历组件"
)},
t
.
uniqueArrayByDate
=
function
(
e
=
[]){
let
t
=
{},
a
=
[];
e
.
forEach
(
e
=>
{
t
[
`
${
e
.
year
}
-
${
e
.
month
}
-
${
e
.
day
}
`
]
=
e
});
for
(
let
e
in
t
)
a
.
push
(
t
[
e
]);
return
a
},
t
.
delRepeatedEnableDay
=
function
(
e
=
[],
t
=
[]){
let
a
,
n
;
if
(
2
===
t
.
length
){
const
{
startTimestamp
:
e
,
endTimestamp
:
r
}
=
f
(
t
);
a
=
e
,
n
=
r
}
const
r
=
h
(
e
);
return
r
.
filter
(
e
=>
e
<
a
||
e
>
n
)},
t
.
convertEnableAreaToTimestamp
=
f
,
t
.
getDateTimeStamp
=
b
,
t
.
converEnableDaysToTimestamp
=
h
,
t
.
initialTasks
=
t
.
GetDate
=
t
.
Slide
=
t
.
Logger
=
void
0
;
var
n
,
r
=
(
n
=
a
(
2
))
&&
n
.
__esModule
?
n
:{
default
:
n
};
let
s
;
function
o
(){
return
s
||
(
s
=
wx
.
getSystemInfoSync
(),
s
)}
class
c
{
info
(
e
){
console
.
log
(
"%cInfo: %c"
+
e
,
"color:#FF0080;font-weight:bold"
,
"color: #FF509B"
)}
warn
(
e
){
console
.
log
(
"%cWarn: %c"
+
e
,
"color:#FF6600;font-weight:bold"
,
"color: #FF9933"
)}
tips
(
e
){
console
.
log
(
"%cTips: %c"
+
e
,
"color:#00B200;font-weight:bold"
,
"color: #00CC33"
)}}
t
.
Logger
=
c
;
t
.
Slide
=
class
{
isUp
(
e
=
{},
t
=
{}){
const
{
startX
:
a
,
startY
:
n
}
=
e
,
r
=
t
.
clientX
-
a
;
return
t
.
clientY
-
n
<-
60
&&
r
<
20
&&
r
>-
20
&&
(
this
.
slideLock
=!
1
,
!
0
)}
isDown
(
e
=
{},
t
=
{}){
const
{
startX
:
a
,
startY
:
n
}
=
e
,
r
=
t
.
clientX
-
a
;
return
t
.
clientY
-
n
>
60
&&
r
<
20
&&
r
>-
20
}
isLeft
(
e
=
{},
t
=
{}){
const
{
startX
:
a
,
startY
:
n
}
=
e
,
r
=
t
.
clientX
-
a
,
s
=
t
.
clientY
-
n
;
return
r
<-
60
&&
s
<
20
&&
s
>-
20
}
isRight
(
e
=
{},
t
=
{}){
const
{
startX
:
a
,
startY
:
n
}
=
e
,
r
=
t
.
clientX
-
a
,
s
=
t
.
clientY
-
n
;
return
r
>
60
&&
s
<
20
&&
s
>-
20
}};
class
l
{
newDate
(
e
,
t
,
a
){
let
n
=
`
${
+
e
}
-
${
+
t
}
-
${
+
a
}
`
;
return
i
()
&&
(
n
=
`
${
+
e
}
/
${
+
t
}
/
${
+
a
}
`
),
new
Date
(
n
)}
thisMonthDays
(
e
,
t
){
return
new
Date
(
Date
.
UTC
(
e
,
t
,
0
)).
getUTCDate
()}
firstDayOfWeek
(
e
,
t
){
return
new
Date
(
Date
.
UTC
(
e
,
t
-
1
,
1
)).
getUTCDay
()}
dayOfWeek
(
e
,
t
,
a
){
return
new
Date
(
Date
.
UTC
(
e
,
t
-
1
,
a
)).
getUTCDay
()}
todayDate
(){
const
e
=
new
Date
;
return
{
year
:
e
.
getFullYear
(),
month
:
e
.
getMonth
()
+
1
,
date
:
e
.
getDate
()}}
todayTimestamp
(){
const
{
year
:
e
,
month
:
t
,
date
:
a
}
=
this
.
todayDate
();
return
this
.
newDate
(
e
,
t
,
a
).
getTime
()}
toTimeStr
(
e
){
return
e
.
day
&&
(
e
.
date
=
e
.
day
),
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
date
}
`
}
sortDates
(
e
,
t
){
return
e
.
sort
((
function
(
e
,
a
){
return
b
(
e
)
<
b
(
a
)
&&
"desc"
!==
t
?
-
1
:
1
}))}
prevMonth
(
e
){
return
+
e
.
month
>
1
?{
year
:
e
.
year
,
month
:
e
.
month
-
1
}:{
year
:
e
.
year
-
1
,
month
:
12
}}
nextMonth
(
e
){
return
+
e
.
month
<
12
?{
year
:
e
.
year
,
month
:
e
.
month
+
1
}:{
year
:
e
.
year
+
1
,
month
:
1
}}
convertLunar
(
e
=
[]){
return
e
.
map
(
e
=>
(
e
&&
(
e
.
lunar
=
r
.
default
.
solar2lunar
(
+
e
.
year
,
+
e
.
month
,
+
e
.
day
)),
e
))}}
function
i
(){
const
e
=
o
();
return
/iphone|ios/i
.
test
(
e
.
platform
)}
function
d
(){
const
e
=
getCurrentPages
();
return
e
[
e
.
length
-
1
]}
function
f
(
e
=
[]){
const
t
=
new
l
,
a
=
e
[
0
].
split
(
"-"
),
n
=
e
[
1
].
split
(
"-"
),
r
=
new
c
;
if
(
3
!==
a
.
length
||
3
!==
n
.
length
)
return
r
.
warn
(
'enableArea() 参数格式为: ["2018-2-1", "2018-3-1"]'
),{};
return
{
start
:
a
,
end
:
n
,
startTimestamp
:
t
.
newDate
(
a
[
0
],
a
[
1
],
a
[
2
]).
getTime
(),
endTimestamp
:
t
.
newDate
(
n
[
0
],
n
[
1
],
n
[
2
]).
getTime
()}}
function
b
(
e
){
if
(
"[object Object]"
!==
Object
.
prototype
.
toString
.
call
(
e
))
return
;
return
(
new
l
).
newDate
(
e
.
year
,
e
.
month
,
e
.
day
).
getTime
()}
function
h
(
e
=
[]){
const
t
=
new
c
,
a
=
new
l
,
n
=
[];
return
e
.
forEach
(
e
=>
{
if
(
"string"
!=
typeof
e
)
return
t
.
warn
(
"enableDays()入参日期格式错误"
);
const
r
=
e
.
split
(
"-"
);
if
(
3
!==
r
.
length
)
return
t
.
warn
(
"enableDays()入参日期格式错误"
);
const
s
=
a
.
newDate
(
r
[
0
],
r
[
1
],
r
[
2
]).
getTime
();
n
.
push
(
s
)}),
n
}
t
.
GetDate
=
l
;
t
.
initialTasks
=
{
flag
:
"finished"
,
tasks
:[]}},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
const
n
=
{
lunarInfo
:[
19416
,
19168
,
42352
,
21717
,
53856
,
55632
,
91476
,
22176
,
39632
,
21970
,
19168
,
42422
,
42192
,
53840
,
119381
,
46400
,
54944
,
44450
,
38320
,
84343
,
18800
,
42160
,
46261
,
27216
,
27968
,
109396
,
11104
,
38256
,
21234
,
18800
,
25958
,
54432
,
59984
,
28309
,
23248
,
11104
,
100067
,
37600
,
116951
,
51536
,
54432
,
120998
,
46416
,
22176
,
107956
,
9680
,
37584
,
53938
,
43344
,
46423
,
27808
,
46416
,
86869
,
19872
,
42416
,
83315
,
21168
,
43432
,
59728
,
27296
,
44710
,
43856
,
19296
,
43748
,
42352
,
21088
,
62051
,
55632
,
23383
,
22176
,
38608
,
19925
,
19152
,
42192
,
54484
,
53840
,
54616
,
46400
,
46752
,
103846
,
38320
,
18864
,
43380
,
42160
,
45690
,
27216
,
27968
,
44870
,
43872
,
38256
,
19189
,
18800
,
25776
,
29859
,
59984
,
27480
,
21952
,
43872
,
38613
,
37600
,
51552
,
55636
,
54432
,
55888
,
30034
,
22176
,
43959
,
9680
,
37584
,
51893
,
43344
,
46240
,
47780
,
44368
,
21977
,
19360
,
42416
,
86390
,
21168
,
43312
,
31060
,
27296
,
44368
,
23378
,
19296
,
42726
,
42208
,
53856
,
60005
,
54576
,
23200
,
30371
,
38608
,
19195
,
19152
,
42192
,
118966
,
53840
,
54560
,
56645
,
46496
,
22224
,
21938
,
18864
,
42359
,
42160
,
43600
,
111189
,
27936
,
44448
,
84835
,
37744
,
18936
,
18800
,
25776
,
92326
,
59984
,
27424
,
108228
,
43744
,
41696
,
53987
,
51552
,
54615
,
54432
,
55888
,
23893
,
22176
,
42704
,
21972
,
21200
,
43448
,
43344
,
46240
,
46758
,
44368
,
21920
,
43940
,
42416
,
21168
,
45683
,
26928
,
29495
,
27296
,
44368
,
84821
,
19296
,
42352
,
21732
,
53600
,
59752
,
54560
,
55968
,
92838
,
22224
,
19168
,
43476
,
41680
,
53584
,
62034
,
54560
],
solarMonth
:[
31
,
28
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
],
Gan
:[
"甲"
,
"乙"
,
"丙"
,
"丁"
,
"戊"
,
"己"
,
"庚"
,
"辛"
,
"壬"
,
"癸"
],
Zhi
:[
"子"
,
"丑"
,
"寅"
,
"卯"
,
"辰"
,
"巳"
,
"午"
,
"未"
,
"申"
,
"酉"
,
"戌"
,
"亥"
],
Animals
:[
"鼠"
,
"牛"
,
"虎"
,
"兔"
,
"龙"
,
"蛇"
,
"马"
,
"羊"
,
"猴"
,
"鸡"
,
"狗"
,
"猪"
],
solarTerm
:[
"小寒"
,
"大寒"
,
"立春"
,
"雨水"
,
"惊蛰"
,
"春分"
,
"清明"
,
"谷雨"
,
"立夏"
,
"小满"
,
"芒种"
,
"夏至"
,
"小暑"
,
"大暑"
,
"立秋"
,
"处暑"
,
"白露"
,
"秋分"
,
"寒露"
,
"霜降"
,
"立冬"
,
"小雪"
,
"大雪"
,
"冬至"
],
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"
],
nStr1
:[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"七"
,
"八"
,
"九"
,
"十"
],
nStr2
:[
"初"
,
"十"
,
"廿"
,
"卅"
],
nStr3
:[
"正"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"七"
,
"八"
,
"九"
,
"十"
,
"冬"
,
"腊"
],
lYearDays
:
function
(
e
){
let
t
,
a
=
348
;
for
(
t
=
32768
;
t
>
8
;
t
>>=
1
)
a
+=
n
.
lunarInfo
[
e
-
1900
]
&
t
?
1
:
0
;
return
a
+
n
.
leapDays
(
e
)},
leapMonth
:
function
(
e
){
return
15
&
n
.
lunarInfo
[
e
-
1900
]},
leapDays
:
function
(
e
){
return
n
.
leapMonth
(
e
)?
65536
&
n
.
lunarInfo
[
e
-
1900
]?
30
:
29
:
0
},
monthDays
:
function
(
e
,
t
){
return
t
>
12
||
t
<
1
?
-
1
:
n
.
lunarInfo
[
e
-
1900
]
&
65536
>>
t
?
30
:
29
},
solarDays
:
function
(
e
,
t
){
if
(
t
>
12
||
t
<
1
)
return
-
1
;
const
a
=
t
-
1
;
return
1
==+
a
?
e
%
4
==
0
&&
e
%
100
!=
0
||
e
%
400
==
0
?
29
:
28
:
n
.
solarMonth
[
a
]},
toGanZhiYear
:
function
(
e
){
let
t
=
(
e
-
3
)
%
10
,
a
=
(
e
-
3
)
%
12
;
return
0
==+
t
&&
(
t
=
10
),
0
==+
a
&&
(
a
=
12
),
n
.
Gan
[
t
-
1
]
+
n
.
Zhi
[
a
-
1
]},
toAstro
:
function
(
e
,
t
){
return
"魔羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯"
.
substr
(
2
*
e
-
(
t
<
[
20
,
19
,
21
,
21
,
21
,
22
,
23
,
23
,
23
,
23
,
22
,
22
][
e
-
1
]?
2
:
0
),
2
)
+
"座"
},
toGanZhi
:
function
(
e
){
return
n
.
Gan
[
e
%
10
]
+
n
.
Zhi
[
e
%
12
]},
getTerm
:
function
(
e
,
t
){
if
(
e
<
1900
||
e
>
2100
)
return
-
1
;
if
(
t
<
1
||
t
>
24
)
return
-
1
;
const
a
=
n
.
sTermInfo
[
e
-
1900
],
r
=
[
parseInt
(
"0x"
+
a
.
substr
(
0
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
5
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
10
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
15
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
20
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
25
,
5
)).
toString
()],
s
=
[
r
[
0
].
substr
(
0
,
1
),
r
[
0
].
substr
(
1
,
2
),
r
[
0
].
substr
(
3
,
1
),
r
[
0
].
substr
(
4
,
2
),
r
[
1
].
substr
(
0
,
1
),
r
[
1
].
substr
(
1
,
2
),
r
[
1
].
substr
(
3
,
1
),
r
[
1
].
substr
(
4
,
2
),
r
[
2
].
substr
(
0
,
1
),
r
[
2
].
substr
(
1
,
2
),
r
[
2
].
substr
(
3
,
1
),
r
[
2
].
substr
(
4
,
2
),
r
[
3
].
substr
(
0
,
1
),
r
[
3
].
substr
(
1
,
2
),
r
[
3
].
substr
(
3
,
1
),
r
[
3
].
substr
(
4
,
2
),
r
[
4
].
substr
(
0
,
1
),
r
[
4
].
substr
(
1
,
2
),
r
[
4
].
substr
(
3
,
1
),
r
[
4
].
substr
(
4
,
2
),
r
[
5
].
substr
(
0
,
1
),
r
[
5
].
substr
(
1
,
2
),
r
[
5
].
substr
(
3
,
1
),
r
[
5
].
substr
(
4
,
2
)];
return
parseInt
(
s
[
t
-
1
])},
toChinaMonth
:
function
(
e
){
if
(
e
>
12
||
e
<
1
)
return
-
1
;
let
t
=
n
.
nStr3
[
e
-
1
];
return
t
+=
"月"
,
t
},
toChinaDay
:
function
(
e
){
let
t
;
switch
(
e
){
case
10
:
t
=
"初十"
;
break
;
case
20
:
t
=
"二十"
;
break
;
case
30
:
t
=
"三十"
;
break
;
default
:
t
=
n
.
nStr2
[
Math
.
floor
(
e
/
10
)],
t
+=
n
.
nStr1
[
e
%
10
]}
return
t
},
getAnimal
:
function
(
e
){
return
n
.
Animals
[(
e
-
4
)
%
12
]},
solar2lunar
:
function
(
e
,
t
,
a
){
if
(
e
<
1900
||
e
>
2100
)
return
-
1
;
if
(
1900
==+
e
&&
1
==+
t
&&+
a
<
31
)
return
-
1
;
let
r
,
s
;
r
=
e
?
new
Date
(
e
,
parseInt
(
t
)
-
1
,
a
):
new
Date
;
let
o
=
0
,
c
=
0
;
e
=
r
.
getFullYear
(),
t
=
r
.
getMonth
()
+
1
,
a
=
r
.
getDate
();
let
l
=
(
Date
.
UTC
(
r
.
getFullYear
(),
r
.
getMonth
(),
r
.
getDate
())
-
Date
.
UTC
(
1900
,
0
,
31
))
/
864
e5
;
for
(
s
=
1900
;
s
<
2101
&&
l
>
0
;
s
++
)
c
=
n
.
lYearDays
(
s
),
l
-=
c
;
l
<
0
&&
(
l
+=
c
,
s
--
);
const
i
=
new
Date
;
let
d
=!
1
;
i
.
getFullYear
()
===+
e
&&
i
.
getMonth
()
+
1
===+
t
&&
i
.
getDate
()
===+
a
&&
(
d
=!
0
);
let
f
=
r
.
getDay
();
const
b
=
n
.
nStr1
[
f
];
0
==+
f
&&
(
f
=
7
);
const
h
=
s
;
o
=
n
.
leapMonth
(
s
);
let
u
=!
1
;
for
(
s
=
1
;
s
<
13
&&
l
>
0
;
s
++
)
o
>
0
&&
s
===
o
+
1
&&!
1
===
u
?(
--
s
,
u
=!
0
,
c
=
n
.
leapDays
(
h
)):
c
=
n
.
monthDays
(
h
,
s
),
!
0
===
u
&&
s
===
o
+
1
&&
(
u
=!
1
),
l
-=
c
;
0
===
l
&&
o
>
0
&&
s
===
o
+
1
&&
(
u
?
u
=!
1
:(
u
=!
0
,
--
s
)),
l
<
0
&&
(
l
+=
c
,
--
s
);
const
y
=
s
,
m
=
l
+
1
,
D
=
t
-
1
,
p
=
n
.
toGanZhiYear
(
h
),
g
=
n
.
getTerm
(
e
,
2
*
t
-
1
),
T
=
n
.
getTerm
(
e
,
2
*
t
);
let
w
=
n
.
toGanZhi
(
12
*
(
e
-
1900
)
+
t
+
11
);
a
>=
g
&&
(
w
=
n
.
toGanZhi
(
12
*
(
e
-
1900
)
+
t
+
12
));
let
C
=!
1
,
M
=
null
;
+
g
===
a
&&
(
C
=!
0
,
M
=
n
.
solarTerm
[
2
*
t
-
2
]),
+
T
===
a
&&
(
C
=!
0
,
M
=
n
.
solarTerm
[
2
*
t
-
1
]);
const
_
=
Date
.
UTC
(
e
,
D
,
1
,
0
,
0
,
0
,
0
)
/
864
e5
+
25567
+
10
,
S
=
n
.
toGanZhi
(
_
+
a
-
1
),
k
=
n
.
toAstro
(
t
,
a
);
return
{
lYear
:
h
,
lMonth
:
y
,
lDay
:
m
,
Animal
:
n
.
getAnimal
(
h
),
IMonthCn
:(
u
?
"闰"
:
""
)
+
n
.
toChinaMonth
(
y
),
IDayCn
:
n
.
toChinaDay
(
m
),
cYear
:
e
,
cMonth
:
t
,
cDay
:
a
,
gzYear
:
p
,
gzMonth
:
w
,
gzDay
:
S
,
isToday
:
d
,
isLeap
:
u
,
nWeek
:
f
,
ncWeek
:
"星期"
+
b
,
isTerm
:
C
,
Term
:
M
,
astro
:
k
}},
lunar2solar
:
function
(
e
,
t
,
a
,
r
){
r
=!!
r
;
const
s
=
n
.
leapMonth
(
e
);
if
(
r
&&
s
!==
t
)
return
-
1
;
if
(
2100
==+
e
&&
12
==+
t
&&+
a
>
1
||
1900
==+
e
&&
1
==+
t
&&+
a
<
31
)
return
-
1
;
const
o
=
n
.
monthDays
(
e
,
t
);
let
c
=
o
;
if
(
r
&&
(
c
=
n
.
leapDays
(
e
,
t
)),
e
<
1900
||
e
>
2100
||
a
>
c
)
return
-
1
;
let
l
=
0
;
for
(
let
t
=
1900
;
t
<
e
;
t
++
)
l
+=
n
.
lYearDays
(
t
);
let
i
=
0
,
d
=!
1
;
for
(
let
a
=
1
;
a
<
t
;
a
++
)
i
=
n
.
leapMonth
(
e
),
d
||
i
<=
a
&&
i
>
0
&&
(
l
+=
n
.
leapDays
(
e
),
d
=!
0
),
l
+=
n
.
monthDays
(
e
,
a
);
r
&&
(
l
+=
o
);
const
f
=
Date
.
UTC
(
1900
,
1
,
30
,
0
,
0
,
0
),
b
=
new
Date
(
864
e5
*
(
l
+
a
-
31
)
+
f
),
h
=
b
.
getUTCFullYear
(),
u
=
b
.
getUTCMonth
()
+
1
,
y
=
b
.
getUTCDate
();
return
n
.
solar2lunar
(
h
,
u
,
y
)}},{
Gan
:
r
,
Zhi
:
s
,
nStr1
:
o
,
nStr2
:
c
,
nStr3
:
l
,
Animals
:
i
,
solarTerm
:
d
,
lunarInfo
:
f
,
sTermInfo
:
b
,
solarMonth
:
h
,...
u
}
=
n
;
var
y
=
u
;
t
.
default
=
y
},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
=
c
(
a
(
0
)),
r
=
c
(
a
(
4
)),
s
=
c
(
a
(
2
)),
o
=
a
(
1
);
function
c
(
e
){
return
e
&&
e
.
__esModule
?
e
:{
default
:
e
}}
const
l
=
new
o
.
Logger
,
i
=
new
o
.
GetDate
,
d
=
Object
.
prototype
.
toString
;
class
f
extends
n
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
}
getCalendarConfig
(){
return
this
.
Component
.
config
}
buildDate
(
e
,
t
){
const
a
=
i
.
todayDate
(),
n
=
i
.
thisMonthDays
(
e
,
t
),
r
=
[];
for
(
let
o
=
1
;
o
<=
n
;
o
++
){
const
n
=+
a
.
year
==+
e
&&+
a
.
month
==+
t
&&
o
===+
a
.
date
,
c
=
this
.
getCalendarConfig
(),
l
=
{
year
:
e
,
month
:
t
,
day
:
o
,
choosed
:
!
1
,
week
:
i
.
dayOfWeek
(
e
,
t
,
o
),
isToday
:
n
&&
c
.
highlightToday
,
lunar
:
s
.
default
.
solar2lunar
(
+
e
,
+
t
,
+
o
)};
r
.
push
(
l
)}
return
r
}
enableArea
(
e
=
[]){
if
(
2
===
e
.
length
){
if
(
this
.
__judgeParam
(
e
)){
let
{
days
:
t
=
[],
selectedDay
:
a
=
[]}
=
this
.
getData
(
"calendar"
);
const
{
startTimestamp
:
n
,
endTimestamp
:
r
}
=
(
0
,
o
.
convertEnableAreaToTimestamp
)(
e
),
s
=
this
.
__handleEnableArea
({
dateArea
:
e
,
days
:
t
,
startTimestamp
:
n
,
endTimestamp
:
r
},
a
);
this
.
setData
({
"calendar.enableArea"
:
e
,
"calendar.days"
:
s
.
dates
,
"calendar.selectedDay"
:
s
.
selectedDay
,
"calendar.enableAreaTimestamp"
:[
n
,
r
]})}}
else
l
.
warn
(
'enableArea()参数需为时间范围数组,形如:["2018-8-4" , "2018-8-24"]'
)}
enableDays
(
e
=
[]){
const
{
enableArea
:
t
=
[]}
=
this
.
getData
(
"calendar"
);
let
a
=
[];
a
=
t
.
length
?(
0
,
o
.
delRepeatedEnableDay
)(
e
,
t
):(
0
,
o
.
converEnableDaysToTimestamp
)(
e
);
let
{
days
:
n
=
[],
selectedDay
:
r
=
[]}
=
this
.
getData
(
"calendar"
);
const
s
=
this
.
__handleEnableDays
({
days
:
n
,
expectEnableDaysTimestamp
:
a
},
r
);
this
.
setData
({
"calendar.days"
:
s
.
dates
,
"calendar.selectedDay"
:
s
.
selectedDay
,
"calendar.enableDays"
:
e
,
"calendar.enableDaysTimestamp"
:
a
})}
setSelectedDays
(
e
){
if
(
!
(
0
,
r
.
default
)(
this
.
Component
).
getCalendarConfig
().
multi
)
return
l
.
warn
(
"单选模式下不能设置多日期选中,请配置 multi"
);
let
{
days
:
t
}
=
this
.
getData
(
"calendar"
),
a
=
[];
if
(
e
){
if
(
e
&&
e
.
length
){
const
{
dates
:
n
,
selectedDates
:
r
}
=
this
.
__handleSelectedDays
(
t
,
a
,
e
);
t
=
n
,
a
=
r
}}
else
t
.
map
(
e
=>
{
e
.
choosed
=!
0
,
e
.
showTodoLabel
=!
1
}),
a
=
t
;(
0
,
r
.
default
)(
this
.
Component
).
setCalendarConfig
(
"multi"
,
!
0
),
this
.
setData
({
"calendar.days"
:
t
,
"calendar.selectedDay"
:
a
})}
disableDays
(
e
){
const
{
disableDays
:
t
=
[],
days
:
a
}
=
this
.
getData
(
"calendar"
);
if
(
"[object Array]"
!==
Object
.
prototype
.
toString
.
call
(
e
))
return
l
.
warn
(
"disableDays 参数为数组"
);
let
n
=
[];
if
(
e
.
length
){
n
=
(
0
,
o
.
uniqueArrayByDate
)(
e
.
concat
(
t
));
const
r
=
n
.
map
(
e
=>
i
.
toTimeStr
(
e
));
a
.
forEach
(
e
=>
{
const
t
=
i
.
toTimeStr
(
e
);
r
.
includes
(
t
)
&&
(
e
.
disable
=!
0
)})}
else
a
.
forEach
(
e
=>
{
e
.
disable
=!
1
});
this
.
setData
({
"calendar.days"
:
a
,
"calendar.disableDays"
:
n
})}
chooseArea
(
e
=
[]){
return
new
Promise
((
t
,
a
)
=>
{
if
(
1
===
e
.
length
&&
(
e
=
e
.
concat
(
e
)),
2
===
e
.
length
){
if
(
this
.
__judgeParam
(
e
)){
const
n
=
(
0
,
r
.
default
)(
this
.
Component
).
getCalendarConfig
(),{
startTimestamp
:
s
,
endTimestamp
:
c
}
=
(
0
,
o
.
convertEnableAreaToTimestamp
)(
e
);
this
.
setData
({
calendarConfig
:{...
n
,
chooseAreaMode
:
!
0
,
mulit
:
!
0
},
"calendar.chooseAreaTimestamp"
:[
s
,
c
]},()
=>
{
this
.
__chooseContinuousDates
(
s
,
c
).
then
(
t
).
catch
(
a
)})}}})}
__pusheNextMonthDateArea
(
e
,
t
,
a
,
n
){
const
r
=
this
.
buildDate
(
e
.
year
,
e
.
month
);
let
s
=
r
.
length
;
for
(
let
e
=
0
;
e
<
s
;
e
++
){
const
c
=
r
[
e
],
l
=
(
0
,
o
.
getDateTimeStamp
)(
c
);
l
<=
a
&&
l
>=
t
&&
n
.
push
({...
c
,
choosed
:
!
0
}),
e
===
s
-
1
&&
l
<
a
&&
this
.
__pusheNextMonthDateArea
(
i
.
nextMonth
(
c
),
t
,
a
,
n
)}}
__pushPrevMonthDateArea
(
e
,
t
,
a
,
n
){
const
r
=
i
.
sortDates
(
this
.
buildDate
(
e
.
year
,
e
.
month
),
"desc"
);
let
s
=
r
.
length
,
c
=
(
0
,
o
.
getDateTimeStamp
)(
r
[
0
]);
for
(
let
e
=
0
;
e
<
s
;
e
++
){
const
l
=
r
[
e
],
d
=
(
0
,
o
.
getDateTimeStamp
)(
l
);
d
>=
t
&&
d
<=
a
&&
n
.
push
({...
l
,
choosed
:
!
0
}),
e
===
s
-
1
&&
c
>
t
&&
this
.
__pushPrevMonthDateArea
(
i
.
prevMonth
(
l
),
t
,
a
,
n
)}}
__calcDateWhenNotInOneMonth
(
e
){
const
{
firstDate
:
t
,
lastDate
:
a
,
startTimestamp
:
n
,
endTimestamp
:
r
,
filterSelectedDate
:
s
}
=
e
;(
0
,
o
.
getDateTimeStamp
)(
t
)
>
n
&&
this
.
__pushPrevMonthDateArea
(
i
.
prevMonth
(
t
),
n
,
r
,
s
),(
0
,
o
.
getDateTimeStamp
)(
a
)
<
r
&&
this
.
__pusheNextMonthDateArea
(
i
.
nextMonth
(
a
),
n
,
r
,
s
);
return
[...
i
.
sortDates
(
s
)]}
__chooseContinuousDates
(
e
,
t
){
return
new
Promise
((
a
,
n
)
=>
{
const
{
days
:
r
,
selectedDay
:
s
=
[]}
=
this
.
getData
(
"calendar"
),
c
=
[];
let
l
=
[];
s
.
forEach
(
a
=>
{
const
n
=
(
0
,
o
.
getDateTimeStamp
)(
a
);
n
>=
e
&&
n
<=
t
&&
(
l
.
push
(
a
),
c
.
push
(
i
.
toTimeStr
(
a
)))}),
r
.
forEach
(
a
=>
{
const
n
=
(
0
,
o
.
getDateTimeStamp
)(
a
),
r
=
c
.
includes
(
i
.
toTimeStr
(
a
));
if
(
n
>=
e
&&
n
<=
t
){
if
(
r
)
return
;
a
.
choosed
=!
0
,
l
.
push
(
a
)}
else
if
(
a
.
choosed
=!
1
,
r
){
const
e
=
l
.
findIndex
(
e
=>
i
.
toTimeStr
(
e
)
===
i
.
toTimeStr
(
a
));
e
>-
1
&&
l
.
splice
(
e
,
1
)}});
const
d
=
r
[
0
],
f
=
r
[
r
.
length
-
1
],
b
=
this
.
__calcDateWhenNotInOneMonth
({
firstDate
:
d
,
lastDate
:
f
,
startTimestamp
:
e
,
endTimestamp
:
t
,
filterSelectedDate
:
l
});
try
{
this
.
setData
({
"calendar.days"
:[...
r
],
"calendar.selectedDay"
:
b
},()
=>
{
a
(
b
)})}
catch
(
e
){
n
(
e
)}})}
setDateStyle
(
e
){
if
(
"[object Array]"
!==
d
.
call
(
e
))
return
;
const
{
days
:
t
,
specialStyleDates
:
a
}
=
this
.
getData
(
"calendar"
);
"[object Array]"
===
d
.
call
(
a
)
&&
(
e
=
(
0
,
o
.
uniqueArrayByDate
)([...
a
,...
e
]));
const
n
=
e
.
map
(
e
=>
`
${
e
.
year
}
_
${
e
.
month
}
_
${
e
.
day
}
`
),
r
=
t
.
map
(
t
=>
{
const
a
=
n
.
indexOf
(
`
${
t
.
year
}
_
${
t
.
month
}
_
${
t
.
day
}
`
);
return
a
>-
1
?{...
t
,
class
:
e
[
a
].
class
}:{...
t
}});
this
.
setData
({
"calendar.days"
:
r
,
"calendar.specialStyleDates"
:
e
})}
__judgeParam
(
e
){
const
{
start
:
t
,
end
:
a
,
startTimestamp
:
n
,
endTimestamp
:
r
}
=
(
0
,
o
.
convertEnableAreaToTimestamp
)(
e
);
if
(
!
t
||!
a
)
return
;
const
s
=
i
.
thisMonthDays
(
t
[
0
],
t
[
1
]),
c
=
i
.
thisMonthDays
(
a
[
0
],
a
[
1
]);
return
t
[
2
]
>
s
||
t
[
2
]
<
1
?(
l
.
warn
(
"enableArea() 开始日期错误,指定日期不在当前月份天数范围内"
),
!
1
):
t
[
1
]
>
12
||
t
[
1
]
<
1
?(
l
.
warn
(
"enableArea() 开始日期错误,月份超出1-12月份"
),
!
1
):
a
[
2
]
>
c
||
a
[
2
]
<
1
?(
l
.
warn
(
"enableArea() 截止日期错误,指定日期不在当前月份天数范围内"
),
!
1
):
a
[
1
]
>
12
||
a
[
1
]
<
1
?(
l
.
warn
(
"enableArea() 截止日期错误,月份超出1-12月份"
),
!
1
):
!
(
n
>
r
)
||
(
l
.
warn
(
"enableArea()参数最小日期大于了最大日期"
),
!
1
)}
__getDisableDateTimestamp
(){
let
e
;
const
{
date
:
t
,
type
:
a
}
=
this
.
getCalendarConfig
().
disableMode
||
{};
if
(
t
){
const
a
=
t
.
split
(
"-"
);
if
(
a
.
length
<
3
)
return
l
.
warn
(
"配置 disableMode.date 格式错误"
),{};
e
=
(
0
,
o
.
getDateTimeStamp
)({
year
:
+
a
[
0
],
month
:
+
a
[
1
],
day
:
+
a
[
2
]})}
return
{
disableDateTimestamp
:
e
,
disableType
:
a
}}
__handleEnableArea
(
e
=
{},
t
=
[]){
const
{
area
:
a
,
days
:
n
,
startTimestamp
:
r
,
endTimestamp
:
s
}
=
e
,
c
=
this
.
getData
(
"calendar.enableDays"
)
||
[];
let
l
=
[];
c
.
length
&&
(
l
=
(
0
,
o
.
delRepeatedEnableDay
)(
c
,
a
));
const
{
disableDateTimestamp
:
d
,
disableType
:
f
}
=
this
.
__getDisableDateTimestamp
(),
b
=
[...
n
];
return
b
.
forEach
(
e
=>
{
const
a
=+
i
.
newDate
(
e
.
year
,
e
.
month
,
e
.
day
).
getTime
();(
+
r
>
a
||
a
>+
s
)
&&!
l
.
includes
(
a
)
||
"before"
===
f
&&
d
&&
a
<
d
||
"after"
===
f
&&
d
&&
a
>
d
?(
e
.
disable
=!
0
,
e
.
choosed
&&
(
e
.
choosed
=!
1
,
t
=
t
.
filter
(
t
=>
i
.
toTimeStr
(
e
)
!==
i
.
toTimeStr
(
t
)))):
e
.
disable
&&
(
e
.
disable
=!
1
)}),{
dates
:
b
,
selectedDay
:
t
}}
__handleEnableDays
(
e
=
{},
t
=
[]){
const
{
days
:
a
,
expectEnableDaysTimestamp
:
n
}
=
e
,{
enableAreaTimestamp
:
r
=
[]}
=
this
.
getData
(
"calendar"
),
s
=
[...
a
];
return
s
.
forEach
(
e
=>
{
const
a
=
i
.
newDate
(
e
.
year
,
e
.
month
,
e
.
day
).
getTime
();
let
s
=!
1
;
r
.
length
?(
+
r
[
0
]
>+
a
||+
a
>+
r
[
1
])
&&!
n
.
includes
(
+
a
)
&&
(
s
=!
0
):
n
.
includes
(
+
a
)
||
(
s
=!
0
),
s
?(
e
.
disable
=!
0
,
e
.
choosed
&&
(
e
.
choosed
=!
1
,
t
=
t
.
filter
(
t
=>
i
.
toTimeStr
(
e
)
!==
i
.
toTimeStr
(
t
)))):
e
.
disable
=!
1
}),{
dates
:
s
,
selectedDay
:
t
}}
__handleSelectedDays
(
e
=
[],
t
=
[],
a
){
const
{
selectedDay
:
n
,
showLabelAlways
:
r
}
=
this
.
getData
(
"calendar"
);
t
=
n
&&
n
.
length
?(
0
,
o
.
uniqueArrayByDate
)(
n
.
concat
(
a
)):
a
;
const
{
year
:
s
,
month
:
c
}
=
e
[
0
],
l
=
[];
return
t
.
forEach
(
e
=>
{
+
e
.
year
==+
s
&&+
e
.
month
==+
c
&&
l
.
push
(
i
.
toTimeStr
(
e
))}),[...
e
].
map
(
e
=>
{
l
.
includes
(
i
.
toTimeStr
(
e
))
&&
(
e
.
choosed
=!
0
,
r
&&
e
.
showTodoLabel
?
e
.
showTodoLabel
=!
0
:
e
.
showTodoLabel
=!
1
)}),{
dates
:
e
,
selectedDates
:
t
}}}
t
.
default
=
e
=>
new
f
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
,
r
=
(
n
=
a
(
0
))
&&
n
.
__esModule
?
n
:{
default
:
n
};
class
s
extends
r
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
}
getCalendarConfig
(){
return
this
.
Component
&&
this
.
Component
.
config
?
this
.
Component
.
config
:{}}
setCalendarConfig
(
e
){
return
new
Promise
((
t
,
a
)
=>
{
if
(
!
this
.
Component
||!
this
.
Component
.
config
)
return
void
a
(
"异常:未找到组件配置信息"
);
let
n
=
{...
this
.
Component
.
config
,...
e
};
this
.
Component
.
config
=
n
,
this
.
setData
({
calendarConfig
:
n
},()
=>
{
t
(
n
)})})}}
t
.
default
=
e
=>
new
s
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
=
i
(
a
(
3
)),
r
=
i
(
a
(
0
)),
s
=
i
(
a
(
6
)),
o
=
i
(
a
(
4
)),
c
=
i
(
a
(
2
)),
l
=
a
(
1
);
function
i
(
e
){
return
e
&&
e
.
__esModule
?
e
:{
default
:
e
}}
const
d
=
new
l
.
GetDate
,
f
=
new
l
.
Logger
;
class
b
extends
r
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
,
this
.
getCalendarConfig
=
(
0
,
o
.
default
)(
this
.
Component
).
getCalendarConfig
}
switchWeek
(
e
,
t
){
return
new
Promise
((
a
,
n
)
=>
{
if
((
0
,
o
.
default
)(
this
.
Component
).
getCalendarConfig
().
multi
)
return
f
.
warn
(
"多选模式不能切换周月视图"
);
const
{
selectedDay
:
r
=
[],
curYear
:
c
,
curMonth
:
l
}
=
this
.
getData
(
"calendar"
);
let
i
=
[],
b
=!
1
;
r
.
length
?
i
=
r
[
0
]:(
i
=
d
.
todayDate
(),
i
.
day
=
i
.
date
,
b
=!
0
);
let
h
=
t
||
i
;
const
{
year
:
u
,
month
:
y
}
=
h
,
m
=
c
!==
u
||
l
!==
y
;
if
(
"week"
===
e
){
if
(
this
.
Component
.
weekMode
)
return
;(
r
.
length
&&
m
||!
r
.
length
)
&&
(
b
=!
0
,
h
=
{
year
:
c
,
month
:
l
,
day
:
h
.
day
}),
this
.
Component
.
weekMode
=!
0
,
this
.
setData
({
"calendarConfig.weekMode"
:
!
0
}),
this
.
jump
(
h
,
b
).
then
(
a
).
catch
(
n
)}
else
{
this
.
Component
.
weekMode
=!
1
,
this
.
setData
({
"calendarConfig.weekMode"
:
!
1
});
const
e
=
r
.
length
&&
m
||!
r
.
length
;(
0
,
s
.
default
)(
this
.
Component
).
renderCalendar
(
c
,
l
,
h
.
day
,
e
).
then
(
a
).
catch
(
n
)}})}
updateCurrYearAndMonth
(
e
){
let
{
days
:
t
,
curYear
:
a
,
curMonth
:
n
}
=
this
.
getData
(
"calendar"
);
const
{
month
:
r
}
=
t
[
0
],{
month
:
s
}
=
t
[
t
.
length
-
1
],
o
=
d
.
thisMonthDays
(
a
,
n
),
c
=
t
[
t
.
length
-
1
],
l
=
t
[
0
];
return
(
c
.
day
+
7
>
o
||
n
===
r
&&
r
!==
s
)
&&
"next"
===
e
?(
n
+=
1
,
n
>
12
&&
(
a
+=
1
,
n
=
1
)):(
+
l
.
day
<=
7
||
n
===
s
&&
r
!==
s
)
&&
"prev"
===
e
&&
(
n
-=
1
,
n
<=
0
&&
(
a
-=
1
,
n
=
12
)),{
Uyear
:
a
,
Umonth
:
n
}}
calculateLastDay
(){
const
{
days
:
e
=
[],
curYear
:
t
,
curMonth
:
a
}
=
this
.
getData
(
"calendar"
);
return
{
lastDayInThisWeek
:
e
[
e
.
length
-
1
].
day
,
lastDayInThisMonth
:
d
.
thisMonthDays
(
t
,
a
)}}
calculateFirstDay
(){
const
{
days
:
e
}
=
this
.
getData
(
"calendar"
);
return
{
firstDayInThisWeek
:
e
[
0
].
day
}}
firstWeekInMonth
(
e
,
t
,
a
){
let
r
=
d
.
dayOfWeek
(
e
,
t
,
1
);
a
&&
0
===
r
&&
(
r
=
7
);
const
[,
s
]
=
[
0
,
7
-
r
];
let
o
=
this
.
getData
(
"calendar.days"
)
||
[];
this
.
Component
.
weekMode
&&
(
o
=
(
0
,
n
.
default
)(
this
.
Component
).
buildDate
(
e
,
t
));
return
o
.
slice
(
0
,
a
?
s
+
1
:
s
)}
lastWeekInMonth
(
e
,
t
,
a
){
const
r
=
d
.
thisMonthDays
(
e
,
t
),
s
=
d
.
dayOfWeek
(
e
,
t
,
r
),[
o
,
c
]
=
[
r
-
s
,
r
];
let
l
=
this
.
getData
(
"calendar.days"
)
||
[];
this
.
Component
.
weekMode
&&
(
l
=
(
0
,
n
.
default
)(
this
.
Component
).
buildDate
(
e
,
t
));
return
l
.
slice
(
a
?
o
:
o
-
1
,
c
)}
__getDisableDateTimestamp
(
e
){
const
{
date
:
t
,
type
:
a
}
=
e
.
disableMode
||
{};
let
n
;
if
(
t
){
const
e
=
t
.
split
(
"-"
);
if
(
e
.
length
<
3
)
return
f
.
warn
(
"配置 disableMode.date 格式错误"
),{};
n
=
(
0
,
l
.
getDateTimeStamp
)({
year
:
+
e
[
0
],
month
:
+
e
[
1
],
day
:
+
e
[
2
]})}
return
{
disableDateTimestamp
:
n
,
disableType
:
a
}}
initSelectedDay
(
e
){
let
t
=
[...
e
];
const
{
selectedDay
:
a
=
[]}
=
this
.
getData
(
"calendar"
),
n
=
a
.
map
(
e
=>
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
),
r
=
this
.
getCalendarConfig
(),{
disableDateTimestamp
:
s
,
disableType
:
o
}
=
this
.
__getDisableDateTimestamp
(
r
);
return
t
=
t
.
map
(
e
=>
{
if
(
!
e
)
return
{};
const
t
=
(
0
,
l
.
getDateTimeStamp
)(
e
);
let
a
=
{...
e
};
return
n
.
includes
(
`
${
+
a
.
year
}
-
${
+
a
.
month
}
-
${
+
a
.
day
}
`
)?
a
.
choosed
=!
0
:
a
.
choosed
=!
1
,(
"after"
===
o
&&
t
>
s
||
"before"
===
o
&&
t
<
s
)
&&
(
a
.
disable
=!
0
),
a
=
this
.
__setTodoWhenJump
(
a
,
r
),
r
.
showLunar
&&
(
a
=
this
.
__setSolarLunar
(
a
)),
r
.
highlightToday
&&
(
a
=
this
.
__highlightToday
(
a
)),
a
}),
t
}
setEnableAreaOnWeekMode
(
e
=
[]){
let
{
enableAreaTimestamp
:
t
=
[],
enableDaysTimestamp
:
a
=
[]}
=
this
.
getData
(
"calendar"
);
e
.
forEach
(
e
=>
{
const
n
=
d
.
newDate
(
e
.
year
,
e
.
month
,
e
.
day
).
getTime
();
let
r
=!
1
;
t
.
length
?(
+
t
[
0
]
>+
n
||+
n
>+
t
[
1
])
&&!
a
.
includes
(
+
n
)
&&
(
r
=!
0
):
a
.
length
&&!
a
.
includes
(
+
n
)
&&
(
r
=!
0
),
r
&&
(
e
.
disable
=!
0
,
e
.
choosed
=!
1
);
const
s
=
(
0
,
o
.
default
)(
this
.
Component
).
getCalendarConfig
(),{
disableDateTimestamp
:
c
,
disableType
:
l
}
=
this
.
__getDisableDateTimestamp
(
s
);(
"before"
===
l
&&
n
<
c
||
"after"
===
l
&&
n
>
c
)
&&
(
e
.
disable
=!
0
)})}
updateYMWhenSwipeCalendarHasSelected
(
e
){
const
t
=
e
.
filter
(
e
=>
e
.
choosed
);
if
(
t
&&
t
.
length
){
const
{
year
:
e
,
month
:
a
}
=
t
[
0
];
return
{
year
:
e
,
month
:
a
}}
return
{}}
calculateNextWeekDays
(){
let
{
lastDayInThisWeek
:
e
,
lastDayInThisMonth
:
t
}
=
this
.
calculateLastDay
(),{
curYear
:
a
,
curMonth
:
r
}
=
this
.
getData
(
"calendar"
),
s
=
[];
if
(
t
-
e
>=
7
){
const
{
Uyear
:
t
,
Umonth
:
n
}
=
this
.
updateCurrYearAndMonth
(
"next"
);
a
=
t
,
r
=
n
;
for
(
let
t
=
e
+
1
;
t
<=
e
+
7
;
t
++
)
s
.
push
({
year
:
a
,
month
:
r
,
day
:
t
,
week
:
d
.
dayOfWeek
(
a
,
r
,
t
)})}
else
{
for
(
let
n
=
e
+
1
;
n
<=
t
;
n
++
)
s
.
push
({
year
:
a
,
month
:
r
,
day
:
n
,
week
:
d
.
dayOfWeek
(
a
,
r
,
n
)});
const
{
Uyear
:
n
,
Umonth
:
o
}
=
this
.
updateCurrYearAndMonth
(
"next"
);
a
=
n
,
r
=
o
;
for
(
let
n
=
1
;
n
<=
7
-
(
t
-
e
);
n
++
)
s
.
push
({
year
:
a
,
month
:
r
,
day
:
n
,
week
:
d
.
dayOfWeek
(
a
,
r
,
n
)})}
s
=
this
.
initSelectedDay
(
s
);
const
{
year
:
o
,
month
:
c
}
=
this
.
updateYMWhenSwipeCalendarHasSelected
(
s
);
o
&&
c
&&
(
a
=
o
,
r
=
c
),
this
.
setEnableAreaOnWeekMode
(
s
),
this
.
setData
({
"calendar.curYear"
:
a
,
"calendar.curMonth"
:
r
,
"calendar.days"
:
s
},()
=>
{(
0
,
n
.
default
)(
this
.
Component
).
setDateStyle
()})}
calculatePrevWeekDays
(){
let
{
firstDayInThisWeek
:
e
}
=
this
.
calculateFirstDay
(),{
curYear
:
t
,
curMonth
:
a
}
=
this
.
getData
(
"calendar"
),
r
=
[];
if
(
e
-
7
>
0
){
const
{
Uyear
:
n
,
Umonth
:
s
}
=
this
.
updateCurrYearAndMonth
(
"prev"
);
t
=
n
,
a
=
s
;
for
(
let
n
=
e
-
7
;
n
<
e
;
n
++
)
r
.
push
({
year
:
t
,
month
:
a
,
day
:
n
,
week
:
d
.
dayOfWeek
(
t
,
a
,
n
)})}
else
{
let
n
=
[];
for
(
let
r
=
1
;
r
<
e
;
r
++
)
n
.
push
({
year
:
t
,
month
:
a
,
day
:
r
,
week
:
d
.
dayOfWeek
(
t
,
a
,
r
)});
const
{
Uyear
:
s
,
Umonth
:
o
}
=
this
.
updateCurrYearAndMonth
(
"prev"
);
t
=
s
,
a
=
o
;
const
c
=
d
.
thisMonthDays
(
t
,
a
);
for
(
let
n
=
c
-
Math
.
abs
(
e
-
7
);
n
<=
c
;
n
++
)
r
.
push
({
year
:
t
,
month
:
a
,
day
:
n
,
week
:
d
.
dayOfWeek
(
t
,
a
,
n
)});
r
=
r
.
concat
(
n
)}
r
=
this
.
initSelectedDay
(
r
);
const
{
year
:
s
,
month
:
o
}
=
this
.
updateYMWhenSwipeCalendarHasSelected
(
r
);
s
&&
o
&&
(
t
=
s
,
a
=
o
),
this
.
setEnableAreaOnWeekMode
(
r
),
this
.
setData
({
"calendar.curYear"
:
t
,
"calendar.curMonth"
:
a
,
"calendar.days"
:
r
},()
=>
{(
0
,
n
.
default
)(
this
.
Component
).
setDateStyle
()})}
calculateDatesWhenJump
({
year
:
e
,
month
:
t
,
day
:
a
},{
firstWeekDays
:
n
,
lastWeekDays
:
r
},
s
){
const
o
=
this
.
__dateIsInWeek
({
year
:
e
,
month
:
t
,
day
:
a
},
n
),
c
=
this
.
__dateIsInWeek
({
year
:
e
,
month
:
t
,
day
:
a
},
r
);
let
l
=
[];
return
l
=
o
?
this
.
__calculateDatesWhenInFirstWeek
(
n
,
s
):
c
?
this
.
__calculateDatesWhenInLastWeek
(
r
,
s
):
this
.
__calculateDates
({
year
:
e
,
month
:
t
,
day
:
a
},
s
),
l
}
jump
({
year
:
e
,
month
:
t
,
day
:
a
},
r
){
return
new
Promise
(
s
=>
{
if
(
!
a
)
return
;
const
o
=
this
.
getCalendarConfig
(),
c
=
"Mon"
===
o
.
firstDayOfWeek
,
l
=
this
.
firstWeekInMonth
(
e
,
t
,
c
);
let
i
=
this
.
lastWeekInMonth
(
e
,
t
,
c
),
d
=
this
.
calculateDatesWhenJump
({
year
:
e
,
month
:
t
,
day
:
a
},{
firstWeekDays
:
l
,
lastWeekDays
:
i
},
c
);
d
=
d
.
map
(
n
=>
{
let
s
=
{...
n
};
return
+
s
.
year
!=+
e
||+
s
.
month
!=+
t
||+
s
.
day
!=+
a
||
r
||
(
s
.
choosed
=!
0
),
s
=
this
.
__setTodoWhenJump
(
s
,
o
),
o
.
showLunar
&&
(
s
=
this
.
__setSolarLunar
(
s
)),
o
.
highlightToday
&&
(
s
=
this
.
__highlightToday
(
s
)),
s
}),
this
.
setEnableAreaOnWeekMode
(
d
);
const
f
=
{
"calendar.days"
:
d
,
"calendar.curYear"
:
e
,
"calendar.curMonth"
:
t
,
"calendar.empytGrids"
:[],
"calendar.lastEmptyGrids"
:[]};
r
||
(
f
[
"calendar.selectedDay"
]
=
d
.
filter
(
e
=>
e
.
choosed
)),
this
.
setData
(
f
,()
=>
{(
0
,
n
.
default
)(
this
.
Component
).
setDateStyle
(),
s
({
year
:
e
,
month
:
t
,
date
:
a
})})})}
__setTodoWhenJump
(
e
){
const
t
=
{...
e
},{
todoLabels
:
a
=
[],
showLabelAlways
:
n
}
=
this
.
getData
(
"calendar"
),
r
=
a
.
map
(
e
=>
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
).
indexOf
(
`
${
+
t
.
year
}
-
${
+
t
.
month
}
-
${
+
t
.
day
}
`
);
if
(
-
1
!==
r
){
t
.
showTodoLabel
=!!
n
||!
t
.
choosed
;
const
e
=
a
[
r
]
||
{};
t
.
showTodoLabel
&&
e
.
todoText
&&
(
t
.
todoText
=
e
.
todoText
)}
return
t
}
__setSolarLunar
(
e
){
const
t
=
{...
e
};
return
t
.
lunar
=
c
.
default
.
solar2lunar
(
+
t
.
year
,
+
t
.
month
,
+
t
.
day
),
t
}
__highlightToday
(
e
){
const
t
=
{...
e
},
a
=
d
.
todayDate
(),
n
=+
a
.
year
==+
t
.
year
&&+
a
.
month
==+
t
.
month
&&+
t
.
day
==+
a
.
date
;
return
t
.
isToday
=
n
,
t
}
__calculateDatesWhenInFirstWeek
(
e
){
const
t
=
[...
e
];
if
(
t
.
length
<
7
){
let
e
,{
year
:
a
,
month
:
n
}
=
t
[
0
],
r
=
7
-
t
.
length
;
for
(
n
>
1
?(
n
-=
1
,
e
=
d
.
thisMonthDays
(
a
,
n
)):(
n
=
12
,
a
-=
1
,
e
=
d
.
thisMonthDays
(
a
,
n
));
r
;)
t
.
unshift
({
year
:
a
,
month
:
n
,
day
:
e
,
week
:
d
.
dayOfWeek
(
a
,
n
,
e
)}),
e
-=
1
,
r
-=
1
}
return
t
}
__calculateDatesWhenInLastWeek
(
e
){
const
t
=
[...
e
];
if
(
t
.
length
<
7
){
let
{
year
:
e
,
month
:
a
}
=
t
[
0
],
n
=
7
-
t
.
length
,
r
=
1
;
for
(
a
>
11
?(
a
=
1
,
e
+=
1
):
a
+=
1
;
n
;)
t
.
push
({
year
:
e
,
month
:
a
,
day
:
r
,
week
:
d
.
dayOfWeek
(
e
,
a
,
r
)}),
r
+=
1
,
n
-=
1
}
return
t
}
__calculateDates
({
year
:
e
,
month
:
t
,
day
:
a
},
r
){
const
s
=
d
.
dayOfWeek
(
e
,
t
,
a
);
let
o
=
[
a
-
s
,
a
+
(
6
-
s
)];
r
&&
(
o
=
[
a
+
1
-
s
,
a
+
(
7
-
s
)]);
return
(
0
,
n
.
default
)(
this
.
Component
).
buildDate
(
e
,
t
).
slice
(
o
[
0
]
-
1
,
o
[
1
])}
__dateIsInWeek
(
e
,
t
){
return
t
.
find
(
t
=>+
t
.
year
==+
e
.
year
&&+
t
.
month
==+
e
.
month
&&+
t
.
day
==+
e
.
day
)}
__tipsWhenCanNotSwtich
(){
f
.
info
(
"当前月份未选中日期下切换为周视图,不能明确该展示哪一周的日期,故此情况不允许切换"
)}}
t
.
default
=
e
=>
new
b
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
=
l
(
a
(
3
)),
r
=
l
(
a
(
7
)),
s
=
l
(
a
(
0
)),
o
=
l
(
a
(
2
)),
c
=
a
(
1
);
function
l
(
e
){
return
e
&&
e
.
__esModule
?
e
:{
default
:
e
}}
const
i
=
new
c
.
GetDate
,
d
=
new
c
.
Logger
;
class
f
extends
s
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
}
getCalendarConfig
(){
return
this
.
Component
.
config
}
renderCalendar
(
e
,
t
,
a
,
s
){
return
new
Promise
(
o
=>
{
const
c
=
this
.
getCalendarConfig
();
this
.
calculateEmptyGrids
(
e
,
t
),
this
.
calculateDays
(
e
,
t
,
a
,
s
).
then
(()
=>
{
const
{
todoLabels
:
a
,
specialStyleDates
:
s
,
enableDays
:
l
,
selectedDay
:
i
}
=
this
.
getData
(
"calendar"
)
||
{};
a
&&
a
.
find
(
a
=>+
a
.
month
==+
t
&&+
a
.
year
==+
e
)
&&
(
0
,
r
.
default
)(
this
.
Component
).
setTodoLabels
(),
s
&&
s
.
length
&&
s
.
find
(
a
=>+
a
.
month
==+
t
&&+
a
.
year
==+
e
)
&&
(
0
,
n
.
default
)(
this
.
Component
).
setDateStyle
(
s
),
l
&&
l
.
length
&&
l
.
find
(
a
=>
{
let
n
=
a
.
split
(
"-"
);
return
+
n
[
1
]
==+
t
&&+
n
[
0
]
==+
e
})
&&
(
0
,
n
.
default
)(
this
.
Component
).
enableDays
(
l
),
i
&&
i
.
length
&&
i
.
find
(
a
=>+
a
.
month
==+
t
&&+
a
.
year
==+
e
)
&&
c
.
mulit
&&
(
0
,
n
.
default
)(
this
.
Component
).
setSelectedDays
(
i
),
this
.
Component
.
firstRender
?
o
({
firstRender
:
!
1
}):
o
({
firstRender
:
!
0
})})})}
calculateEmptyGrids
(
e
,
t
){
this
.
calculatePrevMonthGrids
(
e
,
t
),
this
.
calculateNextMonthGrids
(
e
,
t
)}
calculatePrevMonthGrids
(
e
,
t
){
let
a
=
[];
const
n
=
i
.
thisMonthDays
(
e
,
t
-
1
);
let
r
=
i
.
firstDayOfWeek
(
e
,
t
);
const
s
=
this
.
getCalendarConfig
()
||
{};
if
(
"Mon"
===
s
.
firstDayOfWeek
&&
(
0
===
r
?
r
=
6
:
r
-=
1
),
r
>
0
){
const
c
=
n
-
r
,{
onlyShowCurrentMonth
:
l
}
=
s
,{
showLunar
:
i
}
=
this
.
getCalendarConfig
();
for
(
let
r
=
n
;
r
>
c
;
r
--
)
l
?
a
.
push
(
""
):
a
.
push
({
day
:
r
,
lunar
:
i
?
o
.
default
.
solar2lunar
(
e
,
t
-
1
,
r
):
null
});
this
.
setData
({
"calendar.empytGrids"
:
a
.
reverse
()})}
else
this
.
setData
({
"calendar.empytGrids"
:
null
})}
calculateExtraEmptyDate
(
e
,
t
,
a
){
let
n
=
0
;
if
(
2
==+
t
){
n
+=
7
;
let
r
=
i
.
dayOfWeek
(
e
,
t
,
1
);
"Mon"
===
a
.
firstDayOfWeek
?
1
==+
r
&&
(
n
+=
7
):
0
==+
r
&&
(
n
+=
7
)}
else
{
let
r
=
i
.
dayOfWeek
(
e
,
t
,
1
);
"Mon"
===
a
.
firstDayOfWeek
?
0
!==
r
&&
r
<
6
&&
(
n
+=
7
):
r
<=
5
&&
(
n
+=
7
)}
return
n
}
calculateNextMonthGrids
(
e
,
t
){
let
a
=
[];
const
n
=
i
.
thisMonthDays
(
e
,
t
);
let
r
=
i
.
dayOfWeek
(
e
,
t
,
n
);
const
s
=
this
.
getCalendarConfig
()
||
{};
"Mon"
===
s
.
firstDayOfWeek
&&
(
0
===
r
?
r
=
6
:
r
-=
1
);
let
c
=
7
-
(
r
+
1
);
const
{
onlyShowCurrentMonth
:
l
,
showLunar
:
d
}
=
s
;
l
||
(
c
+=
this
.
calculateExtraEmptyDate
(
e
,
t
,
s
));
for
(
let
n
=
1
;
n
<=
c
;
n
++
)
l
?
a
.
push
(
""
):
a
.
push
({
day
:
n
,
lunar
:
d
?
o
.
default
.
solar2lunar
(
e
,
t
+
1
,
n
):
null
});
this
.
setData
({
"calendar.lastEmptyGrids"
:
a
})}
setSelectedDay
(
e
,
t
,
a
){
let
n
=
[];
const
r
=
this
.
getCalendarConfig
();
if
(
r
.
noDefault
)
n
=
[],
r
.
noDefault
=!
1
;
else
{
const
r
=
this
.
getData
(
"calendar"
)
||
{},{
showLunar
:
s
}
=
this
.
getCalendarConfig
();
n
=
a
?[{
year
:
e
,
month
:
t
,
day
:
a
,
choosed
:
!
0
,
week
:
i
.
dayOfWeek
(
e
,
t
,
a
),
lunar
:
s
?
o
.
default
.
solar2lunar
(
e
,
t
,
a
):
null
}]:
r
.
selectedDay
}
return
n
}
__getDisableDateTimestamp
(){
let
e
;
const
{
date
:
t
,
type
:
a
}
=
this
.
getCalendarConfig
().
disableMode
||
{};
if
(
t
){
const
a
=
t
.
split
(
"-"
);
if
(
a
.
length
<
3
)
return
d
.
warn
(
"配置 disableMode.date 格式错误"
),{};
e
=
(
0
,
c
.
getDateTimeStamp
)({
year
:
+
a
[
0
],
month
:
+
a
[
1
],
day
:
+
a
[
2
]})}
return
{
disableDateTimestamp
:
e
,
disableType
:
a
}}
resetDates
(){
this
.
setData
({
"calendar.days"
:[]})}
calculateDays
(
e
,
t
,
a
,
r
){
return
new
Promise
(
s
=>
{
this
.
resetDates
();
let
o
=
[];
const
{
disableDays
:
l
=
[],
chooseAreaTimestamp
:
d
=
[],
selectedDay
:
f
=
[]}
=
this
.
getData
(
"calendar"
);
o
=
(
0
,
n
.
default
)(
this
.
Component
).
buildDate
(
e
,
t
);
let
b
=
f
;
r
||
(
b
=
this
.
setSelectedDay
(
e
,
t
,
a
));
const
h
=
b
.
map
(
e
=>
i
.
toTimeStr
(
e
)),
u
=
l
.
map
(
e
=>
i
.
toTimeStr
(
e
)),[
y
,
m
]
=
d
;
o
.
forEach
(
e
=>
{
const
t
=
i
.
toTimeStr
(
e
),
a
=
(
0
,
c
.
getDateTimeStamp
)(
e
);
if
(
h
.
includes
(
t
)
&&!
r
){
if
(
e
.
choosed
=!
0
,
a
>
m
||
a
<
y
){
const
t
=
b
.
findIndex
(
t
=>
i
.
toTimeStr
(
t
)
===
i
.
toTimeStr
(
e
));
b
.
splice
(
t
,
1
)}}
else
y
&&
m
&&
a
>=
y
&&
a
<=
m
&&!
r
&&
(
e
.
choosed
=!
0
,
b
.
push
(
e
));
u
.
includes
(
t
)
&&
(
e
.
disable
=!
0
);
const
{
disableDateTimestamp
:
n
,
disableType
:
s
}
=
this
.
__getDisableDateTimestamp
();
let
o
=!
1
;
n
&&
(
"before"
===
s
&&
a
<
n
||
"after"
===
s
&&
a
>
n
)
&&
(
o
=!
0
);(
o
||
this
.
__isDisable
(
a
))
&&
(
e
.
disable
=!
0
,
e
.
choosed
=!
1
)}),
this
.
setData
({
"calendar.days"
:
o
,
"calendar.selectedDay"
:[...
b
]
||!
1
},()
=>
{
s
()})})}
__isDisable
(
e
){
const
{
enableArea
:
t
=
[],
enableDays
:
a
=
[],
enableAreaTimestamp
:
n
=
[]}
=
this
.
getData
(
"calendar"
);
let
r
=!
1
,
s
=
(
0
,
c
.
converEnableDaysToTimestamp
)(
a
);
return
t
.
length
&&
(
s
=
(
0
,
c
.
delRepeatedEnableDay
)(
a
,
t
)),
n
.
length
?(
+
n
[
0
]
>+
e
||+
e
>+
n
[
1
])
&&!
s
.
includes
(
+
e
)
&&
(
r
=!
0
):
s
.
length
&&!
s
.
includes
(
+
e
)
&&
(
r
=!
0
),
r
}}
t
.
default
=
e
=>
new
f
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
,
r
=
(
n
=
a
(
0
))
&&
n
.
__esModule
?
n
:{
default
:
n
},
s
=
a
(
1
);
const
o
=
new
s
.
Logger
,
c
=
new
s
.
GetDate
;
class
l
extends
r
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
}
setTodoLabels
(
e
){
e
&&
(
this
.
Component
.
todoConfig
=
e
);
const
t
=
this
.
getData
(
"calendar"
);
if
(
!
t
||!
t
.
days
)
return
o
.
warn
(
"请等待日历初始化完成后再调用该方法"
);
const
a
=
[...
t
.
days
],{
curYear
:
n
,
curMonth
:
r
}
=
t
,{
circle
:
c
,
dotColor
:
l
=
""
,
pos
:
i
=
"bottom"
,
showLabelAlways
:
d
,
days
:
f
=
[]}
=
e
||
this
.
Component
.
todoConfig
||
{},{
todoLabels
:
b
=
[],
todoLabelPos
:
h
,
todoLabelColor
:
u
}
=
t
,
y
=
this
.
getTodoLabels
({
year
:
n
,
month
:
r
});
let
m
=
f
.
filter
(
e
=>+
e
.
year
==+
n
&&+
e
.
month
==+
r
);
this
.
Component
.
weekMode
&&
(
m
=
f
);
const
D
=
y
.
concat
(
m
);
for
(
let
e
of
D
){
let
t
;
t
=
this
.
Component
.
weekMode
?
a
.
find
(
t
=>+
e
.
year
==+
t
.
year
&&+
e
.
month
==+
t
.
month
&&+
e
.
day
==+
t
.
day
):
a
[
e
.
day
-
1
],
t
&&
(
t
.
showTodoLabel
=!!
d
||!
t
.
choosed
,
t
.
showTodoLabel
&&
e
.
todoText
&&
(
t
.
todoText
=
e
.
todoText
),
e
.
color
&&
(
t
.
color
=
e
.
color
))}
const
p
=
{
"calendar.days"
:
a
,
"calendar.todoLabels"
:(
0
,
s
.
uniqueArrayByDate
)(
b
.
concat
(
f
))};
c
||
(
i
&&
i
!==
h
&&
(
p
[
"calendar.todoLabelPos"
]
=
i
),
l
&&
l
!==
u
&&
(
p
[
"calendar.todoLabelColor"
]
=
l
)),
p
[
"calendar.todoLabelCircle"
]
=
c
||!
1
,
p
[
"calendar.showLabelAlways"
]
=
d
||!
1
,
this
.
setData
(
p
)}
deleteTodoLabels
(
e
){
if
(
!
(
e
instanceof
Array
&&
e
.
length
))
return
;
const
t
=
this
.
filterTodos
(
e
),{
days
:
a
,
curYear
:
n
,
curMonth
:
r
}
=
this
.
getData
(
"calendar"
),
s
=
t
.
filter
(
e
=>
n
===+
e
.
year
&&
r
===+
e
.
month
);
a
.
forEach
(
e
=>
{
e
.
showTodoLabel
=!
1
}),
s
.
forEach
(
e
=>
{
a
[
e
.
day
-
1
].
showTodoLabel
=!
a
[
e
.
day
-
1
].
choosed
}),
this
.
setData
({
"calendar.days"
:
a
,
"calendar.todoLabels"
:
t
})}
clearTodoLabels
(){
const
{
days
:
e
=
[]}
=
this
.
getData
(
"calendar"
),
t
=
[].
concat
(
e
);
t
.
forEach
(
e
=>
{
e
.
showTodoLabel
=!
1
}),
this
.
setData
({
"calendar.days"
:
t
,
"calendar.todoLabels"
:[]})}
getTodoLabels
(
e
){
const
{
todoLabels
:
t
=
[]}
=
this
.
getData
(
"calendar"
);
if
(
e
){
const
{
year
:
a
,
month
:
n
}
=
e
;
return
t
.
filter
(
e
=>+
e
.
year
==+
a
&&+
e
.
month
==+
n
)}
return
t
}
filterTodos
(
e
){
const
t
=
this
.
getData
(
"calendar.todoLabels"
)
||
[],
a
=
e
.
map
(
e
=>
c
.
toTimeStr
(
e
));
return
t
.
filter
(
e
=>!
a
.
includes
(
c
.
toTimeStr
(
e
)))}
showTodoLabels
(
e
,
t
,
a
){
e
.
forEach
(
e
=>
{
if
(
this
.
Component
.
weekMode
)
t
.
forEach
((
n
,
r
)
=>
{
if
(
+
n
.
day
==+
e
.
day
){
const
n
=
t
[
r
];
n
.
hasTodo
=!
0
,
n
.
todoText
=
e
.
todoText
,
a
&&
a
.
length
&&+
a
[
0
].
day
==+
e
.
day
&&
(
n
.
showTodoLabel
=!
0
)}});
else
{
const
n
=
t
[
e
.
day
-
1
];
if
(
!
n
)
return
;
n
.
hasTodo
=!
0
,
n
.
todoText
=
e
.
todoText
,
a
&&
a
.
length
&&+
a
[
0
].
day
==+
e
.
day
&&
(
t
[
a
[
0
].
day
-
1
].
showTodoLabel
=!
0
)}})}}
t
.
default
=
e
=>
new
l
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
var
n
,
r
=
(
n
=
a
(
5
))
&&
n
.
__esModule
?
n
:{
default
:
n
},
s
=
a
(
1
),
o
=
function
(
e
){
if
(
e
&&
e
.
__esModule
)
return
e
;
if
(
null
===
e
||
"object"
!=
typeof
e
&&
"function"
!=
typeof
e
)
return
{
default
:
e
};
var
t
=
c
();
if
(
t
&&
t
.
has
(
e
))
return
t
.
get
(
e
);
var
a
=
{},
n
=
Object
.
defineProperty
&&
Object
.
getOwnPropertyDescriptor
;
for
(
var
r
in
e
)
if
(
Object
.
prototype
.
hasOwnProperty
.
call
(
e
,
r
)){
var
s
=
n
?
Object
.
getOwnPropertyDescriptor
(
e
,
r
):
null
;
s
&&
(
s
.
get
||
s
.
set
)?
Object
.
defineProperty
(
a
,
r
,
s
):
a
[
r
]
=
e
[
r
]}
a
.
default
=
e
,
t
&&
t
.
set
(
e
,
a
);
return
a
}(
a
(
9
));
function
c
(){
if
(
"function"
!=
typeof
WeakMap
)
return
null
;
var
e
=
new
WeakMap
;
return
c
=
function
(){
return
e
},
e
}
const
l
=
new
s
.
Slide
,
i
=
new
s
.
Logger
,
d
=
new
s
.
GetDate
;
Component
({
options
:{
styleIsolation
:
"apply-shared"
,
multipleSlots
:
!
0
},
properties
:{
calendarConfig
:{
type
:
Object
,
value
:{}}},
data
:{
handleMap
:{
prev_year
:
"chooseYear"
,
prev_month
:
"chooseMonth"
,
next_month
:
"chooseMonth"
,
next_year
:
"chooseYear"
}},
lifetimes
:{
attached
:
function
(){
this
.
initComp
()},
detached
:
function
(){
s
.
initialTasks
.
flag
=
"finished"
,
s
.
initialTasks
.
tasks
.
length
=
0
}},
methods
:{
initComp
(){
const
e
=
this
.
setDefaultDisableDate
();
this
.
setConfig
(
e
)},
setDefaultDisableDate
(){
const
e
=
this
.
properties
.
calendarConfig
||
{};
return
e
.
disableMode
&&!
e
.
disableMode
.
date
&&
(
e
.
disableMode
.
date
=
d
.
toTimeStr
(
d
.
todayDate
())),
e
},
setConfig
(
e
){
e
.
markToday
&&
"string"
==
typeof
e
.
markToday
&&
(
e
.
highlightToday
=!
0
),
e
.
theme
=
e
.
theme
||
"default"
,
this
.
weekMode
=
e
.
weekMode
,
this
.
setData
({
calendarConfig
:
e
},()
=>
{(
0
,
o
.
default
)(
this
,
e
)})},
chooseDate
(
e
){
const
{
type
:
t
}
=
e
.
currentTarget
.
dataset
;
if
(
!
t
)
return
;
this
[
this
.
data
.
handleMap
[
t
]](
t
)},
chooseYear
(
e
){
const
{
curYear
:
t
,
curMonth
:
a
}
=
this
.
data
.
calendar
;
if
(
!
t
||!
a
)
return
i
.
warn
(
"异常:未获取到当前年月"
);
if
(
this
.
weekMode
)
return
console
.
warn
(
"周视图下不支持点击切换年月"
);
let
n
=+
t
,
r
=+
a
;
"prev_year"
===
e
?
n
-=
1
:
"next_year"
===
e
&&
(
n
+=
1
),
this
.
render
(
t
,
a
,
n
,
r
)},
chooseMonth
(
e
){
const
{
curYear
:
t
,
curMonth
:
a
}
=
this
.
data
.
calendar
;
if
(
!
t
||!
a
)
return
i
.
warn
(
"异常:未获取到当前年月"
);
if
(
this
.
weekMode
)
return
console
.
warn
(
"周视图下不支持点击切换年月"
);
let
n
=+
t
,
r
=+
a
;
"prev_month"
===
e
?(
r
-=
1
,
r
<
1
&&
(
n
-=
1
,
r
=
12
)):
"next_month"
===
e
&&
(
r
+=
1
,
r
>
12
&&
(
n
+=
1
,
r
=
1
)),
this
.
render
(
t
,
a
,
n
,
r
)},
render
(
e
,
t
,
a
,
n
){
o
.
whenChangeDate
.
call
(
this
,{
curYear
:
e
,
curMonth
:
t
,
newYear
:
a
,
newMonth
:
n
}),
this
.
setData
({
"calendar.curYear"
:
a
,
"calendar.curMonth"
:
n
}),
o
.
renderCalendar
.
call
(
this
,
a
,
n
)},
tapDayItem
(
e
){
const
{
idx
:
t
,
date
:
a
=
{}}
=
e
.
currentTarget
.
dataset
,{
day
:
n
,
disable
:
r
}
=
a
;
if
(
r
||!
n
)
return
;
const
s
=
this
.
data
.
calendarConfig
||
this
.
config
||
{},{
multi
:
c
,
chooseAreaMode
:
l
}
=
s
;
c
?
o
.
whenMulitSelect
.
call
(
this
,
t
):
l
?
o
.
whenChooseArea
.
call
(
this
,
t
):
o
.
whenSingleSelect
.
call
(
this
,
t
),
this
.
setData
({
"calendar.noDefault"
:
!
1
})},
doubleClickToToday
(){
if
(
!
this
.
config
.
multi
&&!
this
.
weekMode
)
if
(
void
0
===
this
.
count
?
this
.
count
=
1
:
this
.
count
+=
1
,
this
.
lastClick
){(
new
Date
).
getTime
()
-
this
.
lastClick
<
500
&&
this
.
count
>=
2
&&
o
.
jump
.
call
(
this
),
this
.
count
=
void
0
,
this
.
lastClick
=
void
0
}
else
this
.
lastClick
=
(
new
Date
).
getTime
()},
calendarTouchstart
(
e
){
const
t
=
e
.
touches
[
0
],
a
=
t
.
clientX
,
n
=
t
.
clientY
;
this
.
slideLock
=!
0
,
this
.
setData
({
"gesture.startX"
:
a
,
"gesture.startY"
:
n
})},
handleSwipe
(
e
){
let
t
=
"calendar.leftSwipe"
,
a
=
"next_month"
,
n
=
"next_week"
;
if
(
"right"
===
e
&&
(
t
=
"calendar.rightSwipe"
,
a
=
"prev_month"
,
n
=
"prev_week"
),
this
.
setData
({[
t
]:
1
}),
this
.
currentYM
=
(
0
,
o
.
getCurrentYM
)(),
this
.
weekMode
)
return
this
.
slideLock
=!
1
,
this
.
currentDates
=
(
0
,
o
.
getCalendarDates
)(),
"prev_week"
===
n
?(
0
,
r
.
default
)(
this
).
calculatePrevWeekDays
():
"next_week"
===
n
&&
(
0
,
r
.
default
)(
this
).
calculateNextWeekDays
(),
this
.
onSwipeCalendar
(
n
),
void
this
.
onWeekChange
(
n
);
this
.
chooseMonth
(
a
),
this
.
onSwipeCalendar
(
a
)},
calendarTouchmove
(
e
){
const
{
gesture
:
t
}
=
this
.
data
,{
preventSwipe
:
a
}
=
this
.
properties
.
calendarConfig
;
this
.
slideLock
&&!
a
&&
(
l
.
isLeft
(
t
,
e
.
touches
[
0
])
&&
(
this
.
handleSwipe
(
"left"
),
this
.
slideLock
=!
1
),
l
.
isRight
(
t
,
e
.
touches
[
0
])
&&
(
this
.
handleSwipe
(
"right"
),
this
.
slideLock
=!
1
))},
calendarTouchend
(
e
){
this
.
setData
({
"calendar.leftSwipe"
:
0
,
"calendar.rightSwipe"
:
0
})},
onSwipeCalendar
(
e
){
this
.
triggerEvent
(
"onSwipe"
,{
directionType
:
e
,
currentYM
:
this
.
currentYM
})},
onWeekChange
(
e
){
this
.
triggerEvent
(
"whenChangeWeek"
,{
current
:{
currentYM
:
this
.
currentYM
,
dates
:[...
this
.
currentDates
]},
next
:{
currentYM
:(
0
,
o
.
getCurrentYM
)(),
dates
:(
0
,
o
.
getCalendarDates
)()},
directionType
:
e
}),
this
.
currentDates
=
null
,
this
.
currentYM
=
null
}}})},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
getCurrentYM
=
v
,
t
.
getSelectedDay
=
L
,
t
.
cancelSelectedDates
=
W
,
t
.
jump
=
A
,
t
.
setTodoLabels
=
O
,
t
.
deleteTodoLabels
=
x
,
t
.
clearTodoLabels
=
Y
,
t
.
getTodoLabels
=
E
,
t
.
disableDay
=
P
,
t
.
enableArea
=
j
,
t
.
enableDays
=
I
,
t
.
setSelectedDays
=
$
,
t
.
getCalendarConfig
=
G
,
t
.
setCalendarConfig
=
U
,
t
.
getCalendarDates
=
F
,
t
.
chooseDateArea
=
R
,
t
.
setDateStyle
=
N
,
t
.
switchView
=
X
,
t
.
default
=
t
.
calculateNextWeekDays
=
t
.
calculatePrevWeekDays
=
t
.
whenMulitSelect
=
t
.
whenChooseArea
=
t
.
whenSingleSelect
=
t
.
renderCalendar
=
t
.
whenChangeDate
=
void
0
;
var
n
=
f
(
a
(
3
)),
r
=
f
(
a
(
5
)),
s
=
f
(
a
(
7
)),
o
=
f
(
a
(
0
)),
c
=
f
(
a
(
6
)),
l
=
f
(
a
(
4
)),
i
=
f
(
a
(
2
)),
d
=
a
(
1
);
function
f
(
e
){
return
e
&&
e
.
__esModule
?
e
:{
default
:
e
}}
let
b
=
{},
h
=
new
d
.
Logger
,
u
=
new
d
.
GetDate
,
y
=
null
;
function
m
(
e
){
return
e
&&
(
b
=
(
0
,
d
.
getComponent
)(
e
)),
b
}
function
D
(
e
,
t
){
return
m
(
t
),
y
=
new
o
.
default
(
b
),
y
.
getData
(
e
)}
function
p
(
e
,
t
=
(()
=>
{})){
return
new
o
.
default
(
b
).
setData
(
e
,
t
)}
const
g
=
{
renderCalendar
(
e
,
t
,
a
){
return
(
0
,
d
.
isComponent
)(
this
)
&&
(
b
=
this
),
new
Promise
((
n
,
r
)
=>
{(
0
,
c
.
default
)(
b
).
renderCalendar
(
e
,
t
,
a
).
then
((
r
=
{})
=>
{
if
(
!
r
.
firstRender
)
return
n
({
year
:
e
,
month
:
t
,
date
:
a
});
Z
((
0
,
d
.
getCurrentPage
)()),
b
.
triggerEvent
(
"afterCalendarRender"
,
b
),
b
.
firstRender
=!
0
,
d
.
initialTasks
.
flag
=
"finished"
,
d
.
initialTasks
.
tasks
.
length
&&
d
.
initialTasks
.
tasks
.
shift
()(),
n
({
year
:
e
,
month
:
t
,
date
:
a
})}).
catch
(
e
=>
{
r
(
e
)})})},
whenChangeDate
({
curYear
:
e
,
curMonth
:
t
,
newYear
:
a
,
newMonth
:
n
}){
b
.
triggerEvent
(
"whenChangeMonth"
,{
current
:{
year
:
e
,
month
:
t
},
next
:{
year
:
a
,
month
:
n
}})},
whenMulitSelect
(
e
){(
0
,
d
.
isComponent
)(
this
)
&&
(
b
=
this
);
const
{
calendar
:
t
=
{}}
=
D
(),{
days
:
a
,
todoLabels
:
n
}
=
t
,
r
=
(
0
,
l
.
default
)(
b
).
getCalendarConfig
();
let
{
selectedDay
:
s
=
[]}
=
t
;
const
o
=
a
[
e
];
if
(
o
){
if
(
o
.
choosed
=!
o
.
choosed
,
o
.
choosed
){
o
.
cancel
=!
1
;
const
{
showLabelAlways
:
e
}
=
D
(
"calendar"
);
e
&&
o
.
showTodoLabel
?
o
.
showTodoLabel
=!
0
:
o
.
showTodoLabel
=!
1
,
r
.
takeoverTap
||
s
.
push
(
o
)}
else
{
o
.
cancel
=!
0
;
const
e
=
u
.
toTimeStr
(
o
);
s
=
s
.
filter
(
t
=>
e
!==
u
.
toTimeStr
(
t
)),
n
&&
n
.
forEach
(
t
=>
{
e
===
u
.
toTimeStr
(
t
)
&&
(
o
.
showTodoLabel
=!
0
)})}
if
(
r
.
takeoverTap
)
return
b
.
triggerEvent
(
"onTapDay"
,
o
);
p
({
"calendar.days"
:
a
,
"calendar.selectedDay"
:
s
}),
g
.
afterTapDay
(
o
,
s
)}},
whenSingleSelect
(
e
){(
0
,
d
.
isComponent
)(
this
)
&&
(
b
=
this
);
const
{
calendar
:
t
=
{}}
=
D
(),{
days
:
a
,
selectedDay
:
n
=
[],
todoLabels
:
r
}
=
t
;
let
o
=
[];
const
c
=
a
[
e
];
if
(
!
c
)
return
;
const
i
=
[...
n
].
pop
()
||
{},{
month
:
f
,
year
:
h
}
=
a
[
0
]
||
{},
u
=
(
0
,
l
.
default
)(
b
).
getCalendarConfig
();
if
(
u
.
takeoverTap
)
return
b
.
triggerEvent
(
"onTapDay"
,
c
);
if
(
g
.
afterTapDay
(
c
),
!
u
.
inverse
&&
i
.
day
===
c
.
day
)
return
;
a
.
forEach
((
e
,
t
)
=>
{
+
e
.
day
==+
i
.
day
&&
(
a
[
t
].
choosed
=!
1
)}),
r
&&
(
o
=
r
.
filter
(
e
=>+
e
.
year
===
h
&&+
e
.
month
===
f
)),(
0
,
s
.
default
)(
b
).
showTodoLabels
(
o
,
a
,
n
);
const
y
=
{
"calendar.days"
:
a
};
i
.
day
!==
c
.
day
?(
i
.
choosed
=!
1
,
c
.
choosed
=!
0
,
t
.
showLabelAlways
&&
c
.
showTodoLabel
||
(
c
.
showTodoLabel
=!
1
),
y
[
"calendar.selectedDay"
]
=
[
c
]):
u
.
inverse
&&
(
c
.
choosed
&&
(
c
.
showTodoLabel
&&
t
.
showLabelAlways
?
c
.
showTodoLabel
=!
0
:
c
.
showTodoLabel
=!
1
),
y
[
"calendar.selectedDay"
]
=
[]),
u
.
weekMode
&&
(
y
[
"calendar.curYear"
]
=
c
.
year
,
y
[
"calendar.curMonth"
]
=
c
.
month
),
p
(
y
)},
gotoSetContinuousDates
:(
e
,
t
)
=>
R
([
""
+
u
.
toTimeStr
(
e
),
""
+
u
.
toTimeStr
(
t
)]),
timeRangeHelper
(
e
,
t
){
const
a
=
(
0
,
d
.
getDateTimeStamp
)(
e
),
n
=
t
[
0
];
let
r
,
s
,
o
=
t
.
length
;
o
>
1
&&
(
r
=
t
[
o
-
1
],
s
=
(
0
,
d
.
getDateTimeStamp
)(
r
));
return
{
endDate
:
r
,
startDate
:
n
,
currentDateTimestamp
:
a
,
endDateTimestamp
:
s
,
startTimestamp
:(
0
,
d
.
getDateTimeStamp
)(
n
)}},
calculateDateRange
(
e
,
t
){
const
{
endDate
:
a
,
startDate
:
n
,
currentDateTimestamp
:
r
,
endDateTimestamp
:
s
,
startTimestamp
:
o
}
=
this
.
timeRangeHelper
(
e
,
t
);
let
c
=
[],
l
=
t
.
length
;
const
i
=
t
.
filter
(
t
=>
u
.
toTimeStr
(
t
)
===
u
.
toTimeStr
(
e
));
if
(
2
===
l
&&
i
.
length
)
return
c
=
[
e
,
e
],
c
;
if
(
r
>=
o
&&
s
&&
r
<=
s
){
c
=
l
/
2
>
t
.
findIndex
(
t
=>
u
.
toTimeStr
(
t
)
===
u
.
toTimeStr
(
e
))?[
e
,
a
]:[
n
,
e
]}
else
r
<
o
?
c
=
[
e
,
a
]:
r
>
o
&&
(
c
=
[
n
,
e
]);
return
c
},
chooseAreaWhenExistArea
:(
e
,
t
)
=>
new
Promise
((
a
,
n
)
=>
{
const
r
=
g
.
calculateDateRange
(
e
,
u
.
sortDates
(
t
));
g
.
gotoSetContinuousDates
(...
r
).
then
(
t
=>
{
a
(
t
),
g
.
afterTapDay
(
e
)}).
catch
(
t
=>
{
n
(
t
),
g
.
afterTapDay
(
e
)})}),
chooseAreaWhenHasOneDate
:(
e
,
t
,
a
)
=>
new
Promise
((
n
,
r
)
=>
{
const
s
=
a
||
t
[
0
];
let
o
=
[
s
,
e
];
const
c
=
(
0
,
d
.
getDateTimeStamp
)(
e
);(
0
,
d
.
getDateTimeStamp
)(
s
)
>
c
&&
(
o
=
[
e
,
s
]),
g
.
gotoSetContinuousDates
(...
o
).
then
(
t
=>
{
n
(
t
),
g
.
afterTapDay
(
e
)}).
catch
(
t
=>
{
r
(
t
),
g
.
afterTapDay
(
e
)})}),
whenChooseArea
(
e
){
return
new
Promise
((
t
,
a
)
=>
{
if
((
0
,
d
.
isComponent
)(
this
)
&&
(
b
=
this
),
b
.
weekMode
)
return
;
const
{
days
:
n
=
[],
selectedDay
:
r
,
lastChoosedDate
:
s
}
=
D
(
"calendar"
),
c
=
n
[
e
];
if
(
c
.
disable
)
return
;
if
((
0
,
l
.
default
)(
b
).
getCalendarConfig
().
takeoverTap
)
return
b
.
triggerEvent
(
"onTapDay"
,
c
);
if
(
r
&&
r
.
length
>
1
)
g
.
chooseAreaWhenExistArea
(
c
,
r
).
then
(
e
=>
{
t
(
e
)}).
catch
(
e
=>
{
a
(
e
)});
else
if
(
s
||
r
&&
1
===
r
.
length
)
g
.
chooseAreaWhenHasOneDate
(
c
,
r
,
s
).
then
(
e
=>
{
t
(
e
)}).
catch
(
e
=>
{
a
(
e
)});
else
{
n
.
forEach
(
e
=>
{
+
e
.
day
==+
c
.
day
?
e
.
choosed
=!
0
:
e
.
choosed
=!
1
});
new
o
.
default
(
b
).
setData
({
"calendar.days"
:[...
n
],
"calendar.lastChoosedDate"
:
c
})}})},
afterTapDay
(
e
,
t
){
const
a
=
(
0
,
l
.
default
)(
b
).
getCalendarConfig
(),{
multi
:
n
}
=
a
;
n
?
b
.
triggerEvent
(
"afterTapDay"
,{
currentSelected
:
e
,
selectedDates
:
t
}):
b
.
triggerEvent
(
"afterTapDay"
,
e
)},
jumpToToday
:()
=>
new
Promise
((
e
,
t
)
=>
{
const
{
year
:
a
,
month
:
n
,
date
:
r
}
=
u
.
todayDate
(),
s
=
u
.
todayTimestamp
(),
o
=
(
0
,
l
.
default
)(
b
).
getCalendarConfig
();
p
({
"calendar.curYear"
:
a
,
"calendar.curMonth"
:
n
,
"calendar.selectedDay"
:[{
year
:
a
,
day
:
r
,
month
:
n
,
choosed
:
!
0
,
lunar
:
o
.
showLunar
?
i
.
default
.
solar2lunar
(
a
,
n
,
r
):
null
}],
"calendar.todayTimestamp"
:
s
}),
g
.
renderCalendar
(
a
,
n
,
r
).
then
(()
=>
{
e
({
year
:
a
,
month
:
n
,
date
:
r
})}).
catch
(()
=>
{
t
(
"jump failed"
)})})},
T
=
g
.
whenChangeDate
;
t
.
whenChangeDate
=
T
;
const
w
=
g
.
renderCalendar
;
t
.
renderCalendar
=
w
;
const
C
=
g
.
whenSingleSelect
;
t
.
whenSingleSelect
=
C
;
const
M
=
g
.
whenChooseArea
;
t
.
whenChooseArea
=
M
;
const
_
=
g
.
whenMulitSelect
;
t
.
whenMulitSelect
=
_
;
const
S
=
g
.
calculatePrevWeekDays
;
t
.
calculatePrevWeekDays
=
S
;
const
k
=
g
.
calculateNextWeekDays
;
function
v
(
e
){
return
m
(
e
),{
year
:
D
(
"calendar.curYear"
),
month
:
D
(
"calendar.curMonth"
)}}
function
L
(
e
=
{},
t
){
m
(
t
);
const
a
=
G
(),
n
=
D
(
"calendar.selectedDay"
)
||
[];
if
(
e
.
lunar
&&!
a
.
showLunar
){
return
u
.
convertLunar
(
n
)}
return
n
}
function
W
(
e
,
t
){
m
(
t
);
const
{
days
:
a
=
[],
selectedDay
:
n
=
[]}
=
D
(
"calendar"
)
||
{};
if
(
e
&&
e
.
length
){
const
t
=
e
.
map
(
e
=>
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
),
r
=
n
.
filter
(
e
=>!
t
.
includes
(
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
));
a
.
forEach
(
e
=>
{
t
.
includes
(
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
)
&&
(
e
.
choosed
=!
1
)}),
p
({
"calendar.days"
:
a
,
"calendar.selectedDay"
:
r
})}
else
a
.
forEach
(
e
=>
{
e
.
choosed
=!
1
}),
p
({
"calendar.days"
:
a
,
"calendar.selectedDay"
:[]})}
function
A
(
e
,
t
,
a
,
n
){
return
new
Promise
((
s
,
o
)
=>
{
m
(
n
);
const
{
selectedDay
:
c
=
[]}
=
D
(
"calendar"
)
||
{},{
weekMode
:
l
}
=
D
(
"calendarConfig"
)
||
{},{
year
:
i
,
month
:
f
,
day
:
y
}
=
c
[
0
]
||
{};
if
(
+
i
!=+
e
||+
f
!=+
t
||+
y
!=+
a
){
if
(
l
){
let
n
=!
1
;
if
(
!
e
||!
t
||!
a
){
const
r
=
u
.
todayDate
();
e
=
r
.
year
,
t
=
r
.
month
,
a
=
r
.
date
,
n
=!
0
}
return
function
({
year
:
e
,
month
:
t
,
day
:
a
},
n
){
return
new
Promise
((
s
,
o
)
=>
{(
0
,
r
.
default
)(
b
).
jump
({
year
:
+
e
,
month
:
+
t
,
day
:
+
a
},
n
).
then
(
e
=>
{
s
(
e
)}).
catch
(
e
=>
{
o
(
e
)})})}({
year
:
e
,
month
:
t
,
day
:
a
},
n
).
then
(
e
=>
{
s
(
e
)}).
catch
(
e
=>
{
o
(
e
)}),
void
Z
((
0
,
d
.
getCurrentPage
)())}
e
&&
t
?
function
({
year
:
e
,
month
:
t
,
day
:
a
}){
return
new
Promise
((
n
,
r
)
=>
{
if
(
"number"
!=
typeof
+
e
||
"number"
!=
typeof
+
t
)
return
h
.
warn
(
"jump 函数年月日参数必须为数字"
);
const
s
=
u
.
todayTimestamp
();
p
({
"calendar.curYear"
:
+
e
,
"calendar.curMonth"
:
+
t
,
"calendar.todayTimestamp"
:
s
},()
=>
{
g
.
renderCalendar
(
+
e
,
+
t
,
+
a
).
then
(
e
=>
{
n
(
e
)}).
catch
(
e
=>
{
r
(
e
)})})})}({
year
:
e
,
month
:
t
,
day
:
a
}).
then
(
e
=>
{
s
(
e
)}).
catch
(
e
=>
{
o
(
e
)}):
g
.
jumpToToday
().
then
(
e
=>
{
s
(
e
)}).
catch
(
e
=>
{
o
(
e
)})}})}
function
O
(
e
,
t
){
m
(
t
),(
0
,
s
.
default
)(
b
).
setTodoLabels
(
e
)}
function
x
(
e
,
t
){
m
(
t
),(
0
,
s
.
default
)(
b
).
deleteTodoLabels
(
e
)}
function
Y
(
e
){
m
(
e
),(
0
,
s
.
default
)(
b
).
clearTodoLabels
()}
function
E
(
e
=
{},
t
){
m
(
t
);
const
a
=
G
(),
n
=
(
0
,
s
.
default
)(
b
).
getTodoLabels
()
||
[];
if
(
e
.
lunar
&&!
a
.
showLunar
){
return
u
.
convertLunar
(
n
)}
return
n
}
function
P
(
e
=
[],
t
){
m
(
t
),(
0
,
n
.
default
)(
b
).
disableDays
(
e
)}
function
j
(
e
=
[],
t
){
m
(
t
),(
0
,
n
.
default
)(
b
).
enableArea
(
e
)}
function
I
(
e
=
[],
t
){
m
(
t
),(
0
,
n
.
default
)(
b
).
enableDays
(
e
)}
function
$
(
e
,
t
){
m
(
t
),(
0
,
n
.
default
)(
b
).
setSelectedDays
(
e
)}
function
G
(
e
){
return
m
(
e
),(
0
,
l
.
default
)(
b
).
getCalendarConfig
()}
function
U
(
e
,
t
){
if
(
m
(
t
),
!
e
||
0
===
Object
.
keys
(
e
).
length
)
return
h
.
warn
(
"setCalendarConfig 参数必须为非空对象"
);
const
a
=
G
();
return
new
Promise
((
t
,
n
)
=>
{(
0
,
l
.
default
)(
b
).
setCalendarConfig
(
e
).
then
(
n
=>
{
t
(
n
);
const
{
date
:
r
,
type
:
s
}
=
a
.
disableMode
||
{},{
_date
:
o
,
_type
:
c
}
=
e
.
disableMode
||
{};
if
(
s
!==
c
||
r
!==
o
){
const
{
year
:
e
,
month
:
t
}
=
v
();
A
(
e
,
t
)}}).
catch
(
e
=>
{
n
(
e
)})})}
function
F
(
e
=
{},
t
){
m
(
t
);
const
a
=
G
(),
n
=
D
(
"calendar.days"
,
t
)
||
[];
if
(
e
.
lunar
&&!
a
.
showLunar
){
return
u
.
convertLunar
(
n
)}
return
n
}
function
R
(
e
,
t
){
return
m
(
t
),(
0
,
n
.
default
)(
b
).
chooseArea
(
e
)}
function
N
(
e
,
t
){
e
&&
(
m
(
t
),(
0
,
n
.
default
)(
b
).
setDateStyle
(
e
))}
function
X
(...
e
){
return
new
Promise
((
t
,
a
)
=>
{
const
n
=
e
[
0
];
if
(
!
e
[
1
])
return
(
0
,
r
.
default
)(
b
).
switchWeek
(
n
).
then
(
t
).
catch
(
a
);
"string"
==
typeof
e
[
1
]?(
m
(
e
[
1
]),(
0
,
r
.
default
)(
b
).
switchWeek
(
n
,
e
[
2
]).
then
(
t
).
catch
(
a
)):
"object"
==
typeof
e
[
1
]
&&
(
"string"
==
typeof
e
[
2
]
&&
m
(
e
[
1
]),(
0
,
r
.
default
)(
b
).
switchWeek
(
n
,
e
[
1
]).
then
(
t
).
catch
(
a
))})}
function
Z
(
e
){
e
.
calendar
=
{
jump
:
A
,
switchView
:
X
,
disableDay
:
P
,
enableArea
:
j
,
enableDays
:
I
,
chooseDateArea
:
R
,
getCurrentYM
:
v
,
getSelectedDay
:
L
,
cancelSelectedDates
:
W
,
setDateStyle
:
N
,
setTodoLabels
:
O
,
getTodoLabels
:
E
,
deleteTodoLabels
:
x
,
clearTodoLabels
:
Y
,
setSelectedDays
:
$
,
getCalendarConfig
:
G
,
setCalendarConfig
:
U
,
getCalendarDates
:
F
}}
function
B
(
e
,
t
){
d
.
initialTasks
.
flag
=
"process"
,
b
=
e
,
b
.
config
=
t
,
function
(
e
){
let
t
=
[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
];
"Mon"
===
e
&&
(
t
=
[
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"日"
]),
p
({
"calendar.weeksCh"
:
t
})}(
t
.
firstDayOfWeek
),
function
(
e
){
if
(
b
.
firstRenderWeekMode
=!
0
,
e
&&
"string"
==
typeof
e
){
const
t
=
e
.
split
(
"-"
);
if
(
t
.
length
<
3
)
return
h
.
warn
(
"配置 jumpTo 格式应为: 2018-4-2 或 2018-04-02"
);
A
(
+
t
[
0
],
+
t
[
1
],
+
t
[
2
])}
else
e
||
p
({
"config.noDefault"
:
!
0
}),
A
()}(
t
.
defaultDay
),
h
.
tips
(
"使用中若遇问题请反馈至 https://github.com/treadpit/wx_calendar/issues ✍️"
)}
t
.
calculateNextWeekDays
=
k
;
t
.
default
=
(
e
,
t
=
{})
=>
{
if
(
"process"
===
d
.
initialTasks
.
flag
)
return
d
.
initialTasks
.
tasks
.
push
((
function
(){
B
(
e
,
t
)}));
B
(
e
,
t
)}}]);
!
function
(
e
){
var
t
=
{};
function
a
(
n
){
if
(
t
[
n
])
return
t
[
n
].
exports
;
var
r
=
t
[
n
]
=
{
i
:
n
,
l
:
!
1
,
exports
:{}};
return
e
[
n
].
call
(
r
.
exports
,
r
,
r
.
exports
,
a
),
r
.
l
=!
0
,
r
.
exports
}
a
.
m
=
e
,
a
.
c
=
t
,
a
.
d
=
function
(
e
,
t
,
n
){
a
.
o
(
e
,
t
)
||
Object
.
defineProperty
(
e
,
t
,{
enumerable
:
!
0
,
get
:
n
})},
a
.
r
=
function
(
e
){
"undefined"
!=
typeof
Symbol
&&
Symbol
.
toStringTag
&&
Object
.
defineProperty
(
e
,
Symbol
.
toStringTag
,{
value
:
"Module"
}),
Object
.
defineProperty
(
e
,
"__esModule"
,{
value
:
!
0
})},
a
.
t
=
function
(
e
,
t
){
if
(
1
&
t
&&
(
e
=
a
(
e
)),
8
&
t
)
return
e
;
if
(
4
&
t
&&
"object"
==
typeof
e
&&
e
&&
e
.
__esModule
)
return
e
;
var
n
=
Object
.
create
(
null
);
if
(
a
.
r
(
n
),
Object
.
defineProperty
(
n
,
"default"
,{
enumerable
:
!
0
,
value
:
e
}),
2
&
t
&&
"string"
!=
typeof
e
)
for
(
var
r
in
e
)
a
.
d
(
n
,
r
,
function
(
t
){
return
e
[
t
]}.
bind
(
null
,
r
));
return
n
},
a
.
n
=
function
(
e
){
var
t
=
e
&&
e
.
__esModule
?
function
(){
return
e
.
default
}:
function
(){
return
e
};
return
a
.
d
(
t
,
"a"
,
t
),
t
},
a
.
o
=
function
(
e
,
t
){
return
Object
.
prototype
.
hasOwnProperty
.
call
(
e
,
t
)},
a
.
p
=
""
,
a
(
a
.
s
=
8
)}([
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
=
class
{
constructor
(
e
){
this
.
Component
=
e
}
getData
(
e
){
const
t
=
this
.
Component
.
data
;
if
(
!
e
)
return
t
;
if
(
e
.
includes
(
"."
)){
return
e
.
split
(
"."
).
reduce
((
e
,
t
)
=>
e
[
t
],
t
)}
return
this
.
Component
.
data
[
e
]}
setData
(
e
,
t
=
(()
=>
{})){
e
&&
"object"
==
typeof
e
&&
this
.
Component
.
setData
(
e
,
t
)}};
t
.
default
=
n
},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
getSystemInfo
=
o
,
t
.
isComponent
=
function
(
e
){
return
e
&&
void
0
!==
e
.
__wxExparserNodeId__
&&
"function"
==
typeof
e
.
setData
},
t
.
isIos
=
i
,
t
.
shallowEqual
=
function
e
(
t
,
a
){
if
(
t
===
a
)
return
!
0
;
if
(
"object"
==
typeof
t
&&
null
!=
t
&&
"object"
==
typeof
a
&&
null
!=
a
){
if
(
Object
.
keys
(
t
).
length
!==
Object
.
keys
(
a
).
length
)
return
!
1
;
for
(
var
n
in
t
){
if
(
!
a
.
hasOwnProperty
(
n
))
return
!
1
;
if
(
!
e
(
t
[
n
],
a
[
n
]))
return
!
1
}
return
!
0
}
return
!
1
},
t
.
getCurrentPage
=
d
,
t
.
getComponent
=
function
(
e
){
const
t
=
new
c
;
let
a
=
d
()
||
{};
if
(
a
.
selectComponent
&&
"function"
==
typeof
a
.
selectComponent
){
if
(
e
)
return
a
.
selectComponent
(
e
);
t
.
warn
(
"请传入组件ID"
)}
else
t
.
warn
(
"该基础库暂不支持多个小程序日历组件"
)},
t
.
uniqueArrayByDate
=
function
(
e
=
[]){
let
t
=
{},
a
=
[];
e
.
forEach
(
e
=>
{
t
[
`
${
e
.
year
}
-
${
e
.
month
}
-
${
e
.
day
}
`
]
=
e
});
for
(
let
e
in
t
)
a
.
push
(
t
[
e
]);
return
a
},
t
.
delRepeatedEnableDay
=
function
(
e
=
[],
t
=
[]){
let
a
,
n
;
if
(
2
===
t
.
length
){
const
{
startTimestamp
:
e
,
endTimestamp
:
r
}
=
f
(
t
);
a
=
e
,
n
=
r
}
const
r
=
h
(
e
);
return
r
.
filter
(
e
=>
e
<
a
||
e
>
n
)},
t
.
convertEnableAreaToTimestamp
=
f
,
t
.
getDateTimeStamp
=
b
,
t
.
converEnableDaysToTimestamp
=
h
,
t
.
initialTasks
=
t
.
GetDate
=
t
.
Slide
=
t
.
Logger
=
void
0
;
var
n
,
r
=
(
n
=
a
(
2
))
&&
n
.
__esModule
?
n
:{
default
:
n
};
let
s
;
function
o
(){
return
s
||
(
s
=
wx
.
getSystemInfoSync
(),
s
)}
class
c
{
info
(
e
){
console
.
log
(
"%cInfo: %c"
+
e
,
"color:#FF0080;font-weight:bold"
,
"color: #FF509B"
)}
warn
(
e
){
console
.
log
(
"%cWarn: %c"
+
e
,
"color:#FF6600;font-weight:bold"
,
"color: #FF9933"
)}
tips
(
e
){
console
.
log
(
"%cTips: %c"
+
e
,
"color:#00B200;font-weight:bold"
,
"color: #00CC33"
)}}
t
.
Logger
=
c
;
t
.
Slide
=
class
{
isUp
(
e
=
{},
t
=
{}){
const
{
startX
:
a
,
startY
:
n
}
=
e
,
r
=
t
.
clientX
-
a
;
return
t
.
clientY
-
n
<-
60
&&
r
<
20
&&
r
>-
20
&&
(
this
.
slideLock
=!
1
,
!
0
)}
isDown
(
e
=
{},
t
=
{}){
const
{
startX
:
a
,
startY
:
n
}
=
e
,
r
=
t
.
clientX
-
a
;
return
t
.
clientY
-
n
>
60
&&
r
<
20
&&
r
>-
20
}
isLeft
(
e
=
{},
t
=
{}){
const
{
startX
:
a
,
startY
:
n
}
=
e
,
r
=
t
.
clientX
-
a
,
s
=
t
.
clientY
-
n
;
return
r
<-
60
&&
s
<
20
&&
s
>-
20
}
isRight
(
e
=
{},
t
=
{}){
const
{
startX
:
a
,
startY
:
n
}
=
e
,
r
=
t
.
clientX
-
a
,
s
=
t
.
clientY
-
n
;
return
r
>
60
&&
s
<
20
&&
s
>-
20
}};
class
l
{
newDate
(
e
,
t
,
a
){
let
n
=
`
${
+
e
}
-
${
+
t
}
-
${
+
a
}
`
;
return
i
()
&&
(
n
=
`
${
+
e
}
/
${
+
t
}
/
${
+
a
}
`
),
new
Date
(
n
)}
thisMonthDays
(
e
,
t
){
return
new
Date
(
Date
.
UTC
(
e
,
t
,
0
)).
getUTCDate
()}
firstDayOfWeek
(
e
,
t
){
return
new
Date
(
Date
.
UTC
(
e
,
t
-
1
,
1
)).
getUTCDay
()}
dayOfWeek
(
e
,
t
,
a
){
return
new
Date
(
Date
.
UTC
(
e
,
t
-
1
,
a
)).
getUTCDay
()}
todayDate
(){
const
e
=
new
Date
;
return
{
year
:
e
.
getFullYear
(),
month
:
e
.
getMonth
()
+
1
,
date
:
e
.
getDate
()}}
todayTimestamp
(){
const
{
year
:
e
,
month
:
t
,
date
:
a
}
=
this
.
todayDate
();
return
this
.
newDate
(
e
,
t
,
a
).
getTime
()}
toTimeStr
(
e
){
return
e
.
day
&&
(
e
.
date
=
e
.
day
),
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
date
}
`
}
sortDates
(
e
,
t
){
return
e
.
sort
((
function
(
e
,
a
){
return
b
(
e
)
<
b
(
a
)
&&
"desc"
!==
t
?
-
1
:
1
}))}
prevMonth
(
e
){
return
+
e
.
month
>
1
?{
year
:
e
.
year
,
month
:
e
.
month
-
1
}:{
year
:
e
.
year
-
1
,
month
:
12
}}
nextMonth
(
e
){
return
+
e
.
month
<
12
?{
year
:
e
.
year
,
month
:
e
.
month
+
1
}:{
year
:
e
.
year
+
1
,
month
:
1
}}
convertLunar
(
e
=
[]){
return
e
.
map
(
e
=>
(
e
&&
(
e
.
lunar
=
r
.
default
.
solar2lunar
(
+
e
.
year
,
+
e
.
month
,
+
e
.
day
)),
e
))}}
function
i
(){
const
e
=
o
();
return
/iphone|ios/i
.
test
(
e
.
platform
)}
function
d
(){
const
e
=
getCurrentPages
();
return
e
[
e
.
length
-
1
]}
function
f
(
e
=
[]){
const
t
=
new
l
,
a
=
e
[
0
].
split
(
"-"
),
n
=
e
[
1
].
split
(
"-"
),
r
=
new
c
;
if
(
3
!==
a
.
length
||
3
!==
n
.
length
)
return
r
.
warn
(
'enableArea() 参数格式为: ["2018-2-1", "2018-3-1"]'
),{};
return
{
start
:
a
,
end
:
n
,
startTimestamp
:
t
.
newDate
(
a
[
0
],
a
[
1
],
a
[
2
]).
getTime
(),
endTimestamp
:
t
.
newDate
(
n
[
0
],
n
[
1
],
n
[
2
]).
getTime
()}}
function
b
(
e
){
if
(
"[object Object]"
!==
Object
.
prototype
.
toString
.
call
(
e
))
return
;
return
(
new
l
).
newDate
(
e
.
year
,
e
.
month
,
e
.
day
).
getTime
()}
function
h
(
e
=
[]){
const
t
=
new
c
,
a
=
new
l
,
n
=
[];
return
e
.
forEach
(
e
=>
{
if
(
"string"
!=
typeof
e
)
return
t
.
warn
(
"enableDays()入参日期格式错误"
);
const
r
=
e
.
split
(
"-"
);
if
(
3
!==
r
.
length
)
return
t
.
warn
(
"enableDays()入参日期格式错误"
);
const
s
=
a
.
newDate
(
r
[
0
],
r
[
1
],
r
[
2
]).
getTime
();
n
.
push
(
s
)}),
n
}
t
.
GetDate
=
l
;
t
.
initialTasks
=
{
flag
:
"finished"
,
tasks
:[]}},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
const
n
=
{
lunarInfo
:[
19416
,
19168
,
42352
,
21717
,
53856
,
55632
,
91476
,
22176
,
39632
,
21970
,
19168
,
42422
,
42192
,
53840
,
119381
,
46400
,
54944
,
44450
,
38320
,
84343
,
18800
,
42160
,
46261
,
27216
,
27968
,
109396
,
11104
,
38256
,
21234
,
18800
,
25958
,
54432
,
59984
,
28309
,
23248
,
11104
,
100067
,
37600
,
116951
,
51536
,
54432
,
120998
,
46416
,
22176
,
107956
,
9680
,
37584
,
53938
,
43344
,
46423
,
27808
,
46416
,
86869
,
19872
,
42416
,
83315
,
21168
,
43432
,
59728
,
27296
,
44710
,
43856
,
19296
,
43748
,
42352
,
21088
,
62051
,
55632
,
23383
,
22176
,
38608
,
19925
,
19152
,
42192
,
54484
,
53840
,
54616
,
46400
,
46752
,
103846
,
38320
,
18864
,
43380
,
42160
,
45690
,
27216
,
27968
,
44870
,
43872
,
38256
,
19189
,
18800
,
25776
,
29859
,
59984
,
27480
,
21952
,
43872
,
38613
,
37600
,
51552
,
55636
,
54432
,
55888
,
30034
,
22176
,
43959
,
9680
,
37584
,
51893
,
43344
,
46240
,
47780
,
44368
,
21977
,
19360
,
42416
,
86390
,
21168
,
43312
,
31060
,
27296
,
44368
,
23378
,
19296
,
42726
,
42208
,
53856
,
60005
,
54576
,
23200
,
30371
,
38608
,
19195
,
19152
,
42192
,
118966
,
53840
,
54560
,
56645
,
46496
,
22224
,
21938
,
18864
,
42359
,
42160
,
43600
,
111189
,
27936
,
44448
,
84835
,
37744
,
18936
,
18800
,
25776
,
92326
,
59984
,
27424
,
108228
,
43744
,
41696
,
53987
,
51552
,
54615
,
54432
,
55888
,
23893
,
22176
,
42704
,
21972
,
21200
,
43448
,
43344
,
46240
,
46758
,
44368
,
21920
,
43940
,
42416
,
21168
,
45683
,
26928
,
29495
,
27296
,
44368
,
84821
,
19296
,
42352
,
21732
,
53600
,
59752
,
54560
,
55968
,
92838
,
22224
,
19168
,
43476
,
41680
,
53584
,
62034
,
54560
],
solarMonth
:[
31
,
28
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
],
Gan
:[
"甲"
,
"乙"
,
"丙"
,
"丁"
,
"戊"
,
"己"
,
"庚"
,
"辛"
,
"壬"
,
"癸"
],
Zhi
:[
"子"
,
"丑"
,
"寅"
,
"卯"
,
"辰"
,
"巳"
,
"午"
,
"未"
,
"申"
,
"酉"
,
"戌"
,
"亥"
],
Animals
:[
"鼠"
,
"牛"
,
"虎"
,
"兔"
,
"龙"
,
"蛇"
,
"马"
,
"羊"
,
"猴"
,
"鸡"
,
"狗"
,
"猪"
],
solarTerm
:[
"小寒"
,
"大寒"
,
"立春"
,
"雨水"
,
"惊蛰"
,
"春分"
,
"清明"
,
"谷雨"
,
"立夏"
,
"小满"
,
"芒种"
,
"夏至"
,
"小暑"
,
"大暑"
,
"立秋"
,
"处暑"
,
"白露"
,
"秋分"
,
"寒露"
,
"霜降"
,
"立冬"
,
"小雪"
,
"大雪"
,
"冬至"
],
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"
],
nStr1
:[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"七"
,
"八"
,
"九"
,
"十"
],
nStr2
:[
"初"
,
"十"
,
"廿"
,
"卅"
],
nStr3
:[
"正"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"七"
,
"八"
,
"九"
,
"十"
,
"冬"
,
"腊"
],
lYearDays
:
function
(
e
){
let
t
,
a
=
348
;
for
(
t
=
32768
;
t
>
8
;
t
>>=
1
)
a
+=
n
.
lunarInfo
[
e
-
1900
]
&
t
?
1
:
0
;
return
a
+
n
.
leapDays
(
e
)},
leapMonth
:
function
(
e
){
return
15
&
n
.
lunarInfo
[
e
-
1900
]},
leapDays
:
function
(
e
){
return
n
.
leapMonth
(
e
)?
65536
&
n
.
lunarInfo
[
e
-
1900
]?
30
:
29
:
0
},
monthDays
:
function
(
e
,
t
){
return
t
>
12
||
t
<
1
?
-
1
:
n
.
lunarInfo
[
e
-
1900
]
&
65536
>>
t
?
30
:
29
},
solarDays
:
function
(
e
,
t
){
if
(
t
>
12
||
t
<
1
)
return
-
1
;
const
a
=
t
-
1
;
return
1
==+
a
?
e
%
4
==
0
&&
e
%
100
!=
0
||
e
%
400
==
0
?
29
:
28
:
n
.
solarMonth
[
a
]},
toGanZhiYear
:
function
(
e
){
let
t
=
(
e
-
3
)
%
10
,
a
=
(
e
-
3
)
%
12
;
return
0
==+
t
&&
(
t
=
10
),
0
==+
a
&&
(
a
=
12
),
n
.
Gan
[
t
-
1
]
+
n
.
Zhi
[
a
-
1
]},
toAstro
:
function
(
e
,
t
){
return
"魔羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯"
.
substr
(
2
*
e
-
(
t
<
[
20
,
19
,
21
,
21
,
21
,
22
,
23
,
23
,
23
,
23
,
22
,
22
][
e
-
1
]?
2
:
0
),
2
)
+
"座"
},
toGanZhi
:
function
(
e
){
return
n
.
Gan
[
e
%
10
]
+
n
.
Zhi
[
e
%
12
]},
getTerm
:
function
(
e
,
t
){
if
(
e
<
1900
||
e
>
2100
)
return
-
1
;
if
(
t
<
1
||
t
>
24
)
return
-
1
;
const
a
=
n
.
sTermInfo
[
e
-
1900
],
r
=
[
parseInt
(
"0x"
+
a
.
substr
(
0
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
5
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
10
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
15
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
20
,
5
)).
toString
(),
parseInt
(
"0x"
+
a
.
substr
(
25
,
5
)).
toString
()],
s
=
[
r
[
0
].
substr
(
0
,
1
),
r
[
0
].
substr
(
1
,
2
),
r
[
0
].
substr
(
3
,
1
),
r
[
0
].
substr
(
4
,
2
),
r
[
1
].
substr
(
0
,
1
),
r
[
1
].
substr
(
1
,
2
),
r
[
1
].
substr
(
3
,
1
),
r
[
1
].
substr
(
4
,
2
),
r
[
2
].
substr
(
0
,
1
),
r
[
2
].
substr
(
1
,
2
),
r
[
2
].
substr
(
3
,
1
),
r
[
2
].
substr
(
4
,
2
),
r
[
3
].
substr
(
0
,
1
),
r
[
3
].
substr
(
1
,
2
),
r
[
3
].
substr
(
3
,
1
),
r
[
3
].
substr
(
4
,
2
),
r
[
4
].
substr
(
0
,
1
),
r
[
4
].
substr
(
1
,
2
),
r
[
4
].
substr
(
3
,
1
),
r
[
4
].
substr
(
4
,
2
),
r
[
5
].
substr
(
0
,
1
),
r
[
5
].
substr
(
1
,
2
),
r
[
5
].
substr
(
3
,
1
),
r
[
5
].
substr
(
4
,
2
)];
return
parseInt
(
s
[
t
-
1
])},
toChinaMonth
:
function
(
e
){
if
(
e
>
12
||
e
<
1
)
return
-
1
;
let
t
=
n
.
nStr3
[
e
-
1
];
return
t
+=
"月"
,
t
},
toChinaDay
:
function
(
e
){
let
t
;
switch
(
e
){
case
10
:
t
=
"初十"
;
break
;
case
20
:
t
=
"二十"
;
break
;
case
30
:
t
=
"三十"
;
break
;
default
:
t
=
n
.
nStr2
[
Math
.
floor
(
e
/
10
)],
t
+=
n
.
nStr1
[
e
%
10
]}
return
t
},
getAnimal
:
function
(
e
){
return
n
.
Animals
[(
e
-
4
)
%
12
]},
solar2lunar
:
function
(
e
,
t
,
a
){
if
(
e
<
1900
||
e
>
2100
)
return
-
1
;
if
(
1900
==+
e
&&
1
==+
t
&&+
a
<
31
)
return
-
1
;
let
r
,
s
;
r
=
e
?
new
Date
(
e
,
parseInt
(
t
)
-
1
,
a
):
new
Date
;
let
o
=
0
,
c
=
0
;
e
=
r
.
getFullYear
(),
t
=
r
.
getMonth
()
+
1
,
a
=
r
.
getDate
();
let
l
=
(
Date
.
UTC
(
r
.
getFullYear
(),
r
.
getMonth
(),
r
.
getDate
())
-
Date
.
UTC
(
1900
,
0
,
31
))
/
864
e5
;
for
(
s
=
1900
;
s
<
2101
&&
l
>
0
;
s
++
)
c
=
n
.
lYearDays
(
s
),
l
-=
c
;
l
<
0
&&
(
l
+=
c
,
s
--
);
const
i
=
new
Date
;
let
d
=!
1
;
i
.
getFullYear
()
===+
e
&&
i
.
getMonth
()
+
1
===+
t
&&
i
.
getDate
()
===+
a
&&
(
d
=!
0
);
let
f
=
r
.
getDay
();
const
b
=
n
.
nStr1
[
f
];
0
==+
f
&&
(
f
=
7
);
const
h
=
s
;
o
=
n
.
leapMonth
(
s
);
let
u
=!
1
;
for
(
s
=
1
;
s
<
13
&&
l
>
0
;
s
++
)
o
>
0
&&
s
===
o
+
1
&&!
1
===
u
?(
--
s
,
u
=!
0
,
c
=
n
.
leapDays
(
h
)):
c
=
n
.
monthDays
(
h
,
s
),
!
0
===
u
&&
s
===
o
+
1
&&
(
u
=!
1
),
l
-=
c
;
0
===
l
&&
o
>
0
&&
s
===
o
+
1
&&
(
u
?
u
=!
1
:(
u
=!
0
,
--
s
)),
l
<
0
&&
(
l
+=
c
,
--
s
);
const
y
=
s
,
m
=
l
+
1
,
D
=
t
-
1
,
p
=
n
.
toGanZhiYear
(
h
),
g
=
n
.
getTerm
(
e
,
2
*
t
-
1
),
T
=
n
.
getTerm
(
e
,
2
*
t
);
let
w
=
n
.
toGanZhi
(
12
*
(
e
-
1900
)
+
t
+
11
);
a
>=
g
&&
(
w
=
n
.
toGanZhi
(
12
*
(
e
-
1900
)
+
t
+
12
));
let
C
=!
1
,
M
=
null
;
+
g
===
a
&&
(
C
=!
0
,
M
=
n
.
solarTerm
[
2
*
t
-
2
]),
+
T
===
a
&&
(
C
=!
0
,
M
=
n
.
solarTerm
[
2
*
t
-
1
]);
const
_
=
Date
.
UTC
(
e
,
D
,
1
,
0
,
0
,
0
,
0
)
/
864
e5
+
25567
+
10
,
S
=
n
.
toGanZhi
(
_
+
a
-
1
),
k
=
n
.
toAstro
(
t
,
a
);
return
{
lYear
:
h
,
lMonth
:
y
,
lDay
:
m
,
Animal
:
n
.
getAnimal
(
h
),
IMonthCn
:(
u
?
"闰"
:
""
)
+
n
.
toChinaMonth
(
y
),
IDayCn
:
n
.
toChinaDay
(
m
),
cYear
:
e
,
cMonth
:
t
,
cDay
:
a
,
gzYear
:
p
,
gzMonth
:
w
,
gzDay
:
S
,
isToday
:
d
,
isLeap
:
u
,
nWeek
:
f
,
ncWeek
:
"星期"
+
b
,
isTerm
:
C
,
Term
:
M
,
astro
:
k
}},
lunar2solar
:
function
(
e
,
t
,
a
,
r
){
r
=!!
r
;
const
s
=
n
.
leapMonth
(
e
);
if
(
r
&&
s
!==
t
)
return
-
1
;
if
(
2100
==+
e
&&
12
==+
t
&&+
a
>
1
||
1900
==+
e
&&
1
==+
t
&&+
a
<
31
)
return
-
1
;
const
o
=
n
.
monthDays
(
e
,
t
);
let
c
=
o
;
if
(
r
&&
(
c
=
n
.
leapDays
(
e
,
t
)),
e
<
1900
||
e
>
2100
||
a
>
c
)
return
-
1
;
let
l
=
0
;
for
(
let
t
=
1900
;
t
<
e
;
t
++
)
l
+=
n
.
lYearDays
(
t
);
let
i
=
0
,
d
=!
1
;
for
(
let
a
=
1
;
a
<
t
;
a
++
)
i
=
n
.
leapMonth
(
e
),
d
||
i
<=
a
&&
i
>
0
&&
(
l
+=
n
.
leapDays
(
e
),
d
=!
0
),
l
+=
n
.
monthDays
(
e
,
a
);
r
&&
(
l
+=
o
);
const
f
=
Date
.
UTC
(
1900
,
1
,
30
,
0
,
0
,
0
),
b
=
new
Date
(
864
e5
*
(
l
+
a
-
31
)
+
f
),
h
=
b
.
getUTCFullYear
(),
u
=
b
.
getUTCMonth
()
+
1
,
y
=
b
.
getUTCDate
();
return
n
.
solar2lunar
(
h
,
u
,
y
)}},{
Gan
:
r
,
Zhi
:
s
,
nStr1
:
o
,
nStr2
:
c
,
nStr3
:
l
,
Animals
:
i
,
solarTerm
:
d
,
lunarInfo
:
f
,
sTermInfo
:
b
,
solarMonth
:
h
,...
u
}
=
n
;
var
y
=
u
;
t
.
default
=
y
},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
=
c
(
a
(
0
)),
r
=
c
(
a
(
4
)),
s
=
c
(
a
(
2
)),
o
=
a
(
1
);
function
c
(
e
){
return
e
&&
e
.
__esModule
?
e
:{
default
:
e
}}
const
l
=
new
o
.
Logger
,
i
=
new
o
.
GetDate
,
d
=
Object
.
prototype
.
toString
;
class
f
extends
n
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
}
getCalendarConfig
(){
return
this
.
Component
.
config
}
buildDate
(
e
,
t
){
const
a
=
i
.
todayDate
(),
n
=
i
.
thisMonthDays
(
e
,
t
),
r
=
[];
for
(
let
o
=
1
;
o
<=
n
;
o
++
){
const
n
=+
a
.
year
==+
e
&&+
a
.
month
==+
t
&&
o
===+
a
.
date
,
c
=
this
.
getCalendarConfig
(),
l
=
{
year
:
e
,
month
:
t
,
day
:
o
,
choosed
:
!
1
,
week
:
i
.
dayOfWeek
(
e
,
t
,
o
),
isToday
:
n
&&
c
.
highlightToday
,
lunar
:
s
.
default
.
solar2lunar
(
+
e
,
+
t
,
+
o
)};
r
.
push
(
l
)}
return
r
}
enableArea
(
e
=
[]){
if
(
2
===
e
.
length
){
if
(
this
.
__judgeParam
(
e
)){
let
{
days
:
t
=
[],
selectedDay
:
a
=
[]}
=
this
.
getData
(
"calendar"
);
const
{
startTimestamp
:
n
,
endTimestamp
:
r
}
=
(
0
,
o
.
convertEnableAreaToTimestamp
)(
e
),
s
=
this
.
__handleEnableArea
({
dateArea
:
e
,
days
:
t
,
startTimestamp
:
n
,
endTimestamp
:
r
},
a
);
this
.
setData
({
"calendar.enableArea"
:
e
,
"calendar.days"
:
s
.
dates
,
"calendar.selectedDay"
:
s
.
selectedDay
,
"calendar.enableAreaTimestamp"
:[
n
,
r
]})}}
else
l
.
warn
(
'enableArea()参数需为时间范围数组,形如:["2018-8-4" , "2018-8-24"]'
)}
enableDays
(
e
=
[]){
const
{
enableArea
:
t
=
[]}
=
this
.
getData
(
"calendar"
);
let
a
=
[];
a
=
t
.
length
?(
0
,
o
.
delRepeatedEnableDay
)(
e
,
t
):(
0
,
o
.
converEnableDaysToTimestamp
)(
e
);
let
{
days
:
n
=
[],
selectedDay
:
r
=
[]}
=
this
.
getData
(
"calendar"
);
const
s
=
this
.
__handleEnableDays
({
days
:
n
,
expectEnableDaysTimestamp
:
a
},
r
);
this
.
setData
({
"calendar.days"
:
s
.
dates
,
"calendar.selectedDay"
:
s
.
selectedDay
,
"calendar.enableDays"
:
e
,
"calendar.enableDaysTimestamp"
:
a
})}
setSelectedDays
(
e
){
if
(
!
(
0
,
r
.
default
)(
this
.
Component
).
getCalendarConfig
().
multi
)
return
l
.
warn
(
"单选模式下不能设置多日期选中,请配置 multi"
);
let
{
days
:
t
}
=
this
.
getData
(
"calendar"
),
a
=
[];
if
(
e
){
if
(
e
&&
e
.
length
){
const
{
dates
:
n
,
selectedDates
:
r
}
=
this
.
__handleSelectedDays
(
t
,
a
,
e
);
t
=
n
,
a
=
r
}}
else
t
.
map
(
e
=>
{
e
.
choosed
=!
0
,
e
.
showTodoLabel
=!
1
}),
a
=
t
;(
0
,
r
.
default
)(
this
.
Component
).
setCalendarConfig
(
"multi"
,
!
0
),
this
.
setData
({
"calendar.days"
:
t
,
"calendar.selectedDay"
:
a
})}
disableDays
(
e
){
const
{
disableDays
:
t
=
[],
days
:
a
}
=
this
.
getData
(
"calendar"
);
if
(
"[object Array]"
!==
Object
.
prototype
.
toString
.
call
(
e
))
return
l
.
warn
(
"disableDays 参数为数组"
);
let
n
=
[];
if
(
e
.
length
){
n
=
(
0
,
o
.
uniqueArrayByDate
)(
e
.
concat
(
t
));
const
r
=
n
.
map
(
e
=>
i
.
toTimeStr
(
e
));
a
.
forEach
(
e
=>
{
const
t
=
i
.
toTimeStr
(
e
);
r
.
includes
(
t
)
&&
(
e
.
disable
=!
0
)})}
else
a
.
forEach
(
e
=>
{
e
.
disable
=!
1
});
this
.
setData
({
"calendar.days"
:
a
,
"calendar.disableDays"
:
n
})}
chooseArea
(
e
=
[]){
return
new
Promise
((
t
,
a
)
=>
{
if
(
1
===
e
.
length
&&
(
e
=
e
.
concat
(
e
)),
2
===
e
.
length
){
if
(
this
.
__judgeParam
(
e
)){
const
n
=
(
0
,
r
.
default
)(
this
.
Component
).
getCalendarConfig
(),{
startTimestamp
:
s
,
endTimestamp
:
c
}
=
(
0
,
o
.
convertEnableAreaToTimestamp
)(
e
);
this
.
setData
({
calendarConfig
:{...
n
,
chooseAreaMode
:
!
0
,
mulit
:
!
0
},
"calendar.chooseAreaTimestamp"
:[
s
,
c
]},()
=>
{
this
.
__chooseContinuousDates
(
s
,
c
).
then
(
t
).
catch
(
a
)})}}})}
__pusheNextMonthDateArea
(
e
,
t
,
a
,
n
){
const
r
=
this
.
buildDate
(
e
.
year
,
e
.
month
);
let
s
=
r
.
length
;
for
(
let
e
=
0
;
e
<
s
;
e
++
){
const
c
=
r
[
e
],
l
=
(
0
,
o
.
getDateTimeStamp
)(
c
);
l
<=
a
&&
l
>=
t
&&
n
.
push
({...
c
,
choosed
:
!
0
}),
e
===
s
-
1
&&
l
<
a
&&
this
.
__pusheNextMonthDateArea
(
i
.
nextMonth
(
c
),
t
,
a
,
n
)}}
__pushPrevMonthDateArea
(
e
,
t
,
a
,
n
){
const
r
=
i
.
sortDates
(
this
.
buildDate
(
e
.
year
,
e
.
month
),
"desc"
);
let
s
=
r
.
length
,
c
=
(
0
,
o
.
getDateTimeStamp
)(
r
[
0
]);
for
(
let
e
=
0
;
e
<
s
;
e
++
){
const
l
=
r
[
e
],
d
=
(
0
,
o
.
getDateTimeStamp
)(
l
);
d
>=
t
&&
d
<=
a
&&
n
.
push
({...
l
,
choosed
:
!
0
}),
e
===
s
-
1
&&
c
>
t
&&
this
.
__pushPrevMonthDateArea
(
i
.
prevMonth
(
l
),
t
,
a
,
n
)}}
__calcDateWhenNotInOneMonth
(
e
){
const
{
firstDate
:
t
,
lastDate
:
a
,
startTimestamp
:
n
,
endTimestamp
:
r
,
filterSelectedDate
:
s
}
=
e
;(
0
,
o
.
getDateTimeStamp
)(
t
)
>
n
&&
this
.
__pushPrevMonthDateArea
(
i
.
prevMonth
(
t
),
n
,
r
,
s
),(
0
,
o
.
getDateTimeStamp
)(
a
)
<
r
&&
this
.
__pusheNextMonthDateArea
(
i
.
nextMonth
(
a
),
n
,
r
,
s
);
return
[...
i
.
sortDates
(
s
)]}
__chooseContinuousDates
(
e
,
t
){
return
new
Promise
((
a
,
n
)
=>
{
const
{
days
:
r
,
selectedDay
:
s
=
[]}
=
this
.
getData
(
"calendar"
),
c
=
[];
let
l
=
[];
s
.
forEach
(
a
=>
{
const
n
=
(
0
,
o
.
getDateTimeStamp
)(
a
);
n
>=
e
&&
n
<=
t
&&
(
l
.
push
(
a
),
c
.
push
(
i
.
toTimeStr
(
a
)))}),
r
.
forEach
(
a
=>
{
const
n
=
(
0
,
o
.
getDateTimeStamp
)(
a
),
r
=
c
.
includes
(
i
.
toTimeStr
(
a
));
if
(
n
>=
e
&&
n
<=
t
){
if
(
r
)
return
;
a
.
choosed
=!
0
,
l
.
push
(
a
)}
else
if
(
a
.
choosed
=!
1
,
r
){
const
e
=
l
.
findIndex
(
e
=>
i
.
toTimeStr
(
e
)
===
i
.
toTimeStr
(
a
));
e
>-
1
&&
l
.
splice
(
e
,
1
)}});
const
d
=
r
[
0
],
f
=
r
[
r
.
length
-
1
],
b
=
this
.
__calcDateWhenNotInOneMonth
({
firstDate
:
d
,
lastDate
:
f
,
startTimestamp
:
e
,
endTimestamp
:
t
,
filterSelectedDate
:
l
});
try
{
this
.
setData
({
"calendar.days"
:[...
r
],
"calendar.selectedDay"
:
b
},()
=>
{
a
(
b
)})}
catch
(
e
){
n
(
e
)}})}
setDateStyle
(
e
){
if
(
"[object Array]"
!==
d
.
call
(
e
))
return
;
const
{
days
:
t
,
specialStyleDates
:
a
}
=
this
.
getData
(
"calendar"
);
"[object Array]"
===
d
.
call
(
a
)
&&
(
e
=
(
0
,
o
.
uniqueArrayByDate
)([...
a
,...
e
]));
const
n
=
e
.
map
(
e
=>
`
${
e
.
year
}
_
${
e
.
month
}
_
${
e
.
day
}
`
),
r
=
t
.
map
(
t
=>
{
const
a
=
n
.
indexOf
(
`
${
t
.
year
}
_
${
t
.
month
}
_
${
t
.
day
}
`
);
return
a
>-
1
?{...
t
,
class
:
e
[
a
].
class
}:{...
t
}});
this
.
setData
({
"calendar.days"
:
r
,
"calendar.specialStyleDates"
:
e
})}
__judgeParam
(
e
){
const
{
start
:
t
,
end
:
a
,
startTimestamp
:
n
,
endTimestamp
:
r
}
=
(
0
,
o
.
convertEnableAreaToTimestamp
)(
e
);
if
(
!
t
||!
a
)
return
;
const
s
=
i
.
thisMonthDays
(
t
[
0
],
t
[
1
]),
c
=
i
.
thisMonthDays
(
a
[
0
],
a
[
1
]);
return
t
[
2
]
>
s
||
t
[
2
]
<
1
?(
l
.
warn
(
"enableArea() 开始日期错误,指定日期不在当前月份天数范围内"
),
!
1
):
t
[
1
]
>
12
||
t
[
1
]
<
1
?(
l
.
warn
(
"enableArea() 开始日期错误,月份超出1-12月份"
),
!
1
):
a
[
2
]
>
c
||
a
[
2
]
<
1
?(
l
.
warn
(
"enableArea() 截止日期错误,指定日期不在当前月份天数范围内"
),
!
1
):
a
[
1
]
>
12
||
a
[
1
]
<
1
?(
l
.
warn
(
"enableArea() 截止日期错误,月份超出1-12月份"
),
!
1
):
!
(
n
>
r
)
||
(
l
.
warn
(
"enableArea()参数最小日期大于了最大日期"
),
!
1
)}
__getDisableDateTimestamp
(){
let
e
;
const
{
date
:
t
,
type
:
a
}
=
this
.
getCalendarConfig
().
disableMode
||
{};
if
(
t
){
const
a
=
t
.
split
(
"-"
);
if
(
a
.
length
<
3
)
return
l
.
warn
(
"配置 disableMode.date 格式错误"
),{};
e
=
(
0
,
o
.
getDateTimeStamp
)({
year
:
+
a
[
0
],
month
:
+
a
[
1
],
day
:
+
a
[
2
]})}
return
{
disableDateTimestamp
:
e
,
disableType
:
a
}}
__handleEnableArea
(
e
=
{},
t
=
[]){
const
{
area
:
a
,
days
:
n
,
startTimestamp
:
r
,
endTimestamp
:
s
}
=
e
,
c
=
this
.
getData
(
"calendar.enableDays"
)
||
[];
let
l
=
[];
c
.
length
&&
(
l
=
(
0
,
o
.
delRepeatedEnableDay
)(
c
,
a
));
const
{
disableDateTimestamp
:
d
,
disableType
:
f
}
=
this
.
__getDisableDateTimestamp
(),
b
=
[...
n
];
return
b
.
forEach
(
e
=>
{
const
a
=+
i
.
newDate
(
e
.
year
,
e
.
month
,
e
.
day
).
getTime
();(
+
r
>
a
||
a
>+
s
)
&&!
l
.
includes
(
a
)
||
"before"
===
f
&&
d
&&
a
<
d
||
"after"
===
f
&&
d
&&
a
>
d
?(
e
.
disable
=!
0
,
e
.
choosed
&&
(
e
.
choosed
=!
1
,
t
=
t
.
filter
(
t
=>
i
.
toTimeStr
(
e
)
!==
i
.
toTimeStr
(
t
)))):
e
.
disable
&&
(
e
.
disable
=!
1
)}),{
dates
:
b
,
selectedDay
:
t
}}
__handleEnableDays
(
e
=
{},
t
=
[]){
const
{
days
:
a
,
expectEnableDaysTimestamp
:
n
}
=
e
,{
enableAreaTimestamp
:
r
=
[]}
=
this
.
getData
(
"calendar"
),
s
=
[...
a
];
return
s
.
forEach
(
e
=>
{
const
a
=
i
.
newDate
(
e
.
year
,
e
.
month
,
e
.
day
).
getTime
();
let
s
=!
1
;
r
.
length
?(
+
r
[
0
]
>+
a
||+
a
>+
r
[
1
])
&&!
n
.
includes
(
+
a
)
&&
(
s
=!
0
):
n
.
includes
(
+
a
)
||
(
s
=!
0
),
s
?(
e
.
disable
=!
0
,
e
.
choosed
&&
(
e
.
choosed
=!
1
,
t
=
t
.
filter
(
t
=>
i
.
toTimeStr
(
e
)
!==
i
.
toTimeStr
(
t
)))):
e
.
disable
=!
1
}),{
dates
:
s
,
selectedDay
:
t
}}
__handleSelectedDays
(
e
=
[],
t
=
[],
a
){
const
{
selectedDay
:
n
,
showLabelAlways
:
r
}
=
this
.
getData
(
"calendar"
);
t
=
n
&&
n
.
length
?(
0
,
o
.
uniqueArrayByDate
)(
n
.
concat
(
a
)):
a
;
const
{
year
:
s
,
month
:
c
}
=
e
[
0
],
l
=
[];
return
t
.
forEach
(
e
=>
{
+
e
.
year
==+
s
&&+
e
.
month
==+
c
&&
l
.
push
(
i
.
toTimeStr
(
e
))}),[...
e
].
map
(
e
=>
{
l
.
includes
(
i
.
toTimeStr
(
e
))
&&
(
e
.
choosed
=!
0
,
r
&&
e
.
showTodoLabel
?
e
.
showTodoLabel
=!
0
:
e
.
showTodoLabel
=!
1
)}),{
dates
:
e
,
selectedDates
:
t
}}}
t
.
default
=
e
=>
new
f
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
,
r
=
(
n
=
a
(
0
))
&&
n
.
__esModule
?
n
:{
default
:
n
};
class
s
extends
r
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
}
getCalendarConfig
(){
return
this
.
Component
&&
this
.
Component
.
config
?
this
.
Component
.
config
:{}}
setCalendarConfig
(
e
){
return
new
Promise
((
t
,
a
)
=>
{
if
(
!
this
.
Component
||!
this
.
Component
.
config
)
return
void
a
(
"异常:未找到组件配置信息"
);
let
n
=
{...
this
.
Component
.
config
,...
e
};
this
.
Component
.
config
=
n
,
this
.
setData
({
calendarConfig
:
n
},()
=>
{
t
(
n
)})})}}
t
.
default
=
e
=>
new
s
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
=
i
(
a
(
3
)),
r
=
i
(
a
(
0
)),
s
=
i
(
a
(
6
)),
o
=
i
(
a
(
4
)),
c
=
i
(
a
(
2
)),
l
=
a
(
1
);
function
i
(
e
){
return
e
&&
e
.
__esModule
?
e
:{
default
:
e
}}
const
d
=
new
l
.
GetDate
,
f
=
new
l
.
Logger
;
class
b
extends
r
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
,
this
.
getCalendarConfig
=
(
0
,
o
.
default
)(
this
.
Component
).
getCalendarConfig
}
switchWeek
(
e
,
t
){
return
new
Promise
((
a
,
n
)
=>
{
if
((
0
,
o
.
default
)(
this
.
Component
).
getCalendarConfig
().
multi
)
return
f
.
warn
(
"多选模式不能切换周月视图"
);
const
{
selectedDay
:
r
=
[],
curYear
:
c
,
curMonth
:
l
}
=
this
.
getData
(
"calendar"
);
let
i
=
[],
b
=!
1
;
r
.
length
?
i
=
r
[
0
]:(
i
=
d
.
todayDate
(),
i
.
day
=
i
.
date
,
b
=!
0
);
let
h
=
t
||
i
;
const
{
year
:
u
,
month
:
y
}
=
h
,
m
=
c
!==
u
||
l
!==
y
;
if
(
"week"
===
e
){
if
(
this
.
Component
.
weekMode
)
return
;(
r
.
length
&&
m
||!
r
.
length
)
&&
(
b
=!
0
,
h
=
{
year
:
c
,
month
:
l
,
day
:
h
.
day
}),
this
.
Component
.
weekMode
=!
0
,
this
.
setData
({
"calendarConfig.weekMode"
:
!
0
}),
this
.
jump
(
h
,
b
).
then
(
a
).
catch
(
n
)}
else
{
this
.
Component
.
weekMode
=!
1
,
this
.
setData
({
"calendarConfig.weekMode"
:
!
1
});
const
e
=
r
.
length
&&
m
||!
r
.
length
;(
0
,
s
.
default
)(
this
.
Component
).
renderCalendar
(
c
,
l
,
h
.
day
,
e
).
then
(
a
).
catch
(
n
)}})}
updateCurrYearAndMonth
(
e
){
let
{
days
:
t
,
curYear
:
a
,
curMonth
:
n
}
=
this
.
getData
(
"calendar"
);
const
{
month
:
r
}
=
t
[
0
],{
month
:
s
}
=
t
[
t
.
length
-
1
],
o
=
d
.
thisMonthDays
(
a
,
n
),
c
=
t
[
t
.
length
-
1
],
l
=
t
[
0
];
return
(
c
.
day
+
7
>
o
||
n
===
r
&&
r
!==
s
)
&&
"next"
===
e
?(
n
+=
1
,
n
>
12
&&
(
a
+=
1
,
n
=
1
)):(
+
l
.
day
<=
7
||
n
===
s
&&
r
!==
s
)
&&
"prev"
===
e
&&
(
n
-=
1
,
n
<=
0
&&
(
a
-=
1
,
n
=
12
)),{
Uyear
:
a
,
Umonth
:
n
}}
calculateLastDay
(){
const
{
days
:
e
=
[],
curYear
:
t
,
curMonth
:
a
}
=
this
.
getData
(
"calendar"
);
return
{
lastDayInThisWeek
:
e
[
e
.
length
-
1
].
day
,
lastDayInThisMonth
:
d
.
thisMonthDays
(
t
,
a
)}}
calculateFirstDay
(){
const
{
days
:
e
}
=
this
.
getData
(
"calendar"
);
return
{
firstDayInThisWeek
:
e
[
0
].
day
}}
firstWeekInMonth
(
e
,
t
,
a
){
let
r
=
d
.
dayOfWeek
(
e
,
t
,
1
);
a
&&
0
===
r
&&
(
r
=
7
);
const
[,
s
]
=
[
0
,
7
-
r
];
let
o
=
this
.
getData
(
"calendar.days"
)
||
[];
this
.
Component
.
weekMode
&&
(
o
=
(
0
,
n
.
default
)(
this
.
Component
).
buildDate
(
e
,
t
));
return
o
.
slice
(
0
,
a
?
s
+
1
:
s
)}
lastWeekInMonth
(
e
,
t
,
a
){
const
r
=
d
.
thisMonthDays
(
e
,
t
),
s
=
d
.
dayOfWeek
(
e
,
t
,
r
),[
o
,
c
]
=
[
r
-
s
,
r
];
let
l
=
this
.
getData
(
"calendar.days"
)
||
[];
this
.
Component
.
weekMode
&&
(
l
=
(
0
,
n
.
default
)(
this
.
Component
).
buildDate
(
e
,
t
));
return
l
.
slice
(
a
?
o
:
o
-
1
,
c
)}
__getDisableDateTimestamp
(
e
){
const
{
date
:
t
,
type
:
a
}
=
e
.
disableMode
||
{};
let
n
;
if
(
t
){
const
e
=
t
.
split
(
"-"
);
if
(
e
.
length
<
3
)
return
f
.
warn
(
"配置 disableMode.date 格式错误"
),{};
n
=
(
0
,
l
.
getDateTimeStamp
)({
year
:
+
e
[
0
],
month
:
+
e
[
1
],
day
:
+
e
[
2
]})}
return
{
disableDateTimestamp
:
n
,
disableType
:
a
}}
initSelectedDay
(
e
){
let
t
=
[...
e
];
const
{
selectedDay
:
a
=
[]}
=
this
.
getData
(
"calendar"
),
n
=
a
.
map
(
e
=>
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
),
r
=
this
.
getCalendarConfig
(),{
disableDateTimestamp
:
s
,
disableType
:
o
}
=
this
.
__getDisableDateTimestamp
(
r
);
return
t
=
t
.
map
(
e
=>
{
if
(
!
e
)
return
{};
const
t
=
(
0
,
l
.
getDateTimeStamp
)(
e
);
let
a
=
{...
e
};
return
n
.
includes
(
`
${
+
a
.
year
}
-
${
+
a
.
month
}
-
${
+
a
.
day
}
`
)?
a
.
choosed
=!
0
:
a
.
choosed
=!
1
,(
"after"
===
o
&&
t
>
s
||
"before"
===
o
&&
t
<
s
)
&&
(
a
.
disable
=!
0
),
a
=
this
.
__setTodoWhenJump
(
a
,
r
),
r
.
showLunar
&&
(
a
=
this
.
__setSolarLunar
(
a
)),
r
.
highlightToday
&&
(
a
=
this
.
__highlightToday
(
a
)),
a
}),
t
}
setEnableAreaOnWeekMode
(
e
=
[]){
let
{
enableAreaTimestamp
:
t
=
[],
enableDaysTimestamp
:
a
=
[]}
=
this
.
getData
(
"calendar"
);
e
.
forEach
(
e
=>
{
const
n
=
d
.
newDate
(
e
.
year
,
e
.
month
,
e
.
day
).
getTime
();
let
r
=!
1
;
t
.
length
?(
+
t
[
0
]
>+
n
||+
n
>+
t
[
1
])
&&!
a
.
includes
(
+
n
)
&&
(
r
=!
0
):
a
.
length
&&!
a
.
includes
(
+
n
)
&&
(
r
=!
0
),
r
&&
(
e
.
disable
=!
0
,
e
.
choosed
=!
1
);
const
s
=
(
0
,
o
.
default
)(
this
.
Component
).
getCalendarConfig
(),{
disableDateTimestamp
:
c
,
disableType
:
l
}
=
this
.
__getDisableDateTimestamp
(
s
);(
"before"
===
l
&&
n
<
c
||
"after"
===
l
&&
n
>
c
)
&&
(
e
.
disable
=!
0
)})}
updateYMWhenSwipeCalendarHasSelected
(
e
){
const
t
=
e
.
filter
(
e
=>
e
.
choosed
);
if
(
t
&&
t
.
length
){
const
{
year
:
e
,
month
:
a
}
=
t
[
0
];
return
{
year
:
e
,
month
:
a
}}
return
{}}
calculateNextWeekDays
(){
let
{
lastDayInThisWeek
:
e
,
lastDayInThisMonth
:
t
}
=
this
.
calculateLastDay
(),{
curYear
:
a
,
curMonth
:
r
}
=
this
.
getData
(
"calendar"
),
s
=
[];
if
(
t
-
e
>=
7
){
const
{
Uyear
:
t
,
Umonth
:
n
}
=
this
.
updateCurrYearAndMonth
(
"next"
);
a
=
t
,
r
=
n
;
for
(
let
t
=
e
+
1
;
t
<=
e
+
7
;
t
++
)
s
.
push
({
year
:
a
,
month
:
r
,
day
:
t
,
week
:
d
.
dayOfWeek
(
a
,
r
,
t
)})}
else
{
for
(
let
n
=
e
+
1
;
n
<=
t
;
n
++
)
s
.
push
({
year
:
a
,
month
:
r
,
day
:
n
,
week
:
d
.
dayOfWeek
(
a
,
r
,
n
)});
const
{
Uyear
:
n
,
Umonth
:
o
}
=
this
.
updateCurrYearAndMonth
(
"next"
);
a
=
n
,
r
=
o
;
for
(
let
n
=
1
;
n
<=
7
-
(
t
-
e
);
n
++
)
s
.
push
({
year
:
a
,
month
:
r
,
day
:
n
,
week
:
d
.
dayOfWeek
(
a
,
r
,
n
)})}
s
=
this
.
initSelectedDay
(
s
);
const
{
year
:
o
,
month
:
c
}
=
this
.
updateYMWhenSwipeCalendarHasSelected
(
s
);
o
&&
c
&&
(
a
=
o
,
r
=
c
),
this
.
setEnableAreaOnWeekMode
(
s
),
this
.
setData
({
"calendar.curYear"
:
a
,
"calendar.curMonth"
:
r
,
"calendar.days"
:
s
},()
=>
{(
0
,
n
.
default
)(
this
.
Component
).
setDateStyle
()})}
calculatePrevWeekDays
(){
let
{
firstDayInThisWeek
:
e
}
=
this
.
calculateFirstDay
(),{
curYear
:
t
,
curMonth
:
a
}
=
this
.
getData
(
"calendar"
),
r
=
[];
if
(
e
-
7
>
0
){
const
{
Uyear
:
n
,
Umonth
:
s
}
=
this
.
updateCurrYearAndMonth
(
"prev"
);
t
=
n
,
a
=
s
;
for
(
let
n
=
e
-
7
;
n
<
e
;
n
++
)
r
.
push
({
year
:
t
,
month
:
a
,
day
:
n
,
week
:
d
.
dayOfWeek
(
t
,
a
,
n
)})}
else
{
let
n
=
[];
for
(
let
r
=
1
;
r
<
e
;
r
++
)
n
.
push
({
year
:
t
,
month
:
a
,
day
:
r
,
week
:
d
.
dayOfWeek
(
t
,
a
,
r
)});
const
{
Uyear
:
s
,
Umonth
:
o
}
=
this
.
updateCurrYearAndMonth
(
"prev"
);
t
=
s
,
a
=
o
;
const
c
=
d
.
thisMonthDays
(
t
,
a
);
for
(
let
n
=
c
-
Math
.
abs
(
e
-
7
);
n
<=
c
;
n
++
)
r
.
push
({
year
:
t
,
month
:
a
,
day
:
n
,
week
:
d
.
dayOfWeek
(
t
,
a
,
n
)});
r
=
r
.
concat
(
n
)}
r
=
this
.
initSelectedDay
(
r
);
const
{
year
:
s
,
month
:
o
}
=
this
.
updateYMWhenSwipeCalendarHasSelected
(
r
);
s
&&
o
&&
(
t
=
s
,
a
=
o
),
this
.
setEnableAreaOnWeekMode
(
r
),
this
.
setData
({
"calendar.curYear"
:
t
,
"calendar.curMonth"
:
a
,
"calendar.days"
:
r
},()
=>
{(
0
,
n
.
default
)(
this
.
Component
).
setDateStyle
()})}
calculateDatesWhenJump
({
year
:
e
,
month
:
t
,
day
:
a
},{
firstWeekDays
:
n
,
lastWeekDays
:
r
},
s
){
const
o
=
this
.
__dateIsInWeek
({
year
:
e
,
month
:
t
,
day
:
a
},
n
),
c
=
this
.
__dateIsInWeek
({
year
:
e
,
month
:
t
,
day
:
a
},
r
);
let
l
=
[];
return
l
=
o
?
this
.
__calculateDatesWhenInFirstWeek
(
n
,
s
):
c
?
this
.
__calculateDatesWhenInLastWeek
(
r
,
s
):
this
.
__calculateDates
({
year
:
e
,
month
:
t
,
day
:
a
},
s
),
l
}
jump
({
year
:
e
,
month
:
t
,
day
:
a
},
r
){
return
new
Promise
(
s
=>
{
if
(
!
a
)
return
;
const
o
=
this
.
getCalendarConfig
(),
c
=
"Mon"
===
o
.
firstDayOfWeek
,
l
=
this
.
firstWeekInMonth
(
e
,
t
,
c
);
let
i
=
this
.
lastWeekInMonth
(
e
,
t
,
c
),
d
=
this
.
calculateDatesWhenJump
({
year
:
e
,
month
:
t
,
day
:
a
},{
firstWeekDays
:
l
,
lastWeekDays
:
i
},
c
);
d
=
d
.
map
(
n
=>
{
let
s
=
{...
n
};
return
+
s
.
year
!=+
e
||+
s
.
month
!=+
t
||+
s
.
day
!=+
a
||
r
||
(
s
.
choosed
=!
0
),
s
=
this
.
__setTodoWhenJump
(
s
,
o
),
o
.
showLunar
&&
(
s
=
this
.
__setSolarLunar
(
s
)),
o
.
highlightToday
&&
(
s
=
this
.
__highlightToday
(
s
)),
s
}),
this
.
setEnableAreaOnWeekMode
(
d
);
const
f
=
{
"calendar.days"
:
d
,
"calendar.curYear"
:
e
,
"calendar.curMonth"
:
t
,
"calendar.empytGrids"
:[],
"calendar.lastEmptyGrids"
:[]};
r
||
(
f
[
"calendar.selectedDay"
]
=
d
.
filter
(
e
=>
e
.
choosed
)),
this
.
setData
(
f
,()
=>
{(
0
,
n
.
default
)(
this
.
Component
).
setDateStyle
(),
s
({
year
:
e
,
month
:
t
,
date
:
a
})})})}
__setTodoWhenJump
(
e
){
const
t
=
{...
e
},{
todoLabels
:
a
=
[],
showLabelAlways
:
n
}
=
this
.
getData
(
"calendar"
),
r
=
a
.
map
(
e
=>
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
).
indexOf
(
`
${
+
t
.
year
}
-
${
+
t
.
month
}
-
${
+
t
.
day
}
`
);
if
(
-
1
!==
r
){
t
.
showTodoLabel
=!!
n
||!
t
.
choosed
;
const
e
=
a
[
r
]
||
{};
t
.
showTodoLabel
&&
e
.
todoText
&&
(
t
.
todoText
=
e
.
todoText
)}
return
t
}
__setSolarLunar
(
e
){
const
t
=
{...
e
};
return
t
.
lunar
=
c
.
default
.
solar2lunar
(
+
t
.
year
,
+
t
.
month
,
+
t
.
day
),
t
}
__highlightToday
(
e
){
const
t
=
{...
e
},
a
=
d
.
todayDate
(),
n
=+
a
.
year
==+
t
.
year
&&+
a
.
month
==+
t
.
month
&&+
t
.
day
==+
a
.
date
;
return
t
.
isToday
=
n
,
t
}
__calculateDatesWhenInFirstWeek
(
e
){
const
t
=
[...
e
];
if
(
t
.
length
<
7
){
let
e
,{
year
:
a
,
month
:
n
}
=
t
[
0
],
r
=
7
-
t
.
length
;
for
(
n
>
1
?(
n
-=
1
,
e
=
d
.
thisMonthDays
(
a
,
n
)):(
n
=
12
,
a
-=
1
,
e
=
d
.
thisMonthDays
(
a
,
n
));
r
;)
t
.
unshift
({
year
:
a
,
month
:
n
,
day
:
e
,
week
:
d
.
dayOfWeek
(
a
,
n
,
e
)}),
e
-=
1
,
r
-=
1
}
return
t
}
__calculateDatesWhenInLastWeek
(
e
){
const
t
=
[...
e
];
if
(
t
.
length
<
7
){
let
{
year
:
e
,
month
:
a
}
=
t
[
0
],
n
=
7
-
t
.
length
,
r
=
1
;
for
(
a
>
11
?(
a
=
1
,
e
+=
1
):
a
+=
1
;
n
;)
t
.
push
({
year
:
e
,
month
:
a
,
day
:
r
,
week
:
d
.
dayOfWeek
(
e
,
a
,
r
)}),
r
+=
1
,
n
-=
1
}
return
t
}
__calculateDates
({
year
:
e
,
month
:
t
,
day
:
a
},
r
){
const
s
=
d
.
dayOfWeek
(
e
,
t
,
a
);
let
o
=
[
a
-
s
,
a
+
(
6
-
s
)];
r
&&
(
o
=
[
a
+
1
-
s
,
a
+
(
7
-
s
)]);
return
(
0
,
n
.
default
)(
this
.
Component
).
buildDate
(
e
,
t
).
slice
(
o
[
0
]
-
1
,
o
[
1
])}
__dateIsInWeek
(
e
,
t
){
return
t
.
find
(
t
=>+
t
.
year
==+
e
.
year
&&+
t
.
month
==+
e
.
month
&&+
t
.
day
==+
e
.
day
)}
__tipsWhenCanNotSwtich
(){
f
.
info
(
"当前月份未选中日期下切换为周视图,不能明确该展示哪一周的日期,故此情况不允许切换"
)}}
t
.
default
=
e
=>
new
b
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
=
l
(
a
(
3
)),
r
=
l
(
a
(
7
)),
s
=
l
(
a
(
0
)),
o
=
l
(
a
(
2
)),
c
=
a
(
1
);
function
l
(
e
){
return
e
&&
e
.
__esModule
?
e
:{
default
:
e
}}
const
i
=
new
c
.
GetDate
,
d
=
new
c
.
Logger
;
class
f
extends
s
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
}
getCalendarConfig
(){
return
this
.
Component
.
config
}
renderCalendar
(
e
,
t
,
a
,
s
){
return
new
Promise
(
o
=>
{
const
c
=
this
.
getCalendarConfig
();
this
.
calculateEmptyGrids
(
e
,
t
),
this
.
calculateDays
(
e
,
t
,
a
,
s
).
then
(()
=>
{
const
{
todoLabels
:
a
,
specialStyleDates
:
s
,
enableDays
:
l
,
selectedDay
:
i
}
=
this
.
getData
(
"calendar"
)
||
{};
a
&&
a
.
find
(
a
=>+
a
.
month
==+
t
&&+
a
.
year
==+
e
)
&&
(
0
,
r
.
default
)(
this
.
Component
).
setTodoLabels
(),
s
&&
s
.
length
&&
s
.
find
(
a
=>+
a
.
month
==+
t
&&+
a
.
year
==+
e
)
&&
(
0
,
n
.
default
)(
this
.
Component
).
setDateStyle
(
s
),
l
&&
l
.
length
&&
l
.
find
(
a
=>
{
let
n
=
a
.
split
(
"-"
);
return
+
n
[
1
]
==+
t
&&+
n
[
0
]
==+
e
})
&&
(
0
,
n
.
default
)(
this
.
Component
).
enableDays
(
l
),
i
&&
i
.
length
&&
i
.
find
(
a
=>+
a
.
month
==+
t
&&+
a
.
year
==+
e
)
&&
c
.
mulit
&&
(
0
,
n
.
default
)(
this
.
Component
).
setSelectedDays
(
i
),
this
.
Component
.
firstRender
?
o
({
firstRender
:
!
1
}):
o
({
firstRender
:
!
0
})})})}
calculateEmptyGrids
(
e
,
t
){
this
.
calculatePrevMonthGrids
(
e
,
t
),
this
.
calculateNextMonthGrids
(
e
,
t
)}
calculatePrevMonthGrids
(
e
,
t
){
let
a
=
[];
const
n
=
i
.
thisMonthDays
(
e
,
t
-
1
);
let
r
=
i
.
firstDayOfWeek
(
e
,
t
);
const
s
=
this
.
getCalendarConfig
()
||
{};
if
(
"Mon"
===
s
.
firstDayOfWeek
&&
(
0
===
r
?
r
=
6
:
r
-=
1
),
r
>
0
){
const
c
=
n
-
r
,{
onlyShowCurrentMonth
:
l
}
=
s
,{
showLunar
:
i
}
=
this
.
getCalendarConfig
();
for
(
let
r
=
n
;
r
>
c
;
r
--
)
l
?
a
.
push
(
""
):
a
.
push
({
day
:
r
,
lunar
:
i
?
o
.
default
.
solar2lunar
(
e
,
t
-
1
,
r
):
null
});
this
.
setData
({
"calendar.empytGrids"
:
a
.
reverse
()})}
else
this
.
setData
({
"calendar.empytGrids"
:
null
})}
calculateExtraEmptyDate
(
e
,
t
,
a
){
let
n
=
0
;
if
(
2
==+
t
){
n
+=
7
;
let
r
=
i
.
dayOfWeek
(
e
,
t
,
1
);
"Mon"
===
a
.
firstDayOfWeek
?
1
==+
r
&&
(
n
+=
7
):
0
==+
r
&&
(
n
+=
7
)}
else
{
let
r
=
i
.
dayOfWeek
(
e
,
t
,
1
);
"Mon"
===
a
.
firstDayOfWeek
?
0
!==
r
&&
r
<
6
&&
(
n
+=
7
):
r
<=
5
&&
(
n
+=
7
)}
return
n
}
calculateNextMonthGrids
(
e
,
t
){
let
a
=
[];
const
n
=
i
.
thisMonthDays
(
e
,
t
);
let
r
=
i
.
dayOfWeek
(
e
,
t
,
n
);
const
s
=
this
.
getCalendarConfig
()
||
{};
"Mon"
===
s
.
firstDayOfWeek
&&
(
0
===
r
?
r
=
6
:
r
-=
1
);
let
c
=
7
-
(
r
+
1
);
const
{
onlyShowCurrentMonth
:
l
,
showLunar
:
d
}
=
s
;
l
||
(
c
+=
this
.
calculateExtraEmptyDate
(
e
,
t
,
s
));
for
(
let
n
=
1
;
n
<=
c
;
n
++
)
l
?
a
.
push
(
""
):
a
.
push
({
day
:
n
,
lunar
:
d
?
o
.
default
.
solar2lunar
(
e
,
t
+
1
,
n
):
null
});
this
.
setData
({
"calendar.lastEmptyGrids"
:
a
})}
setSelectedDay
(
e
,
t
,
a
){
let
n
=
[];
const
r
=
this
.
getCalendarConfig
();
if
(
r
.
noDefault
)
n
=
[],
r
.
noDefault
=!
1
;
else
{
const
r
=
this
.
getData
(
"calendar"
)
||
{},{
showLunar
:
s
}
=
this
.
getCalendarConfig
();
n
=
a
?[{
year
:
e
,
month
:
t
,
day
:
a
,
choosed
:
!
0
,
week
:
i
.
dayOfWeek
(
e
,
t
,
a
),
lunar
:
s
?
o
.
default
.
solar2lunar
(
e
,
t
,
a
):
null
}]:
r
.
selectedDay
}
return
n
}
__getDisableDateTimestamp
(){
let
e
;
const
{
date
:
t
,
type
:
a
}
=
this
.
getCalendarConfig
().
disableMode
||
{};
if
(
t
){
const
a
=
t
.
split
(
"-"
);
if
(
a
.
length
<
3
)
return
d
.
warn
(
"配置 disableMode.date 格式错误"
),{};
e
=
(
0
,
c
.
getDateTimeStamp
)({
year
:
+
a
[
0
],
month
:
+
a
[
1
],
day
:
+
a
[
2
]})}
return
{
disableDateTimestamp
:
e
,
disableType
:
a
}}
resetDates
(){
this
.
setData
({
"calendar.days"
:[]})}
calculateDays
(
e
,
t
,
a
,
r
){
return
new
Promise
(
s
=>
{
this
.
resetDates
();
let
o
=
[];
const
{
disableDays
:
l
=
[],
chooseAreaTimestamp
:
d
=
[],
selectedDay
:
f
=
[]}
=
this
.
getData
(
"calendar"
);
o
=
(
0
,
n
.
default
)(
this
.
Component
).
buildDate
(
e
,
t
);
let
b
=
f
;
r
||
(
b
=
this
.
setSelectedDay
(
e
,
t
,
a
));
const
h
=
b
.
map
(
e
=>
i
.
toTimeStr
(
e
)),
u
=
l
.
map
(
e
=>
i
.
toTimeStr
(
e
)),[
y
,
m
]
=
d
;
o
.
forEach
(
e
=>
{
const
t
=
i
.
toTimeStr
(
e
),
a
=
(
0
,
c
.
getDateTimeStamp
)(
e
);
if
(
h
.
includes
(
t
)
&&!
r
){
if
(
e
.
choosed
=!
0
,
a
>
m
||
a
<
y
){
const
t
=
b
.
findIndex
(
t
=>
i
.
toTimeStr
(
t
)
===
i
.
toTimeStr
(
e
));
b
.
splice
(
t
,
1
)}}
else
y
&&
m
&&
a
>=
y
&&
a
<=
m
&&!
r
&&
(
e
.
choosed
=!
0
,
b
.
push
(
e
));
u
.
includes
(
t
)
&&
(
e
.
disable
=!
0
);
const
{
disableDateTimestamp
:
n
,
disableType
:
s
}
=
this
.
__getDisableDateTimestamp
();
let
o
=!
1
;
n
&&
(
"before"
===
s
&&
a
<
n
||
"after"
===
s
&&
a
>
n
)
&&
(
o
=!
0
);(
o
||
this
.
__isDisable
(
a
))
&&
(
e
.
disable
=!
0
,
e
.
choosed
=!
1
)}),
this
.
setData
({
"calendar.days"
:
o
,
"calendar.selectedDay"
:[...
b
]
||!
1
},()
=>
{
s
()})})}
__isDisable
(
e
){
const
{
enableArea
:
t
=
[],
enableDays
:
a
=
[],
enableAreaTimestamp
:
n
=
[]}
=
this
.
getData
(
"calendar"
);
let
r
=!
1
,
s
=
(
0
,
c
.
converEnableDaysToTimestamp
)(
a
);
return
t
.
length
&&
(
s
=
(
0
,
c
.
delRepeatedEnableDay
)(
a
,
t
)),
n
.
length
?(
+
n
[
0
]
>+
e
||+
e
>+
n
[
1
])
&&!
s
.
includes
(
+
e
)
&&
(
r
=!
0
):
s
.
length
&&!
s
.
includes
(
+
e
)
&&
(
r
=!
0
),
r
}}
t
.
default
=
e
=>
new
f
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
default
=
void
0
;
var
n
,
r
=
(
n
=
a
(
0
))
&&
n
.
__esModule
?
n
:{
default
:
n
},
s
=
a
(
1
);
const
o
=
new
s
.
Logger
,
c
=
new
s
.
GetDate
;
class
l
extends
r
.
default
{
constructor
(
e
){
super
(
e
),
this
.
Component
=
e
}
setTodoLabels
(
e
){
e
&&
(
this
.
Component
.
todoConfig
=
e
);
const
t
=
this
.
getData
(
"calendar"
);
if
(
!
t
||!
t
.
days
)
return
o
.
warn
(
"请等待日历初始化完成后再调用该方法"
);
const
a
=
[...
t
.
days
],{
curYear
:
n
,
curMonth
:
r
}
=
t
,{
circle
:
c
,
dotColor
:
l
=
""
,
pos
:
i
=
"bottom"
,
showLabelAlways
:
d
,
days
:
f
=
[]}
=
e
||
this
.
Component
.
todoConfig
||
{},{
todoLabels
:
b
=
[],
todoLabelPos
:
h
,
todoLabelColor
:
u
}
=
t
,
y
=
this
.
getTodoLabels
({
year
:
n
,
month
:
r
});
let
m
=
f
.
filter
(
e
=>+
e
.
year
==+
n
&&+
e
.
month
==+
r
);
this
.
Component
.
weekMode
&&
(
m
=
f
);
const
D
=
y
.
concat
(
m
);
for
(
let
e
of
D
){
let
t
;
t
=
this
.
Component
.
weekMode
?
a
.
find
(
t
=>+
e
.
year
==+
t
.
year
&&+
e
.
month
==+
t
.
month
&&+
e
.
day
==+
t
.
day
):
a
[
e
.
day
-
1
],
t
&&
(
t
.
showTodoLabel
=!!
d
||!
t
.
choosed
,
t
.
showTodoLabel
&&
e
.
todoText
&&
(
t
.
todoText
=
e
.
todoText
),
e
.
color
&&
(
t
.
color
=
e
.
color
))}
const
p
=
{
"calendar.days"
:
a
,
"calendar.todoLabels"
:(
0
,
s
.
uniqueArrayByDate
)(
b
.
concat
(
f
))};
c
||
(
i
&&
i
!==
h
&&
(
p
[
"calendar.todoLabelPos"
]
=
i
),
l
&&
l
!==
u
&&
(
p
[
"calendar.todoLabelColor"
]
=
l
)),
p
[
"calendar.todoLabelCircle"
]
=
c
||!
1
,
p
[
"calendar.showLabelAlways"
]
=
d
||!
1
,
this
.
setData
(
p
)}
deleteTodoLabels
(
e
){
if
(
!
(
e
instanceof
Array
&&
e
.
length
))
return
;
const
t
=
this
.
filterTodos
(
e
),{
days
:
a
,
curYear
:
n
,
curMonth
:
r
}
=
this
.
getData
(
"calendar"
),
s
=
t
.
filter
(
e
=>
n
===+
e
.
year
&&
r
===+
e
.
month
);
a
.
forEach
(
e
=>
{
e
.
showTodoLabel
=!
1
}),
s
.
forEach
(
e
=>
{
a
[
e
.
day
-
1
].
showTodoLabel
=!
a
[
e
.
day
-
1
].
choosed
}),
this
.
setData
({
"calendar.days"
:
a
,
"calendar.todoLabels"
:
t
})}
clearTodoLabels
(){
const
{
days
:
e
=
[]}
=
this
.
getData
(
"calendar"
),
t
=
[].
concat
(
e
);
t
.
forEach
(
e
=>
{
e
.
showTodoLabel
=!
1
}),
this
.
setData
({
"calendar.days"
:
t
,
"calendar.todoLabels"
:[]})}
getTodoLabels
(
e
){
const
{
todoLabels
:
t
=
[]}
=
this
.
getData
(
"calendar"
);
if
(
e
){
const
{
year
:
a
,
month
:
n
}
=
e
;
return
t
.
filter
(
e
=>+
e
.
year
==+
a
&&+
e
.
month
==+
n
)}
return
t
}
filterTodos
(
e
){
const
t
=
this
.
getData
(
"calendar.todoLabels"
)
||
[],
a
=
e
.
map
(
e
=>
c
.
toTimeStr
(
e
));
return
t
.
filter
(
e
=>!
a
.
includes
(
c
.
toTimeStr
(
e
)))}
showTodoLabels
(
e
,
t
,
a
){
e
.
forEach
(
e
=>
{
if
(
this
.
Component
.
weekMode
)
t
.
forEach
((
n
,
r
)
=>
{
if
(
+
n
.
day
==+
e
.
day
){
const
n
=
t
[
r
];
n
.
hasTodo
=!
0
,
n
.
todoText
=
e
.
todoText
,
a
&&
a
.
length
&&+
a
[
0
].
day
==+
e
.
day
&&
(
n
.
showTodoLabel
=!
0
)}});
else
{
const
n
=
t
[
e
.
day
-
1
];
if
(
!
n
)
return
;
n
.
hasTodo
=!
0
,
n
.
todoText
=
e
.
todoText
,
a
&&
a
.
length
&&+
a
[
0
].
day
==+
e
.
day
&&
(
t
[
a
[
0
].
day
-
1
].
showTodoLabel
=!
0
)}})}}
t
.
default
=
e
=>
new
l
(
e
)},
function
(
e
,
t
,
a
){
"use strict"
;
var
n
,
r
=
(
n
=
a
(
5
))
&&
n
.
__esModule
?
n
:{
default
:
n
},
s
=
a
(
1
),
o
=
function
(
e
){
if
(
e
&&
e
.
__esModule
)
return
e
;
if
(
null
===
e
||
"object"
!=
typeof
e
&&
"function"
!=
typeof
e
)
return
{
default
:
e
};
var
t
=
c
();
if
(
t
&&
t
.
has
(
e
))
return
t
.
get
(
e
);
var
a
=
{},
n
=
Object
.
defineProperty
&&
Object
.
getOwnPropertyDescriptor
;
for
(
var
r
in
e
)
if
(
Object
.
prototype
.
hasOwnProperty
.
call
(
e
,
r
)){
var
s
=
n
?
Object
.
getOwnPropertyDescriptor
(
e
,
r
):
null
;
s
&&
(
s
.
get
||
s
.
set
)?
Object
.
defineProperty
(
a
,
r
,
s
):
a
[
r
]
=
e
[
r
]}
a
.
default
=
e
,
t
&&
t
.
set
(
e
,
a
);
return
a
}(
a
(
9
));
function
c
(){
if
(
"function"
!=
typeof
WeakMap
)
return
null
;
var
e
=
new
WeakMap
;
return
c
=
function
(){
return
e
},
e
}
const
l
=
new
s
.
Slide
,
i
=
new
s
.
Logger
,
d
=
new
s
.
GetDate
;
Component
({
options
:{
styleIsolation
:
"apply-shared"
,
multipleSlots
:
!
0
},
properties
:{
calendarConfig
:{
type
:
Object
,
value
:{}}},
data
:{
handleMap
:{
prev_year
:
"chooseYear"
,
prev_month
:
"chooseMonth"
,
next_month
:
"chooseMonth"
,
next_year
:
"chooseYear"
}},
lifetimes
:{
attached
:
function
(){
this
.
initComp
()},
detached
:
function
(){
s
.
initialTasks
.
flag
=
"finished"
,
s
.
initialTasks
.
tasks
.
length
=
0
}},
methods
:{
initComp
(){
const
e
=
this
.
setDefaultDisableDate
();
this
.
setConfig
(
e
)},
setDefaultDisableDate
(){
const
e
=
this
.
properties
.
calendarConfig
||
{};
return
e
.
disableMode
&&!
e
.
disableMode
.
date
&&
(
e
.
disableMode
.
date
=
d
.
toTimeStr
(
d
.
todayDate
())),
e
},
setConfig
(
e
){
e
.
markToday
&&
"string"
==
typeof
e
.
markToday
&&
(
e
.
highlightToday
=!
0
),
e
.
theme
=
e
.
theme
||
"default"
,
this
.
weekMode
=
e
.
weekMode
,
this
.
setData
({
calendarConfig
:
e
},()
=>
{(
0
,
o
.
default
)(
this
,
e
)})},
chooseDate
(
e
){
const
{
type
:
t
}
=
e
.
currentTarget
.
dataset
;
if
(
!
t
)
return
;
this
[
this
.
data
.
handleMap
[
t
]](
t
)},
chooseYear
(
e
){
const
{
curYear
:
t
,
curMonth
:
a
}
=
this
.
data
.
calendar
;
if
(
!
t
||!
a
)
return
i
.
warn
(
"异常:未获取到当前年月"
);
if
(
this
.
weekMode
)
return
console
.
warn
(
"周视图下不支持点击切换年月"
);
let
n
=+
t
,
r
=+
a
;
"prev_year"
===
e
?
n
-=
1
:
"next_year"
===
e
&&
(
n
+=
1
),
this
.
render
(
t
,
a
,
n
,
r
)},
chooseMonth
(
e
){
const
{
curYear
:
t
,
curMonth
:
a
}
=
this
.
data
.
calendar
;
if
(
!
t
||!
a
)
return
i
.
warn
(
"异常:未获取到当前年月"
);
if
(
this
.
weekMode
)
return
console
.
warn
(
"周视图下不支持点击切换年月"
);
let
n
=+
t
,
r
=+
a
;
"prev_month"
===
e
?(
r
-=
1
,
r
<
1
&&
(
n
-=
1
,
r
=
12
)):
"next_month"
===
e
&&
(
r
+=
1
,
r
>
12
&&
(
n
+=
1
,
r
=
1
)),
this
.
render
(
t
,
a
,
n
,
r
)},
render
(
e
,
t
,
a
,
n
){
o
.
whenChangeDate
.
call
(
this
,{
curYear
:
e
,
curMonth
:
t
,
newYear
:
a
,
newMonth
:
n
}),
this
.
setData
({
"calendar.curYear"
:
a
,
"calendar.curMonth"
:
n
}),
o
.
renderCalendar
.
call
(
this
,
a
,
n
)},
tapDayItem
(
e
){
const
{
idx
:
t
,
date
:
a
=
{}}
=
e
.
currentTarget
.
dataset
,{
day
:
n
,
disable
:
r
}
=
a
;
if
(
r
||!
n
)
return
;
const
s
=
this
.
data
.
calendarConfig
||
this
.
config
||
{},{
multi
:
c
,
chooseAreaMode
:
l
}
=
s
;
c
?
o
.
whenMulitSelect
.
call
(
this
,
t
):
l
?
o
.
whenChooseArea
.
call
(
this
,
t
):
o
.
whenSingleSelect
.
call
(
this
,
t
),
this
.
setData
({
"calendar.noDefault"
:
!
1
})},
doubleClickToToday
(){
if
(
!
this
.
config
.
multi
&&!
this
.
weekMode
)
if
(
void
0
===
this
.
count
?
this
.
count
=
1
:
this
.
count
+=
1
,
this
.
lastClick
){(
new
Date
).
getTime
()
-
this
.
lastClick
<
500
&&
this
.
count
>=
2
&&
o
.
jump
.
call
(
this
),
this
.
count
=
void
0
,
this
.
lastClick
=
void
0
}
else
this
.
lastClick
=
(
new
Date
).
getTime
()},
calendarTouchstart
(
e
){
const
t
=
e
.
touches
[
0
],
a
=
t
.
clientX
,
n
=
t
.
clientY
;
this
.
slideLock
=!
0
,
this
.
setData
({
"gesture.startX"
:
a
,
"gesture.startY"
:
n
})},
handleSwipe
(
e
){
let
t
=
"calendar.leftSwipe"
,
a
=
"next_month"
,
n
=
"next_week"
;
if
(
"right"
===
e
&&
(
t
=
"calendar.rightSwipe"
,
a
=
"prev_month"
,
n
=
"prev_week"
),
this
.
setData
({[
t
]:
1
}),
this
.
currentYM
=
(
0
,
o
.
getCurrentYM
)(),
this
.
weekMode
)
return
this
.
slideLock
=!
1
,
this
.
currentDates
=
(
0
,
o
.
getCalendarDates
)(),
"prev_week"
===
n
?(
0
,
r
.
default
)(
this
).
calculatePrevWeekDays
():
"next_week"
===
n
&&
(
0
,
r
.
default
)(
this
).
calculateNextWeekDays
(),
this
.
onSwipeCalendar
(
n
),
void
this
.
onWeekChange
(
n
);
this
.
chooseMonth
(
a
),
this
.
onSwipeCalendar
(
a
)},
calendarTouchmove
(
e
){
const
{
gesture
:
t
}
=
this
.
data
,{
preventSwipe
:
a
}
=
this
.
properties
.
calendarConfig
;
this
.
slideLock
&&!
a
&&
(
l
.
isLeft
(
t
,
e
.
touches
[
0
])
&&
(
this
.
handleSwipe
(
"left"
),
this
.
slideLock
=!
1
),
l
.
isRight
(
t
,
e
.
touches
[
0
])
&&
(
this
.
handleSwipe
(
"right"
),
this
.
slideLock
=!
1
))},
calendarTouchend
(
e
){
this
.
setData
({
"calendar.leftSwipe"
:
0
,
"calendar.rightSwipe"
:
0
})},
onSwipeCalendar
(
e
){
this
.
triggerEvent
(
"onSwipe"
,{
directionType
:
e
,
currentYM
:
this
.
currentYM
})},
onWeekChange
(
e
){
this
.
triggerEvent
(
"whenChangeWeek"
,{
current
:{
currentYM
:
this
.
currentYM
,
dates
:[...
this
.
currentDates
]},
next
:{
currentYM
:(
0
,
o
.
getCurrentYM
)(),
dates
:(
0
,
o
.
getCalendarDates
)()},
directionType
:
e
}),
this
.
currentDates
=
null
,
this
.
currentYM
=
null
}}})},
function
(
e
,
t
,
a
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
}),
t
.
getCurrentYM
=
v
,
t
.
getSelectedDay
=
L
,
t
.
cancelSelectedDates
=
W
,
t
.
jump
=
A
,
t
.
setTodoLabels
=
O
,
t
.
deleteTodoLabels
=
x
,
t
.
clearTodoLabels
=
Y
,
t
.
getTodoLabels
=
E
,
t
.
disableDay
=
P
,
t
.
enableArea
=
j
,
t
.
enableDays
=
I
,
t
.
setSelectedDays
=
$
,
t
.
getCalendarConfig
=
G
,
t
.
setCalendarConfig
=
U
,
t
.
getCalendarDates
=
F
,
t
.
chooseDateArea
=
R
,
t
.
setDateStyle
=
N
,
t
.
switchView
=
X
,
t
.
default
=
t
.
calculateNextWeekDays
=
t
.
calculatePrevWeekDays
=
t
.
whenMulitSelect
=
t
.
whenChooseArea
=
t
.
whenSingleSelect
=
t
.
renderCalendar
=
t
.
whenChangeDate
=
void
0
;
var
n
=
f
(
a
(
3
)),
r
=
f
(
a
(
5
)),
s
=
f
(
a
(
7
)),
o
=
f
(
a
(
0
)),
c
=
f
(
a
(
6
)),
l
=
f
(
a
(
4
)),
i
=
f
(
a
(
2
)),
d
=
a
(
1
);
function
f
(
e
){
return
e
&&
e
.
__esModule
?
e
:{
default
:
e
}}
let
b
=
{},
h
=
new
d
.
Logger
,
u
=
new
d
.
GetDate
,
y
=
null
;
function
m
(
e
){
return
e
&&
(
b
=
(
0
,
d
.
getComponent
)(
e
)),
b
}
function
D
(
e
,
t
){
return
m
(
t
),
y
=
new
o
.
default
(
b
),
y
.
getData
(
e
)}
function
p
(
e
,
t
=
(()
=>
{})){
return
new
o
.
default
(
b
).
setData
(
e
,
t
)}
const
g
=
{
renderCalendar
(
e
,
t
,
a
){
return
(
0
,
d
.
isComponent
)(
this
)
&&
(
b
=
this
),
new
Promise
((
n
,
r
)
=>
{(
0
,
c
.
default
)(
b
).
renderCalendar
(
e
,
t
,
a
).
then
((
r
=
{})
=>
{
if
(
!
r
.
firstRender
)
return
n
({
year
:
e
,
month
:
t
,
date
:
a
});
Z
((
0
,
d
.
getCurrentPage
)()),
b
.
triggerEvent
(
"afterCalendarRender"
,
b
),
b
.
firstRender
=!
0
,
d
.
initialTasks
.
flag
=
"finished"
,
d
.
initialTasks
.
tasks
.
length
&&
d
.
initialTasks
.
tasks
.
shift
()(),
n
({
year
:
e
,
month
:
t
,
date
:
a
})}).
catch
(
e
=>
{
r
(
e
)})})},
whenChangeDate
({
curYear
:
e
,
curMonth
:
t
,
newYear
:
a
,
newMonth
:
n
}){
b
.
triggerEvent
(
"whenChangeMonth"
,{
current
:{
year
:
e
,
month
:
t
},
next
:{
year
:
a
,
month
:
n
}})},
whenMulitSelect
(
e
){(
0
,
d
.
isComponent
)(
this
)
&&
(
b
=
this
);
const
{
calendar
:
t
=
{}}
=
D
(),{
days
:
a
,
todoLabels
:
n
}
=
t
,
r
=
(
0
,
l
.
default
)(
b
).
getCalendarConfig
();
let
{
selectedDay
:
s
=
[]}
=
t
;
const
o
=
a
[
e
];
if
(
o
){
if
(
o
.
choosed
=!
o
.
choosed
,
o
.
choosed
){
o
.
cancel
=!
1
;
const
{
showLabelAlways
:
e
}
=
D
(
"calendar"
);
e
&&
o
.
showTodoLabel
?
o
.
showTodoLabel
=!
0
:
o
.
showTodoLabel
=!
1
,
r
.
takeoverTap
||
s
.
push
(
o
)}
else
{
o
.
cancel
=!
0
;
const
e
=
u
.
toTimeStr
(
o
);
s
=
s
.
filter
(
t
=>
e
!==
u
.
toTimeStr
(
t
)),
n
&&
n
.
forEach
(
t
=>
{
e
===
u
.
toTimeStr
(
t
)
&&
(
o
.
showTodoLabel
=!
0
)})}
if
(
r
.
takeoverTap
)
return
b
.
triggerEvent
(
"onTapDay"
,
o
);
p
({
"calendar.days"
:
a
,
"calendar.selectedDay"
:
s
}),
g
.
afterTapDay
(
o
,
s
)}},
whenSingleSelect
(
e
){(
0
,
d
.
isComponent
)(
this
)
&&
(
b
=
this
);
const
{
calendar
:
t
=
{}}
=
D
(),{
days
:
a
,
selectedDay
:
n
=
[],
todoLabels
:
r
}
=
t
;
let
o
=
[];
const
c
=
a
[
e
];
if
(
!
c
)
return
;
const
i
=
[...
n
].
pop
()
||
{},{
month
:
f
,
year
:
h
}
=
a
[
0
]
||
{},
u
=
(
0
,
l
.
default
)(
b
).
getCalendarConfig
();
if
(
u
.
takeoverTap
)
return
b
.
triggerEvent
(
"onTapDay"
,
c
);
if
(
g
.
afterTapDay
(
c
),
!
u
.
inverse
&&
i
.
day
===
c
.
day
)
return
;
a
.
forEach
((
e
,
t
)
=>
{
+
e
.
day
==+
i
.
day
&&
(
a
[
t
].
choosed
=!
1
)}),
r
&&
(
o
=
r
.
filter
(
e
=>+
e
.
year
===
h
&&+
e
.
month
===
f
)),(
0
,
s
.
default
)(
b
).
showTodoLabels
(
o
,
a
,
n
);
const
y
=
{
"calendar.days"
:
a
};
i
.
day
!==
c
.
day
?(
i
.
choosed
=!
1
,
c
.
choosed
=!
0
,
t
.
showLabelAlways
&&
c
.
showTodoLabel
||
(
c
.
showTodoLabel
=!
1
),
y
[
"calendar.selectedDay"
]
=
[
c
]):
u
.
inverse
&&
(
c
.
choosed
&&
(
c
.
showTodoLabel
&&
t
.
showLabelAlways
?
c
.
showTodoLabel
=!
0
:
c
.
showTodoLabel
=!
1
),
y
[
"calendar.selectedDay"
]
=
[]),
u
.
weekMode
&&
(
y
[
"calendar.curYear"
]
=
c
.
year
,
y
[
"calendar.curMonth"
]
=
c
.
month
),
p
(
y
)},
gotoSetContinuousDates
:(
e
,
t
)
=>
R
([
""
+
u
.
toTimeStr
(
e
),
""
+
u
.
toTimeStr
(
t
)]),
timeRangeHelper
(
e
,
t
){
const
a
=
(
0
,
d
.
getDateTimeStamp
)(
e
),
n
=
t
[
0
];
let
r
,
s
,
o
=
t
.
length
;
o
>
1
&&
(
r
=
t
[
o
-
1
],
s
=
(
0
,
d
.
getDateTimeStamp
)(
r
));
return
{
endDate
:
r
,
startDate
:
n
,
currentDateTimestamp
:
a
,
endDateTimestamp
:
s
,
startTimestamp
:(
0
,
d
.
getDateTimeStamp
)(
n
)}},
calculateDateRange
(
e
,
t
){
const
{
endDate
:
a
,
startDate
:
n
,
currentDateTimestamp
:
r
,
endDateTimestamp
:
s
,
startTimestamp
:
o
}
=
this
.
timeRangeHelper
(
e
,
t
);
let
c
=
[],
l
=
t
.
length
;
const
i
=
t
.
filter
(
t
=>
u
.
toTimeStr
(
t
)
===
u
.
toTimeStr
(
e
));
if
(
2
===
l
&&
i
.
length
)
return
c
=
[
e
,
e
],
c
;
if
(
r
>=
o
&&
s
&&
r
<=
s
){
c
=
l
/
2
>
t
.
findIndex
(
t
=>
u
.
toTimeStr
(
t
)
===
u
.
toTimeStr
(
e
))?[
e
,
a
]:[
n
,
e
]}
else
r
<
o
?
c
=
[
e
,
a
]:
r
>
o
&&
(
c
=
[
n
,
e
]);
return
c
},
chooseAreaWhenExistArea
:(
e
,
t
)
=>
new
Promise
((
a
,
n
)
=>
{
const
r
=
g
.
calculateDateRange
(
e
,
u
.
sortDates
(
t
));
g
.
gotoSetContinuousDates
(...
r
).
then
(
t
=>
{
a
(
t
),
g
.
afterTapDay
(
e
)}).
catch
(
t
=>
{
n
(
t
),
g
.
afterTapDay
(
e
)})}),
chooseAreaWhenHasOneDate
:(
e
,
t
,
a
)
=>
new
Promise
((
n
,
r
)
=>
{
const
s
=
a
||
t
[
0
];
let
o
=
[
s
,
e
];
const
c
=
(
0
,
d
.
getDateTimeStamp
)(
e
);(
0
,
d
.
getDateTimeStamp
)(
s
)
>
c
&&
(
o
=
[
e
,
s
]),
g
.
gotoSetContinuousDates
(...
o
).
then
(
t
=>
{
n
(
t
),
g
.
afterTapDay
(
e
)}).
catch
(
t
=>
{
r
(
t
),
g
.
afterTapDay
(
e
)})}),
whenChooseArea
(
e
){
return
new
Promise
((
t
,
a
)
=>
{
if
((
0
,
d
.
isComponent
)(
this
)
&&
(
b
=
this
),
b
.
weekMode
)
return
;
const
{
days
:
n
=
[],
selectedDay
:
r
,
lastChoosedDate
:
s
}
=
D
(
"calendar"
),
c
=
n
[
e
];
if
(
c
.
disable
)
return
;
if
((
0
,
l
.
default
)(
b
).
getCalendarConfig
().
takeoverTap
)
return
b
.
triggerEvent
(
"onTapDay"
,
c
);
if
(
r
&&
r
.
length
>
1
)
g
.
chooseAreaWhenExistArea
(
c
,
r
).
then
(
e
=>
{
t
(
e
)}).
catch
(
e
=>
{
a
(
e
)});
else
if
(
s
||
r
&&
1
===
r
.
length
)
g
.
chooseAreaWhenHasOneDate
(
c
,
r
,
s
).
then
(
e
=>
{
t
(
e
)}).
catch
(
e
=>
{
a
(
e
)});
else
{
n
.
forEach
(
e
=>
{
+
e
.
day
==+
c
.
day
?
e
.
choosed
=!
0
:
e
.
choosed
=!
1
});
new
o
.
default
(
b
).
setData
({
"calendar.days"
:[...
n
],
"calendar.lastChoosedDate"
:
c
})}})},
afterTapDay
(
e
,
t
){
const
a
=
(
0
,
l
.
default
)(
b
).
getCalendarConfig
(),{
multi
:
n
}
=
a
;
n
?
b
.
triggerEvent
(
"afterTapDay"
,{
currentSelected
:
e
,
selectedDates
:
t
}):
b
.
triggerEvent
(
"afterTapDay"
,
e
)},
jumpToToday
:()
=>
new
Promise
((
e
,
t
)
=>
{
const
{
year
:
a
,
month
:
n
,
date
:
r
}
=
u
.
todayDate
(),
s
=
u
.
todayTimestamp
(),
o
=
(
0
,
l
.
default
)(
b
).
getCalendarConfig
();
p
({
"calendar.curYear"
:
a
,
"calendar.curMonth"
:
n
,
"calendar.selectedDay"
:[{
year
:
a
,
day
:
r
,
month
:
n
,
choosed
:
!
0
,
lunar
:
o
.
showLunar
?
i
.
default
.
solar2lunar
(
a
,
n
,
r
):
null
}],
"calendar.todayTimestamp"
:
s
}),
g
.
renderCalendar
(
a
,
n
,
r
).
then
(()
=>
{
e
({
year
:
a
,
month
:
n
,
date
:
r
})}).
catch
(()
=>
{
t
(
"jump failed"
)})})},
T
=
g
.
whenChangeDate
;
t
.
whenChangeDate
=
T
;
const
w
=
g
.
renderCalendar
;
t
.
renderCalendar
=
w
;
const
C
=
g
.
whenSingleSelect
;
t
.
whenSingleSelect
=
C
;
const
M
=
g
.
whenChooseArea
;
t
.
whenChooseArea
=
M
;
const
_
=
g
.
whenMulitSelect
;
t
.
whenMulitSelect
=
_
;
const
S
=
g
.
calculatePrevWeekDays
;
t
.
calculatePrevWeekDays
=
S
;
const
k
=
g
.
calculateNextWeekDays
;
function
v
(
e
){
return
m
(
e
),{
year
:
D
(
"calendar.curYear"
),
month
:
D
(
"calendar.curMonth"
)}}
function
L
(
e
=
{},
t
){
m
(
t
);
const
a
=
G
(),
n
=
D
(
"calendar.selectedDay"
)
||
[];
if
(
e
.
lunar
&&!
a
.
showLunar
){
return
u
.
convertLunar
(
n
)}
return
n
}
function
W
(
e
,
t
){
m
(
t
);
const
{
days
:
a
=
[],
selectedDay
:
n
=
[]}
=
D
(
"calendar"
)
||
{};
if
(
e
&&
e
.
length
){
const
t
=
e
.
map
(
e
=>
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
),
r
=
n
.
filter
(
e
=>!
t
.
includes
(
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
));
a
.
forEach
(
e
=>
{
t
.
includes
(
`
${
+
e
.
year
}
-
${
+
e
.
month
}
-
${
+
e
.
day
}
`
)
&&
(
e
.
choosed
=!
1
)}),
p
({
"calendar.days"
:
a
,
"calendar.selectedDay"
:
r
})}
else
a
.
forEach
(
e
=>
{
e
.
choosed
=!
1
}),
p
({
"calendar.days"
:
a
,
"calendar.selectedDay"
:[]})}
function
A
(
e
,
t
,
a
,
n
){
return
new
Promise
((
s
,
o
)
=>
{
m
(
n
);
const
{
selectedDay
:
c
=
[]}
=
D
(
"calendar"
)
||
{},{
weekMode
:
l
}
=
D
(
"calendarConfig"
)
||
{},{
year
:
i
,
month
:
f
,
day
:
y
}
=
c
[
0
]
||
{};
if
(
+
i
!=+
e
||+
f
!=+
t
||+
y
!=+
a
){
if
(
l
){
let
n
=!
1
;
if
(
!
e
||!
t
||!
a
){
const
r
=
u
.
todayDate
();
e
=
r
.
year
,
t
=
r
.
month
,
a
=
r
.
date
,
n
=!
0
}
return
function
({
year
:
e
,
month
:
t
,
day
:
a
},
n
){
return
new
Promise
((
s
,
o
)
=>
{(
0
,
r
.
default
)(
b
).
jump
({
year
:
+
e
,
month
:
+
t
,
day
:
+
a
},
n
).
then
(
e
=>
{
s
(
e
)}).
catch
(
e
=>
{
o
(
e
)})})}({
year
:
e
,
month
:
t
,
day
:
a
},
n
).
then
(
e
=>
{
s
(
e
)}).
catch
(
e
=>
{
o
(
e
)}),
void
Z
((
0
,
d
.
getCurrentPage
)())}
e
&&
t
?
function
({
year
:
e
,
month
:
t
,
day
:
a
}){
return
new
Promise
((
n
,
r
)
=>
{
if
(
"number"
!=
typeof
+
e
||
"number"
!=
typeof
+
t
)
return
h
.
warn
(
"jump 函数年月日参数必须为数字"
);
const
s
=
u
.
todayTimestamp
();
p
({
"calendar.curYear"
:
+
e
,
"calendar.curMonth"
:
+
t
,
"calendar.todayTimestamp"
:
s
},()
=>
{
g
.
renderCalendar
(
+
e
,
+
t
,
+
a
).
then
(
e
=>
{
n
(
e
)}).
catch
(
e
=>
{
r
(
e
)})})})}({
year
:
e
,
month
:
t
,
day
:
a
}).
then
(
e
=>
{
s
(
e
)}).
catch
(
e
=>
{
o
(
e
)}):
g
.
jumpToToday
().
then
(
e
=>
{
s
(
e
)}).
catch
(
e
=>
{
o
(
e
)})}})}
function
O
(
e
,
t
){
m
(
t
),(
0
,
s
.
default
)(
b
).
setTodoLabels
(
e
)}
function
x
(
e
,
t
){
m
(
t
),(
0
,
s
.
default
)(
b
).
deleteTodoLabels
(
e
)}
function
Y
(
e
){
m
(
e
),(
0
,
s
.
default
)(
b
).
clearTodoLabels
()}
function
E
(
e
=
{},
t
){
m
(
t
);
const
a
=
G
(),
n
=
(
0
,
s
.
default
)(
b
).
getTodoLabels
()
||
[];
if
(
e
.
lunar
&&!
a
.
showLunar
){
return
u
.
convertLunar
(
n
)}
return
n
}
function
P
(
e
=
[],
t
){
m
(
t
),(
0
,
n
.
default
)(
b
).
disableDays
(
e
)}
function
j
(
e
=
[],
t
){
m
(
t
),(
0
,
n
.
default
)(
b
).
enableArea
(
e
)}
function
I
(
e
=
[],
t
){
m
(
t
),(
0
,
n
.
default
)(
b
).
enableDays
(
e
)}
function
$
(
e
,
t
){
m
(
t
),(
0
,
n
.
default
)(
b
).
setSelectedDays
(
e
)}
function
G
(
e
){
return
m
(
e
),(
0
,
l
.
default
)(
b
).
getCalendarConfig
()}
function
U
(
e
,
t
){
if
(
m
(
t
),
!
e
||
0
===
Object
.
keys
(
e
).
length
)
return
h
.
warn
(
"setCalendarConfig 参数必须为非空对象"
);
const
a
=
G
();
return
new
Promise
((
t
,
n
)
=>
{(
0
,
l
.
default
)(
b
).
setCalendarConfig
(
e
).
then
(
n
=>
{
t
(
n
);
const
{
date
:
r
,
type
:
s
}
=
a
.
disableMode
||
{},{
_date
:
o
,
_type
:
c
}
=
e
.
disableMode
||
{};
if
(
s
!==
c
||
r
!==
o
){
const
{
year
:
e
,
month
:
t
}
=
v
();
A
(
e
,
t
)}}).
catch
(
e
=>
{
n
(
e
)})})}
function
F
(
e
=
{},
t
){
m
(
t
);
const
a
=
G
(),
n
=
D
(
"calendar.days"
,
t
)
||
[];
if
(
e
.
lunar
&&!
a
.
showLunar
){
return
u
.
convertLunar
(
n
)}
return
n
}
function
R
(
e
,
t
){
return
m
(
t
),(
0
,
n
.
default
)(
b
).
chooseArea
(
e
)}
function
N
(
e
,
t
){
e
&&
(
m
(
t
),(
0
,
n
.
default
)(
b
).
setDateStyle
(
e
))}
function
X
(...
e
){
return
new
Promise
((
t
,
a
)
=>
{
const
n
=
e
[
0
];
if
(
!
e
[
1
])
return
(
0
,
r
.
default
)(
b
).
switchWeek
(
n
).
then
(
t
).
catch
(
a
);
"string"
==
typeof
e
[
1
]?(
m
(
e
[
1
]),(
0
,
r
.
default
)(
b
).
switchWeek
(
n
,
e
[
2
]).
then
(
t
).
catch
(
a
)):
"object"
==
typeof
e
[
1
]
&&
(
"string"
==
typeof
e
[
2
]
&&
m
(
e
[
1
]),(
0
,
r
.
default
)(
b
).
switchWeek
(
n
,
e
[
1
]).
then
(
t
).
catch
(
a
))})}
function
Z
(
e
){
e
.
calendar
=
{
jump
:
A
,
switchView
:
X
,
disableDay
:
P
,
enableArea
:
j
,
enableDays
:
I
,
chooseDateArea
:
R
,
getCurrentYM
:
v
,
getSelectedDay
:
L
,
cancelSelectedDates
:
W
,
setDateStyle
:
N
,
setTodoLabels
:
O
,
getTodoLabels
:
E
,
deleteTodoLabels
:
x
,
clearTodoLabels
:
Y
,
setSelectedDays
:
$
,
getCalendarConfig
:
G
,
setCalendarConfig
:
U
,
getCalendarDates
:
F
}}
function
B
(
e
,
t
){
d
.
initialTasks
.
flag
=
"process"
,
b
=
e
,
b
.
config
=
t
,
function
(
e
){
let
t
=
[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
];
"Mon"
===
e
&&
(
t
=
[
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"日"
]),
p
({
"calendar.weeksCh"
:
t
})}(
t
.
firstDayOfWeek
),
function
(
e
){
if
(
b
.
firstRenderWeekMode
=!
0
,
e
&&
"string"
==
typeof
e
){
const
t
=
e
.
split
(
"-"
);
if
(
t
.
length
<
3
)
return
h
.
warn
(
"配置 jumpTo 格式应为: 2018-4-2 或 2018-04-02"
);
A
(
+
t
[
0
],
+
t
[
1
],
+
t
[
2
])}
else
e
||
p
({
"config.noDefault"
:
!
0
}),
A
()}(
t
.
defaultDay
),
h
.
tips
(
"使用中若遇问题请反馈至 https://github.com/treadpit/wx_calendar/issues ✍️"
)}
t
.
calculateNextWeekDays
=
k
;
t
.
default
=
(
e
,
t
=
{})
=>
{
if
(
"process"
===
d
.
initialTasks
.
flag
)
return
d
.
initialTasks
.
tasks
.
push
((
function
(){
B
(
e
,
t
)}));
B
(
e
,
t
)}}]);
\ No newline at end of file
增值产品-小程序及app/nyx-master/component/calendar/index.json
0 → 100644
查看文件 @
c866a4d1
{
{
"component"
:
true
}
\ No newline at end of file
增值产品-小程序及app/nyx-master/component/calendar/index.wxml
0 → 100644
查看文件 @
c866a4d1
<view class="flex b tb ac" wx:if="{{calendar}}">
<view class="flex b tb ac" wx:if="{{calendar}}">
<view class="calendar b tb">
<!-- 头部操作栏 -->
<view wx:if="{{!calendarConfig.hideHeadOnWeekMode}}" class="handle {{calendarConfig.theme}}_handle-color fs28 b lr ac pc">
<view class="prev fs36" wx:if="{{calendarConfig.showHandlerOnWeekMode || !calendarConfig.weekMode}}">
<text class="prev-handle iconfont icon-doubleleft" bindtap="chooseDate" data-type="prev_year"></text>
<text class="prev-handle iconfont icon-left" bindtap="chooseDate" data-type="prev_month"></text>
</view>
<view class="flex date-in-handle b lr cc" bindtap="doubleClickToToday">{{calendar.curYear || "--"}} 年 {{calendar.curMonth || "--"}} 月</view>
<view class="next fs36" wx:if="{{calendarConfig.showHandlerOnWeekMode || !calendarConfig.weekMode}}">
<text class="next-handle iconfont icon-right" bindtap="chooseDate" data-type="next_month"></text>
<text class="next-handle iconfont icon-doubleright" bindtap="chooseDate" data-type="next_year"></text>
</view>
</view>
<!-- 星期栏 -->
<view class="weeks b lr ac {{calendarConfig.theme}}_week-color">
<view class="week fs28" wx:for="{{calendar.weeksCh}}" wx:key="index" data-idx="{{index}}">{{item}}</view>
</view>
<!-- 日历面板主体 -->
<view class="b lr wrap"
bindtouchstart="calendarTouchstart"
catchtouchmove="calendarTouchmove"
catchtouchend="calendarTouchend">
<!-- 上月日期格子 -->
<view
class="grid b ac pc {{calendarConfig.theme}}_prev-month-date"
wx:if="{{calendar.empytGrids}}"
wx:for="{{calendar.empytGrids}}"
wx:key="index"
data-idx="{{index}}">
<view class="date-wrap b cc-top">
<view class="date">
{{item.day}}
<view
wx:if="{{calendarConfig.showLunar && item.lunar}}"
class="date-desc date-desc-bottom">
{{item.lunar.Term || item.lunar.IDayCn}}
</view>
</view>
</view>
</view>
<!-- 本月日期格子 -->
<view
wx:for="{{calendar.days}}"
wx:key="index"
data-idx="{{index}}"
data-date="{{item}}"
bindtap="tapDayItem"
class="grid {{item.class ? item.class : ''}} {{calendarConfig.theme}}_normal-date b ac pc">
<view
class="date-wrap b cc-top {{(item.week === 0 || item.week === 6) ? calendarConfig.theme + '_weekend-color' : ''}}">
<view class="date b ac pc {{item.class ? item.class : ''}} {{calendarConfig.chooseAreaMode ? 'date-area-mode' : ''}} {{calendar.todoLabelCircle && item.showTodoLabel && !item.choosed ? calendarConfig.theme + '_todo-circle todo-circle' : '' }} {{item.isToday ? calendarConfig.theme + '_today' : ''}} {{item.choosed ? calendarConfig.theme + '_choosed' : ''}} {{item.disable ? calendarConfig.theme + '_date-disable' : ''}}">
{{calendarConfig.markToday && item.isToday ? calendarConfig.markToday : item.day}}
<view
wx:if="{{(calendarConfig.showLunar && item.lunar && !item.showTodoLabel) || (item.showTodoLabel && calendar.todoLabelPos !== 'bottom')}}"
class="date-desc {{calendarConfig.theme}}_date-desc date-desc-bottom {{(item.choosed || item.isToday) ? 'date-desc-bottom-always' : ''}} {{item.disable ? calendarConfig.theme + '_date-desc-disable' : ''}}">
{{item.lunar.Term || item.lunar.IDayCn}}
</view>
<view
wx:if="{{item.showTodoLabel && !calendar.todoLabelCircle}}"
class="{{item.todoText ? 'date-desc' : calendarConfig.theme + '_todo-dot todo-dot'}} {{calendarConfig.showLunar ? calendarConfig.theme + '_date-desc-lunar' : ''}} {{calendar.todoLabelPos === 'bottom' ? 'date-desc-bottom todo-dot-bottom' : 'date-desc-top todo-dot-top'}} {{calendar.showLabelAlways && item.choosed && calendar.todoLabelPos === 'bottom' ? 'date-desc-bottom-always todo-dot-bottom-always' : ''}} {{calendar.showLabelAlways && item.choosed && calendar.todoLabelPos === 'top' ? 'date-desc-top-always todo-dot-top-always' : ''}}"
style="background-color: {{item.todoText ? '' : item.color || calendar.todoLabelColor}}; color: {{item.color}}">
<text style="writing-mode: vertical-lr;text-align:left">{{item.todoText}}</text>
</view>
</view>
</view>
</view>
<!-- 下月日期格子 -->
<view
class="grid b ac pc {{calendarConfig.theme}}_next-month-date"
wx:for="{{calendar.lastEmptyGrids}}"
wx:key="index"
data-idx="{{index}}">
<view class="date-wrap b cc-top">
<view class="date">
{{item.day}}
<view
wx:if="{{calendarConfig.showLunar && item.lunar}}"
class="date-desc date-desc-bottom">
{{item.lunar.Term || item.lunar.IDayCn}}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
\ No newline at end of file
增值产品-小程序及app/nyx-master/component/calendar/index.wxss
0 → 100644
查看文件 @
c866a4d1
@import './theme/iconfont.wxss';
@import './theme/iconfont.wxss';
@import './theme/theme-default.wxss';
@import './theme/theme-elegant.wxss';
.b {
display: flex;
}
.lr {
flex-direction: row;
}
.tb {
flex-direction: column;
}
.pc {
justify-content: center;
}
.ac {
align-items: center;
}
.cc {
align-items: center;
justify-content: center;
}
.cc-top {
justify-content: center;
}
.wrap {
flex-wrap: wrap;
}
.flex {
flex-grow: 1;
}
.bg {
background-image: linear-gradient(to bottom, #faefe7, #ffcbd7);
overflow: hidden;
}
.white-color {
color: #fff;
}
.fs24 {
font-size: 24rpx;
}
.fs28 {
font-size: 28rpx;
}
.fs32 {
font-size: 32rpx;
}
.fs36 {
font-size: 36rpx;
}
.calendar {
width: 100%;
box-sizing: border-box;
}
/* 日历操作栏 */
.handle {
height: 80rpx;
}
.prev-handle,
.next-handle {
padding: 20rpx;
}
.date-in-handle {
height: 80rpx;
}
/* 星期栏 */
.weeks {
height: 50rpx;
line-height: 50rpx;
opacity: 0.5;
}
.week {
text-align: center;
}
.grid,
.week {
width: 14.286014285714286%;
}
.date-wrap {
width: 100%;
height: 185rpx;
position: relative;
left: 0;
top: 0;
}
.date {
position: relative;
left: 0;
top: 0;
width: 55rpx;
height: 55rpx;
text-align: center;
line-height: 55rpx;
font-size: 50rpx;
font-weight: 200;
border-radius: 50%;
transition: all 0.3s;
animation-name: choosed;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: 1;
}
.date-area-mode {
width: 100%;
border-radius: 0;
}
.date-desc {
width: 280%;
height: 130rpx;
font-size: 26rpx;
line-height: 32rpx;
position: absolute;
left: 50%;
transform: translate(-50%, 95%);
overflow: hidden;
word-break: break-all;
text-overflow: ellipsis;
white-space: nowrap;
-webkit-line-clamp: 1;
text-align: center;
}
@keyframes choosed {
from {
transform: scale(1);
}
50% {
transform: scale(0.9);
}
to {
transform: scale(1);
}
}
/* 日期圆圈标记 */
.todo-circle {
border-width: 1rpx;
border-style: solid;
box-sizing: border-box;
}
/* 待办点标记相关样式 */
.todo-dot {
width: 10rpx;
height: 10rpx;
border-radius: 50%;
position: absolute;
left: 50%;
transform: translateX(-50%);
}
.todo-dot-top {
top: 3rpx;
}
.todo-dot.todo-dot-top-always {
top: -8rpx;
}
.todo-dot.todo-dot-bottom {
bottom: 0;
}
.todo-dot.todo-dot-bottom-always {
bottom: -10rpx;
}
/* 日期描述文字(待办文字/农历)相关样式 */
.date-desc.date-desc-top {
top: -6rpx;
}
.date-desc.date-desc-top-always {
top: -20rpx;
}
.date-desc.date-desc-bottom {
bottom: -14rpx;
}
.todo-circle .date-desc.date-desc-bottom {
bottom: -30rpx;
}
.date-desc.date-desc-bottom-always {
bottom: -28rpx;
}
增值产品-小程序及app/nyx-master/component/calendar/theme/iconfont.wxss
0 → 100644
查看文件 @
c866a4d1
@font-face {
@font-face {
font-family: 'iconfont';
src: url(data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTYda3jUAAAfEAAAAHEdERUYAKQANAAAHpAAAAB5PUy8yPllJ4AAAAVgAAABWY21hcAAP65kAAAHIAAABQmdhc3D//wADAAAHnAAAAAhnbHlmLotR3AAAAxwAAAGkaGVhZBTU+ykAAADcAAAANmhoZWEHKwOFAAABFAAAACRobXR4DasB4gAAAbAAAAAWbG9jYQC0AR4AAAMMAAAAEG1heHABEwAyAAABOAAAACBuYW1lKeYRVQAABMAAAAKIcG9zdEoLnOYAAAdIAAAAUgABAAAAAQAAiPM8al8PPPUACwQAAAAAANjbW5YAAAAA2NtblgCzAAQDTQL8AAAACAACAAAAAAAAAAEAAAOA/4AAXAQAAAAAAANNAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAAHACYAAgAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAQQAAZAABQAAAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA5+vn7gOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAAAAAAEAAAABAABLgD4ALQAswAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAA5+7//wAA5+v//xgYAAEAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgBMAI4A0gABAS4ABAMKAvwAEgAACQEmBh0BFBcJAQYdARQWNwE2NAL+/j0ECQYBaP6YBgkEAcMMAZkBYAMEBU0IBf7n/ucFCE0FBAMBYAoeAAAAAQD4AAQC1AL8ABIAAAE1NCYHAQYUFwEWNj0BNCcJATYC1AkE/j0MDAHDBAkG/pgBaAYCpk0FBAP+oAoeCv6gAwQFTQgFARkBGQUAAAIAtAAgA00C4AASACUAAAkBNiYrASIHAwYUFwEWOwEyNicTATYmKwEiBwMGFBcBFjsBMjYnAREBCQMEBU0IBf8HBwD/BQhNBQQDJwEJAwQFTQgF/wcHAP8FCE0FBAMBgAFTBAkG/roJFgn+ugYJBAFTAVMECQb+ugkWCf66BgkEAAAAAAIAswAgA0wC4AASACUAAAEDJisBIgYXCQEGFjsBMjcBNjQlAyYrASIGFwkBBhY7ATI3ATY0AhX/BQhNBQQDAQn+9wMEBU0IBQD/BwEp/wUITQUEAwEJ/vcDBAVNCAUA/wcBlAFGBgkE/q3+rQQJBgFGCRYJAUYGCQT+rf6tBAkGAUYJFgAAAAAAABIA3gABAAAAAAAAABUALAABAAAAAAABAAgAVAABAAAAAAACAAcAbQABAAAAAAADAAgAhwABAAAAAAAEAAgAogABAAAAAAAFAAsAwwABAAAAAAAGAAgA4QABAAAAAAAKACsBQgABAAAAAAALABMBlgADAAEECQAAACoAAAADAAEECQABABAAQgADAAEECQACAA4AXQADAAEECQADABAAdQADAAEECQAEABAAkAADAAEECQAFABYAqwADAAEECQAGABAAzwADAAEECQAKAFYA6gADAAEECQALACYBbgAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgAACkNyZWF0ZWQgYnkgaWNvbmZvbnQKAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAABHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuAABoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAABodHRwOi8vZm9udGVsbG8uY29tAAACAAAAAAAAAAoAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAcAAAABAAIBAgEDAQQBBQVyaWdodARsZWZ0CmRvdWJsZWxlZnQLZG91YmxlcmlnaHQAAAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQADAAYAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2NtblgAAAADY21uW) format('truetype');
font-weight: normal;
font-style: normal;
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
}
.icon-right::before {
content: "\e7eb";
}
.icon-left::before {
content: "\e7ec";
}
.icon-doubleleft::before {
content: "\e7ed";
}
.icon-doubleright::before {
content: "\e7ee";
}
增值产品-小程序及app/nyx-master/component/calendar/theme/theme-default.wxss
0 → 100644
查看文件 @
c866a4d1
/* 日历主要颜色相关样式 */
.default_color,
.default_weekend-color,
.default_handle-color,
.default_week-color {
color: #ff629a;
}
.default_today {
color: #fff;
background-color: #874fb4;
}
.default_choosed {
color: #fff;
background-color: #ff629a;
}
.default_date-disable {
color: #c7c7c7;
}
.default_prev-month-date,
.default_next-month-date {
color: #e2e2e2;
}
.default_normal-date {
color: #88d2ac;
}
.default_todo-circle {
border-color: #88d2ac;
}
.default_todo-dot {
background-color: #e54d42;
}
.default_date-desc {
color: #c2c2c2;
}
.default_date-desc-lunar {
color: #e54d42;
}
.default_date-desc-disable {
color: #e2e2e2;
}
增值产品-小程序及app/nyx-master/component/calendar/theme/theme-elegant.wxss
0 → 100644
查看文件 @
c866a4d1
.elegant_color,
.elegant_color,
.elegant_weekend-color,
.elegant_handle-color,
.elegant_week-color {
color: #333;
}
.elegant_today {
color: #000;
background-color: #e1e7f5;
}
.elegant_choosed {
color: #000;
background-color: #e2e2e2;
}
.elegant_date-disable {
color: #c7c7c7;
}
.elegant_prev-month-date,
.elegant_next-month-date {
color: #e2e2e2;
}
.elegant_normal-date {
color: #333;
}
.elegant_todo-circle {
border-color: #161035;
}
.elegant_todo-dot {
background-color: #161035;
}
.elegant_date-desc {
color: #c2c2c2;
}
.elegant_date-desc-lunar {
color: #161035;
}
.elegant_date-desc-disable {
color: #e2e2e2;
}
增值产品-小程序及app/nyx-master/pages/my/my-orders/my-orders.wxss
0 → 100644
查看文件 @
c866a4d1
.page{
.page{
height: 100vh;
background: #F2F2F2;
}
.placeholder{
margin: 0px;
text-align: center;
vertical-align: middle;
line-height: 2.3em;
color: rgba(0,0,0);
}
/* justify-content: center;(水平居中) align-items: center;(垂直居中) */
.justify{
justify-content: center;
}
.align{
align-items: center;
}
.border{
border: 3rpx solid #ccc;
border-radius: 0rpx;
padding: 10rpx;
}
.text{
font-size: 34rpx;
}
.selected{
color: #ff0000;
}
/* coupon css */
.coupon-list{width: 710rpx; margin: 0 auto}
.coupon-list .item{width: 710rpx; height: 340rpx; margin-bottom: 20rpx;}
.coupon-list .item .float-li{width: 710rpx; height: 100%; border-right: 2rpx dashed rgba(255,255,255,.3)}
.coupon-list .item .float-li-right{width: 220rpx; padding-right: 20rpx; height:100%; color: #fff}
.coupon-left{position: relative}
.coupon-left .t{position: absolute; color: #fff}
.coupon-left .t1{width: 710rpx; display: flex; margin-left: 20rpx; margin-top: 20rpx; height: 160rpx; color: #fff}
.coupon-left .t1-left{width: 160rpx; font-size: 70rpx; font-weight: bold}
.coupon-left .t1-right{width: 520rpx; font-size: 50rpx; }
/* .coupon-left .t2{left: 20rpx; top:160rpx} */
.coupon-left .t2{width: 710rpx; display: flex; margin-left: 20rpx; margin-top: 0rpx; height: 50rpx; color: #fff}
.coupon-left .t2-left{width: 520rpx; }
.coupon-left .t2-right{width: 160rpx;}
.coupon-left .t3{width: 710rpx; display: flex; margin-left: 20rpx; margin-top: 0rpx; height: 50rpx; color: #fff}
.coupon-left .t3-left{width: 520rpx; }
.coupon-left .t3-right{width: 160rpx;}
.coupon-left .t3-right image{
width: 40rpx;
height: 40rpx;
font-size: 0;
}
.coupon-left .t4{width: 710rpx; display: flex; margin-left: 20rpx; margin-top: 0rpx; height: 50rpx; color: #fff}
.coupon-left .t4-left{width: 520rpx; }
.coupon-left .t4-right{width: 160rpx;}
.coupon-left .t4-right image{
width: 40rpx;
height: 40rpx;
font-size: 0;
}
.coupon-right .t{text-align: center}
.coupon-right .t1{font-size: 40rpx; padding: 30rpx 0 10rpx 0;}
.coupon-right .t3{padding-top:20rpx}
.coupon-right .t3 text{background: #fff; color: #333; border-radius: 7rpx; padding: 10rpx 40rpx}
.note{background: #faeab7}
.stamp{width:700rpx; height: 250rpx;margin-bottom:50rpx;position:relative;overflow:hidden}
.stamp i{position: absolute;left: 20%;top: 90rpx;height: 500rpx;width: 700rpx;background-color: rgba(255,255,255,.15);transform: rotate(-30deg);
}
.stamp01{background:radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 30rpx, #F39B00 30rpx);background-size:10rpx 10rpx;background-position:9rpx 3rpx; background: #FFFFFF}
/* 失效样式 */
.stamp06{background:radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 30rpx, #e2e2e2 30rpx);background-size:10rpx 10rpx;background-position:9rpx 3rpx; background: #acacac
}
/* start - 小程序自定义弹框css */
/* 遮罩层 */
.mask{
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
background: #000;
z-index: 9000;
opacity: 0.5;
}
/* 弹出层 */
.modalDlg{
width: 80%;
height: 540rpx;
position: fixed;
top: 240rpx;
left: 0;
right: 0;
z-index: 9999;
margin: 0 auto;
background-color: #fff;
border-radius:5px;
display: flex;
flex-direction: column;
align-items: center;
}
/* 弹出层里面的图片 */
/* 弹出层里面的文字 */
.title{
display: flex;
font-size: 38rpx;
color: #cccccc;
width: 80%;
height: 80rpx;
padding: 20rpx;
align-items: center;
justify-content: center;
}
.title-close{
display: flex;
height: 80rpx;
position: absolute;
align-items: center;
text-align: right;
font-size: 38rpx;
color: #cccccc;
padding: 20rpx;
right: 20rpx;
}
.title-right image{
width: 50rpx;
height: 50rpx;
font-size: 0;
}
/* 图片+文字 */
.weui-width{
width: 80%;
}
.placeholder-modal{
margin: 0px;
text-align: center;
vertical-align: middle;
line-height: 2.3em;
background-color: #fff;
}
/* 好友助力积分列表 */
.list-point{
width: 100%;
height: 2rpx;
background: #ccc;
font-size: 32rpx;
display: flex;
flex-direction: column;
/* align-items: center; */
left: 40rpx;
}
.list-point .text{
margin-left: 160rpx;
}
.title-right image{
width: 50rpx;
height: 50rpx;
font-size: 0;
}
/* barcode券码查看 */
.list-barcode{
width: 100%;
height: 2rpx;
background: #ccc;
font-size: 32rpx;
display: flex;
flex-direction: column;
align-items: center;
}
.list-barcode .text{
align-items: center;
margin-left: 20rpx;
}
.list-barcode image{
overflow: visible;
width: 300rpx;
height: 300rpx;
}
/* 弹出层里面的按钮 */
.ok{
width: 100%;
height: 2rpx;
background: #ccc;
text-align: center;
font-size: 38rpx;
color: #666666;
}
/* end - 小程序自定义弹框css */
/* start 加载更多 */
.weui-loading {
margin: 0 5px;
width: 20px;
height: 20px;
display: inline-block;
vertical-align: middle;
-webkit-animation: weuiLoading 1s steps(12, end) infinite;
animation: weuiLoading 1s steps(12, end) infinite;
background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
background-size: 100%;
}
.weui-loadmore {
width: 65%;
margin: 1.5em auto;
line-height: 1.6em;
font-size: 14px;
text-align: center;
}
.weui-loadmore__tips {
display: inline-block;
vertical-align: middle;
}
/* end 加载更多*/
.note-info{
width: 100%;
/* position: fixed; */
border-radius: 5rpx;
float: left;
margin-top: 20rpx;
margin-bottom: 20rpx;
}
.note-title{
width : 100%;
display: flex;
font-size: 32rpx;
margin-left: 5%;
margin-right: 5%;
margin-top: 0;
text-align:justify;
vertical-align: center;
}
.note-title .title-left{width: 60%; }
.note-title .title-right{width: 40%;}
.note-title .title-right image{
width: 60rpx;
height: 60rpx;
font-size: 0;
}
.note-price{
color: #FF6600;
font-size: 16px;
margin-left: 5%;
margin-right: 5%;
margin-top: 0;
text-align:justify;
}
.note-content{
font-size: 16px;
/* 后期用于 '展开' 功能 */
/* overflow : hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical; */
margin-left: 5%;
margin-right: 4%;
margin-top: 20rpx;
text-align:justify;
}
.note-row{
width: 100%;
display: flex;
flex-direction: row;
margin-bottom: 30rpx;
margin-top: 30rpx;
}
.note-column{
display: flex;
flex-direction: column;
margin-left: 30rpx;
}
.writer-image{
width: 120rpx;
height: 120rpx;
margin-left: 10%;
}
\ No newline at end of file
增值产品-小程序及app/nyx-master/pages/schedule/schedule.js
0 → 100644
查看文件 @
c866a4d1
// pages/schedule/schedule.js
// pages/schedule/schedule.js
var
config
=
wx
.
getStorageSync
(
"config"
);
var
app
=
getApp
();
var
log
=
require
(
'./../../utils/log.js'
)
Page
({
/**
* 页面的初始数据
*/
data
:
{
/* 用于判断是否已经登陆 */
nyxCode
:
""
,
authStatus
:
"0"
,
userInfo
:
{},
bGetUserInfo
:
false
,
bUpdateUserData
:
false
,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad
:
function
(
options
)
{
var
_this
=
this
//初始化数据
if
(
wx
.
getStorageSync
(
'nyxCode'
))
{
_this
.
setData
({
nyxCode
:
wx
.
getStorageSync
(
'nyxCode'
),
userInfo
:
wx
.
getStorageSync
(
'userInfo'
),
authStatus
:
wx
.
getStorageSync
(
'authStatus'
),
})
}
wx
.
setNavigationBarTitle
({
title
:
'活动日程'
,
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady
:
function
()
{
},
/**
* 生命周期函数--监听页面显示
*/
onShow
:
function
()
{
var
_this
=
this
//初始化数据
if
(
wx
.
getStorageSync
(
'nyxCode'
))
{
_this
.
setData
({
nyxCode
:
wx
.
getStorageSync
(
'nyxCode'
),
userInfo
:
wx
.
getStorageSync
(
'userInfo'
),
authStatus
:
wx
.
getStorageSync
(
'authStatus'
),
matchSeason
:
wx
.
getStorageSync
(
'matchSeason'
),
})
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide
:
function
()
{
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload
:
function
()
{
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh
:
function
()
{
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom
:
function
()
{
},
/**
* 用户点击右上角分享
*/
onShareAppMessage
:
function
()
{
},
onToUser
:
function
(
e
){
wx
.
navigateTo
({
url
:
'/pages/my/user/user'
,
})
},
/**
* 日历初次渲染完成后触发事件,如设置事件标记
*/
afterCalendarRender
(
e
)
{
console
.
log
(
'afterCalendarRender'
,
e
);
},
afterTapDay1
:
function
(
options
){
const
selectedDay
=
this
.
calendar
.
getSelectedDay
(
options
);
console
.
log
(
"===="
+
selectedDay
);
},
afterTapDay
(
e
)
{
const
options
=
{
lunar
:
false
// 在配置showLunar为false, 但需返回农历信息时使用该选项
}
const
todoLabels
=
this
.
calendar
.
getTodoLabels
(
options
);
console
.
log
(
"todoLabels"
,
todoLabels
);
const
selectedDay
=
this
.
calendar
.
getSelectedDay
(
options
);
console
.
log
(
"selectedDay"
,
selectedDay
);
console
.
log
(
'afterTapDay'
,
e
.
detail
);
// => { currentSelect: {}, allSelectedDays: [] }
this
.
calendar
.
setTodoLabels
({
// 待办点标记设置
pos
:
'bottom'
,
// 待办点标记位置 ['top', 'bottom']
dotColor
:
''
,
// 待办点标记颜色
circle
:
false
,
// 待办圆圈标记设置(如圆圈标记已签到日期),该设置与点标记设置互斥
showLabelAlways
:
false
,
// 点击时是否显示待办事项(圆点/文字),在 circle 为 true 及当日历配置 showLunar 为 true 时,此配置失效
days
:
[
{
year
:
2020
,
month
:
8
,
day
:
23
,
todoText
:
'夏日精酿夜
\
n红酒生蚝趴'
,
color
:
'#f40'
// 单独定义代办颜色 (标记点、文字)
}
]
});
this
.
calendar
.
setTodoLabels
({
// 待办点标记设置
pos
:
'bottom'
,
// 待办点标记位置 ['top', 'bottom']
dotColor
:
''
,
// 待办点标记颜色
circle
:
false
,
// 待办圆圈标记设置(如圆圈标记已签到日期),该设置与点标记设置互斥
showLabelAlways
:
false
,
// 点击时是否显示待办事项(圆点/文字),在 circle 为 true 及当日历配置 showLunar 为 true 时,此配置失效
days
:
[
{
year
:
2020
,
month
:
8
,
day
:
30
,
todoText
:
'夏日精酿夜
\
n红酒生蚝趴'
,
color
:
'#f40'
// 单独定义代办颜色 (标记点、文字)
}
]
});
this
.
calendar
.
setTodoLabels
({
// 待办点标记设置
pos
:
'bottom'
,
// 待办点标记位置 ['top', 'bottom']
dotColor
:
''
,
// 待办点标记颜色
circle
:
false
,
// 待办圆圈标记设置(如圆圈标记已签到日期),该设置与点标记设置互斥
showLabelAlways
:
false
,
// 点击时是否显示待办事项(圆点/文字),在 circle 为 true 及当日历配置 showLunar 为 true 时,此配置失效
days
:
[
{
year
:
2020
,
month
:
8
,
day
:
31
,
todoText
:
'新西兰活动周
\
n盲品活动
\
n品鉴会'
,
color
:
'#f40'
// 单独定义代办颜色 (标记点、文字)
}
]
});
},
})
\ No newline at end of file
增值产品-小程序及app/nyx-master/pages/schedule/schedule.json
0 → 100644
查看文件 @
c866a4d1
{
{
"usingComponents"
:
{
"calendar"
:
"/component/calendar/index"
}
}
\ No newline at end of file
增值产品-小程序及app/nyx-master/pages/schedule/schedule.wxml
0 → 100644
查看文件 @
c866a4d1
<view class="page">
<view class="page">
<calendar
calendarConfig="{{calendarConfig}}"
bind:onTapDay="onTapDay"
bind:afterTapDay="afterTapDay"
bind:onSwipe="onSwipe"
bind:whenChangeWeek="whenChangeWeek"
bind:whenChangeMonth="whenChangeMonth"
bind:afterCalendarRender="afterCalendarRender"
>
</calendar>
</view>
\ No newline at end of file
增值产品-小程序及app/nyx-master/pages/schedule/schedule.wxss
0 → 100644
查看文件 @
c866a4d1
.page{
.page{
height: 100vh;
background: #F4F8FB;
}
.weui-cell__hd {
font-size: 0;
}
.weui-cell__hd image {
width: 100rpx;
height: 100rpx;
margin-right: 18px;
margin-left: 5px;
vertical-align: middle;
}
.weui-cell__ft_in-access {
padding-right:13px;
position:relative;
}
.userInfo{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
overflow: hidden;
}
.thumb{
width: 120rpx;
height: 120rpx;
border-radius: 50%;
overflow: hidden;
}
.name{
margin: 30rpx;
}
.avatar{
width: 100rpx;
height: 100rpx;
overflow:hidden;
border-radius: 50%;
}
增值产品-小程序及app/nyx_app_key/.idea/workspace.xml
查看文件 @
c866a4d1
<?xml
version="1.0" encoding="UTF-8"?>
<?xml
version="1.0" encoding="UTF-8"?>
...
...
@@ -2,11 +2,9 @@
<project
version=
"4"
>
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"86dc399d-9323-4124-8c4f-671d1ecb849c"
name=
"Default Changelist"
comment=
""
>
<change
beforePath=
"$PROJECT_DIR$/../../内容-公众号及其他平台/规划/nyx_v4.pptx"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../../内容-公众号及其他平台/规划/nyx_v4.pptx"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../nyx-master/app.json"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../nyx-master/app.json"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../nyx-master/pages/discover/discover.js"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../nyx-master/pages/discover/discover.js"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../nyx-master/pages/discover/discover.wxml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../nyx-master/pages/discover/discover.wxml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../nyx-master/project.config.json"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../nyx-master/project.config.json"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../doc/create_table_sql/流程及数据测试.sql"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../doc/create_table_sql/流程及数据测试.sql"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../nyx-master/config.js"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../nyx-master/config.js"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../nyx-master/pages/my/my.wxml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../nyx-master/pages/my/my.wxml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterDir=
"false"
/>
</list>
<option
name=
"EXCLUDED_CONVERTED_TO_IGNORED"
value=
"true"
/>
...
...
@@ -127,6 +125,12 @@
<workItem
from=
"1591203902660"
duration=
"462000"
/>
<workItem
from=
"1591238858202"
duration=
"705000"
/>
<workItem
from=
"1594961069059"
duration=
"1724000"
/>
<workItem
from=
"1596594933202"
duration=
"4989000"
/>
<workItem
from=
"1596681784123"
duration=
"4374000"
/>
<workItem
from=
"1596766354159"
duration=
"2045000"
/>
<workItem
from=
"1596859581305"
duration=
"17660000"
/>
<workItem
from=
"1597026818098"
duration=
"14733000"
/>
<workItem
from=
"1597074775776"
duration=
"440000"
/>
</task>
<servers
/>
</component>
...
...
@@ -146,4 +150,15 @@
</map>
</option>
</component>
<component
name=
"XDebuggerManager"
>
<breakpoint-manager>
<breakpoints>
<line-breakpoint
enabled=
"true"
type=
"java-line"
>
<url>
file://$PROJECT_DIR$/api/src/main/java/cn/com/fun/nyxkey/api/service/impl/Rockwell_keyServiceImpl.java
</url>
<line>
160
</line>
<option
name=
"timeStamp"
value=
"3"
/>
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
</project>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论