Skip to content

Commit 7af3245

Browse files
committed
日期和时间编辑OK了
1 parent 4fc49bd commit 7af3245

5 files changed

Lines changed: 98 additions & 11 deletions

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
@switch(mode){
2+
@case ('datetime') {
3+
<!--日期和时间-->
4+
<nz-date-picker nzAllowClear nzShowTime [ngModel]="value" (ngModelChange)="onModelChange($event)" [nzDisabled]="disabled"></nz-date-picker>
5+
}
6+
@case ('date') {
7+
<!--日期-->
8+
<nz-date-picker nzAllowClear [ngModel]="value" (ngModelChange)="onModelChange($event)" [nzDisabled]="disabled"></nz-date-picker>
9+
}
10+
@case ('time') {
11+
<!--时间-->
12+
<nz-time-picker nzAllowClear [ngModel]="value" (ngModelChange)="onModelChange($event)" [nzDisabled]="disabled"></nz-time-picker>
13+
}
14+
@default {
15+
<p>不支持的类型</p>
16+
}
17+
}

src/app/lib/smart-date-picker/smart-date-picker.scss

Whitespace-only changes.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import {Component, forwardRef, Input} from '@angular/core';
2+
import {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';
3+
import {NzTimePickerComponent} from 'ng-zorro-antd/time-picker';
4+
import {NzDatePickerComponent} from 'ng-zorro-antd/date-picker';
5+
import dayjs from 'dayjs';
6+
import {CommonModule} from '@angular/common';
7+
8+
@Component({
9+
selector: 'smart-date-picker',
10+
standalone: true,
11+
imports: [
12+
CommonModule,
13+
FormsModule,
14+
ReactiveFormsModule,
15+
NzDatePickerComponent,
16+
NzTimePickerComponent,
17+
],
18+
templateUrl: './smart-date-picker.html',
19+
styleUrl: './smart-date-picker.scss',
20+
providers: [
21+
{
22+
provide: NG_VALUE_ACCESSOR,
23+
useExisting: forwardRef(() => SmartDatePicker),
24+
multi: true
25+
}
26+
]
27+
})
28+
export class SmartDatePicker implements ControlValueAccessor {
29+
@Input() mode = "datetime"
30+
31+
formats: any = {
32+
datetime: 'YYYY-MM-DD HH:mm:ss',
33+
date: 'YYYY-MM-DD',
34+
time: 'HH:mm:ss',
35+
}
36+
37+
value: Date = new Date()
38+
disabled = false
39+
40+
writeValue(obj: any): void {
41+
if (obj) {
42+
if (this.mode == "time")
43+
this.value = dayjs("2000-01-01 " + obj).toDate();
44+
else
45+
this.value = dayjs(obj).toDate();
46+
}
47+
}
48+
49+
onChange = (val: string) => {
50+
};
51+
onTouched = () => {
52+
};
53+
54+
registerOnChange(fn: any): void {
55+
this.onChange = fn
56+
}
57+
58+
registerOnTouched(fn: any): void {
59+
this.onTouched = fn
60+
}
61+
62+
setDisabledState?(isDisabled: boolean): void {
63+
this.disabled = isDisabled
64+
}
65+
66+
onModelChange($event: any) {
67+
let fmt = this.formats[this.mode]
68+
this.onChange(dayjs($event).format(fmt))
69+
this.onTouched()
70+
}
71+
72+
}

src/app/lib/smart-editor/smart-editor.component.html

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,16 +116,15 @@
116116
}
117117
@case ('datetime') {
118118
<!--日期和时间-->
119-
<nz-date-picker nzShowTime [formControl]="control" [nzAllowClear]="field.clear || false"
120-
[nzPlaceHolder]="field.placeholder || ''"></nz-date-picker>
119+
<smart-date-picker [formControl]="control" mode="datetime"></smart-date-picker>
121120
}
122121
@case ('date') {
123122
<!--日期-->
124-
<nz-date-picker [formControl]="control" [nzAllowClear]="field.clear || false" [nzPlaceHolder]="field.placeholder || ''"></nz-date-picker>
123+
<smart-date-picker [formControl]="control" mode="date"></smart-date-picker>
125124
}
126125
@case ('time') {
127126
<!--时间-->
128-
<nz-time-picker [formControl]="control" [nzPlaceHolder]="field.placeholder || ''"></nz-time-picker>
127+
<smart-date-picker [formControl]="control" mode="time"></smart-date-picker>
129128
}
130129
@case ('file') {
131130
<!--文件-->

src/app/lib/smart-editor/smart-editor.component.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,10 @@ import {CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray} from
1616
import {NzInputDirective, NzInputGroupComponent, NzTextareaCountComponent} from "ng-zorro-antd/input";
1717
import {NzButtonComponent} from "ng-zorro-antd/button";
1818
import {NzColorPickerModule} from "ng-zorro-antd/color-picker";
19-
import {NzDatePickerComponent} from "ng-zorro-antd/date-picker";
2019
import {NzInputNumberComponent} from "ng-zorro-antd/input-number";
2120
import {NzSelectComponent} from "ng-zorro-antd/select";
2221
import {NzSliderComponent} from "ng-zorro-antd/slider";
2322
import {NzSwitchComponent} from "ng-zorro-antd/switch";
24-
import {NzTimePickerComponent} from "ng-zorro-antd/time-picker";
2523
import {NzTreeSelectComponent} from "ng-zorro-antd/tree-select";
2624
import {NzIconDirective} from "ng-zorro-antd/icon";
2725
import {NzSpaceModule} from "ng-zorro-antd/space";
@@ -30,6 +28,8 @@ import {NzCheckboxComponent} from "ng-zorro-antd/checkbox";
3028
import {NzRadioModule} from "ng-zorro-antd/radio";
3129
import {NzRateComponent} from "ng-zorro-antd/rate";
3230
import {SmartAction} from '../smart-table/smart-table.component';
31+
import {SmartDatePicker} from '../smart-date-picker/smart-date-picker';
32+
import dayjs from 'dayjs';
3333

3434

3535
export interface SmartAutoOption {
@@ -149,11 +149,11 @@ function getDefault(field: SmartField): any {
149149
case 'textarea':
150150
return ''
151151
case 'date':
152-
return new Date()
152+
return dayjs().format("YYYY-MM-DD")
153153
case 'time':
154-
return new Date()
154+
return dayjs().format("HH:mm:ss")
155155
case 'datetime':
156-
return new Date()
156+
return dayjs().format("YYYY-MM-DD HH:mm:ss")
157157
case 'file':
158158
return ''
159159
case 'image':
@@ -222,14 +222,12 @@ export function createControl(f: SmartField, value: any = undefined): FormContro
222222
NzInputDirective,
223223
NzButtonComponent,
224224
NzColorPickerModule,
225-
NzDatePickerComponent,
226225
NzInputGroupComponent,
227226
NzInputNumberComponent,
228227
NzSelectComponent,
229228
NzSliderComponent,
230229
NzSwitchComponent,
231230
NzTextareaCountComponent,
232-
NzTimePickerComponent,
233231
NzTreeSelectComponent,
234232
NzUploadComponent,
235233
CdkDragHandle,
@@ -239,6 +237,7 @@ export function createControl(f: SmartField, value: any = undefined): FormContro
239237
NzCheckboxComponent,
240238
NzRadioModule,
241239
NzRateComponent,
240+
SmartDatePicker,
242241
],
243242
templateUrl: './smart-editor.component.html',
244243
styleUrl: './smart-editor.component.scss',

0 commit comments

Comments
 (0)