From f73c7984a56674928ee1e5bcb66a0230194f0f3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Thu, 13 Jul 2023 14:13:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=80=83=E5=8B=A4=E6=A8=A1?= =?UTF-8?q?=E5=9D=97UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/images/icon_grayPullDown.png | Bin 0 -> 3847 bytes star_lock/images/icon_left_black.png | Bin 0 -> 1467 bytes star_lock/images/icon_right_black.png | Bin 0 -> 2516 bytes star_lock/images/lan/lan_en.json | 47 +- star_lock/images/lan/lan_keys.json | 47 +- star_lock/images/lan/lan_zh.json | 47 +- .../main/icon_checkInRankingListTop.png | Bin 0 -> 9686 bytes star_lock/lib/appRouters.dart | 18 + .../checkingInAddHolidays_page.dart | 109 ++++ .../checkingInDetail_page.dart | 500 ++++++++++++++++++ .../checkingInList/checkingInList_page.dart | 210 ++++++-- .../checkingInSet/checkingInSet_page.dart | 2 +- .../checkingInAddStaff_page.dart | 11 +- .../checkingInSetHolidays_page.dart | 187 +++++++ .../checkingInSetWorkTime_page.dart | 4 +- .../checkingInSetWorkdaySet_page.dart | 25 +- .../electronicKeyPeriodValidity_page.dart | 14 +- .../normallyOpenMode_page.dart | 14 +- star_lock/lib/tools/showCalendar.dart | 54 ++ star_lock/lib/translations/lanKeyEntity.dart | 191 ++++++- star_lock/pubspec.yaml | 5 +- 21 files changed, 1361 insertions(+), 124 deletions(-) create mode 100644 star_lock/images/icon_grayPullDown.png create mode 100644 star_lock/images/icon_left_black.png create mode 100644 star_lock/images/icon_right_black.png create mode 100644 star_lock/images/main/icon_checkInRankingListTop.png create mode 100644 star_lock/lib/main/lockDetail/checkingIn/checkingInAddHolidays/checkingInAddHolidays_page.dart create mode 100644 star_lock/lib/main/lockDetail/checkingIn/checkingInDetail/checkingInDetail_page.dart create mode 100644 star_lock/lib/main/lockDetail/checkingIn/checkingInSetHolidays/checkingInSetHolidays_page.dart create mode 100644 star_lock/lib/tools/showCalendar.dart diff --git a/star_lock/images/icon_grayPullDown.png b/star_lock/images/icon_grayPullDown.png new file mode 100644 index 0000000000000000000000000000000000000000..561f1dfbe54323c28892fe9bbdc27ab4d260742f GIT binary patch literal 3847 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 VGOplfE+zl~002ovPDHLkV1g7Rf5`v< literal 0 HcmV?d00001 diff --git a/star_lock/images/icon_right_black.png b/star_lock/images/icon_right_black.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1f6f058c0aa1cdd27e014bc4970e6612002592 GIT binary patch literal 2516 zcmZXWX*ksT8^*uCnZX!KGuF{TgJe4;v<%UV?2)AzoYF9;A(W+*M&)N@2@z6gXpZc= zO0s2SDRNSWW0@w09LquWm}Bd&*Z&vK{an}Qxv%Sfald))I@()FV0L2w01`IV=BIZy z{BzL4JKB2O^F08fk8R9NsbTKlvTymiI^*B2mGqYHd(Y~BVAy~4%70e6)bsXAcVja1 zRi|f@?^uiJV^p-m)3_w;fhVz=U`Le~8vo-V zH9<}|cX`5p7YBsRK|PNvO<=@GorrPZ>(&1=CCoq_i3*g5>FLha^)T>&7k-YBr3%Q7N zW9gq4>+9>SxX<&qf@dI29i0ZRj~r7GPG8k_9|ESKpLb>t?tvt*C-*g0c|j~`fn9NF>4tXMy`J&1IVfnj_A=VY@>58YLsC*9xn>6eZ4Mf zg<3(av@HbND^(1|1DNf8_AK+?k(Q`6a7V{b6|f#bEmHPM2ZrJy!jve6l|xsg+&Q{f zRTOh3R(c{A5R#LXP1bW~X9JkJK}bsEbUESxYYTdUR zc*)_|Ejw}1A0g8z0XkAJcl1n{Wfcy~|9}J7oBceVQB8h+el{hU>edPF_w+87gdtx~ z9uyi(7)kZp6J?u+3_5w8TqWmm{R)BX;5hKH6vV{DFziiE2V^4%c*(iwIDddBywuF8xH}~} zosYiAWGiZ9&KU$B<12N)weL4jAtvQ;b_d67NRdXwULiFgbWGF`7`e3h!Anpp(bP#b z))@SwsMU|+1EC2S@$-KG&#Gb!;2>YFRK4ruN)_&4{4QYKc#eXm4+vo=AlAJ^qq0Mx z%3z6k2O7yp$U+mVDYO`Gd%A^I&0#BS2eGn{Xc*N9R>Bt~c z1Q?pc9pFXha9CPz{PB`)F{^ zHcMeTLjRCWaWP_{xk0PmS82NrF6Q1A7fn03ck@G;hWZ4Cd*gD)V{>MDW5(Dmuz+N! zI**?E>SS+HT;;seoIZhWB@eOoEE?5yt#YM=ILWqd^Ss3E)HkU7N4K=vs;}_as;3EnYcm`2`~IIXC{Uz%K)kYj;M&b4 zwX7V9BB8rlrOggH=!jEcq?^VKT@aoqJjFZ6PAn}izvR`|a>N;k)2t1}A;?1h-k~y8 zi6-vyl#sH1O>(O}L=VGtYGYE~r6Oz-|Lg}a6L2L?dcNRpQ>)85^510SCWM59_^vuS z^=(0LE8q}IXzcMC5js;^K6>S=?>*1M5@;>&{AL6Gyn=xcJZc*E19ZD)xRG7 zQ{Tp_C_ua^&Ij>cZyX z&-kHQxMt0Bfrve=rbj}~vRTJ2Uah`kE`{Nq0VsnQQu~v{0X5FAs)KT#H?juOj)#vG zc|hn!ywwMo!1u3^NIC8~>Ig=(%mwF?Mv_bfhT3IgOf9R-HpY<5fibzSN=bwFIMe3Q|f zmS%t*A*R^zjsZ=7O~zKLKt8t4db(V^e)Dg7#B;HK|7k)1%InHl!2_8tV&K8Hz{p#& z9h;UEIN;f`FibxyUw)L>Mg=F=VS|W9TidQM2(#L<8deI{n%o&50zPVFD z@r!S8#N}+7Q};zc*bYE9N2c+i)s5iCCBa;Pl93MK_!sTr>DJso?IE!E1P*er{3hIUK-X~bxlKbhL`eE4DTp)G zH$RNPS}|RT$zH4ec5KZd%bUC4%Mm81k$qt=^%*2tx{Wa5;gC^9*_JmZfeO4b%aMyu zI?|8Rh|C5X)X$S6e?4Q1>ZpZ*iHsS??w9@vq!2O=NmhIwYJHRVzHZzjTLfmz5R^Vk zvg-zdcZ+RJdUqG9kB5pG6LLkkx3=Zt9Ns@u2n>4^Au>E3c%*{sWHtls@azSXrk zt507JbhNKUYm7wz`>&Z5^8nl2c6G2IWQ=8A@_6L6D(&pvMFSPkLr?T?3LOgA zADR`b8mb!;Yo1;H3XqDYg@uLL((-aMghJ*!lURZ#?Y4QP)1Iy2+;tT=>jdT1VvWR; z*ZS9IqXf04H?wMnc>3G4;w+3u1?9D4q&{_WjcSd_% literal 0 HcmV?d00001 diff --git a/star_lock/images/lan/lan_en.json b/star_lock/images/lan/lan_en.json index b1e773e2..e0d24590 100644 --- a/star_lock/images/lan/lan_en.json +++ b/star_lock/images/lan/lan_en.json @@ -26,13 +26,20 @@ "failureTime":"Failure Time", "effectiveDate":"Effective Date", "failureDate":"Failure Date", - "Monday":"M", - "Tuesday":"T", - "Wednesday":"W", - "Thursday":"T", - "Friday":"F", - "Saturday":"S", - "Sunday":"S", + "monday":"Monday", + "tuesday":"Tuesday", + "wednesday":"Wednesday", + "thursday":"Thursday", + "friday":"Friday", + "saturday":"Saturday", + "sunday":"Sunday", + "mondayShort":"M", + "tuesdayShort":"T", + "wednesdayShort":"W", + "thursdayShort":"T", + "fridayShort":"F", + "saturdayShort":"S", + "sundayShort":"S", "realNameAuthentication":"RealNameAuthentication", "sendKeyBottomTip":"The recipient can use it unlimited times during the validity period", @@ -82,6 +89,32 @@ "work":"Work", "workday":"Workday", "holidays":"Holidays", + "punchingMode":"Punching Mode", + "whetherTheEmployeeHasAKey":"If The Employee Has A Key", + "selectKey":"Select Key", + "officeHours":"Office Hours", + "closingTime":"Closing Time", + "thisWeek":"This Week", + "singleDayWeekend":"Single Day Weekend", + "twoDaysOff":"Two Days Off", + "oddOrEvenDaysOff":"Odd Or Even Days Off", + "year":"Year", + "month":"Month", + "libertyDay":"Liberty Day", + "coverDate":"Cover Date", + "addedHoliday":"Added Holiday", + "startDate":"Start Date", + "accessDate":"Access Date", + "mustFillIn":"Must Fill In", + "endDate":"End Date", + "dailyCharts":"Daily Charts", + "monthlyLeaderboard":"Monthly Leader board", + "noAttendanceRecord":"No Attendance Record", + "everyoneIsVeryMotivated":"Everyone Is Very Motivated", + "workingHoursWereNotReleased":"Working Hours Were Not Released", + "beLate":"Be Late", + "leaveEarly":"Leave Early", + "noCardPunched":"No Card Punched", "basicInformation":"Basic Information", "wirelessKeyboard":"Wireless Keyboard", diff --git a/star_lock/images/lan/lan_keys.json b/star_lock/images/lan/lan_keys.json index 92a56b4c..5fbcd5ce 100644 --- a/star_lock/images/lan/lan_keys.json +++ b/star_lock/images/lan/lan_keys.json @@ -26,13 +26,20 @@ "failureTime":"failureTime", "effectiveDate":"effectiveDate", "failureDate":"failureDate", - "Monday":"Monday", - "Tuesday":"Tuesday", - "Wednesday":"Wednesday", - "Thursday":"Thursday", - "Friday":"Friday", - "Saturday":"Saturday", - "Sunday":"Sunday", + "monday":"monday", + "tuesday":"tuesday", + "wednesday":"wednesday", + "thursday":"thursday", + "friday":"friday", + "saturday":"saturday", + "sunday":"sunday", + "mondayShort":"mondayShort", + "tuesdayShort":"tuesdayShort", + "wednesdayShort":"wednesdayShort", + "thursdayShort":"thursdayShort", + "fridayShort":"fridayShort", + "saturdayShort":"saturdayShort", + "sundayShort":"sundayShort", "realNameAuthentication":"realNameAuthentication", "sendKeyBottomTip":"sendKeyBottomTip", @@ -82,6 +89,32 @@ "work":"work", "workday":"workday", "holidays":"holidays", + "punchingMode":"punchingMode", + "whetherTheEmployeeHasAKey":"whetherTheEmployeeHasAKey", + "selectKey":"selectKey", + "officeHours":"officeHours", + "closingTime":"closingTime", + "thisWeek":"thisWeek", + "singleDayWeekend":"singleDayWeekend", + "twoDaysOff":"twoDaysOff", + "oddOrEvenDaysOff":"oddOrEvenDaysOff", + "year":"year", + "month":"month", + "libertyDay":"libertyDay", + "coverDate":"coverDate", + "addedHoliday":"addedHoliday", + "startDate":"startDate", + "accessDate":"accessDate", + "mustFillIn":"mustFillIn", + "endDate":"endDate", + "dailyCharts":"dailyCharts", + "monthlyLeaderboard":"monthlyLeaderboard", + "noAttendanceRecord":"noAttendanceRecord", + "everyoneIsVeryMotivated":"everyoneIsVeryMotivated", + "workingHoursWereNotReleased":"workingHoursWereNotReleased", + "beLate":"beLate", + "leaveEarly":"leaveEarly", + "noCardPunched":"noCardPunched", "basicInformation":"basicInformation", "wirelessKeyboard":"wirelessKeyboard", diff --git a/star_lock/images/lan/lan_zh.json b/star_lock/images/lan/lan_zh.json index 3f91ecc8..4a36f461 100644 --- a/star_lock/images/lan/lan_zh.json +++ b/star_lock/images/lan/lan_zh.json @@ -26,13 +26,20 @@ "failureTime":"失效时间", "effectiveDate":"生效日期", "failureDate":"失效日期", - "Monday":"一", - "Tuesday":"二", - "Wednesday":"三", - "Thursday":"四", - "Friday":"五", - "Saturday":"六", - "Sunday":"日", + "monday":"星期一", + "tuesday":"星期二", + "wednesday":"星期三", + "thursday":"星期四", + "friday":"星期五", + "saturday":"星期六", + "sunday":"星期日", + "mondayShort":"一", + "tuesdayShort":"二", + "wednesdayShort":"三", + "thursdayShort":"四", + "fridayShort":"五", + "saturdayShort":"六", + "sundayShort":"日", "realNameAuthentication":"实名认证", "sendKeyBottomTip":"接收者在有效期内可以不限次数使用", @@ -82,6 +89,32 @@ "work":"工作", "workday":"工作日", "holidays":"节假日", + "punchingMode":"打卡方式", + "whetherTheEmployeeHasAKey":"员工是否有钥匙", + "selectKey":"选择钥匙", + "officeHours":"上班时间", + "closingTime":"下班时间", + "thisWeek":"本周", + "singleDayWeekend":"单休", + "twoDaysOff":"双休", + "oddOrEvenDaysOff":"单双休", + "year":"年", + "month":"月", + "libertyDay":"放假日期", + "coverDate":"补班日期", + "addedHoliday":"添加假日", + "startDate":"开始日期", + "accessDate":"接入日期", + "mustFillIn":"必填", + "endDate":"结束日期", + "dailyCharts":"日榜", + "monthlyLeaderboard":"月榜", + "noAttendanceRecord":"无考勤记录", + "everyoneIsVeryMotivated":"大家干劲十足", + "workingHoursWereNotReleased":"工作时长未出炉", + "beLate":"迟到", + "leaveEarly":"早退", + "noCardPunched":"未打卡", "basicInformation":"基本信息", "wirelessKeyboard":"无线键盘", diff --git a/star_lock/images/main/icon_checkInRankingListTop.png b/star_lock/images/main/icon_checkInRankingListTop.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6070e022b60a13dccd7c4d4b213e98ecc3d325 GIT binary patch literal 9686 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 NWF!>D>%JO?{14F+Iv@Z5 literal 0 HcmV?d00001 diff --git a/star_lock/lib/appRouters.dart b/star_lock/lib/appRouters.dart index 2c83e4be..f8bb22c6 100644 --- a/star_lock/lib/appRouters.dart +++ b/star_lock/lib/appRouters.dart @@ -6,9 +6,12 @@ import 'login/forgetPassword/starLock_forgetPassword_page.dart'; import 'login/login/starLock_login_page.dart'; import 'login/register/starLock_register_page.dart'; import 'login/seletCountryRegion/seletCountryRegion_page.dart'; +import 'main/lockDetail/checkingIn/checkingInAddHolidays/checkingInAddHolidays_page.dart'; +import 'main/lockDetail/checkingIn/checkingInDetail/checkingInDetail_page.dart'; import 'main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart'; import 'main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart'; import 'main/lockDetail/checkingIn/checkingInSetAddStaff/checkingInAddStaff_page.dart'; +import 'main/lockDetail/checkingIn/checkingInSetHolidays/checkingInSetHolidays_page.dart'; import 'main/lockDetail/checkingIn/checkingInSetStaffManage/checkingInStaffManage_page.dart'; import 'main/lockDetail/checkingIn/checkingInSetWorkTime/checkingInSetWorkTime_page.dart'; import 'main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart'; @@ -127,6 +130,9 @@ abstract class Routers { static const checkingInAddStaffPage = '/CheckingInAddStaffPage';// 添加员工 static const checkingInSetWorkTimePage = '/CheckingInSetWorkTimePage';// 工作时间设置 static const checkingInSetWorkdaySet = '/CheckingInSetWorkdaySet';// 工作日设置 + static const checkingInSetHolidaysPage = '/CheckingInSetHolidaysPage';// 节假日设置 + static const checkingInAddHolidaysPage = '/CheckingInAddHolidaysPage';// 添加假日 + static const checkingInDetailPage = '/CheckingInDetailPage';// 考勤详情 static const mineSetPage = '/MineSetPage';// 我的设置 static const mineMultiLanguagePage = '/MineMultiLanguagePage';// 我的设置 @@ -399,5 +405,17 @@ abstract class AppRouters { name: Routers.checkingInSetWorkdaySet, page: () => const CheckingInSetWorkdaySet(), ), + GetPage( + name: Routers.checkingInSetHolidaysPage, + page: () => const CheckingInSetHolidaysPage(), + ), + GetPage( + name: Routers.checkingInAddHolidaysPage, + page: () => const CheckingInAddHolidaysPage(), + ), + GetPage( + name: Routers.checkingInDetailPage, + page: () => CheckingInDetailPage(), + ), ]; } \ No newline at end of file diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInAddHolidays/checkingInAddHolidays_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInAddHolidays/checkingInAddHolidays_page.dart new file mode 100644 index 00000000..9bd9b126 --- /dev/null +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInAddHolidays/checkingInAddHolidays_page.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +import '../../../../app_settings/app_colors.dart'; +import '../../../../tools/commonItem.dart'; +import '../../../../tools/showCalendar.dart'; +import '../../../../tools/submitBtn.dart'; +import '../../../../tools/titleAppBar.dart'; +import '../../../../translations/trans_lib.dart'; + +class CheckingInAddHolidaysPage extends StatefulWidget { + const CheckingInAddHolidaysPage({Key key}) : super(key: key); + + @override + State createState() => _CheckingInAddHolidaysPageState(); +} + +class _CheckingInAddHolidaysPageState extends State { + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.mainBackgroundColor, + appBar: TitleAppBar(barTitle:TranslationLoader.lanKeys.addedHoliday.tr, haveBack:true, backgroundColor: AppColors.mainColor), + body: Column( + children: [ + CommonItem(leftTitel:TranslationLoader.lanKeys.name.tr, rightTitle:"", isHaveLine: true, isHaveRightWidget: true, rightWidget: getTFWidget("(${TranslationLoader.lanKeys.mustFillIn.tr})")), + CommonItem(leftTitel:TranslationLoader.lanKeys.startDate.tr, rightTitle:"(${TranslationLoader.lanKeys.mustFillIn.tr})", isHaveLine: true, isHaveDirection: false, action: () async { + await showDialog(context: context, + builder: (context) { + return ShowCalendar(datePickerMode: DatePickerMode.day, seletAction: (dateTime){ + print("111111$dateTime"); + Navigator.of(context).pop(true); + }); + }); + }), + CommonItem(leftTitel:TranslationLoader.lanKeys.endDate.tr, rightTitle:"(${TranslationLoader.lanKeys.mustFillIn.tr})", isHaveLine: true, isHaveDirection: false, action: () async { + await showDialog(context: context, + builder: (context) { + return ShowCalendar(datePickerMode: DatePickerMode.day, seletAction: (dateTime){ + Navigator.of(context).pop(true); + }); + }); + }), + CommonItem(leftTitel:TranslationLoader.lanKeys.coverDate.tr, rightTitle:"", isHaveLine: false, isHaveDirection: false, action: () async { + await showDialog(context: context, + builder: (context) { + return ShowCalendar(datePickerMode: DatePickerMode.day, seletAction: (dateTime){ + Navigator.of(context).pop(true); + }); + }); + }), + SizedBox(height: 50.w,), + SubmitBtn(btnName: TranslationLoader.lanKeys.sure.tr, borderRadius: 20.w, margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 30.w), padding: EdgeInsets.only(top: 25.w, bottom: 25.w), + onClick: (){ + + } + ), + ], + ), + ); + } + + Widget getTFWidget(String tfStr){ + return Container( + height: 50.h, + width: 300.w, + // color: Colors.red, + child: Row( + children: [ + Expanded( + child: TextField( + //输入框一行 + maxLines: 1, + // controller: _controller, + autofocus: false, + textAlign:TextAlign.end, + decoration: InputDecoration( + //输入里面输入文字内边距设置 + contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0), + hintText: tfStr, + //不需要输入框下划线 + border: InputBorder.none, + ), + ), + ), + SizedBox(width: 10.w,), + ], + ), + ); + } + + Widget whetherTheEmployeeHasAKeyWidget(String title, Function action){ + return GestureDetector( + onTap: (){ + + }, + child: Row( + children: [ + Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,), + SizedBox(width: 5.w,), + Text(title), + ], + ), + ); + } + +} diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInDetail/checkingInDetail_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInDetail/checkingInDetail_page.dart new file mode 100644 index 00000000..0c427c2b --- /dev/null +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInDetail/checkingInDetail_page.dart @@ -0,0 +1,500 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +import '../../../../app_settings/app_colors.dart'; +import '../../../../tools/titleAppBar.dart'; +import '../../../../translations/trans_lib.dart'; + +class CheckingInDetailPage extends StatefulWidget { + const CheckingInDetailPage({Key key}) : super(key: key); + + @override + _CheckingInDetailPageState createState() => _CheckingInDetailPageState(); +} + +class _CheckingInDetailPageState extends State { + int _year = DateTime.now().year; + int _month = DateTime.now().month; + int _day = DateTime.now().day; + final List _datas = []; + final List _listDatas = []; + + @override + void initState() { + // TODO: implement initState + //设置默认当前月日期 + _setDatas(year: _year, month: _month); + + //设置模拟数据,日历月事件,可根据接口返回的结果 + _loadAttendanceMonthRecord( "$_year-$_month"); + //日历日事件 + _loadAttendanceDayRecord("$_year-$_month-$_day"); + + super.initState(); + } + + //加载月历事件,请求接口 + _loadAttendanceMonthRecord(String dateTime) async { + CalendarModel bean1 = CalendarModel(year: _year,month: _month,day: 1,workType: "2"); + CalendarModel bean2 = CalendarModel(year: _year,month: _month,day: 2,workType: "1"); + CalendarModel bean3 = CalendarModel(year: _year,month: _month,day: 3,workType: "2"); + CalendarModel bean4 = CalendarModel(year: _year,month: _month,day: 4,workType: "0"); + CalendarModel bean5 = CalendarModel(year: _year,month: _month,day: 5,workType: "0"); + CalendarModel bean6 = CalendarModel(year: _year,month: _month,day: 6,workType: "1"); + _listDatas.add(bean1); + _listDatas.add(bean2); + _listDatas.add(bean3); + _listDatas.add(bean4); + _listDatas.add(bean5); + _listDatas.add(bean6); + + setState(() { + for (int i = 0; i < _datas.length; i++) { + for (int j = 0; j < _listDatas.length; j++) { + if (_datas[i].year== _listDatas[j].year && + _datas[i].month == _listDatas[j].month && + _datas[i].day == _listDatas[j].day) { + _datas[i].workType = _listDatas[j].workType; + } + } + } + }); + } + + //加载日事件,请求接口 + _loadAttendanceDayRecord(String dateTime) async{ + //可根据接口返回的内容在日历下面打卡信息或者其余内容 + print("点击的是$dateTime"); + } + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: TitleAppBar(barTitle:"张三", haveBack:true, backgroundColor: AppColors.mainColor), + body: SingleChildScrollView( + child: Column( + children: [ + Container( + // margin: EdgeInsets.all(20.sp), + decoration: BoxDecoration( + //设置颜色 + color: Colors.white, + borderRadius: BorderRadius.all(Radius.circular(12.r)), + //设置四周边框 + ), + child: Column( + children: [ + _yearHeader(), + SizedBox(height: 10.h), + _weekHeader(), + _everyDay(), + _bottomStatisticsWidget() + ], + ), + ), + + //下面可以添加日事件中的信息,例如打卡信息 + Container(), + ], + ))); + } + + //头部年 + Widget _yearHeader() { + return Container( + height: 30, + margin: const EdgeInsets.only(top: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + GestureDetector( + onTap: () { + _lastMonth(); + }, + child: Container( + // margin: EdgeInsets.only(left: 20.w), + child: Image( + width: 30.w, + height: 30.w, + image: const AssetImage("images/icon_left_black.png"), + ), + ), + ), + SizedBox(width: 60.w,), + Text("$_year-$_month", style: TextStyle(fontSize: 34.sp, color: Colors.black, fontWeight: FontWeight.w500)), + SizedBox(width: 60.w,), + GestureDetector( + onTap: () { + _nextMonth(); + }, + child: Container( + // margin: EdgeInsets.only(right: 20.sp), + child: Image( + width: 30.w, + height: 30.h, + image: const AssetImage("images/icon_right_black.png"), + ), + ), + ), + ], + ), + ); + } + + //中部周 + Widget _weekHeader() { + var array = ["一", "二", "三", "四", "五", "六", "日"]; + return Container( + height: 50.h, + child: GridView.builder( + padding: const EdgeInsets.only(left: 10, right: 10), + itemCount: array.length, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + //横轴元素个数 + crossAxisCount: 7, + //纵轴间距 + // mainAxisSpacing: ScreenUtil().setHeight(10), + // 横轴间距 + // crossAxisSpacing: ScreenUtil().setWidth(15), + //子组件宽高长度比例 + childAspectRatio: 2), + itemBuilder: (context, index) { + return Container( + alignment: Alignment.center, + child: Text( + array[index], + style: TextStyle( + color: index == 5 || index == 6 + ? const Color(0xFFC4C8D0) + : const Color(0xFF3C3E43), + fontSize: 30.sp), + )); + }, + ), + ); + } + + //底部日 + Widget _everyDay() { + return Container( + child: GridView.builder( + padding: EdgeInsets.only(left: 10.sp, top: 10.sp, right: 10.sp), + itemCount: _getRowsForMonthYear(year: _year, month: _month) * 7, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + //横轴元素个数 + crossAxisCount: 7, + // //纵轴间距 + // mainAxisSpacing: ScreenUtil().setHeight(10), + // // 横轴间距 + // crossAxisSpacing: ScreenUtil().setWidth(10), + //子组件宽高长度比例 + childAspectRatio: 1), + itemBuilder: (context, index) { + return GestureDetector( + onTap: () { + setState(() { + if (_datas[index].month == _month) { + //判断点击的是否是当月日期,只对当前月点击的日期做处理 + for (int i = 0; i < _datas.length; i++) { + if (i == index) { + //切换至选中的日期 + _day = _datas[i].day; + _datas[i].isSelect = true; + + //加载选中的日期事件 + _loadAttendanceDayRecord( "${_datas[i].year}-${_datas[i].month}-${_datas[i].day}"); + } else { + _datas[i].isSelect = false; + } + } + } else { + //不是当月的不做处理 + // _datas[index].is_select=false; + } + }); + }, + child: Container( + child: Column( + children: [ + Container( + width: 40.w, + height: 40.w, + //设置底部背景 + decoration: _datas[index].isSelect + ? const BoxDecoration( + color: Color(0xFF2C91F6), + shape: BoxShape.circle, + ) + : const BoxDecoration(), + child: Center( + child: Text( + //不是当前月不显示值 + _datas[index].month == _month + ? _datas[index].day.toString() + : "", + textAlign: TextAlign.center, + //设置选中字体颜色,以及周末和工作日颜色 + style: _datas[index].isSelect + ? TextStyle( + fontSize: 32.sp, color: const Color(0xFFFFFFFF)) + : (index % 7 == 5 || index % 7 == 6 + ? TextStyle( + fontSize: 32.sp, color: const Color(0xFFC4C8D0)) + : TextStyle( + fontSize: 32.sp, color: const Color(0xFF3C3E43))), + ), + ), + ), + const SizedBox(height: 5), + //设置底部小圆点,非当前月的不显示,设置为透明,其余的根据状态判断显示 + _datas[index].month == _month && + _datas[index].workType != "" && + _datas[index].workType != "0" + ? Container( + height: 6.0, + width: 6.0, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: _datas[index].workType == "1" + ? const Color(0xFFF48835) + : const Color(0xFF2C91F6)), + ) + : Container(), + ], + ), + ), + ); + }, + ), + ); + } + + Widget _bottomStatisticsWidget(){ + return Column( + children: [ + Row( + children: [ + Container( + width: 1.sw, + // height: 40.h, + padding: EdgeInsets.only(left: 50.w,top: 5.h, bottom: 5.h), + color: Colors.grey, + child: Text("月统计", style: TextStyle(color: Colors.white, fontSize: 32.sp, fontWeight: FontWeight.w500),), + ), + ], + ), + _bottomStatisticsItemWidget(Colors.red ,"迟到", "0"), + _bottomStatisticsItemWidget(Colors.orange ,"早退", "0"), + _bottomStatisticsItemWidget(Colors.grey ,"未打卡", "0"), + ], + ); + } + + Widget _bottomStatisticsItemWidget(Color color,String leftTitel, String rightTitle,){ + return Column( + children: [ + Container( + height: 70.h, + padding: EdgeInsets.only(left:20.w, right: 10.w, top: 20.w, bottom: 20.w), + child: Row( + children: [ + SizedBox(width:20.w), + Container( + width: 35.w, + height: 35.w, + decoration: BoxDecoration( + color: color, + borderRadius:BorderRadius.all(Radius.circular(35.h)) + ), + ), + SizedBox(width:20.w), + Expanded(child: Text(leftTitel, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500))), + SizedBox(width:20.w), + Text(rightTitle, textAlign: TextAlign.end, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500)), + SizedBox(width:10.w), + ], + ), + ), + Container(height: 0.5.h, color: Colors.grey,) + ], + ); + } + + // 获取行数 + int _getRowsForMonthYear({int year, int month}) { + //当前月天数 + var currentMonthDays = _getCurrentMonthDays(year: year, month: month); + // + var placeholderDays = _getPlaceholderDays(year: year, month: month); + + int rows = (currentMonthDays + placeholderDays) ~/ 7; + + int remainder = (currentMonthDays + placeholderDays) % 7; + if (remainder > 0) { + rows = rows + 1; + } + return rows; + } + + // 得到这个月的第一天是星期几 + int _getPlaceholderDays({int year, int month}) { + return DateTime(year, month).weekday - 1 % 7; + } + + // 获取当前月份天数 + int _getCurrentMonthDays({int year, int month}) { + if (month == 2) { + //判断2月份是闰年月还是平年 + if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { + return 29; + } else { + return 28; + } + } else if (month == 1 || + month == 3 || + month == 5 || + month == 7 || + month == 8 || + month == 10 || + month == 12) { + return 31; + } else { + return 30; + } + } + + /// 获取展示信息 + _setDatas({int year, int month}) { + /// 上个月占位 + var lastYear = year; + var lastMonth = month - 1; + if (month == 1) { + lastYear = year - 1; + lastMonth = 12; + } + + var placeholderDays = _getPlaceholderDays(year: year, month: month); + var lastMonthDays = _getCurrentMonthDays(year: lastYear, month: lastMonth); + var firstDay = lastMonthDays - placeholderDays; + for (var i = 0; i < placeholderDays; i++) { + _datas.add(CalendarModel( + year: lastYear, + month: lastMonth, + day: firstDay + i + 1, + isSelect: false, + workType: "")); + } + + /// 本月显示 + var currentMonthDays = _getCurrentMonthDays(year: year, month: month); + for (var i = 0; i < currentMonthDays; i++) { + if (i == _day - 1) { + _datas.add(CalendarModel( + year: year, + month: month, + day: i + 1, + isSelect: true, + workType: "")); + } else { + _datas.add(CalendarModel( + year: year, + month: month, + day: i + 1, + isSelect: false, + workType: "")); + } + } + + /// 下个月占位 + var nextYear = year; + var nextMonth = month + 1; + if (month == 12) { + nextYear = year + 1; + nextMonth = 1; + } + var nextPlaceholderDays = + _getPlaceholderDays(year: nextYear, month: nextMonth); + for (var i = 0; i < 7 - nextPlaceholderDays; i++) { + _datas.add(CalendarModel( + year: nextYear, + month: nextMonth, + day: i + 1, + isSelect: false, + workType: "")); + } + } + + // 上月 + _lastMonth() { + setState(() { + if (_month == 1) { + _year = _year - 1; + _month = 12; + } else { + _month = _month - 1; + } + _day = 1; //查看上一个月时,默认选中的为第一天 + _datas.clear(); + _setDatas(year: _year, month: _month); + //更新月历事件 + _loadAttendanceMonthRecord( "$_year-$_month"); + //更新日事件 + _loadAttendanceDayRecord("$_year-$_month-$_day"); + }); + } + + // 下月 + _nextMonth() { + if(_month==12){//当前月是12月,下一个月就是下一年 + if(DateTime.now().year>=_year+1){//判断下一年是否大于当前年 + _setNextMonthData(); + } + }else{//当前月不是12月,还处于当前年 + if(DateTime.now().month>=_month+1){ + //判断下一个月是否超过当前月,超过当前月不做操作 + _setNextMonthData(); + } + } + } + + //设置下个月的数据 + _setNextMonthData(){ + setState(() { + if (_month == 12) { + _year = _year + 1; + _month = 1; + } else { + _month = _month + 1; + } + if (_month == DateTime.now().month) { + //如果下个月时当前月,默认选中当天 + _day = DateTime.now().day; + } else { + //如果不是当前月,默认选中第一天 + _day = 1; + } + _datas.clear(); + _setDatas(year: _year, month: _month); + //更新月历事件 + _loadAttendanceMonthRecord( "$_year-$_month"); + //更新日事件 + _loadAttendanceDayRecord("$_year-$_month-$_day"); + }); + } +} + +//日历bean +class CalendarModel { + int year; + int month; + int day; + String workType = "";//日期事件,0,休息,1,异常,2,正常 + bool isSelect = false; + + CalendarModel( + {this.year, this.month, this.day, this.isSelect, this.workType}); +} \ No newline at end of file diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart index 7739a719..964bda7e 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart @@ -6,6 +6,7 @@ import 'package:get/get.dart'; import '../../../../appRouters.dart'; import '../../../../app_settings/app_colors.dart'; import '../../../../tools/showBottomSheetTool.dart'; +import '../../../../tools/showCalendar.dart'; import '../../../../tools/titleAppBar.dart'; import '../../../../translations/trans_lib.dart'; @@ -31,14 +32,157 @@ class _CheckingInListPageState extends State { SizedBox(width: 30.w,), ], ), - body: ListView.builder( - itemCount:10, - itemBuilder: (c, index){ - return _checkingInListItem('images/icon_lock.png', "张三", "2023.6.21 11.15", "2023.6.21 11.15",(){ - // Navigator.pushNamed(context, Routers.electronicKeyDetailPage); - }); - } - ) + body: Column( + children: [ + topInfo(), + SizedBox(height: 10.h,), + middleDayInfo(), + Expanded(child: bottomList()) + ], + ), + ); + } + + Widget topInfo(){ + return Container( + width: 1.sw, + // height: 370.h, + color: Colors.white, + child: Column( + children: [ + SizedBox(height: 30.h,), + Image.asset('images/main/icon_checkInRankingListTop.png', width: 145.w, height: 145.w), + SizedBox(height: 10.h,), + Text(TranslationLoader.lanKeys.noAttendanceRecord.tr, style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w500)), + SizedBox(height: 30.h,), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // SizedBox(width: 30.w,), + Row( + children: [ + SizedBox(width: 40.w,), + Container( + // width: 150.w, + height: 70.h, + // color: Colors.red, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text(TranslationLoader.lanKeys.dailyCharts.tr, style: TextStyle(color: AppColors.mainColor)), + Container(width: 20.w, height: 2.h, color: AppColors.mainColor) + ], + ), + ), + SizedBox(width: 40.w,), + Container( + // width: 100.w, + height: 70.h, + // color: Colors.red, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text(TranslationLoader.lanKeys.monthlyLeaderboard.tr, style: TextStyle(color: Colors.black)), + Container(width: 20.w, height: 2.h, color: Colors.black) + ], + ), + ), + ], + ), + GestureDetector( + onTap: () async { + await showDialog(context: context, + builder: (context) { + return ShowCalendar(datePickerMode: DatePickerMode.day, seletAction: (dateTime){ + Navigator.of(context).pop(true); + }); + }); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text("07-12", style: const TextStyle(color: Colors.black),), + Image.asset('images/icon_grayPullDown.png', width: 50.w, height: 30.w,), + SizedBox(width: 10.w,), + ], + ), + ) + ], + ), + // Container(height: 10.h, color: AppColors.mainBackgroundColor,), + ], + ), + ); + } + + Widget middleDayInfo(){ + return Visibility( + visible: true, + child: Container( + height: 80.h, + color: Colors.white, + margin: EdgeInsets.only(left:15.h, right: 15.h, bottom: 10.h), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + // width: 100.w, + // height: 80.h, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + SizedBox(height: 5.h,), + Text("0", style: TextStyle(color: Colors.black)), + Text(TranslationLoader.lanKeys.beLate.tr, style: TextStyle(color: Colors.black)), + SizedBox(height: 5.h,), + ], + ), + ), + Container( + // width: 100.w, + // height: 80.h, + // color: Colors.red, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + SizedBox(height: 5.h,), + Text("0", style: TextStyle(color: Colors.black)), + Text(TranslationLoader.lanKeys.leaveEarly.tr, style: TextStyle(color: Colors.black)), + SizedBox(height: 5.h,), + ], + ), + ), + Container( + // width: 100.w, + // height: 80.h, + // color: Colors.red, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + SizedBox(height: 5.h,), + Text("0", style: TextStyle(color: Colors.black)), + Text(TranslationLoader.lanKeys.noCardPunched.tr, style: TextStyle(color: Colors.black)), + SizedBox(height: 5.h,), + ], + ), + ), + ], + ), + ), + ); + } + + Widget bottomList(){ + return ListView.separated( + itemCount:10, + itemBuilder: (c, index){ + return _checkingInListItem('images/icon_lock.png', "张三", "2023.6.21 11.15", "2023.6.21 11.15",(){ + Navigator.pushNamed(context, Routers.checkingInDetailPage); + }); + }, + separatorBuilder: (context, index) { + return const Divider(height:1, color: Colors.grey); + }, ); } @@ -46,8 +190,8 @@ class _CheckingInListPageState extends State { return GestureDetector( onTap: action, child: Container( - height: 100.h, - margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), + height: 80.h, + // margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10.w), @@ -55,36 +199,24 @@ class _CheckingInListPageState extends State { child: Row( children: [ SizedBox(width: 30.w,), - Image.asset(lockTypeIcon, width: 50.w, height: 50.w,), - SizedBox(width: 30.w,), - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - // color: Colors.red, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(lockTypeTitle, style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w500), ), - SizedBox(width:20.w), - Text("待接收", style: TextStyle(fontSize: 24.sp, fontWeight: FontWeight.w500), ), - ], - ), - ), - SizedBox(width:20.w), - Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Text("2023.6.21 11.15-2023.6.21 11.15", style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500), ), - ], - ), - ), - SizedBox(width:20.h), - ], - ), + Text("1", style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w500), ), + SizedBox(width: 20.w,), + Container( + width: 60.h, height: 60.h, + decoration: BoxDecoration( + color: AppColors.mainColor, + border: Border.all(width: 1, color: AppColors.mainColor), + borderRadius: BorderRadius.circular(30.h), + ), + padding: EdgeInsets.all(10.w), + child: Image.asset('images/mine/icon_mine_main_defaultAvatar.png', width: 40.w, height: 40.w, color: Colors.white,) ), + SizedBox(width: 20.w,), + Expanded( + child: Text(lockTypeTitle, style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w500), ), + ), + SizedBox(width:20.h), + Image.asset("images/icon_right.png", width: 50.w, height: 50.w,), SizedBox(width:20.h), ], ), diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart index 7c84039a..1da92b2b 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart @@ -41,7 +41,7 @@ class _CheckingInSetPageState extends State { Navigator.pushNamed(context, Routers.checkingInSetWorkdaySet); }), CommonItem(leftTitel:TranslationLoader.lanKeys.holidays.tr, rightTitle:"", isHaveLine: false, isHaveDirection: true, action: (){ - // Navigator.pushNamed(context, Routers.lockEscalationPage); + Navigator.pushNamed(context, Routers.checkingInSetHolidaysPage); }), SizedBox(height: 30.h,), SubmitBtn(btnName: "${TranslationLoader.lanKeys.delete.tr} ${TranslationLoader.lanKeys.company.tr}", diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetAddStaff/checkingInAddStaff_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetAddStaff/checkingInAddStaff_page.dart index 820f2811..be93a7a7 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetAddStaff/checkingInAddStaff_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetAddStaff/checkingInAddStaff_page.dart @@ -26,11 +26,11 @@ class _CheckingInAddStaffPageState extends State { body: Column( children: [ CommonItem(leftTitel:TranslationLoader.lanKeys.name.tr, rightTitle:"", isHaveLine: true, isHaveRightWidget: true, rightWidget: getTFWidget(TranslationLoader.lanKeys.pleaseEnter.tr)), - CommonItem(leftTitel:"打卡方式", rightTitle:"APP", isHaveLine: false, isHaveDirection: true, action: (){ + CommonItem(leftTitel:TranslationLoader.lanKeys.punchingMode.tr, rightTitle:"APP", isHaveLine: false, isHaveDirection: true, action: (){ _showSeletClockInType(); }), SizedBox(height: 10.h,), - CommonItem(leftTitel:"员工是否有钥匙", rightTitle:"", isHaveLine: true, isHaveRightWidget: true, rightWidget: Row( + CommonItem(leftTitel:TranslationLoader.lanKeys.whetherTheEmployeeHasAKey.tr, rightTitle:"", isHaveLine: true, isHaveRightWidget: true, rightWidget: Row( children: [ whetherTheEmployeeHasAKeyWidget("有", (){ @@ -43,11 +43,11 @@ class _CheckingInAddStaffPageState extends State { )), Visibility( visible:true, - child: CommonItem(leftTitel:"账号", rightTitle:"", isHaveLine: true, isHaveRightWidget: true, rightWidget: getTFWidget("请输入员工账号")), + child: CommonItem(leftTitel:TranslationLoader.lanKeys.accountNumber.tr, rightTitle:"", isHaveLine: true, isHaveRightWidget: true, rightWidget: getTFWidget(TranslationLoader.lanKeys.pleaseEnter.tr)), ), Visibility( visible:true, - child: CommonItem(leftTitel:"选择钥匙", rightTitle:"", isHaveLine: false, isHaveDirection: true, action: (){ + child: CommonItem(leftTitel:TranslationLoader.lanKeys.selectKey.tr, rightTitle:"", isHaveLine: false, isHaveDirection: true, action: (){ _showSeletClockInType(); }), ), @@ -65,7 +65,8 @@ class _CheckingInAddStaffPageState extends State { Widget getTFWidget(String tfStr){ return Container( height: 50.h, - width: 500.w, + width: 300.w, + // color: Colors.red, child: Row( children: [ Expanded( diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetHolidays/checkingInSetHolidays_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetHolidays/checkingInSetHolidays_page.dart new file mode 100644 index 00000000..e716a219 --- /dev/null +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetHolidays/checkingInSetHolidays_page.dart @@ -0,0 +1,187 @@ + +import 'package:flutter/material.dart'; +import 'package:flutter_pickers/pickers.dart'; +import 'package:flutter_pickers/style/default_style.dart'; +import 'package:flutter_pickers/style/picker_style.dart'; +import 'package:flutter_pickers/time_picker/model/date_mode.dart'; +import 'package:flutter_pickers/time_picker/model/pduration.dart'; +import 'package:flutter_pickers/time_picker/model/suffix.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +import '../../../../appRouters.dart'; +import '../../../../app_settings/app_colors.dart'; +import '../../../../tools/showBottomSheetTool.dart'; +import '../../../../tools/titleAppBar.dart'; +import '../../../../translations/trans_lib.dart'; + +class CheckingInSetHolidaysPage extends StatefulWidget { + const CheckingInSetHolidaysPage({Key key}) : super(key: key); + + @override + State createState() => _CheckingInSetHolidaysPageState(); +} + +class _CheckingInSetHolidaysPageState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.mainBackgroundColor, + appBar: TitleAppBar(haveTitleWidget: true, titleWidget:titleWidget(), haveBack:true, backgroundColor: AppColors.mainColor, actionsList: [ + GestureDetector( + onTap: (){ + Navigator.pushNamed(context, Routers.checkingInAddHolidaysPage); + }, + child: Image.asset('images/icon_add_white.png', width: 50.w, height: 50.w,) + ), + SizedBox(width: 30.w,), + ], + ), + body: ListView.builder( + itemCount:10, + itemBuilder: (c, index){ + return _checkingInListItem('images/icon_lock.png', "张三", "2023.6.21 11.15", "2023.6.21 11.15",(){ + // Navigator.pushNamed(context, Routers.electronicKeyDetailPage); + }); + } + ) + ); + } + + Widget _checkingInListItem(String lockTypeIcon, String lockTypeTitle, String beginTime, String endTime, Function action){ + return GestureDetector( + onTap: action, + child: Container( + height: 140.h, + margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10.w), + ), + child: Row( + children: [ + Container( + color: const Color(0xFFAFB5D7), + width: 100.w, + height: 140.h, + child: Center(child: Text("7\n${TranslationLoader.lanKeys.month.tr}", textAlign: TextAlign.center, style: TextStyle(fontSize: 32.sp, color: Colors.white),)) + ), + SizedBox(width: 30.w,), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + // color: Colors.red, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(lockTypeTitle, style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w600), ), + ], + ), + ), + SizedBox(height:10.h), + Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text("${TranslationLoader.lanKeys.libertyDay.tr}:2023.6.21 11.15-2023.6.21 11.15", style: TextStyle(fontSize: 24.sp, fontWeight: FontWeight.w500), ), + ], + ), + ), + SizedBox(height:5.h), + Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text("${TranslationLoader.lanKeys.coverDate.tr}:2023.6.21 11.15", style: TextStyle(fontSize: 24.sp, fontWeight: FontWeight.w500), ), + ], + ), + ), + ], + ), + ), + SizedBox(width:20.h), + ], + ), + ), + ); + } + + Widget titleWidget(){ + return GestureDetector( + onTap: (){ + showListType(); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text("${DateTime.now().year}${TranslationLoader.lanKeys.year.tr}", style: const TextStyle(color: Colors.white),), + SizedBox(width: 5.w,), + Image.asset('images/main/icon_lockDetail_checkIn_topTitle.png', width: 30.w, height: 16.w,) + ], + ), + ); + } + + Widget showListType(){ + Pickers.showDatePicker( + context, + // 模式,详见下方 + mode: DateMode.Y, + // 后缀 默认Suffix.normal(),为空的话Suffix() + suffix: Suffix(years: ' 年'), + // 样式 详见下方样式 + pickerStyle: PickerStyle( + cancelButton:GestureDetector( + onTap: (){ + + }, + child: Container( + alignment: Alignment.center, + padding: const EdgeInsets.only(left: 22, right: 12), + child: Text(TranslationLoader.lanKeys.cancel.tr, style: const TextStyle(color: Colors.black, fontSize: 16.0)), + ), + ), + commitButton: GestureDetector( + onTap: (){ + + }, + child: Container( + alignment: Alignment.center, + padding: const EdgeInsets.only(left: 22, right: 12), + child: Text(TranslationLoader.lanKeys.sure.tr, + style: const TextStyle(color: Colors.black, fontSize: 16.0)), + ), + ), + ), + // 默认选中 + selectDate: PDuration(year: 2023), + minDate: PDuration(year: 1900), + maxDate: PDuration(year: 2100), + onConfirm: (p) { + print('longer >>> 返回数据:$p'); + }, + // onChanged: (p) => print(p), + ); + // var list = [TranslationLoader.lanKeys.earlyArrivalList.tr, TranslationLoader.lanKeys.lateList.tr, TranslationLoader.lanKeys.hardWorkingList.tr]; + // ShowBottomSheetTool().showSingleRowPicker( + // //上下文 + // context, + // //默认的索引 + // normalIndex: 0, + // title: "", + // cancelTitle: TranslationLoader.lanKeys.cancel.tr, + // sureTitle: TranslationLoader.lanKeys.sure.tr, + // //要显示的列表 + // //可自定义数据适配器 + // //adapter: PickerAdapter(), + // data: list, + // //选择事件的回调 + // clickCallBack: (int index, var str) { + // + // } + // ); + } + +} diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkTime/checkingInSetWorkTime_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkTime/checkingInSetWorkTime_page.dart index 0b9bd7b5..4a2b1e3e 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkTime/checkingInSetWorkTime_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkTime/checkingInSetWorkTime_page.dart @@ -29,12 +29,12 @@ class _CheckingInSetWorkTimePageState extends State { Widget buildMainUI(){ return Column( children: [ - CommonItem(leftTitel:"上班时间", rightTitle:"11:49", isHaveDirection: true, isHaveLine: true, action:(){ + CommonItem(leftTitel:TranslationLoader.lanKeys.officeHours.tr, rightTitle:"11:49", isHaveDirection: true, isHaveLine: true, action:(){ // ShowSeletDateTime().showDatePicker(context, '2100-01-01 00:00', '1900-01-01 00:00', getNowDate(),'yyyy-MMMM-dd HH:mm', (dateTime, List index) { // // }); }), - CommonItem(leftTitel:"下班时间", rightTitle:"11:49", isHaveDirection: true, action:(){ + CommonItem(leftTitel:TranslationLoader.lanKeys.closingTime.tr, rightTitle:"11:49", isHaveDirection: true, action:(){ // ShowSeletDateTime().showDatePicker(context, '00:00', '00:00', getNowDate(),'HH:mm', (dateTime, List index) { // // }); diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart index 8d9db141..3181fad0 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart @@ -63,7 +63,7 @@ class _CheckingInSetWorkdaySetState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Center(child: Text("自定义", style: TextStyle(fontSize: 32.sp, color: Colors.white))), + Center(child: Text(TranslationLoader.lanKeys.custom.tr, style: TextStyle(fontSize: 32.sp, color: Colors.white))), ], ), ), @@ -72,10 +72,11 @@ class _CheckingInSetWorkdaySetState extends State { width: (1.sw - 10*3)/2, height: 120.h, color: Colors.grey, + padding: EdgeInsets.all(10.w), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Center(child: Text("单双休", style: TextStyle(fontSize: 32.sp, color: Colors.white))), + Expanded(child: Center(child: Text(TranslationLoader.lanKeys.oddOrEvenDaysOff.tr, style: TextStyle(fontSize: 32.sp, color: Colors.white), textAlign: TextAlign.center,))), ], ), ), @@ -89,15 +90,15 @@ class _CheckingInSetWorkdaySetState extends State { padding: EdgeInsets.only(left:10.w, right: 10.w), child: Column( children: [ - CommonItem(leftTitel:"本周", rightTitle:"", allHeight:70.h, isHaveLine: true), - CommonItem(leftTitel:"单休", rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.thisWeek.tr, rightTitle:"", allHeight:70.h, isHaveLine: true), + CommonItem(leftTitel:TranslationLoader.lanKeys.singleDayWeekend.tr, rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ }, child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),) ), - CommonItem(leftTitel:"双休", rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.twoDaysOff.tr, rightTitle:"", allHeight:70.h, isHaveLine: false, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ @@ -115,49 +116,49 @@ class _CheckingInSetWorkdaySetState extends State { padding: EdgeInsets.only(left:10.w, right: 10.w), child: Column( children: [ - CommonItem(leftTitel:"星期一", rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.monday.tr, rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ }, child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),) ), - CommonItem(leftTitel:"星期二", rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.tuesday.tr, rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ }, child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),) ), - CommonItem(leftTitel:"星期三", rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.wednesday.tr, rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ }, child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),) ), - CommonItem(leftTitel:"星期四", rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.thursday.tr, rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ }, child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),) ), - CommonItem(leftTitel:"星期五", rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.friday.tr, rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ }, child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),) ), - CommonItem(leftTitel:"星期六", rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.saturday.tr, rightTitle:"", allHeight:70.h, isHaveLine: true, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ }, child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),) ), - CommonItem(leftTitel:"星期日", rightTitle:"", allHeight:70.h, isHaveLine: false, isHaveRightWidget: true, + CommonItem(leftTitel:TranslationLoader.lanKeys.sunday.tr, rightTitle:"", allHeight:70.h, isHaveLine: false, isHaveRightWidget: true, rightWidget: GestureDetector( onTap: (){ diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyPeriodValidity/electronicKeyPeriodValidity_page.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyPeriodValidity/electronicKeyPeriodValidity_page.dart index 2b37b35d..729b209f 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyPeriodValidity/electronicKeyPeriodValidity_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyPeriodValidity/electronicKeyPeriodValidity_page.dart @@ -67,25 +67,25 @@ class _ElectronicKeyPeriodValidityPageState extends State { String dateStr; switch (index) { case 0: - dateStr = TranslationLoader.lanKeys.Sunday.tr; + dateStr = TranslationLoader.lanKeys.sundayShort.tr; break; case 1: - dateStr = TranslationLoader.lanKeys.Monday.tr; + dateStr = TranslationLoader.lanKeys.mondayShort.tr; break; case 2: - dateStr = TranslationLoader.lanKeys.Tuesday.tr; + dateStr = TranslationLoader.lanKeys.tuesdayShort.tr; break; case 3: - dateStr = TranslationLoader.lanKeys.Wednesday.tr; + dateStr = TranslationLoader.lanKeys.wednesdayShort.tr; break; case 4: - dateStr = TranslationLoader.lanKeys.Thursday.tr; + dateStr = TranslationLoader.lanKeys.thursdayShort.tr; break; case 5: - dateStr = TranslationLoader.lanKeys.Friday.tr; + dateStr = TranslationLoader.lanKeys.fridayShort.tr; break; case 6: - dateStr = TranslationLoader.lanKeys.Saturday.tr; + dateStr = TranslationLoader.lanKeys.saturdayShort.tr; break; default: break; diff --git a/star_lock/lib/tools/showCalendar.dart b/star_lock/lib/tools/showCalendar.dart new file mode 100644 index 00000000..75f776ad --- /dev/null +++ b/star_lock/lib/tools/showCalendar.dart @@ -0,0 +1,54 @@ + + +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +typedef SeletDateCallback(DateTime dateTime); + +class ShowCalendar extends StatelessWidget { + SeletDateCallback seletAction; + DatePickerMode datePickerMode; + + ShowCalendar({Key key, this.seletAction, this.datePickerMode}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Dialog( + // insetPadding: EdgeInsets.all(10), //距离 + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(20))), //形状 + backgroundColor: Colors.white, + clipBehavior: Clip.antiAlias, //强制裁剪 + elevation: 10, + child: SizedBox( + //需要在内部限制下高度和宽度才能更好的显示 + height: 350, + width: 1.sw - 40.w, + child: _calendarDatePicker(datePickerMode), + ), + ); + } + + CalendarDatePicker _calendarDatePicker(DatePickerMode mode){ + return CalendarDatePicker( + initialDate: DateTime.now(), // 初始化选中日期 + // currentDate: DateTime(2020, 10, 18), + firstDate: DateTime(2000, 1, 1), // 开始日期 + lastDate: DateTime(2100, 1, 1), // 结束日期 + initialCalendarMode: mode, // 日期选择样式 + // 选中日期改变回调函数 + onDateChanged:seletAction, + // 月份改变回调函数 + onDisplayedMonthChanged: (dateTime){ + print("onDisplayedMonthChanged $dateTime"); + }, + // 筛选日期可不可点回调函数 + selectableDayPredicate: (dayTime){ + if(dayTime == DateTime(2020, 10, 15) || dayTime == DateTime(2020, 10, 16) || dayTime == DateTime(2020, 10, 17)) { + return false; + } + return true; + } + ); + } +} diff --git a/star_lock/lib/translations/lanKeyEntity.dart b/star_lock/lib/translations/lanKeyEntity.dart index f5189989..959e3b31 100644 --- a/star_lock/lib/translations/lanKeyEntity.dart +++ b/star_lock/lib/translations/lanKeyEntity.dart @@ -27,13 +27,20 @@ class LanKeyEntity { this.failureTime, this.effectiveDate, this.failureDate, - this.Monday, - this.Tuesday, - this.Wednesday, - this.Thursday, - this.Friday, - this.Saturday, - this.Sunday, + this.monday, + this.tuesday, + this.wednesday, + this.thursday, + this.friday, + this.saturday, + this.sunday, + this.mondayShort, + this.tuesdayShort, + this.wednesdayShort, + this.thursdayShort, + this.fridayShort, + this.saturdayShort, + this.sundayShort, this.realNameAuthentication, this.sendKeyBottomTip, @@ -151,6 +158,32 @@ class LanKeyEntity { this.work, this.workday, this.holidays, + this.punchingMode, + this.whetherTheEmployeeHasAKey, + this.selectKey, + this.officeHours, + this.closingTime, + this.thisWeek, + this.singleDayWeekend, + this.twoDaysOff, + this.oddOrEvenDaysOff, + this.year, + this.month, + this.libertyDay, + this.coverDate, + this.addedHoliday, + this.startDate, + this.accessDate, + this.mustFillIn, + this.endDate, + this.dailyCharts, + this.monthlyLeaderboard, + this.noAttendanceRecord, + this.everyoneIsVeryMotivated, + this.workingHoursWereNotReleased, + this.beLate, + this.leaveEarly, + this.noCardPunched, this.lanEnglish, this.lanChinese, @@ -244,13 +277,20 @@ class LanKeyEntity { failureTime = json['failureTime']; effectiveDate = json['effectiveDate']; failureDate = json['failureDate']; - Monday = json['Monday']; - Tuesday = json['Tuesday']; - Wednesday = json['Wednesday']; - Thursday = json['Thursday']; - Friday = json['Friday']; - Saturday = json['Saturday']; - Sunday = json['Sunday']; + monday = json['monday']; + tuesday = json['tuesday']; + wednesday = json['wednesday']; + thursday = json['thursday']; + friday = json['friday']; + saturday = json['saturday']; + sunday = json['sunday']; + mondayShort = json['mondayShort']; + tuesdayShort = json['tuesdayShort']; + wednesdayShort = json['wednesdayShort']; + thursdayShort = json['thursdayShort']; + fridayShort = json['fridayShort']; + saturdayShort = json['saturdayShort']; + sundayShort = json['sundayShort']; realNameAuthentication = json['realNameAuthentication']; sendKeyBottomTip = json['sendKeyBottomTip']; @@ -368,6 +408,32 @@ class LanKeyEntity { work = json['work']; workday = json['workday']; holidays = json['holidays']; + punchingMode = json['punchingMode']; + whetherTheEmployeeHasAKey = json['whetherTheEmployeeHasAKey']; + selectKey = json['selectKey']; + officeHours = json['officeHours']; + closingTime = json['closingTime']; + thisWeek = json['thisWeek']; + singleDayWeekend = json['singleDayWeekend']; + twoDaysOff = json['twoDaysOff']; + oddOrEvenDaysOff = json['oddOrEvenDaysOff']; + year = json['year']; + month = json['month']; + libertyDay = json['libertyDay']; + coverDate = json['coverDate']; + addedHoliday = json['addedHoliday']; + startDate = json['startDate']; + accessDate = json['accessDate']; + mustFillIn = json['mustFillIn']; + endDate = json['endDate']; + dailyCharts = json['dailyCharts']; + monthlyLeaderboard = json['monthlyLeaderboard']; + noAttendanceRecord = json['noAttendanceRecord']; + everyoneIsVeryMotivated = json['everyoneIsVeryMotivated']; + workingHoursWereNotReleased = json['workingHoursWereNotReleased']; + beLate = json['beLate']; + leaveEarly = json['leaveEarly']; + noCardPunched = json['noCardPunched']; lanEnglish = json['lanEnglish']; lanChinese = json['lanChinese']; @@ -459,13 +525,20 @@ class LanKeyEntity { String failureTime; String effectiveDate; String failureDate; - String Monday; - String Tuesday; - String Wednesday; - String Thursday; - String Friday; - String Saturday; - String Sunday; + String monday; + String tuesday; + String wednesday; + String thursday; + String friday; + String saturday; + String sunday; + String mondayShort; + String tuesdayShort; + String wednesdayShort; + String thursdayShort; + String fridayShort; + String saturdayShort; + String sundayShort; String realNameAuthentication; String sendKeyBottomTip; @@ -548,6 +621,33 @@ class LanKeyEntity { String work; String workday; String holidays; + String punchingMode; + String whetherTheEmployeeHasAKey; + String selectKey; + String officeHours; + String closingTime; + String thisWeek; + String singleDayWeekend; + String twoDaysOff; + String oddOrEvenDaysOff; + String year; + String month; + String libertyDay; + String coverDate; + String addedHoliday; + String startDate; + String accessDate; + String mustFillIn; + String endDate; + String dailyCharts; + String monthlyLeaderboard; + String noAttendanceRecord; + String everyoneIsVeryMotivated; + String workingHoursWereNotReleased; + String beLate; + String leaveEarly; + String noCardPunched; + String basicInformation; String wirelessKeyboard; @@ -676,13 +776,20 @@ class LanKeyEntity { map['failureTime'] = failureTime; map['effectiveDate'] = effectiveDate; map['failureDate'] = failureDate; - map['Monday'] = Monday; - map['Tuesday'] = Tuesday; - map['Wednesday'] = Wednesday; - map['Thursday'] = Thursday; - map['Friday'] = Friday; - map['Saturday'] = Saturday; - map['Sunday'] = Sunday; + map['monday'] = monday; + map['tuesday'] = tuesday; + map['wednesday'] = wednesday; + map['thursday'] = thursday; + map['friday'] = friday; + map['saturday'] = saturday; + map['sunday'] = sunday; + map['mondayShort'] = mondayShort; + map['tuesdayShort'] = tuesdayShort; + map['wednesdayShort'] = wednesdayShort; + map['thursdayShort'] = thursdayShort; + map['fridayShort'] = fridayShort; + map['saturdayShort'] = saturdayShort; + map['sundayShort'] = sundayShort; map['realNameAuthentication'] = realNameAuthentication; map['sendKeyBottomTip'] = sendKeyBottomTip; @@ -801,7 +908,33 @@ class LanKeyEntity { map['work'] = work; map['workday'] = workday; map['holidays'] = holidays; - + map['punchingMode'] = punchingMode; + map['whetherTheEmployeeHasAKey'] = whetherTheEmployeeHasAKey; + map['selectKey'] = selectKey; + map['officeHours'] = officeHours; + map['closingTime'] = closingTime; + map['thisWeek'] = thisWeek; + map['singleDayWeekend'] = singleDayWeekend; + map['twoDaysOff'] = twoDaysOff; + map['oddOrEvenDaysOff'] = oddOrEvenDaysOff; + map['year'] = year; + map['month'] = month; + map['libertyDay'] = libertyDay; + map['coverDate'] = coverDate; + map['addedHoliday'] = addedHoliday; + map['startDate'] = startDate; + map['accessDate'] = accessDate; + map['mustFillIn'] = mustFillIn; + map['endDate'] = endDate; + map['dailyCharts'] = dailyCharts; + map['monthlyLeaderboard'] = monthlyLeaderboard; + map['noAttendanceRecord'] = noAttendanceRecord; + map['everyoneIsVeryMotivated'] = everyoneIsVeryMotivated; + map['workingHoursWereNotReleased'] = workingHoursWereNotReleased; + map['beLate'] = beLate; + map['leaveEarly'] = leaveEarly; + map['noCardPunched'] = noCardPunched; + map['lanEnglish'] = lanEnglish; map['lanChinese'] = lanChinese; map['multilingual'] = multilingual; diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml index 202cb874..ac72deda 100644 --- a/star_lock/pubspec.yaml +++ b/star_lock/pubspec.yaml @@ -58,7 +58,10 @@ dependencies: flutter_picker: ^2.1.0 #生成二维码 qr_flutter: ^4.0.0 - + #底部选择 + flutter_pickers: ^2.1.9 + #万年历 + syncfusion_flutter_datepicker: ^18.4.48 dev_dependencies: flutter_test: sdk: flutter