Prechádzať zdrojové kódy

feat(ywq): 新增授权关系功能

- 添加授权关系列表和新增授权医生页面
- 实现授权请求的处理逻辑
- 优化刷新组件,支持分页加载
- 修复确认对话框的返回逻辑
徐勤民 5 mesiacov pred
rodič
commit
6e5dfee898

+ 31 - 28
src/main/ets/utils/ToolsHelper.ets

@@ -176,34 +176,37 @@ export class ToolsHelper {
    * 弹出Confirm弹窗
    * @param options
    */
-  static showConfirmDialog(options: ConfirmOptions) {
-    try {
-      promptAction.showDialog({
-        alignment: 1,
-        title: options.title,
-        message: options.msg,
-        buttons: [{
-          text: options.confirm?.text ?? "确定",
-          color: options.confirm?.color ?? "#000000",
-        }, {
-          text: options.cancel?.text ?? "取消",
-          color: options.cancel?.color ?? "#666666",
-        }]
-      })
-        .then((data) => {
-          if (data.index === 0) {
-            options.confirm?.onClick && options.confirm.onClick()
-          } else {
-            options.cancel?.onClick && options.cancel.onClick()
-          }
+  static showConfirmDialog(options: ConfirmOptions): Promise<void> {
+    return new Promise((reject) => {
+      try {
+        promptAction.showDialog({
+          alignment: 1,
+          title: options.title,
+          message: options.msg,
+          buttons: [{
+            text: options.confirm?.text ?? "确定",
+            color: options.confirm?.color ?? "#000000",
+          }, {
+            text: options.cancel?.text ?? "取消",
+            color: options.cancel?.color ?? "#666666",
+          }]
         })
-        .catch((err: Error) => {
-          ToolsHelper.showMessage(err.message)
-        })
-    } catch (error) {
-      let message = (error as BusinessError).message
-      ToolsHelper.showMessage(message)
-    }
+          .then((data) => {
+            if (data.index === 0) {
+              options.confirm?.onClick && options.confirm.onClick()
+            } else {
+              options.cancel?.onClick && options.cancel.onClick()
+            }
+          })
+          .catch((err: Error) => {
+            ToolsHelper.showMessage(err.message)
+          })
+      } catch (error) {
+        reject()
+        let message = (error as BusinessError).message
+        ToolsHelper.showMessage(message)
+      }
+    })
   }
 
   public static mapDialog = new HashMap<string, number>()
@@ -345,7 +348,7 @@ export class ToolsHelper {
     });
   }
 
-  private static getUniqueId(fun: Function): string {
+  static getUniqueId(fun: Function): string {
     if (!ToolsHelper.uniqueIdMap.has(fun)) {
       ToolsHelper.uniqueIdMap.set(fun, ToolsHelper.getUuid());
     }

+ 13 - 6
src/main/ets/view/RefreshView.ets

@@ -7,7 +7,9 @@ type ItemType = (string | number | Object)
 export struct RefreshView {
   @Link isLoading: boolean
   @Prop data: Array<object>
-  onLoadMore?: () => void
+  @Require keyGenerator?: (item: ESObject, index: number) => string
+  pageSize: number = 10
+  onLoadMore?: (pageNum: number) => void
   onRefresh?: () => void
   private startY: number = 0
   private endY: number = 0
@@ -15,7 +17,7 @@ export struct RefreshView {
   private _openMore: boolean = false
 
   aboutToAppear(): void {
-    // this.onRefresh && this.onRefresh()
+    this.onRefresh && this.onRefresh()
   }
 
   // 使用父组件@Builder装饰的方法初始化子组件@BuilderParam
@@ -30,7 +32,7 @@ export struct RefreshView {
             ListItem() {
               this.customBuilderParam(item, index)
             }
-          }, (index: number) => index.toString())
+          }, (item: ESObject, index: number) => this.keyGenerator!(item, index))
         }
         .onTouch((event: TouchEvent) => {
           const e1 = event.touches[0]
@@ -48,13 +50,18 @@ export struct RefreshView {
             case TouchType.Up:
               this.endY = e1.y
               if (this.endY - this.startY < -100 && this._openMore) {
-                this.onLoadMore && this.onLoadMore()
+                const v = this.data && (this.data.length % this.pageSize) === 0
+                if (v) {
+                  this.onLoadMore && this.onLoadMore(Math.floor(this.data.length / this.pageSize))
+                } else {
+                  ToolsHelper.showMessage('没有更多数据了')
+                }
               }
               break
           }
         })
         .onScrollIndex((first: number, last: number) => {
-          this.lastNum = last
+          this.lastNum = last + 1
         })
         .width('100%')
         .height('100%')
@@ -65,7 +72,7 @@ export struct RefreshView {
           .width('100%')
           .height('100%')
           .textAlign(TextAlign.Center)
-        
+
       }
     }
     .width('100%')