From 24fbbd51f71b6b597a381823f8f333db691a5d79 Mon Sep 17 00:00:00 2001 From: shijingjing <1789544664@qq.com> Date: Mon, 22 Aug 2022 11:38:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E5=90=8C=E5=AE=A3=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppCooperationPropaganda.vue | 352 +++++++ .../cooperationDetail.vue | 510 ++++++++++ src/apps/AppCooperationPropaganda/detail.vue | 313 ++++++ .../AppCooperationPropaganda/images/files.png | Bin 0 -> 955 bytes .../images/gird--select-icon.png | Bin 0 -> 1276 bytes .../images/local-icon.png | Bin 0 -> 1121 bytes .../AppCooperationPropaganda/images/pass.png | Bin 0 -> 15287 bytes .../images/refuse.png | Bin 0 -> 15564 bytes .../images/right-icon.png | Bin 0 -> 373 bytes .../images/shaixuan.png | Bin 0 -> 663 bytes .../AppCooperationPropaganda/images/tx@2x.png | Bin 0 -> 1467 bytes .../AppCooperationPropaganda/images/xz.png | Bin 0 -> 1489 bytes .../AppCooperationPropaganda/images/xzh.png | Bin 0 -> 1730 bytes .../AppCooperationPropaganda/selectUser.vue | 233 +++++ .../AppPropagandaStatistics.vue | 903 ++++++++++++++++++ .../AppPropagandaStatistics/calendarInfo.vue | 208 ++++ .../images/shaixuan.png | Bin 0 -> 663 bytes .../uni-calendar/calendar.js | 546 +++++++++++ .../uni-calendar/i18n/en.json | 12 + .../uni-calendar/i18n/index.js | 8 + .../uni-calendar/i18n/zh-Hans.json | 12 + .../uni-calendar/i18n/zh-Hant.json | 12 + .../uni-calendar/uni-calendar-item.vue | 188 ++++ .../uni-calendar/uni-calendar.vue | 563 +++++++++++ .../uni-calendar/util.js | 350 +++++++ 25 files changed, 4210 insertions(+) create mode 100644 src/apps/AppCooperationPropaganda/AppCooperationPropaganda.vue create mode 100644 src/apps/AppCooperationPropaganda/cooperationDetail.vue create mode 100644 src/apps/AppCooperationPropaganda/detail.vue create mode 100644 src/apps/AppCooperationPropaganda/images/files.png create mode 100644 src/apps/AppCooperationPropaganda/images/gird--select-icon.png create mode 100644 src/apps/AppCooperationPropaganda/images/local-icon.png create mode 100644 src/apps/AppCooperationPropaganda/images/pass.png create mode 100644 src/apps/AppCooperationPropaganda/images/refuse.png create mode 100644 src/apps/AppCooperationPropaganda/images/right-icon.png create mode 100644 src/apps/AppCooperationPropaganda/images/shaixuan.png create mode 100644 src/apps/AppCooperationPropaganda/images/tx@2x.png create mode 100644 src/apps/AppCooperationPropaganda/images/xz.png create mode 100644 src/apps/AppCooperationPropaganda/images/xzh.png create mode 100644 src/apps/AppCooperationPropaganda/selectUser.vue create mode 100644 src/apps/AppPropagandaStatistics/AppPropagandaStatistics.vue create mode 100644 src/apps/AppPropagandaStatistics/calendarInfo.vue create mode 100644 src/apps/AppPropagandaStatistics/images/shaixuan.png create mode 100644 src/apps/AppPropagandaStatistics/uni-calendar/calendar.js create mode 100644 src/apps/AppPropagandaStatistics/uni-calendar/i18n/en.json create mode 100644 src/apps/AppPropagandaStatistics/uni-calendar/i18n/index.js create mode 100644 src/apps/AppPropagandaStatistics/uni-calendar/i18n/zh-Hans.json create mode 100644 src/apps/AppPropagandaStatistics/uni-calendar/i18n/zh-Hant.json create mode 100644 src/apps/AppPropagandaStatistics/uni-calendar/uni-calendar-item.vue create mode 100644 src/apps/AppPropagandaStatistics/uni-calendar/uni-calendar.vue create mode 100644 src/apps/AppPropagandaStatistics/uni-calendar/util.js diff --git a/src/apps/AppCooperationPropaganda/AppCooperationPropaganda.vue b/src/apps/AppCooperationPropaganda/AppCooperationPropaganda.vue new file mode 100644 index 00000000..b99ac526 --- /dev/null +++ b/src/apps/AppCooperationPropaganda/AppCooperationPropaganda.vue @@ -0,0 +1,352 @@ + + + + + \ No newline at end of file diff --git a/src/apps/AppCooperationPropaganda/cooperationDetail.vue b/src/apps/AppCooperationPropaganda/cooperationDetail.vue new file mode 100644 index 00000000..413efa08 --- /dev/null +++ b/src/apps/AppCooperationPropaganda/cooperationDetail.vue @@ -0,0 +1,510 @@ + + + + + \ No newline at end of file diff --git a/src/apps/AppCooperationPropaganda/detail.vue b/src/apps/AppCooperationPropaganda/detail.vue new file mode 100644 index 00000000..fd44da21 --- /dev/null +++ b/src/apps/AppCooperationPropaganda/detail.vue @@ -0,0 +1,313 @@ + + + + + \ No newline at end of file diff --git a/src/apps/AppCooperationPropaganda/images/files.png b/src/apps/AppCooperationPropaganda/images/files.png new file mode 100644 index 0000000000000000000000000000000000000000..10d53502535dad10eb33a37845dd2491f07992fe GIT binary patch literal 955 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 TcgIP zwuqQX3mrVJCANq|h$HNxLkGu2m5R^zUDY@D-;^vbS7;S)tNylUU-h|y_j8}_HBS?C zSU<0VJ&|Kisl%3I-n&laIV4|rXmMag$n=fQxvhNjEN1K3PngjsoAE(wc9I(_Q?IAZ z*k`hWxHp5dVZ2QP3{B#D}xpD{(rF!)tGPCcu+j$9^VP( zTSsmlx4FPq8>M)JySU@y*~GeUBH>M4nsUb^%FZPmW#I2#D`;}$)3np?g66r3MyXF~ z^W^dT6R4%(@?F=lhvnxKmZi!P*0+QLU|xSO4_IC7O!FztO#Lz2{cP|9tPQ z*Ux1ICO_eNE&U;?{N|nomEx~_#RVmQtn9zPIrA3(+A>@2x(#ANm4ctv=Dg5%nw>Z4 ldDp)ADpl8l?(|Q3slRGjntsxngBL)F!qe5yWt~$(69Dck3%CFP literal 0 HcmV?d00001 diff --git a/src/apps/AppCooperationPropaganda/images/tx@2x.png b/src/apps/AppCooperationPropaganda/images/tx@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d9620e086f8e6738ca671aacc434531257ce7add GIT binary patch literal 1467 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 literal 0 HcmV?d00001 diff --git a/src/apps/AppCooperationPropaganda/images/xzh.png b/src/apps/AppCooperationPropaganda/images/xzh.png new file mode 100644 index 0000000000000000000000000000000000000000..967fa399ea01a0d7fced8adb1f7a3129aabdeb2c GIT binary patch literal 1730 zcmV;z20i(SP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NIEJ;K`RA>d&T5oJrMG&9ayJD%m zR}d0KjUS}Ff`!yX5lKYRM2N=7pNKKhssxq97&K^z7;KjUA!_7ufO9*h5Ky@jkBiA{x!#{1n%cZL4Hj7L1chK~{ zEADb6SWZAofuN?KmJoUo@DL$%R9_S8_eSPX5z>irZsc`CIQJks3bvjST#f`Lcm0w~nYx7F_b;&B`d z(?lo(;@f&}f^_;zBDgb5qowj7!f~joT9MdXb1tZ@Km!`udlupV9vG`$9}S?421RM* znbx{rM&l8>%2(N_d!B+p{I=5I1(UCnb^93dfE;xMM9}l#<2(>nI@5Z|%5PA(!3T5LI)N>{PMHlh0?Ac2|0 zHa26$%Lx0rbnPp{^b+Ls#DY~Y3$Jg0M3v$%@C`1yvGGw1Wf%sOYLl9SZ;}_N!XNVclMlab2?_vh&{kE2ZCfq z)FXO8`1GG`wTJDxMxETq;9s?AVasy!p)yw=d8AO$Kc@Pt^?0RuUTifg+-qoIa#prJ z(H{HU=51_EuJJs2%cd1n=4+cwER$F`PZ%;1v2zWF& zd@m(2b|p7vVcPJ+Y!AL~(wA?s`FU-;%Zq#sFVF#-E@j?v_CE>EOEx{;o@%B6>MX}; zPq6bMhO@SUd}Vepjs2AVp<$~#*XCm*KH_uhDn{IA=nVerDs)=3=EXad;=1ov81xSE zXPu#yk_&bvca;S-LUc2x>8O8hwgkJ{oKB3uQYQ5<_~Q(IC41R^!!mDs>Uxs+hUf-E zD>e7;S>>X&(1s+);tBK39Gw!tnUrXCjw%(omq+3u2A?t&3pF|Y{e#l;vkk2rxnM6T znBxV^5hS)`Z;v)O4iT!)c`k#e`)qp2WfRQF6*mJpR7`_B5>>pA_Qkc!$G?$D4&dj> z{j}`hS(RWG?7kn6EAEl%LsEzodETygtJ{_>aq^VAo9FzBY>y|1*^f4iG}=^5q?}S6%#gRjP@%|#sC2< zFC*fFCMtNrCKzpenKfXDllpR3jF8)3c^R?e8e`nJhOjN&9DyY(wOGJpXR< YAB0b%2txdb +
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
确定选择
+
+
+ + + + + diff --git a/src/apps/AppPropagandaStatistics/AppPropagandaStatistics.vue b/src/apps/AppPropagandaStatistics/AppPropagandaStatistics.vue new file mode 100644 index 00000000..2d77d95b --- /dev/null +++ b/src/apps/AppPropagandaStatistics/AppPropagandaStatistics.vue @@ -0,0 +1,903 @@ + + + + + diff --git a/src/apps/AppPropagandaStatistics/calendarInfo.vue b/src/apps/AppPropagandaStatistics/calendarInfo.vue new file mode 100644 index 00000000..216b3a1a --- /dev/null +++ b/src/apps/AppPropagandaStatistics/calendarInfo.vue @@ -0,0 +1,208 @@ + + + + + \ No newline at end of file diff --git a/src/apps/AppPropagandaStatistics/images/shaixuan.png b/src/apps/AppPropagandaStatistics/images/shaixuan.png new file mode 100644 index 0000000000000000000000000000000000000000..88015ea5e0e538118f88586e115d588422253674 GIT binary patch literal 663 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1|*Ak?@s|zjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uvw#`F1}RM0`(+UW0~4dCi(`lf z@7w9t9x{OP zwuqQX3mrVJCANq|h$HNxLkGu2m5R^zUDY@D-;^vbS7;S)tNylUU-h|y_j8}_HBS?C zSU<0VJ&|Kisl%3I-n&laIV4|rXmMag$n=fQxvhNjEN1K3PngjsoAE(wc9I(_Q?IAZ z*k`hWxHp5dVZ2QP3{B#D}xpD{(rF!)tGPCcu+j$9^VP( zTSsmlx4FPq8>M)JySU@y*~GeUBH>M4nsUb^%FZPmW#I2#D`;}$)3np?g66r3MyXF~ z^W^dT6R4%(@?F=lhvnxKmZi!P*0+QLU|xSO4_IC7O!FztO#Lz2{cP|9tPQ z*Ux1ICO_eNE&U;?{N|nomEx~_#RVmQtn9zPIrA3(+A>@2x(#ANm4ctv=Dg5%nw>Z4 ldDp)ADpl8l?(|Q3slRGjntsxngBL)F!qe5yWt~$(69Dck3%CFP literal 0 HcmV?d00001 diff --git a/src/apps/AppPropagandaStatistics/uni-calendar/calendar.js b/src/apps/AppPropagandaStatistics/uni-calendar/calendar.js new file mode 100644 index 00000000..b8d7d6fc --- /dev/null +++ b/src/apps/AppPropagandaStatistics/uni-calendar/calendar.js @@ -0,0 +1,546 @@ +/** +* @1900-2100区间内的公历、农历互转 +* @charset UTF-8 +* @github https://github.com/jjonline/calendar.js +* @Author Jea杨(JJonline@JJonline.Cn) +* @Time 2014-7-21 +* @Time 2016-8-13 Fixed 2033hex、Attribution Annals +* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug +* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year +* @Version 1.0.3 +* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0] +* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0] +*/ +/* eslint-disable */ +var calendar = { + + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049 + /** Add By JJonline@JJonline.Cn**/ + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099 + 0x0d520], // 2100 + + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], + + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], + + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], + + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], + + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], + + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], + + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], + + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:var count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function (y) { + var i; var sum = 348 + for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } + return (sum + this.leapDays(y)) + }, + + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function (y) { // 闰字编码 \u95f0 + return (this.lunarInfo[y - 1900] & 0xf) + }, + + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function (y) { + if (this.leapMonth(y)) { + return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) + } + return (0) + }, + + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function (y, m) { + if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1 + return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) + }, + + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function (y, m) { + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var ms = m - 1 + if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) + } else { + return (this.solarMonth[ms]) + } + }, + + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function (lYear) { + var ganKey = (lYear - 3) % 10 + var zhiKey = (lYear - 3) % 12 + if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支 + return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] + }, + + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function (cMonth, cDay) { + var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座 + }, + + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function (offset) { + return this.Gan[offset % 10] + this.Zhi[offset % 12] + }, + + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function (y, n) { + if (y < 1900 || y > 2100) { return -1 } + if (n < 1 || n > 24) { return -1 } + var _table = this.sTermInfo[y - 1900] + var _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ] + var _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2) + ] + return parseInt(_calday[n - 1]) + }, + + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function (m) { // 月 => \u6708 + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var s = this.nStr3[m - 1] + s += '\u6708'// 加上月字 + return s + }, + + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function (d) { // 日 => \u65e5 + var s + switch (d) { + case 10: + s = '\u521d\u5341'; break + case 20: + s = '\u4e8c\u5341'; break + break + case 30: + s = '\u4e09\u5341'; break + break + default : + s = this.nStr2[Math.floor(d / 10)] + s += this.nStr1[d % 10] + } + return (s) + }, + + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function (y) { + return this.Animals[(y - 4) % 12] + }, + + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31 + // 年份限定、上限 + if (y < 1900 || y > 2100) { + return -1// undefined转换为数字变为NaN + } + // 公历传参最下限 + if (y == 1900 && m == 1 && d < 31) { + return -1 + } + // 未传参 获得当天 + if (!y) { + var objDate = new Date() + } else { + var objDate = new Date(y, parseInt(m) - 1, d) + } + var i; var leap = 0; var temp = 0 + // 修正ymd参数 + var y = objDate.getFullYear() + var m = objDate.getMonth() + 1 + var d = objDate.getDate() + var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = this.lYearDays(i) + offset -= temp + } + if (offset < 0) { + offset += temp; i-- + } + + // 是否今天 + var isTodayObj = new Date() + var isToday = false + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true + } + // 星期几 + var nWeek = objDate.getDay() + var cWeek = this.nStr1[nWeek] + // 数字表示周几顺应天朝周一开始的惯例 + if (nWeek == 0) { + nWeek = 7 + } + // 农历年 + var year = i + var leap = this.leapMonth(i) // 闰哪个月 + var isLeap = false + + // 效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + // 闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i + isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数 + } else { + temp = this.monthDays(year, i)// 计算农历普通月天数 + } + // 解除闰月 + if (isLeap == true && i == (leap + 1)) { isLeap = false } + offset -= temp + } + // 闰月导致数组下标重叠取反 + if (offset == 0 && leap > 0 && i == leap + 1) { + if (isLeap) { + isLeap = false + } else { + isLeap = true; --i + } + } + if (offset < 0) { + offset += temp; --i + } + // 农历月 + var month = i + // 农历日 + var day = offset + 1 + // 天干地支处理 + var sm = m - 1 + var gzY = this.toGanZhiYear(year) + + // 当月的两个节气 + // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year` + var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始 + var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始 + + // 依据12节气修正干支月 + var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) + if (d >= firstNode) { + gzM = this.toGanZhi((y - 1900) * 12 + m + 12) + } + + // 传入的日期的节气与否 + var isTerm = false + var Term = null + if (firstNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 2] + } + if (secondNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 1] + } + // 日柱 当月一日与 1900/1/1 相差天数 + var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 + var gzD = this.toGanZhi(dayCyclical + d - 1) + // 该日期所属的星座 + var astro = this.toAstro(m, d) + + return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } + }, + + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 + var isLeapMonth = !!isLeapMonth + var leapOffset = 0 + var leapMonth = this.leapMonth(y) + var leapDay = this.leapDays(y) + if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值 + var day = this.monthDays(y, m) + var _day = day + // bugFix 2016-9-25 + // if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = this.leapDays(y, m) + } + if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验 + + // 计算农历的时间差 + var offset = 0 + for (var i = 1900; i < y; i++) { + offset += this.lYearDays(i) + } + var leap = 0; var isAdd = false + for (var i = 1; i < m; i++) { + leap = this.leapMonth(y) + if (!isAdd) { // 处理闰月 + if (leap <= i && leap > 0) { + offset += this.leapDays(y); isAdd = true + } + } + offset += this.monthDays(y, i) + } + // 转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { offset += day } + // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) + var calObj = new Date((offset + d - 31) * 86400000 + stmap) + var cY = calObj.getUTCFullYear() + var cM = calObj.getUTCMonth() + 1 + var cD = calObj.getUTCDate() + + return this.solar2lunar(cY, cM, cD) + } +} + +export default calendar diff --git a/src/apps/AppPropagandaStatistics/uni-calendar/i18n/en.json b/src/apps/AppPropagandaStatistics/uni-calendar/i18n/en.json new file mode 100644 index 00000000..fcbd13cf --- /dev/null +++ b/src/apps/AppPropagandaStatistics/uni-calendar/i18n/en.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "ok", + "uni-calender.cancel": "cancel", + "uni-calender.today": "today", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN" +} diff --git a/src/apps/AppPropagandaStatistics/uni-calendar/i18n/index.js b/src/apps/AppPropagandaStatistics/uni-calendar/i18n/index.js new file mode 100644 index 00000000..de7509c8 --- /dev/null +++ b/src/apps/AppPropagandaStatistics/uni-calendar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/src/apps/AppPropagandaStatistics/uni-calendar/i18n/zh-Hans.json b/src/apps/AppPropagandaStatistics/uni-calendar/i18n/zh-Hans.json new file mode 100644 index 00000000..1ca43de0 --- /dev/null +++ b/src/apps/AppPropagandaStatistics/uni-calendar/i18n/zh-Hans.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "确定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/src/apps/AppPropagandaStatistics/uni-calendar/i18n/zh-Hant.json b/src/apps/AppPropagandaStatistics/uni-calendar/i18n/zh-Hant.json new file mode 100644 index 00000000..e0fe33b9 --- /dev/null +++ b/src/apps/AppPropagandaStatistics/uni-calendar/i18n/zh-Hant.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "確定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/src/apps/AppPropagandaStatistics/uni-calendar/uni-calendar-item.vue b/src/apps/AppPropagandaStatistics/uni-calendar/uni-calendar-item.vue new file mode 100644 index 00000000..30bd6c84 --- /dev/null +++ b/src/apps/AppPropagandaStatistics/uni-calendar/uni-calendar-item.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/src/apps/AppPropagandaStatistics/uni-calendar/uni-calendar.vue b/src/apps/AppPropagandaStatistics/uni-calendar/uni-calendar.vue new file mode 100644 index 00000000..a9c2908a --- /dev/null +++ b/src/apps/AppPropagandaStatistics/uni-calendar/uni-calendar.vue @@ -0,0 +1,563 @@ + + + + + diff --git a/src/apps/AppPropagandaStatistics/uni-calendar/util.js b/src/apps/AppPropagandaStatistics/uni-calendar/util.js new file mode 100644 index 00000000..2d6100bf --- /dev/null +++ b/src/apps/AppPropagandaStatistics/uni-calendar/util.js @@ -0,0 +1,350 @@ +import CALENDAR from './calendar.js' + +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + lunar: this.getlunar(full.year, full.month - 1, beforeDate), + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate), + afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate), + month: full.month, + lunar: this.getlunar(full.year, full.month, i), + disable: !(disableBefore && disableAfter), + isDay + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + lunar: this.getlunar(full.year, Number(full.month) + 1, i), + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + /** + * 计算阴历日期显示 + */ + getlunar(year, month, date) { + return CALENDAR.solar2lunar(year, month, date) + } + /** + * 设置打点 + */ + setSelectInfo(data, value) { + this.selected = value + this._getWeek(data) + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (before && after) { + this.multipleStatus.before = '' + this.multipleStatus.after = '' + this.multipleStatus.data = [] + } else { + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + } + this._getWeek(fullDate) + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + year, + month + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar