diff --git a/src/App.vue b/src/App.vue index 349affefb..d0a505f17 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,7 +2,7 @@
- + @@ -19,6 +19,19 @@ export default { return { transitionName: '' } + }, + provide() { + return { + reload: this.reload + } + }, + methods: { + reload() { + this.isRouterAlive = false + this.$nextTick(() => { + this.isRouterAlive = true + }) + } } // watch: { // $route(to, from) { diff --git a/src/views/ebiz/attendance/Attendance.vue b/src/views/ebiz/attendance/Attendance.vue index 33d8a8334..f88b81007 100644 --- a/src/views/ebiz/attendance/Attendance.vue +++ b/src/views/ebiz/attendance/Attendance.vue @@ -50,7 +50,7 @@
迟到
-
{{lateNum}}次
+
{{lateNum}}次,共{{lateTime}}分钟
早退
diff --git a/src/views/ebiz/attendance/Calendar.vue b/src/views/ebiz/attendance/Calendar.vue new file mode 100644 index 000000000..11b4c8839 --- /dev/null +++ b/src/views/ebiz/attendance/Calendar.vue @@ -0,0 +1,776 @@ + + + + + diff --git a/src/views/ebiz/attendance/DatetimePicker.vue b/src/views/ebiz/attendance/DatetimePicker.vue new file mode 100644 index 000000000..a2670d4f0 --- /dev/null +++ b/src/views/ebiz/attendance/DatetimePicker.vue @@ -0,0 +1,355 @@ + + + + + diff --git a/src/views/ebiz/attendance/Monthly.vue b/src/views/ebiz/attendance/Monthly.vue index c6e5a653b..0925fbbd8 100644 --- a/src/views/ebiz/attendance/Monthly.vue +++ b/src/views/ebiz/attendance/Monthly.vue @@ -1,282 +1,315 @@ \ No newline at end of file diff --git a/src/views/ebiz/attendance/TimePicker.vue b/src/views/ebiz/attendance/TimePicker.vue new file mode 100644 index 000000000..19209a4e9 --- /dev/null +++ b/src/views/ebiz/attendance/TimePicker.vue @@ -0,0 +1,289 @@ + + + + + diff --git a/src/views/ebiz/attendance/utils/calendarConvert.js b/src/views/ebiz/attendance/utils/calendarConvert.js new file mode 100644 index 000000000..a9fbe18b7 --- /dev/null +++ b/src/views/ebiz/attendance/utils/calendarConvert.js @@ -0,0 +1,627 @@ +/* + 农历每一年,对应公历的数据 + 此数据来源于互联网,原作者不详细,在此感谢 + MAPPING[0][0]:每年闰月的月份,0表示不闰 + MAPPING[0][1, 13]:表示每月初一对应的阳历时间,前两个字符表示月,后两个字符表示月 + */ +var MAPPING = [ + [8, '0131', '0301', '0331', '0429', '0528', '0627', '0726', '0825', '0924', '1023', '1122', '1222', '1320'], //1900 + [0, '0219', '0320', '0419', '0518', '0616', '0716', '0814', '0913', '1012', '1111', '1211', '1310'], //1901 + [0, '0208', '0310', '0408', '0508', '0606', '0705', '0804', '0902', '1002', '1031', '1130', '1230'], //1902 + [5, '0129', '0227', '0329', '0427', '0527', '0625', '0724', '0823', '0921', '1020', '1119', '1219', '1317'], //1903 + [0, '0216', '0317', '0416', '0515', '0614', '0713', '0811', '0910', '1009', '1107', '1207', '1306'], //1904 + [0, '0204', '0306', '0405', '0504', '0603', '0703', '0801', '0830', '0929', '1028', '1127', '1226'], //1905 + [4, '0125', '0223', '0325', '0424', '0523', '0622', '0721', '0820', '0918', '1018', '1116', '1216', '1314'], //1906 + [0, '0213', '0314', '0413', '0512', '0611', '0710', '0809', '0908', '1007', '1106', '1205', '1304'], //1907 + [0, '0202', '0303', '0401', '0430', '0530', '0629', '0728', '0827', '0925', '1025', '1124', '1223'], //1908 + [2, '0122', '0220', '0322', '0420', '0519', '0618', '0717', '0816', '0914', '1014', '1113', '1213', '1311'], //1909 + [0, '0210', '0311', '0410', '0509', '0607', '0707', '0805', '0904', '1003', '1102', '1202', '1301'], //1910 + [6, '0130', '0301', '0330', '0429', '0528', '0626', '0726', '0824', '0922', '1022', '1121', '1220', '1319'], //1911 + [0, '0218', '0319', '0417', '0517', '0615', '0714', '0813', '0911', '1010', '1109', '1209', '1307'], //1912 + [0, '0206', '0308', '0407', '0506', '0605', '0704', '0802', '0901', '0930', '1029', '1128', '1227'], //1913 + [5, '0126', '0225', '0327', '0425', '0525', '0623', '0723', '0821', '0920', '1019', '1117', '1217', '1315'], //1914 + [0, '0214', '0316', '0414', '0514', '0613', '0712', '0811', '0909', '1009', '1107', '1207', '1305'], //1915 + [0, '0203', '0304', '0403', '0502', '0601', '0630', '0730', '0829', '0927', '1027', '1125', '1225'], //1916 + [2, '0123', '0222', '0323', '0421', '0521', '0619', '0719', '0818', '0916', '1016', '1115', '1214', '1313'], //1917 + [0, '0211', '0313', '0411', '0510', '0609', '0708', '0807', '0905', '1005', '1104', '1203', '1302'], //1918 + [7, '0201', '0302', '0401', '0430', '0529', '0628', '0727', '0825', '0924', '1024', '1122', '1222', '1321'], //1919 + [0, '0220', '0320', '0419', '0518', '0616', '0716', '0814', '0912', '1012', '1110', '1210', '1309'], //1920 + [0, '0208', '0310', '0408', '0508', '0606', '0705', '0804', '0902', '1001', '1031', '1129', '1229'], //1921 + [5, '0128', '0227', '0328', '0427', '0527', '0625', '0724', '0823', '0921', '1020', '1119', '1218', '1317'], //1922 + [0, '0216', '0317', '0416', '0516', '0614', '0714', '0812', '0911', '1010', '1108', '1208', '1306'], //1923 + [0, '0205', '0305', '0404', '0504', '0602', '0702', '0801', '0830', '0929', '1028', '1127', '1226'], //1924 + [4, '0124', '0223', '0324', '0423', '0522', '0621', '0721', '0819', '0918', '1018', '1116', '1216', '1314'], //1925 + [0, '0213', '0314', '0412', '0512', '0610', '0710', '0808', '0907', '1007', '1105', '1205', '1304'], //1926 + [0, '0202', '0304', '0402', '0501', '0531', '0629', '0729', '0827', '0926', '1025', '1124', '1224'], //1927 + [2, '0123', '0221', '0322', '0420', '0519', '0618', '0717', '0815', '0914', '1013', '1112', '1212', '1311'], //1928 + [0, '0210', '0311', '0410', '0509', '0607', '0707', '0805', '0903', '1003', '1101', '1201', '1231'], //1929 + [6, '0130', '0228', '0330', '0429', '0528', '0626', '0726', '0824', '0922', '1022', '1120', '1220', '1319'], //1930 + [0, '0217', '0319', '0418', '0517', '0616', '0715', '0814', '0912', '1011', '1110', '1209', '1308'], //1931 + [0, '0206', '0307', '0406', '0506', '0604', '0704', '0802', '0901', '0930', '1029', '1128', '1227'], //1932 + [5, '0126', '0224', '0326', '0425', '0524', '0623', '0722', '0821', '0920', '1019', '1118', '1217', '1315'], //1933 + [0, '0214', '0315', '0414', '0513', '0612', '0712', '0810', '0909', '1008', '1107', '1207', '1305'], //1934 + [0, '0204', '0305', '0403', '0503', '0601', '0701', '0730', '0829', '0928', '1027', '1126', '1226'], //1935 + [3, '0124', '0223', '0323', '0421', '0521', '0619', '0718', '0817', '0916', '1015', '1114', '1214', '1313'], //1936 + [0, '0211', '0313', '0411', '0510', '0609', '0708', '0806', '0905', '1004', '1103', '1203', '1302'], //1937 + [7, '0131', '0302', '0401', '0430', '0529', '0628', '0727', '0825', '0924', '1023', '1122', '1222', '1320'], //1938 + [0, '0219', '0321', '0420', '0519', '0617', '0717', '0815', '0913', '1013', '1111', '1211', '1309'], //1939 + [0, '0208', '0309', '0408', '0507', '0606', '0705', '0804', '0902', '1001', '1031', '1129', '1229'], //1940 + [6, '0127', '0226', '0328', '0426', '0526', '0625', '0724', '0823', '0921', '1020', '1119', '1218', '1317'], //1941 + [0, '0215', '0317', '0415', '0515', '0614', '0713', '0812', '0910', '1010', '1108', '1208', '1306'], //1942 + [0, '0205', '0306', '0405', '0504', '0603', '0702', '0801', '0831', '0929', '1029', '1127', '1227'], //1943 + [4, '0125', '0224', '0324', '0423', '0522', '0621', '0720', '0819', '0917', '1017', '1116', '1215', '1314'], //1944 + [0, '0213', '0314', '0412', '0512', '0610', '0709', '0808', '0906', '1006', '1105', '1205', '1303'], //1945 + [0, '0202', '0304', '0402', '0501', '0531', '0629', '0728', '0827', '0925', '1025', '1124', '1223'], //1946 + [2, '0122', '0221', '0323', '0421', '0520', '0619', '0718', '0816', '0915', '1014', '1113', '1212', '1311'], //1947 + [0, '0210', '0311', '0409', '0509', '0607', '0707', '0805', '0903', '1003', '1101', '1201', '1230'], //1948 + [7, '0129', '0228', '0329', '0428', '0528', '0626', '0726', '0824', '0922', '1022', '1120', '1220', '1318'], //1949 + [0, '0217', '0318', '0417', '0517', '0615', '0715', '0814', '0912', '1011', '1110', '1209', '1308'], //1950 + [0, '0206', '0308', '0406', '0506', '0605', '0704', '0803', '0901', '1001', '1030', '1129', '1228'], //1951 + [5, '0127', '0225', '0326', '0424', '0524', '0622', '0722', '0820', '0919', '1019', '1117', '1217', '1315'], //1952 + [0, '0214', '0315', '0414', '0513', '0611', '0711', '0810', '0908', '1008', '1107', '1206', '1305'], //1953 + [0, '0203', '0305', '0403', '0503', '0601', '0630', '0730', '0828', '0927', '1027', '1126', '1225'], //1954 + [3, '0124', '0222', '0324', '0422', '0522', '0620', '0719', '0818', '0916', '1016', '1114', '1214', '1313'], //1955 + [0, '0212', '0312', '0411', '0510', '0609', '0708', '0806', '0905', '1004', '1103', '1203', '1301'], //1956 + [8, '0131', '0302', '0331', '0430', '0529', '0628', '0727', '0825', '0924', '1023', '1122', '1221', '1320'], //1957 + [0, '0218', '0320', '0419', '0519', '0617', '0717', '0815', '0913', '1013', '1111', '1211', '1309'], //1958 + [0, '0208', '0309', '0408', '0508', '0606', '0706', '0804', '0903', '1002', '1101', '1130', '1230'], //1959 + [6, '0128', '0227', '0327', '0426', '0525', '0624', '0724', '0822', '0921', '1020', '1119', '1218', '1317'], //1960 + [0, '0215', '0317', '0415', '0515', '0613', '0713', '0811', '0910', '1010', '1108', '1208', '1306'], //1961 + [0, '0205', '0306', '0405', '0504', '0602', '0702', '0731', '0830', '0929', '1028', '1127', '1227'], //1962 + [4, '0125', '0224', '0325', '0424', '0523', '0621', '0721', '0819', '0918', '1017', '1116', '1216', '1315'], //1963 + [0, '0213', '0314', '0412', '0512', '0610', '0709', '0808', '0906', '1006', '1104', '1204', '1303'], //1964 + [0, '0202', '0303', '0402', '0501', '0531', '0629', '0728', '0827', '0925', '1024', '1123', '1223'], //1965 + [3, '0121', '0220', '0322', '0421', '0520', '0619', '0718', '0816', '0915', '1014', '1112', '1212', '1311'], //1966 + [0, '0209', '0311', '0410', '0509', '0608', '0708', '0806', '0904', '1004', '1102', '1202', '1231'], //1967 + [7, '0130', '0228', '0329', '0427', '0527', '0626', '0725', '0824', '0922', '1022', '1120', '1220', '1318'], //1968 + [0, '0217', '0318', '0417', '0516', '0615', '0714', '0813', '0912', '1011', '1110', '1209', '1308'], //1969 + [0, '0206', '0308', '0406', '0505', '0604', '0703', '0802', '0901', '0930', '1030', '1129', '1228'], //1970 + [5, '0127', '0225', '0327', '0425', '0524', '0623', '0722', '0821', '0919', '1019', '1118', '1218', '1316'], //1971 + [0, '0215', '0315', '0414', '0513', '0611', '0711', '0809', '0908', '1007', '1106', '1206', '1304'], //1972 + [0, '0203', '0305', '0403', '0503', '0601', '0630', '0730', '0828', '0926', '1026', '1125', '1224'], //1973 + [4, '0123', '0222', '0324', '0422', '0522', '0620', '0719', '0818', '0916', '1015', '1114', '1214', '1312'], //1974 + [0, '0211', '0313', '0412', '0511', '0610', '0709', '0807', '0906', '1005', '1103', '1203', '1301'], //1975 + [8, '0131', '0301', '0331', '0429', '0529', '0627', '0727', '0825', '0924', '1023', '1121', '1221', '1319'], //1976 + [0, '0218', '0320', '0418', '0518', '0617', '0716', '0815', '0913', '1013', '1111', '1211', '1309'], //1977 + [0, '0207', '0309', '0407', '0507', '0606', '0705', '0804', '0902', '1002', '1101', '1130', '1230'], //1978 + [6, '0128', '0227', '0328', '0426', '0526', '0624', '0724', '0823', '0921', '1021', '1120', '1219', '1318'], //1979 + [0, '0216', '0317', '0415', '0514', '0613', '0712', '0811', '0909', '1009', '1108', '1207', '1306'], //1980 + [0, '0205', '0306', '0405', '0504', '0602', '0702', '0731', '0829', '0928', '1028', '1126', '1226'], //1981 + [4, '0125', '0224', '0325', '0424', '0523', '0621', '0721', '0819', '0917', '1017', '1115', '1215', '1314'], //1982 + [0, '0213', '0315', '0413', '0513', '0611', '0710', '0809', '0907', '1006', '1105', '1204', '1303'], //1983 + [10, '0202', '0303', '0401', '0501', '0531', '0629', '0728', '0827', '0925', '1024', '1123', '1222', '1321'], //1984 + [0, '0220', '0321', '0420', '0520', '0618', '0718', '0816', '0915', '1014', '1112', '1212', '1310'], //1985 + [0, '0209', '0310', '0409', '0509', '0607', '0707', '0806', '0904', '1004', '1102', '1202', '1231'], //1986 + [6, '0129', '0228', '0329', '0428', '0527', '0626', '0726', '0824', '0923', '1023', '1121', '1221', '1319'], //1987 + [0, '0217', '0318', '0416', '0516', '0614', '0714', '0812', '0911', '1011', '1109', '1209', '1308'], //1988 + [0, '0206', '0308', '0406', '0505', '0604', '0703', '0802', '0831', '0930', '1029', '1128', '1228'], //1989 + [5, '0127', '0225', '0327', '0425', '0524', '0623', '0722', '0820', '0919', '1018', '1117', '1217', '1316'], //1990 + [0, '0215', '0316', '0415', '0514', '0612', '0712', '0810', '0908', '1008', '1106', '1206', '1305'], //1991 + [0, '0204', '0304', '0403', '0503', '0601', '0630', '0730', '0828', '0926', '1026', '1124', '1224'], //1992 + [3, '0123', '0221', '0323', '0422', '0521', '0620', '0719', '0818', '0916', '1015', '1114', '1213', '1312'], //1993 + [0, '0210', '0312', '0411', '0511', '0609', '0709', '0807', '0906', '1005', '1103', '1203', '1301'], //1994 + [8, '0131', '0301', '0331', '0430', '0529', '0628', '0727', '0826', '0925', '1024', '1122', '1222', '1320'], //1995 + [0, '0219', '0319', '0418', '0517', '0616', '0715', '0814', '0912', '1012', '1111', '1211', '1309'], //1996 + [0, '0207', '0309', '0407', '0507', '0605', '0705', '0803', '0902', '1002', '1031', '1130', '1230'], //1997 + [5, '0128', '0227', '0328', '0426', '0526', '0624', '0723', '0822', '0921', '1020', '1119', '1219', '1317'], //1998 + [0, '0216', '0318', '0416', '0515', '0614', '0713', '0811', '0910', '1009', '1108', '1208', '1307'], //1999 + [0, '0205', '0306', '0405', '0504', '0602', '0702', '0731', '0829', '0928', '1027', '1126', '1226'], //2000 + [4, '0124', '0223', '0325', '0423', '0523', '0621', '0721', '0819', '0917', '1017', '1115', '1215', '1313'], //2001 + [0, '0212', '0314', '0413', '0512', '0611', '0710', '0809', '0907', '1006', '1105', '1204', '1303'], //2002 + [0, '0201', '0303', '0402', '0501', '0531', '0630', '0729', '0828', '0926', '1025', '1124', '1223'], //2003 + [2, '0122', '0220', '0321', '0419', '0519', '0618', '0717', '0816', '0914', '1014', '1112', '1212', '1310'], //2004 + [0, '0209', '0310', '0409', '0508', '0607', '0706', '0805', '0904', '1003', '1102', '1201', '1231'], //2005 + [7, '0129', '0228', '0329', '0428', '0527', '0626', '0725', '0824', '0922', '1022', '1121', '1220', '1319'], //2006 + [0, '0218', '0319', '0417', '0517', '0615', '0714', '0813', '0911', '1011', '1110', '1210', '1308'], //2007 + [0, '0207', '0308', '0406', '0505', '0604', '0703', '0801', '0831', '0929', '1029', '1128', '1227'], //2008 + [5, '0126', '0225', '0327', '0425', '0524', '0623', '0722', '0820', '0919', '1018', '1117', '1216', '1315'], //2009 + [0, '0214', '0316', '0414', '0514', '0612', '0712', '0810', '0908', '1008', '1106', '1206', '1304'], //2010 + [0, '0203', '0305', '0403', '0503', '0602', '0701', '0731', '0829', '0927', '1027', '1125', '1225'], //2011 + [4, '0123', '0222', '0322', '0421', '0521', '0619', '0719', '0817', '0916', '1015', '1114', '1213', '1312'], //2012 + [0, '0210', '0312', '0410', '0510', '0608', '0708', '0807', '0905', '1005', '1103', '1203', '1301'], //2013 + [9, '0131', '0301', '0331', '0429', '0529', '0627', '0727', '0825', '0924', '1024', '1122', '1222', '1320'], //2014 + [0, '0219', '0320', '0419', '0518', '0616', '0716', '0814', '0913', '1013', '1112', '1211', '1310'], //2015 + [0, '0208', '0309', '0407', '0507', '0605', '0704', '0803', '0901', '1001', '1031', '1129', '1229'], //2016 + [6, '0128', '0226', '0328', '0426', '0526', '0624', '0723', '0822', '0920', '1020', '1118', '1218', '1317'], //2017 + [0, '0216', '0317', '0416', '0515', '0614', '0713', '0811', '0910', '1009', '1108', '1207', '1306'], //2018 + [0, '0205', '0307', '0405', '0505', '0603', '0703', '0801', '0830', '0929', '1028', '1126', '1226'], //2019 + [4, '0125', '0223', '0324', '0423', '0523', '0621', '0721', '0819', '0917', '1017', '1115', '1215', '1313'], //2020 + [0, '0212', '0313', '0412', '0512', '0610', '0710', '0808', '0907', '1006', '1105', '1204', '1303'], //2021 + [0, '0201', '0303', '0401', '0501', '0530', '0629', '0729', '0827', '0926', '1025', '1124', '1223'], //2022 + [2, '0122', '0220', '0322', '0420', '0519', '0618', '0718', '0816', '0915', '1015', '1113', '1213', '1311'], //2023 + [0, '0210', '0310', '0409', '0508', '0606', '0706', '0804', '0903', '1003', '1101', '1201', '1231'], //2024 + [6, '0129', '0228', '0329', '0428', '0527', '0625', '0725', '0823', '0922', '1021', '1120', '1220', '1319'], //2025 + [0, '0217', '0319', '0417', '0517', '0615', '0714', '0813', '0911', '1010', '1109', '1209', '1308'], //2026 + [0, '0206', '0308', '0407', '0506', '0605', '0704', '0802', '0901', '0930', '1029', '1128', '1228'], //2027 + [5, '0126', '0225', '0326', '0425', '0524', '0623', '0722', '0820', '0919', '1018', '1116', '1216', '1315'], //2028 + [0, '0213', '0315', '0414', '0513', '0612', '0711', '0810', '0908', '1008', '1106', '1205', '1304'], //2029 + [0, '0203', '0304', '0403', '0502', '0601', '0701', '0730', '0829', '0927', '1027', '1125', '1225'], //2030 + [3, '0123', '0221', '0323', '0422', '0521', '0620', '0719', '0818', '0917', '1016', '1115', '1214', '1313'], //2031 + [0, '0211', '0312', '0410', '0509', '0608', '0707', '0806', '0905', '1004', '1103', '1203', '1301'], //2032 + [7, '0131', '0301', '0331', '0429', '0528', '0627', '0726', '0825', '0923', '1023', '1122', '1222', '1320'], //2033 + [0, '0219', '0320', '0419', '0518', '0616', '0716', '0814', '0913', '1012', '1111', '1211', '1309'], //2034 + [0, '0208', '0310', '0408', '0508', '0606', '0705', '0804', '0902', '1001', '1031', '1130', '1229'], //2035 + [6, '0128', '0227', '0328', '0426', '0526', '0624', '0723', '0822', '0920', '1019', '1118', '1217', '1316'], //2036 + [0, '0215', '0317', '0416', '0515', '0614', '0713', '0811', '0910', '1009', '1107', '1207', '1305'], //2037 + [0, '0204', '0306', '0405', '0504', '0603', '0702', '0801', '0830', '0929', '1028', '1126', '1226'], //2038 + [5, '0124', '0223', '0325', '0423', '0523', '0622', '0721', '0820', '0918', '1018', '1116', '1216', '1314'], //2039 + [0, '0212', '0313', '0411', '0511', '0610', '0709', '0808', '0906', '1006', '1105', '1204', '1303'], //2040 + [0, '0201', '0302', '0401', '0430', '0530', '0628', '0728', '0827', '0925', '1025', '1124', '1223'], //2041 + [2, '0122', '0220', '0322', '0420', '0519', '0618', '0717', '0816', '0914', '1014', '1113', '1212', '1311'], //2042 + [0, '0210', '0311', '0410', '0509', '0607', '0707', '0805', '0903', '1003', '1102', '1201', '1231'], //2043 + [7, '0130', '0229', '0329', '0428', '0527', '0625', '0725', '0823', '0921', '1021', '1119', '1219', '1318'], //2044 + [0, '0217', '0319', '0417', '0517', '0615', '0714', '0813', '0911', '1010', '1109', '1208', '1307'], //2045 + [0, '0206', '0308', '0406', '0506', '0604', '0704', '0802', '0901', '0930', '1029', '1128', '1227'], //2046 + [5, '0126', '0225', '0326', '0425', '0525', '0623', '0723', '0821', '0920', '1019', '1117', '1217', '1315'], //2047 + [0, '0214', '0314', '0413', '0513', '0611', '0711', '0810', '0908', '1008', '1106', '1205', '1304'], //2048 + [0, '0202', '0304', '0402', '0502', '0531', '0630', '0730', '0828', '0927', '1027', '1125', '1225'], //2049 + [3, '0123', '0221', '0323', '0421', '0521', '0619', '0719', '0817', '0916', '1016', '1114', '1214', '1313'], //2050 + [0, '0211', '0313', '0411', '0510', '0609', '0708', '0806', '0905', '1005', '1103', '1203', '1302'], //2051 + [8, '0201', '0301', '0331', '0429', '0528', '0627', '0726', '0824', '0923', '1022', '1121', '1221', '1320'], //2052 + [0, '0219', '0320', '0419', '0518', '0616', '0716', '0814', '0912', '1012', '1110', '1210', '1309'], //2053 + [0, '0208', '0309', '0408', '0508', '0606', '0705', '0804', '0902', '1001', '1031', '1129', '1229'], //2054 + [6, '0128', '0226', '0328', '0427', '0526', '0625', '0724', '0823', '0921', '1020', '1119', '1218', '1317'], //2055 + [0, '0215', '0316', '0415', '0515', '0613', '0713', '0811', '0910', '1009', '1107', '1207', '1305'], //2056 + [0, '0204', '0305', '0404', '0504', '0602', '0702', '0731', '0830', '0929', '1028', '1126', '1226'], //2057 + [4, '0124', '0223', '0324', '0423', '0522', '0621', '0720', '0819', '0918', '1017', '1116', '1216', '1314'], //2058 + [0, '0212', '0314', '0412', '0512', '0610', '0710', '0808', '0907', '1006', '1105', '1205', '1304'], //2059 + [0, '0202', '0303', '0401', '0501', '0530', '0628', '0727', '0826', '0924', '1024', '1123', '1223'], //2060 + [3, '0121', '0220', '0322', '0420', '0519', '0618', '0717', '0815', '0914', '1013', '1112', '1212', '1311'], //2061 + [0, '0209', '0311', '0410', '0509', '0607', '0707', '0805', '0903', '1003', '1101', '1201', '1231'], //2062 + [7, '0129', '0228', '0330', '0428', '0528', '0626', '0726', '0824', '0922', '1022', '1120', '1220', '1318'], //2063 + [0, '0217', '0318', '0417', '0516', '0615', '0714', '0813', '0911', '1010', '1109', '1208', '1307'], //2064 + [0, '0205', '0307', '0406', '0505', '0604', '0704', '0802', '0901', '0930', '1029', '1128', '1227'], //2065 + [5, '0126', '0224', '0326', '0424', '0524', '0623', '0722', '0821', '0919', '1019', '1117', '1217', '1315'], //2066 + [0, '0214', '0315', '0414', '0513', '0612', '0711', '0810', '0909', '1008', '1107', '1206', '1305'], //2067 + [0, '0203', '0304', '0402', '0502', '0531', '0629', '0729', '0828', '0926', '1026', '1125', '1224'], //2068 + [4, '0123', '0221', '0323', '0421', '0521', '0619', '0718', '0817', '0915', '1015', '1114', '1214', '1312'], //2069 + [0, '0211', '0312', '0411', '0510', '0609', '0708', '0806', '0905', '1004', '1103', '1203', '1301'], // 2070 + [8, '0131', '0302', '0331', '0430', '0529', '0628', '0727', '0825', '0924', '1023', '1122', '1221', '1320'], // 2071 + [0, '0219', '0320', '0418', '0518', '0616', '0716', '0814', '0912', '1012', '1110', '1210', '1308'], // 2072 + [0, '0207', '0309', '0407', '0507', '0606', '0705', '0804', '0902', '1001', '1031', '1129', '1229'], // 2073 + [6, '0127', '0226', '0327', '0426', '0526', '0624', '0724', '0822', '0921', '1020', '1119', '1218', '1317'], // 2074 + [0, '0215', '0317', '0415', '0515', '0613', '0713', '0812', '0910', '1010', '1108', '1208', '1306'], // 2075 + [0, '0205', '0305', '0404', '0503', '0602', '0701', '0731', '0829', '0928', '1028', '1126', '1226'], // 2076 + [4, '0124', '0223', '0324', '0423', '0522', '0620', '0720', '0818', '0917', '1017', '1116', '1215', '1314'], // 2077 + [0, '0212', '0314', '0412', '0512', '0610', '0709', '0808', '0906', '1006', '1105', '1204', '1303'], // 2078 + [0, '0202', '0303', '0402', '0501', '0531', '0629', '0728', '0827', '0925', '1025', '1123', '1223'], // 2079 + [3, '0122', '0221', '0321', '0420', '0519', '0618', '0717', '0815', '0914', '1013', '1111', '1211', '1310'], // 2080 + [0, '0209', '0310', '0409', '0509', '0607', '0707', '0805', '0903', '1003', '1101', '1130', '1230'], // 2081 + [7, '0129', '0227', '0329', '0428', '0528', '0626', '0725', '0824', '0922', '1022', '1120', '1219', '1318'], // 2082 + [0, '0217', '0318', '0417', '0517', '0615', '0715', '0813', '0912', '1011', '1110', '1209', '1308'], // 2083 + [0, '0206', '0307', '0405', '0505', '0603', '0703', '0802', '0831', '0930', '1029', '1128', '1227'], // 2084 + [5, '0126', '0224', '0326', '0424', '0523', '0622', '0722', '0820', '0919', '1019', '1117', '1217', '1315'], // 2085 + [0, '0214', '0315', '0414', '0513', '0611', '0711', '0809', '0908', '1008', '1106', '1206', '1305'], // 2086 + [0, '0203', '0305', '0403', '0503', '0601', '0630', '0730', '0828', '0927', '1026', '1125', '1225'], // 2087 + [4, '0124', '0222', '0323', '0421', '0521', '0619', '0718', '0817', '0915', '1014', '1113', '1213', '1312'], // 2088 + [0, '0210', '0312', '0411', '0510', '0609', '0708', '0806', '0904', '1004', '1102', '1202', '1301'], // 2089 + [8, '0130', '0301', '0331', '0430', '0529', '0628', '0727', '0825', '0924', '1023', '1121', '1221', '1320'], // 2090 + [0, '0218', '0320', '0419', '0518', '0617', '0716', '0815', '0913', '1013', '1111', '1210', '1309'], // 2091 + [0, '0207', '0308', '0407', '0506', '0605', '0705', '0803', '0902', '1001', '1031', '1129', '1229'], // 2092 + [6, '0127', '0225', '0327', '0426', '0525', '0624', '0723', '0822', '0921', '1020', '1119', '1218', '1317'], // 2093 + [0, '0215', '0316', '0415', '0514', '0613', '0712', '0811', '0910', '1009', '1108', '1208', '1306'], // 2094 + [0, '0205', '0306', '0405', '0504', '0602', '0702', '0731', '0830', '0928', '1028', '1127', '1227'], // 2095 + [4, '0125', '0224', '0324', '0423', '0522', '0620', '0720', '0818', '0916', '1016', '1115', '1215', '1313'], // 2096 + [0, '0212', '0314', '0412', '0512', '0610', '0709', '0808', '0906', '1005', '1104', '1204', '1302'], // 2097 + [0, '0201', '0303', '0402', '0501', '0531', '0629', '0728', '0826', '0925', '1024', '1123', '1222'], // 2098 + [2, '0121', '0220', '0322', '0420', '0520', '0619', '0718', '0816', '0915', '1014', '1112', '1212', '1310'] // 2099 +] +var MINYEAR = 1900 +var _chineseLunar = {} + +/* + * 分析日期表达式,并提取其中的单位和数值 + */ +var _expression = function(expr) { + var list = expr.match(/[+-]?\d+((ms)|[yMdhmsw])/g) + var result = [] + for (var i = 0; i < list.length; i++) { + //提取单位和数值 + if (/([+-])(\d+)(.+)/.test(list[i])) { + var val = parseInt(RegExp.$2) + if (RegExp.$1 === '-') val = -val + + result.push({ + value: val, + unit: RegExp.$3 + }) + } + return result + } +} + +//计算公历两个日期之差 +var _solarDiff = function(left, right, interval) { + var span = left.getTime() - right.getTime() //相差毫秒 + switch (interval) { + case 'y': + return parseInt(left.getFullYear() - right.getFullYear()) + case 'M': + return parseInt((left.getFullYear() - right.getFullYear()) * 12 + (left.getMonth() - right.getMonth())) + case 'd': + return Math.ceil(span / 1000 / 60 / 60 / 24) + case 'w': + return Math.floor(span / 1000 / 60 / 60 / 24 / 7) + case 'h': + return Math.floor(span / 1000 / 60 / 60) + case 'm': + return Math.floor(span / 1000 / 60) + case 's': + return Math.floor(span / 1000) + case 'ms': + return parseInt(span) + } +} + +/* + 找到农历 + isPerYear,是否为农历前一年的对应数据 + */ +var _findLunar = function(solar, index, minMonth, maxMonth, isPreYear) { + //取得映射的数据 + var mapping = MAPPING[index] + if (!mapping) return false + + var year = solar.getFullYear(), + month = solar.getMonth() + 1, + date = solar.getDate() + var lunarYear = year + var lunarMonth, find, solarMonth + + //查找农历 + for (var i = mapping.length - 1; i > 0; i--) { + lunarMonth = i + //取对应的农历月与天 + var segMonth = Number(mapping[i].substring(0, 2)) + var segDay = Number(mapping[i].substring(2, 4)) + + solarMonth = isPreYear && segMonth > 12 ? segMonth - 12 : segMonth + find = solarMonth < month || (solarMonth == month && segDay <= date) || ((segMonth <= minMonth || segMonth >= maxMonth) && isPreYear) + if (solarMonth == 12 && solarMonth > month && i == 1) { + find = true + year-- + } + if (find) break + } + + //如果找到,则赋值 + if (!find) return false + //取前一年 + if (isPreYear && segMonth == 12) year = year - 1 + lunarYear = isPreYear ? lunarYear - 1 : lunarYear + return { + year: year, + month: solarMonth, + day: segDay, + lunarYear: lunarYear, + lunarMonth: lunarMonth, + leapMonth: mapping[0] //闰月 + } +} + +//日期累加 +var _dateAdd = function(lunar, value, unit) { + if (unit == 'M') { + return _chineseLunar.monthAdd(lunar, value) + } else { + //转换为阳历,计算完再转为农历 + var solar = _chineseLunar.lunarToSolar(lunar) + return _chineseLunar.solarToLunar(solar) + } +} + +/* + 农历相加 + */ +_chineseLunar.dateAdd = function(lunar, expr) { + //分析表达式 + var list = _expression(expr) + + for (var i = 0; i < list.length; i++) { + lunar = _dateAdd(lunar, list[i]) + } + return lunar +} + +/* + 计算两个农历时间的差值,主要计算月份之间的差,其它和公历是一样的 + */ +_chineseLunar.dateDiff = function(lunar1, lunar2, expr) { + //计算农历月份差值 + if (expr == 'M') { + return _chineseLunar.monthDiff(lunar1, lunar2) + } + + //先转成公历,除了月份,其它的都可以按公历计算 + var solar1 = _chineseLunar.lunarToSolar(lunar1) + var solar2 = _chineseLunar.lunarToSolar(lunar2) + //再把农历转到公历 + return _solarDiff(solar2, solar1, expr) +} + +/* + 农历月份相加 + */ +_chineseLunar.monthAdd = function(lunar, inc) { + //如果是Date,则转换为农历 + if (lunar instanceof Date) lunar = _chineseLunar.solarToLunar(lunar) + if (inc == 0) return lunar + + var year = lunar.year, + count + var month = lunar.month + if (lunar.leap || (lunar.leapMonth > 0 && lunar.month > lunar.leapMonth)) month++ + + var run = true + do { + //计算当前年有多少个月 + count = _chineseLunar.monthsOfYear(year) + inc = inc + month - count + if (inc <= 0) { + run = false + month = year == lunar.year ? count + inc : count + inc - month + } else { + year++ + month = 1 + } + } while (run) + + //获取最后的结果年的闰月是哪一个月 + var leapMonth = _chineseLunar.leapMonthOfYear(year) + var leap = false + //如果闰月大于农历月,则月份减1 + if (leapMonth > 0 && month > leapMonth) { + month-- + //如果减完后月份和闰月相等,表示是闰月 + leap = month == leapMonth + } + + return { + year: year, + month: month, + leap: leap, + leapMonth: leapMonth + } +} + +/* + * 返回两段日期的农历差了多少个月,因为有闰月,所以和公历不一样 + * date1和date2允许为公历 + */ +_chineseLunar.monthDiff = function(lunar1, lunar2) { + //如果是公历的日期格式,则转换为农历 + var count = 0 + + //如果数据类型是日期,则转换为农历 + if (lunar1 instanceof Date) lunar1 = _chineseLunar.solarToLunar(lunar1) + if (lunar2 instanceof Date) lunar2 = _chineseLunar.solarToLunar(lunar2) + + //两个日期是同一年 + if (lunar1.year == lunar2.year) { + count = lunar2.month - lunar1.month + //中间有闰月的存在,计数器加一 + if (lunar1.leapMonth >= lunar1.month && lunar1.leapMonth <= lunar2.month) count++ + } else { + //计算首年,如果当前的闰月大于当前月,或者当前年有闰月且当前月等于闰月,但当前月又不是闰月,则要多添加一个月 + count = 12 + if (lunar1.leapMonth > lunar1.month || (lunar1.leapMonth == lunar1.month && !lunar1.isLeaMonth)) count += 1 + count -= lunar1.month + + //计算两年之间中间的年月份 + var year = lunar1.year + 1 + for (var i = year; i < lunar2.year; i++) { + count += _chineseLunar.monthsOfYear(year++) + } + //计算最后一年 + count += lunar2.month + if (lunar2.isLeapMonth || lunar2.month < lunar2.leapMonth) count++ + } + return count +} + +/* + * 计算某年某月一个有多少天 + * daysOfMonth({}) 或者 daysOfMonth(year, month, leap) + */ +_chineseLunar.daysOfMonth = function(year, month, leap) { + if (typeof year == 'object') { + month = year.month + leap = year.leap + year = year.year + } + + var date1 = _chineseLunar.lunarToSolar(year, month, 1, leap) + var leapMonth = _chineseLunar.leapMonthOfYear(year) + if (leapMonth == month && !leap) { + //如果是闰月和当前一月一至,且当前月不是闰月,说明下一个月是闰月,例如2009年5月,这一年闰5月,如果传过来的不是闰月,那么下一个月就是闰月 + leap = true + } else if (month == 12) { + //农历的最后一个月 + year++ + month = 1 + } else { + leap = false + month++ + } + + var date2 = _chineseLunar.lunarToSolar(year, month, 1, leap) + return _chineseLunar.dateDiff(date2, date1, 'd') +} + +//获取农历某一年有多少个月 +_chineseLunar.monthsOfYear = function(year) { + return MAPPING[year - MINYEAR].length - 1 +} + +//获取农历某年的闰月是几月, +_chineseLunar.leapMonthOfYear = function(year) { + var info = MAPPING[year - MINYEAR] + return info ? info[0] : 0 +} + +/* + 农历转阳历 + lunarToSolar({}),或者lunarToSolar(year, month, day, leap) + */ +_chineseLunar.lunarToSolar = function(year, month, day, leap) { + var arg0 = arguments[0] + + //第一个参数是对象 + if (typeof arg0 == 'object' && arguments.length == 1) { + year = arg0.year + month = arg0.month + day = arg0.day + leap = arg0.leap + } + + //根据偏移量取得映射数据 + var offset = year - MINYEAR + //所查询的日期超出范围 + if (offset < 0 || offset > MAPPING.length) { + throw new Error('Specified date range is invalid.') + } + + //取得润月是哪一个月 + var leapMonth = MAPPING[offset][0] + //如果isLeap=true,并且当前月份就是闰月,或者本月有闰月,且当前月份大于闰月,则月份需要加1 + if ((leap && month == leapMonth) || (leapMonth > 0 && month > leapMonth)) { + month += 1 + } + + //取出对应到某个月的片断 + var segment = MAPPING[offset][month] //农历第一天对应公历的具体天 + var mapMonth = Number(segment.substring(0, 2)) + var mapDate = Number(segment.substring(2, 4)) + + if (mapMonth > 12) { + year += 1 + mapMonth -= 12 + } + + var solar = new Date(year, mapMonth - 1, mapDate) + var time = solar.getTime() + (day - 1) * 24 * 60 * 60 * 1000 + return new Date(time) +} + +/* + 公历转农历 + 1.查找对应农历初一是哪一天 + 2.将农历初一转换为公历 + 3.计入偏移量 + */ +_chineseLunar.solarToLunar = function(solar, format) { + var offset = solar.getFullYear() - MINYEAR + //超出范围 + if (offset <= 0 || offset >= MAPPING.length) { + throw new Error('Specified date range is invalid.') + } + + //查找范围内的农历数据 + var data = _findLunar(solar, offset, 0, 13, false) + //如果没有找到,则找前一年的,因为农历在公历之前,并且不会超过一年,查一年就可以了 + data = data || _findLunar(solar, offset - 1, 12, 99, true) + + //还是没有找到,表示超出范围 + if (!data) return false + + //农历初一对应公历的哪一天 + var firstDay = new Date(data.year, data.month - 1, data.day) + var day = _solarDiff(solar, firstDay, 'd') + 1 + + //返回的农历结果 + var result = { + leap: data.leapMonth > 0 && data.leapMonth + 1 == data.lunarMonth, + year: data.lunarYear, + month: data.leapMonth > 0 && data.lunarMonth > data.leapMonth ? data.lunarMonth - 1 : data.lunarMonth, + day: day, + leapMonth: data.leapMonth + } + + //判断是否要格式化结果 + return format && result ? _chineseLunar.format(result, format) : result +} + +//获取中国传统干支的名称 +_chineseLunar.traditionalYearName = function(year) { + var Gan = '甲乙丙丁戊己庚辛壬癸'.split('') + var Zhi = '子丑寅卯辰巳午未申酉戌亥'.split('') + year = year - MINYEAR + 36 + return Gan[year % 10] + Zhi[year % 12] + '年' +} + +//获取中文的年 +_chineseLunar.yearName = function(year) { + var cnStr = '〇,一,二,三,四,五,六,七,八,九'.split(',') + var cYear = year.toString() + var result = '' + for (var i = 0; i < cYear.length; i++) { + result += cnStr[parseInt(cYear.charAt(i))] + } + return result + '年' +} + +//获取中国的生肖 +_chineseLunar.animalName = function(year) { + return '鼠牛虎兔龙蛇马羊猴鸡狗猪'.split('')[(year - 4) % 12] +} + +//获取农历月的名称 +_chineseLunar.monthName = function(month, traditional, leap) { + var monthName = '正,二,三,四,五,六,七,八,九,十,十一,十二'.split(',') + if (traditional) { + monthName[11] = '腊' + } + return (leap ? '闰' : '') + monthName[month - 1] + '月' +} + +//获取农历传统天的名称 +_chineseLunar.dayName = function(lunar) { + switch (lunar) { + case 10: + return '初十' + case 20: + return '二十' + case 30: + return '三十' + default: + return '初十廿卅'.split('')[Math.floor(lunar / 10)] + '一二三四五六七八九十'.split('')[(lunar - 1) % 10] || lunar + } +} + +//格式化农历日期,date是农历的日期 +_chineseLunar.format = function(lunar, expr) { + return expr.replace(/[TAYyMmdD]/g, function(m, i) { + switch (m) { + //获取传统的年 + case 'T': + return _chineseLunar.traditionalYearName(lunar.year) + //获取生肖 + case 'A': + return _chineseLunar.animalName(lunar.year) + //获取中文的年 + case 'Y': + return _chineseLunar.yearName(lunar.year) + //获取数字年 + case 'y': + return lunar.year + //获取月份 + case 'm': + return _chineseLunar.monthName(lunar.month, false, lunar.leap) + //获取传统的月 + case 'M': + return _chineseLunar.monthName(lunar.month, true, lunar.leap) + //获取天 + case 'd': + return _chineseLunar.dayName(lunar.day) + //如果是初一,则显示月,而不是显示 + case 'D': + if (lunar.day == 1) { + return _chineseLunar.monthName(lunar.month, false, lunar.leap) + } else { + return _chineseLunar.dayName(lunar.day) + } + } + }) +} + +export default _chineseLunar diff --git a/src/views/ebiz/attendance/utils/util.js b/src/views/ebiz/attendance/utils/util.js new file mode 100644 index 000000000..2dfd456d5 --- /dev/null +++ b/src/views/ebiz/attendance/utils/util.js @@ -0,0 +1,48 @@ +/** + * @Description: 各种工具类 + * @Author: TSY + * @CreateDate: 2018/6/9 13:28 + */ + +/** + * 判断安卓与IOS平台 + * @returns {string} + */ +export const checkPlatform = function() { + if (/android/i.test(navigator.userAgent)) { + return '1' + } + if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { + return '2' + } +} + +/** + * 日期格式化 + * @param time + * @param format + * @returns {string} + */ +export let formatDate = function(time, format) { + format = format || 'YY年MM月DD日 hh:mm' + let date = time ? new Date(time) : new Date() + let year = date.getFullYear() + let month = date.getMonth() + 1 // 月份是从0开始的 + let day = date.getDate() + let hour = date.getHours() + let min = date.getMinutes() + let sec = date.getSeconds() + let preArr = Array.apply(null, Array(10)).map(function(elem, index) { + return '0' + index + }) // /开个长度为10的数组 格式为 00 01 02 03 + let newTime = format + .replace(/YY/g, year) + .replace(/F/g, hour >= 12 ? 'pm' : 'am') + .replace(/ss/g, preArr[sec] || sec) + .replace(/mm/g, preArr[min] || min) + .replace(/hh/g, hour > 12 && format.includes('F') ? hour - 12 : format.includes('F') ? hour : preArr[hour] || hour) + .replace(/DD/g, preArr[day] || day) + .replace(/MM/g, preArr[month] || month) + + return newTime +} diff --git a/src/views/ebiz/performance/PerformanceInfo.vue b/src/views/ebiz/performance/PerformanceInfo.vue index 6c6a7cc53..8a819aca0 100644 --- a/src/views/ebiz/performance/PerformanceInfo.vue +++ b/src/views/ebiz/performance/PerformanceInfo.vue @@ -33,8 +33,9 @@ {{Name}}
+
团队长
@@ -377,4 +378,9 @@ export default { border-radius: 20px; position: absolute; } +.captain{ + z-index: 2000; + text-align: center; + width:26px; +} \ No newline at end of file