import { defineComponent as f, getCurrentInstance as b, watch as h, h as n } from "vue";
import { useNamespace as C, useController as y } from "@ibiz-template/vue-util";
import { FormMDCtrlModel as v } from "@ibiz-template/model";
import { FormMDCtrlController as D } from "@ibiz-template/controller";
const M = f({
  name: "KqbcFormMDCtrl",
  props: {
    modelData: {
      type: v,
      required: !0
    },
    controller: {
      type: D,
      required: !0
    }
  },
  setup(a) {
    const m = C("form-mdctrl"), {
      proxy: r
    } = b();
    y(r, a.controller);
    const e = a.controller;
    h(() => e.form.isLoaded, (t, o) => {
      t !== o && t === !0 && e.loadData();
    });
    const c = async () => {
      var o;
      const t = e.form;
      if (t) {
        const l = (o = t.model.appEntity) == null ? void 0 : o.codeName, d = t.context;
        if (l && d) {
          const p = {
            ...d
          }, u = await ibiz.entityService.getService(l, p);
          if (u && e.data) {
            const i = await u.exec("Getkqzgzsc", p, {
              ...e.data
            });
            i.ok && i.data && (e.data.gzsc = i.data.gzsc, e.data.bcs = i.data.bcs);
          }
        }
      }
    }, s = (t) => (o) => {
      e.formNeurons.get(t) || o.evt.on("afterSave", c), e.onNeuronInit(t)(o);
    };
    return h(() => {
      var t;
      return (t = e.contentCtrlData) == null ? void 0 : t.length;
    }, () => {
      c();
    }), {
      ns: m,
      c: e,
      onNeuronInit: s
    };
  },
  render() {
    const a = () => this.c.contentCtrlData.length > 0 && this.c.contentCtrlData.map((r, e) => {
      var t;
      let c = null;
      const {
        form: s
      } = this.c.model;
      if (s && this.c.providers[s.name] && this.c.model.appEntity) {
        const o = Object.assign(this.c.form.context.clone(), {
          [(t = this.c.model.appEntity.codeName) == null ? void 0 : t.toLowerCase()]: r[this.c.model.appEntity.keyName]
        });
        c = n(this.c.providers[s.name].component, {
          props: {
            modelData: s,
            context: o,
            params: this.c.form.params,
            enableAutoSave: !0
          },
          on: {
            neuronInit: this.onNeuronInit(r.srfkey)
          }
        });
      }
      return n("div", {
        class: this.ns.b("form-content"),
        key: r.srfkey
      }, [c, n("div", {
        class: this.ns.b("btn")
      }, [n("i-button", {
        class: this.ns.b("remove-btn"),
        attrs: {
          type: "text"
        },
        on: {
          click: () => this.c.handleRemove(r, e)
        }
      }, ["\u5220\u9664"])])]);
    }), m = () => n("div", {
      class: this.ns.b("main")
    }, [[n("div", {
      class: this.ns.b("title")
    }, [n("span", {
      class: this.ns.b("caption")
    }, [this.modelData.source.caption]), n("i-button", {
      class: this.ns.b("add-btn"),
      attrs: {
        type: "text"
      },
      on: {
        click: () => this.c.handleAdd()
      }
    }, ["\u6DFB\u52A0"])]), a()]]);
    return n("div", {
      class: this.ns.b()
    }, [m()]);
  }
});
export {
  M as KqbcFormMDCtrl,
  M as default
};
