// 注册事件类
window.$swEvent.setup("defaultEvent", {
  /**
   *
   * @param page 当前页面对象
   * 1）page.$params 参数对象
   * 示例：给参数p1赋值:  page.$params.p1 = “xxxx”;
   *
   * 2）page.$refs 控件的ref引用，ref引用指向控件的实例，可访问控件实例的属性和函数
   * 示例：调用页面的<el-form ref="form1" /> 标签的validate方法: page.$refs.form1.validate()
   *
   * 3）page.$model 数据集,内含data(数据对象)和dataset(数据集定义)
   * 示例: 获取数据集ds1的表单数据 page.$model.ds1.data.form
   *       获取数据集ds1的列表数据 page.$model.ds1.data.list
   *       获取数据集ds1表单中a1的值 page.$model.ds1.getFormVal("a1")
   *       给数据集ds1的表中的a1赋值 page.$model.ds1.setFormVal("a1","xxxx");
   *
   * 4）page.$widgets 控件的属性，控制控件的响应属性
   * 示例 : 获取控件名为w1的required属性的值 page.$widgets.w1.required
   *
   * 5）page.$utils 工具包
   *  $$message 消息提示
   *  $$cookie,  cookie
   *  $$driver, 用户操作引导引擎
   *  $$http, http请求
   *  $$validate, 校验
   *  $$date, 日期处理工具
   *  $$UtilPub, 其他
   *  示例:
   *    弹出成功消息框：page.$utils.$$message.notify.success("xxx")
   *    post请求：page.$utils.$$http.post("/api/bpm/save",{id:"xxx"})
   *
   * 6）page.$tabRouter 页面路由，控制页面切换
   * 示例：跳转到登录页：page.$tabRouter.push("login");
   *      返回： page.$tabRouter.back();
   *
   *  7) page.$api 页面提供的公用api
   *   add: () => void 页面新增初始化（所有可编辑的数据集）
   *   addOne: (dataset: string) => void 指定数据集新增初始
   *   load: (force?: boolean, params?: any) => void // 页面加载
   *   loadOne: (dataset: string, params?: any) => void // 指定数据集加载
   *   total: (dataset: string, params?: any) => void // 指定数据集求合计栏信息
   *   save: (params?: any) => void // 页面保存 （所有可编辑的数据集）
   *   saveOne: (dataset: string, params?: any) => void // 指定数据集保存
   *   del: () => void 页面删除
   *   delOne: (dataset: string, row?: any) => void // 指定数据集删除
   *   closeDialog: (dialogKey?: string) => void //  关闭弹出框
   * 示例：
   *    加载数据集ds1：page.$api.loadOne("ds1");
   *
   * @returns 返回给页面可配置的api方法
   * 如 ： return {
   *     demoFunc(){
   *         XXXX
   *     },
   * }
   */
  setup(page){
    const { $params,$refs, $widgets, $model, $utils, $tabRouter, $api } = page;
    const { $$message, $$http } = $utils || {};
    // 示例
    const demoFunc = () => {
      // 1.从参数中获取p1
      const p1 = $params.p1;
      // 2.从控件w1获取color属性
      const color = $widgets.w1.props.color;
      // 3.调用控件w1的calc函数
      const calcVal = $refs.w1.calc(p1,color);
      // 4.数据集ds1加载数据
      $api.loadOne("ds1");
      // 5.给数据集ds1的表单中的f1字段赋值calcVal
      $model.ds1.setFormVal("f1",calcVal);
      // 6.获取数据集ds1的表单数据
      const data = $model.ds1.data.form || {};
      // 7.调用http交互
       $$http.post("ap1/demo/doOpt",data).then((rt) => {
        // 8.弹出成功消息
        $$message.notify.success("操作成功");
        // 9.返回上一个页面
         $tabRouter.back();
      });
    };
    return {
      demoFunc,
    }
  }
});
