1/** 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { StringUtil } from '../../../../../../../common/src/main/ets/util/StringUtil'; 17import { EventBean } from '../../../model/bean/EventBean'; 18import AccountantsPresenter from '../../../presenter/contact/accountants/AccountantsPresenter'; 19import StringFormatUtil from '../../../util/StringFormatUtil' 20import { Birthday } from '../../../../../../../feature/contact/src/main/ets/contract/Birthday'; 21 22@CustomDialog 23export struct ShowDayTime { 24 private date = new Date(1970, 0, 31); 25 @Link mPresent: AccountantsPresenter; 26 @Prop itemIndex: number; 27 @Prop itemType: number; 28 @State showTime: Resource = $r('app.string.yearMonthDay', this.date.getFullYear(), 29 (this.date.getMonth() + 1), this.date.getDate()); 30 controller: CustomDialogController 31 cancel: () => void 32 confirm: () => void 33 34 build() { 35 Column() { 36 Row() { 37 Text(this.showTime) 38 .height('56vp') 39 .fontSize(20) 40 .textAlign(TextAlign.Center) 41 .fontWeight(FontWeight.Medium) 42 .fontColor($r('sys.color.ohos_id_color_text_primary')) 43 } 44 .width('85%') 45 46 DatePicker({ selected: this.date }) 47 .width('85%') 48 .height('200vp') 49 .margin({ bottom: 8 }) 50 .lunar(this.itemType == Birthday.TYPE_LUNARBIRTHDAY) 51 .onChange((value: DatePickerResult) => { 52 this.date = new Date(value.year, value.month, value.day); 53 this.showTime = $r('app.string.yearMonthDay', value.year, (value.month + 1), value.day); 54 }) 55 56 Row() { 57 Flex({ 58 direction: FlexDirection.Column, 59 justifyContent: FlexAlign.Center, 60 alignItems: ItemAlign.Center 61 }) { 62 Text($r('app.string.dialog_cancel')) 63 .fontColor('#007DFF') 64 .fontSize(16) 65 .fontWeight(FontWeight.Medium) 66 } 67 .layoutWeight(1) 68 .height(40) 69 .onClick(() => { 70 this.controller.close() 71 this.cancel() 72 }) 73 74 Line().width(1).height(40).backgroundColor($r('sys.color.ohos_id_color_list_separator')).margin({ 75 left: 4, 76 right: 4 77 }) 78 79 Flex({ 80 direction: FlexDirection.Column, 81 justifyContent: FlexAlign.Center, 82 alignItems: ItemAlign.Center 83 }) { 84 Text($r('app.string.save')) 85 .fontColor('#007DFF') 86 .fontSize(16) 87 .fontWeight(FontWeight.Medium) 88 } 89 .layoutWeight(1) 90 .height(40) 91 .onClick(() => { 92 this.mPresent.addState = true; 93 this.date.setFullYear(this.date.getFullYear(), this.date.getMonth(), this.date.getDate()); 94 let eventBean = this.mPresent.contactInfoAfter.events[this.itemIndex]; 95 if (!eventBean || StringUtil.isEmpty(eventBean.eventType)) { 96 this.mPresent.contactInfoAfter.events[this.itemIndex] = new EventBean('', '', '1', ''); 97 } 98 this.mPresent.contactInfoAfter.events[this.itemIndex].data = 99 StringFormatUtil.numberFormatDateString(this.date.getFullYear(), 100 this.date.getMonth() + 1, this.date.getDate()); 101 this.mPresent.refresh(); 102 this.controller.close(); 103 this.confirm(); 104 }) 105 } 106 .alignItems(VerticalAlign.Top) 107 .height('56vp') 108 .width('85%') 109 }.height('320vp') 110 } 111}