@maketribe/ms-app 5.0.2 → 5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{404-DbH2VtUJ.cjs → 404-BqMwJz1f.cjs} +2 -2
- package/dist/cjs/{404-DbH2VtUJ.cjs.map → 404-BqMwJz1f.cjs.map} +1 -1
- package/dist/cjs/{Editor-CWxWXw--.cjs → Editor-tVWo36HH.cjs} +2 -2
- package/dist/cjs/{Editor-CWxWXw--.cjs.map → Editor-tVWo36HH.cjs.map} +1 -1
- package/dist/cjs/{Editor-HmV0CISz.cjs → Editor-v0az4FeA.cjs} +2 -2
- package/dist/cjs/{Editor-HmV0CISz.cjs.map → Editor-v0az4FeA.cjs.map} +1 -1
- package/dist/cjs/{PermissionManage-BR2yJRAe.cjs → PermissionManage-DhYTqblg.cjs} +2 -2
- package/dist/cjs/{PermissionManage-BR2yJRAe.cjs.map → PermissionManage-DhYTqblg.cjs.map} +1 -1
- package/dist/cjs/{ResourceSelectInput-BCBtfd8f.cjs → ResourceSelectInput-Q5VXEXMl.cjs} +2 -2
- package/dist/cjs/{ResourceSelectInput-BCBtfd8f.cjs.map → ResourceSelectInput-Q5VXEXMl.cjs.map} +1 -1
- package/dist/cjs/{dialog-Bws-7xvl.cjs → dialog-Cnvtic1-.cjs} +2 -2
- package/dist/cjs/{dialog-Bws-7xvl.cjs.map → dialog-Cnvtic1-.cjs.map} +1 -1
- package/dist/cjs/{dialog-DbD51Z-b.cjs → dialog-D7fcIY_2.cjs} +2 -2
- package/dist/cjs/{dialog-DbD51Z-b.cjs.map → dialog-D7fcIY_2.cjs.map} +1 -1
- package/dist/cjs/{dialog-DomloCVd.cjs → dialog-Y7qd6d53.cjs} +2 -2
- package/dist/cjs/{dialog-DomloCVd.cjs.map → dialog-Y7qd6d53.cjs.map} +1 -1
- package/dist/cjs/{edit-BP8hWYwF.cjs → edit-BZyyekOn.cjs} +2 -2
- package/dist/cjs/{edit-BP8hWYwF.cjs.map → edit-BZyyekOn.cjs.map} +1 -1
- package/dist/cjs/{index-Bt6LrO0Y.cjs → index-BAvdmXEj.cjs} +2 -2
- package/dist/cjs/{index-Bt6LrO0Y.cjs.map → index-BAvdmXEj.cjs.map} +1 -1
- package/dist/cjs/{index-BSnxRKZN.cjs → index-BELJDkxX.cjs} +3 -3
- package/dist/cjs/{index-BSnxRKZN.cjs.map → index-BELJDkxX.cjs.map} +1 -1
- package/dist/cjs/{index-D3wyludi.cjs → index-BITy6rTx.cjs} +3 -3
- package/dist/cjs/{index-D3wyludi.cjs.map → index-BITy6rTx.cjs.map} +1 -1
- package/dist/cjs/{index-BEN_IfEA.cjs → index-Bhx3ZLUg.cjs} +2 -2
- package/dist/cjs/{index-BEN_IfEA.cjs.map → index-Bhx3ZLUg.cjs.map} +1 -1
- package/dist/cjs/{index-CRx3vrt5.cjs → index-C7WZ2Ve6.cjs} +2 -2
- package/dist/cjs/{index-CRx3vrt5.cjs.map → index-C7WZ2Ve6.cjs.map} +1 -1
- package/dist/cjs/{index-BWqbZDTR.cjs → index-C9qa_h4w.cjs} +2 -2
- package/dist/cjs/{index-BWqbZDTR.cjs.map → index-C9qa_h4w.cjs.map} +1 -1
- package/dist/cjs/{index-DkJRuTYb.cjs → index-CHq_KMCb.cjs} +3 -3
- package/dist/cjs/{index-DkJRuTYb.cjs.map → index-CHq_KMCb.cjs.map} +1 -1
- package/dist/cjs/{index-DI4Pl_k2.cjs → index-CLnBr-MU.cjs} +2 -2
- package/dist/cjs/{index-DI4Pl_k2.cjs.map → index-CLnBr-MU.cjs.map} +1 -1
- package/dist/cjs/{index-BaHTiCie.cjs → index-CZBvW9b5.cjs} +4 -4
- package/dist/cjs/{index-BaHTiCie.cjs.map → index-CZBvW9b5.cjs.map} +1 -1
- package/dist/cjs/{index-Dpxpw5sA.cjs → index-CohbbXo8.cjs} +2 -2
- package/dist/cjs/{index-Dpxpw5sA.cjs.map → index-CohbbXo8.cjs.map} +1 -1
- package/dist/cjs/{index-C9ykzsLb.cjs → index-Cpz2Ok_W.cjs} +44 -46
- package/dist/cjs/index-Cpz2Ok_W.cjs.map +1 -0
- package/dist/cjs/{index-sjzPbJp6.cjs → index-CtdGv1AJ.cjs} +2 -2
- package/dist/cjs/{index-sjzPbJp6.cjs.map → index-CtdGv1AJ.cjs.map} +1 -1
- package/dist/cjs/{index-BRgtQh4g.cjs → index-Cw-dq3B6.cjs} +2 -2
- package/dist/cjs/{index-BRgtQh4g.cjs.map → index-Cw-dq3B6.cjs.map} +1 -1
- package/dist/cjs/{index-BQ98NiKE.cjs → index-DDK4iLDF.cjs} +2 -2
- package/dist/cjs/{index-BQ98NiKE.cjs.map → index-DDK4iLDF.cjs.map} +1 -1
- package/dist/cjs/{index-B8ergi4x.cjs → index-DXURHja0.cjs} +2 -2
- package/dist/cjs/{index-B8ergi4x.cjs.map → index-DXURHja0.cjs.map} +1 -1
- package/dist/cjs/{index-Ff9KIH5J.cjs → index-DpQtP6H4.cjs} +2 -2
- package/dist/cjs/{index-Ff9KIH5J.cjs.map → index-DpQtP6H4.cjs.map} +1 -1
- package/dist/cjs/{index-BvX51GcU.cjs → index-DqPSZrAt.cjs} +2 -2
- package/dist/cjs/{index-BvX51GcU.cjs.map → index-DqPSZrAt.cjs.map} +1 -1
- package/dist/cjs/{index-hZKsj7MM.cjs → index-DsTSQfzN.cjs} +2 -2
- package/dist/cjs/{index-hZKsj7MM.cjs.map → index-DsTSQfzN.cjs.map} +1 -1
- package/dist/cjs/{index-B2_kGhuM.cjs → index-DzLcPlft.cjs} +2 -2
- package/dist/cjs/index-DzLcPlft.cjs.map +1 -0
- package/dist/cjs/{index-CA0Aljjt.cjs → index-LPx3PXcZ.cjs} +2 -2
- package/dist/cjs/{index-CA0Aljjt.cjs.map → index-LPx3PXcZ.cjs.map} +1 -1
- package/dist/cjs/{index-orkkC3Zz.cjs → index-LyO2vAAm.cjs} +2 -2
- package/dist/cjs/{index-orkkC3Zz.cjs.map → index-LyO2vAAm.cjs.map} +1 -1
- package/dist/cjs/{index-Bg96pnlX.cjs → index-XO1GwVXY.cjs} +3 -3
- package/dist/cjs/{index-Bg96pnlX.cjs.map → index-XO1GwVXY.cjs.map} +1 -1
- package/dist/cjs/{index-UyDr8lR5.cjs → index-_V_AGXJo.cjs} +2 -2
- package/dist/cjs/{index-UyDr8lR5.cjs.map → index-_V_AGXJo.cjs.map} +1 -1
- package/dist/cjs/{index-B0WcgZX5.cjs → index-_zwFUTEK.cjs} +2 -2
- package/dist/cjs/{index-B0WcgZX5.cjs.map → index-_zwFUTEK.cjs.map} +1 -1
- package/dist/cjs/{index--AtBegTn.cjs → index-b3XQd2Un.cjs} +2 -2
- package/dist/cjs/{index--AtBegTn.cjs.map → index-b3XQd2Un.cjs.map} +1 -1
- package/dist/cjs/{index-BErkUm00.cjs → index-laaZZpsX.cjs} +2 -2
- package/dist/cjs/index-laaZZpsX.cjs.map +1 -0
- package/dist/cjs/{index-BxpMDoeo.cjs → index-niRuVNjE.cjs} +3 -3
- package/dist/cjs/{index-BxpMDoeo.cjs.map → index-niRuVNjE.cjs.map} +1 -1
- package/dist/cjs/{index-BVO_Svse.cjs → index-yguigflR.cjs} +2 -2
- package/dist/cjs/{index-BVO_Svse.cjs.map → index-yguigflR.cjs.map} +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/ms-app.css +3 -1
- package/dist/cjs/{normal-kYNC1vlA.cjs → normal-CrCjPoN8.cjs} +2 -2
- package/dist/cjs/{normal-kYNC1vlA.cjs.map → normal-CrCjPoN8.cjs.map} +1 -1
- package/dist/cjs/{normal-B2hKQ9VX.cjs → normal-CttI2FbI.cjs} +2 -2
- package/dist/cjs/{normal-B2hKQ9VX.cjs.map → normal-CttI2FbI.cjs.map} +1 -1
- package/dist/cjs/{table-DRs-B0jQ.cjs → table-lPWA3-O5.cjs} +2 -2
- package/dist/cjs/{table-DRs-B0jQ.cjs.map → table-lPWA3-O5.cjs.map} +1 -1
- package/dist/esm/{404-DeMBWR4-.js → 404-BjcJlT6H.js} +2 -2
- package/dist/esm/{404-DeMBWR4-.js.map → 404-BjcJlT6H.js.map} +1 -1
- package/dist/esm/{Editor-AEN1oVTW.js → Editor-B0aQKlrH.js} +2 -2
- package/dist/esm/{Editor-AEN1oVTW.js.map → Editor-B0aQKlrH.js.map} +1 -1
- package/dist/esm/{Editor-BAGyPYfN.js → Editor-M7607AyM.js} +2 -2
- package/dist/esm/{Editor-BAGyPYfN.js.map → Editor-M7607AyM.js.map} +1 -1
- package/dist/esm/{PermissionManage-thq0cmd2.js → PermissionManage-BVwqmhlg.js} +2 -2
- package/dist/esm/{PermissionManage-thq0cmd2.js.map → PermissionManage-BVwqmhlg.js.map} +1 -1
- package/dist/esm/{ResourceSelectInput-CU31hXPG.js → ResourceSelectInput-DPRCYClq.js} +2 -2
- package/dist/esm/{ResourceSelectInput-CU31hXPG.js.map → ResourceSelectInput-DPRCYClq.js.map} +1 -1
- package/dist/esm/{dialog-DRR8bdNI.js → dialog-B1kVTDIK.js} +2 -2
- package/dist/esm/{dialog-DRR8bdNI.js.map → dialog-B1kVTDIK.js.map} +1 -1
- package/dist/esm/{dialog-CHWojc0v.js → dialog-BhSXo9nJ.js} +2 -2
- package/dist/esm/{dialog-CHWojc0v.js.map → dialog-BhSXo9nJ.js.map} +1 -1
- package/dist/esm/{dialog-CudzLm6M.js → dialog-ngwX7TP3.js} +2 -2
- package/dist/esm/{dialog-CudzLm6M.js.map → dialog-ngwX7TP3.js.map} +1 -1
- package/dist/esm/{edit-B-JPSP-m.js → edit-Ca9p6DOe.js} +2 -2
- package/dist/esm/{edit-B-JPSP-m.js.map → edit-Ca9p6DOe.js.map} +1 -1
- package/dist/esm/{index-CqApIQHR.js → index--cHRJOfk.js} +2 -2
- package/dist/esm/{index-CqApIQHR.js.map → index--cHRJOfk.js.map} +1 -1
- package/dist/esm/{index-BZtnJqH-.js → index-B1uxvLO_.js} +2 -2
- package/dist/esm/{index-BZtnJqH-.js.map → index-B1uxvLO_.js.map} +1 -1
- package/dist/esm/{index-CgBuqx9B.js → index-B6eMiVss.js} +2 -2
- package/dist/esm/{index-CgBuqx9B.js.map → index-B6eMiVss.js.map} +1 -1
- package/dist/esm/{index-Doxkktpi.js → index-BAzpn8Sj.js} +2 -2
- package/dist/esm/{index-Doxkktpi.js.map → index-BAzpn8Sj.js.map} +1 -1
- package/dist/esm/{index-DC6Iqb0R.js → index-BLWAMDNo.js} +3 -3
- package/dist/esm/{index-DC6Iqb0R.js.map → index-BLWAMDNo.js.map} +1 -1
- package/dist/esm/{index-C2WXYBcO.js → index-BYI6j3rX.js} +2 -2
- package/dist/esm/index-BYI6j3rX.js.map +1 -0
- package/dist/esm/{index-C8Q_RoZ4.js → index-BoXTMwMe.js} +2 -2
- package/dist/esm/{index-C8Q_RoZ4.js.map → index-BoXTMwMe.js.map} +1 -1
- package/dist/esm/{index-CjFcZP-D.js → index-BoiAjkKC.js} +2 -2
- package/dist/esm/{index-CjFcZP-D.js.map → index-BoiAjkKC.js.map} +1 -1
- package/dist/esm/{index-Ds28JluW.js → index-BwZKYOQS.js} +2 -2
- package/dist/esm/{index-Ds28JluW.js.map → index-BwZKYOQS.js.map} +1 -1
- package/dist/esm/{index-BVkqnfAb.js → index-CJDC1EPh.js} +2 -2
- package/dist/esm/{index-BVkqnfAb.js.map → index-CJDC1EPh.js.map} +1 -1
- package/dist/esm/{index-Dlpn21j0.js → index-CJErFr3g.js} +44 -46
- package/dist/esm/index-CJErFr3g.js.map +1 -0
- package/dist/esm/{index-Oo6QXvLC.js → index-C_xawr7_.js} +2 -2
- package/dist/esm/{index-Oo6QXvLC.js.map → index-C_xawr7_.js.map} +1 -1
- package/dist/esm/{index-CaQVIJPt.js → index-CkokxV6q.js} +2 -2
- package/dist/esm/{index-CaQVIJPt.js.map → index-CkokxV6q.js.map} +1 -1
- package/dist/esm/{index-Degw2Gzo.js → index-Cu4bEQ-_.js} +3 -3
- package/dist/esm/{index-Degw2Gzo.js.map → index-Cu4bEQ-_.js.map} +1 -1
- package/dist/esm/{index-Okxce81s.js → index-D1oJ4jn1.js} +2 -2
- package/dist/esm/{index-Okxce81s.js.map → index-D1oJ4jn1.js.map} +1 -1
- package/dist/esm/{index-BcIRrPZw.js → index-DBRr8nkM.js} +4 -4
- package/dist/esm/{index-BcIRrPZw.js.map → index-DBRr8nkM.js.map} +1 -1
- package/dist/esm/{index-5Q99UmCJ.js → index-DIPeIvS8.js} +2 -2
- package/dist/esm/{index-5Q99UmCJ.js.map → index-DIPeIvS8.js.map} +1 -1
- package/dist/esm/{index-DHO3EhJo.js → index-DUFe9Xaz.js} +2 -2
- package/dist/esm/index-DUFe9Xaz.js.map +1 -0
- package/dist/esm/{index-Cx413RIm.js → index-DY7C3mNg.js} +2 -2
- package/dist/esm/{index-Cx413RIm.js.map → index-DY7C3mNg.js.map} +1 -1
- package/dist/esm/{index-Cqu47mRN.js → index-DaeJgHqN.js} +2 -2
- package/dist/esm/{index-Cqu47mRN.js.map → index-DaeJgHqN.js.map} +1 -1
- package/dist/esm/{index-Wu3JIIE4.js → index-Dd3QdtjS.js} +3 -3
- package/dist/esm/{index-Wu3JIIE4.js.map → index-Dd3QdtjS.js.map} +1 -1
- package/dist/esm/{index-BOD4eaOd.js → index-DeGOWXm3.js} +2 -2
- package/dist/esm/{index-BOD4eaOd.js.map → index-DeGOWXm3.js.map} +1 -1
- package/dist/esm/{index-kRcz_vxW.js → index-DmcDcLeN.js} +2 -2
- package/dist/esm/{index-kRcz_vxW.js.map → index-DmcDcLeN.js.map} +1 -1
- package/dist/esm/{index-BsDr9etu.js → index-DruB44FM.js} +2 -2
- package/dist/esm/{index-BsDr9etu.js.map → index-DruB44FM.js.map} +1 -1
- package/dist/esm/{index-CLiQltSj.js → index-Slcgq4Vq.js} +2 -2
- package/dist/esm/{index-CLiQltSj.js.map → index-Slcgq4Vq.js.map} +1 -1
- package/dist/esm/{index-i-W95pWZ.js → index-gZZdeHyB.js} +3 -3
- package/dist/esm/{index-i-W95pWZ.js.map → index-gZZdeHyB.js.map} +1 -1
- package/dist/esm/{index-CXaOoJ_C.js → index-q2kz2Al8.js} +3 -3
- package/dist/esm/{index-CXaOoJ_C.js.map → index-q2kz2Al8.js.map} +1 -1
- package/dist/esm/{index-CCrCUvmM.js → index-vz0aiVcc.js} +2 -2
- package/dist/esm/{index-CCrCUvmM.js.map → index-vz0aiVcc.js.map} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ms-app.css +3 -1
- package/dist/esm/{normal-F3vxaWhJ.js → normal-BMacxFgG.js} +2 -2
- package/dist/esm/{normal-F3vxaWhJ.js.map → normal-BMacxFgG.js.map} +1 -1
- package/dist/esm/{normal-BqXuF_Kg.js → normal-BiygxoLT.js} +2 -2
- package/dist/esm/{normal-BqXuF_Kg.js.map → normal-BiygxoLT.js.map} +1 -1
- package/dist/esm/{table-CC94_GR3.js → table-BEkVyGga.js} +2 -2
- package/dist/esm/{table-CC94_GR3.js.map → table-BEkVyGga.js.map} +1 -1
- package/package.json +13 -13
- package/dist/cjs/index-B2_kGhuM.cjs.map +0 -1
- package/dist/cjs/index-BErkUm00.cjs.map +0 -1
- package/dist/cjs/index-C9ykzsLb.cjs.map +0 -1
- package/dist/esm/index-C2WXYBcO.js.map +0 -1
- package/dist/esm/index-DHO3EhJo.js.map +0 -1
- package/dist/esm/index-Dlpn21j0.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, watch, computed, unref, createBlock, createCommentVNode, openBlock } from "vue";
|
|
2
2
|
import { useRouter } from "vue-router";
|
|
3
|
-
import { p as DataModelDefines, P as useSingleViewWithDialog, h as MKDataTable } from "./index-
|
|
3
|
+
import { p as DataModelDefines, P as useSingleViewWithDialog, h as MKDataTable } from "./index-CJErFr3g.js";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
import "@maketribe/dm";
|
|
6
6
|
import "vue-cropper";
|
|
@@ -47,4 +47,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
47
47
|
export {
|
|
48
48
|
_sfc_main as default
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=dialog-
|
|
50
|
+
//# sourceMappingURL=dialog-ngwX7TP3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-
|
|
1
|
+
{"version":3,"file":"dialog-ngwX7TP3.js","sources":["../../src/pages/index/dv/default/single/list/dialog.vue"],"sourcesContent":["<template>\n <MKDataTable v-if=\"dataTable\" mode=\"page\" :data-table=\"dataTable\" enableQueryParams />\n</template>\n\n<script setup lang=\"ts\">\nimport { unref, computed, watch, ref, Ref } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { DataForm, DataTable } from \"@maketribe/dm\";\nimport { MKDataTable } from \"../../../../../../components\";\nimport { DataModelDefines } from \"../../../../../../core\";\nimport { useSingleViewWithDialog } from \"../../../../../../composables\";\n\nconst router = useRouter();\n\nconst dataTable: Ref<DataTable | null> = ref(null);\nconst dataForm: Ref<DataForm | null> = ref(null);\n\nwatch(\n computed(() => unref(router.currentRoute).meta.name as string),\n (name) => {\n dataTable.value = DataModelDefines.instance.getDataTable(name);\n dataForm.value = DataModelDefines.instance.getDataForm(name);\n },\n { immediate: true }\n);\n\nuseSingleViewWithDialog({ dataTable, dataForm });\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAYA,UAAM,SAAS,UAAA;AAEf,UAAM,YAAmC,IAAI,IAAI;AACjD,UAAM,WAAiC,IAAI,IAAI;AAE/C;AAAA,MACE,SAAS,MAAM,MAAM,OAAO,YAAY,EAAE,KAAK,IAAc;AAAA,MAC7D,CAAC,SAAS;AACR,kBAAU,QAAQ,iBAAiB,SAAS,aAAa,IAAI;AAC7D,iBAAS,QAAQ,iBAAiB,SAAS,YAAY,IAAI;AAAA,MAC7D;AAAA,MACA,EAAE,WAAW,KAAA;AAAA,IAAK;AAGpB,4BAAwB,EAAE,WAAW,UAAU;;;;;;;;;;;"}
|
|
@@ -3,7 +3,7 @@ import { useRouter } from "vue-router";
|
|
|
3
3
|
import "@maketribe/dm";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
import "@maketribe/utils";
|
|
6
|
-
import { p as DataModelDefines, t as MKDataForm } from "./index-
|
|
6
|
+
import { p as DataModelDefines, t as MKDataForm } from "./index-CJErFr3g.js";
|
|
7
7
|
import "@maketribe/request";
|
|
8
8
|
import "@maketribe/locale";
|
|
9
9
|
import "lodash-es";
|
|
@@ -63,4 +63,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
63
63
|
export {
|
|
64
64
|
_sfc_main as default
|
|
65
65
|
};
|
|
66
|
-
//# sourceMappingURL=edit-
|
|
66
|
+
//# sourceMappingURL=edit-Ca9p6DOe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-
|
|
1
|
+
{"version":3,"file":"edit-Ca9p6DOe.js","sources":["../../src/pages/index/dv/default/edit.vue"],"sourcesContent":["<template>\n <MKDataForm v-if=\"dataForm\" mode=\"page\" labelPosition=\"top\" :data-form=\"dataForm\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { unref, computed, watch, Ref, reactive } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { DataForm } from \"@maketribe/dm\";\nimport { DataModelDefines } from \"../../../../core\";\nimport {MKDataForm, MKDataTable} from \"../../../../components\";\n\nconst router = useRouter();\n\nconst id = computed(() => unref(router.currentRoute).params.id as string);\n\nconst dataForm: Ref<DataForm | null | undefined> = computed(() => {\n const dataForm = DataModelDefines.instance.getDataForm(\n unref(router.currentRoute).meta.name as string\n );\n\n return dataForm ? (reactive(dataForm) as DataForm) : null;\n});\n\nwatch(\n dataForm,\n (dataForm) => {\n if (!dataForm) {\n return;\n }\n\n dataForm.submittedEvent.on(() => {\n router.push({ name: `dv/${dataForm.name}/list` });\n });\n\n dataForm.cancelEvent.on(() => {\n router.push({ name: `dv/${dataForm.name}/list` });\n });\n\n if (!unref(id)) {\n unref(dataForm)?.addRecord();\n return;\n }\n\n unref(dataForm)?.editRecord(unref(id));\n },\n { immediate: true }\n);\n</script>\n"],"names":["dataForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM,SAAS,UAAA;AAEf,UAAM,KAAK,SAAS,MAAM,MAAM,OAAO,YAAY,EAAE,OAAO,EAAY;AAExE,UAAM,WAA6C,SAAS,MAAM;AAChE,YAAMA,YAAW,iBAAiB,SAAS;AAAA,QACzC,MAAM,OAAO,YAAY,EAAE,KAAK;AAAA,MAAA;AAGlC,aAAOA,YAAY,SAASA,SAAQ,IAAiB;AAAA,IACvD,CAAC;AAED;AAAA,MACE;AAAA,MACA,CAACA,cAAa;AACZ,YAAI,CAACA,WAAU;AACb;AAAA,QACF;AAEAA,kBAAS,eAAe,GAAG,MAAM;AAC/B,iBAAO,KAAK,EAAE,MAAM,MAAMA,UAAS,IAAI,SAAS;AAAA,QAClD,CAAC;AAEDA,kBAAS,YAAY,GAAG,MAAM;AAC5B,iBAAO,KAAK,EAAE,MAAM,MAAMA,UAAS,IAAI,SAAS;AAAA,QAClD,CAAC;AAED,YAAI,CAAC,MAAM,EAAE,GAAG;AACd,gBAAMA,SAAQ,GAAG,UAAA;AACjB;AAAA,QACF;AAEA,cAAMA,SAAQ,GAAG,WAAW,MAAM,EAAE,CAAC;AAAA,MACvC;AAAA,MACA,EAAE,WAAW,KAAA;AAAA,IAAK;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, unref, createVNode } from "vue";
|
|
2
|
-
import { c as columnProps, u as useColumn } from "./index-
|
|
2
|
+
import { c as columnProps, u as useColumn } from "./index-CJErFr3g.js";
|
|
3
3
|
import { buildProps } from "@maketribe/utils";
|
|
4
4
|
import "vue-router";
|
|
5
5
|
import "@maketribe/dm";
|
|
@@ -45,4 +45,4 @@ export {
|
|
|
45
45
|
MKColumnImage,
|
|
46
46
|
MKColumnImage as default
|
|
47
47
|
};
|
|
48
|
-
//# sourceMappingURL=index
|
|
48
|
+
//# sourceMappingURL=index--cHRJOfk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index
|
|
1
|
+
{"version":3,"file":"index--cHRJOfk.js","sources":["../../src/components/data-model/data-table/components/column-image/column-image-options.ts","../../src/components/data-model/data-table/components/column-image/column-image.tsx","../../src/components/data-model/data-table/components/column-image/index.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\nimport { columnProps } from \"../../composables\";\n\nexport const columnImageProps = buildProps({\n ...columnProps,\n} as const);\n\nexport type ColumnImageProps = ExtractPropTypes<typeof columnImageProps>;\n","import { defineComponent, unref } from \"vue\";\nimport { useColumn } from \"../../composables\";\nimport { columnImageProps } from \"./column-image-options\";\nimport { ElImage } from \"element-plus\";\n\nexport default defineComponent({\n name: \"MKColumnImage\",\n props: columnImageProps,\n setup(props) {\n const { value } = useColumn(props);\n\n return () => {\n if (!unref(value)) {\n return null;\n }\n\n return <ElImage lazy={true} src={unref(value)} />;\n };\n },\n});\n","import ColumnImage from \"./column-image\";\n\nexport const MKColumnImage = ColumnImage;\nexport default MKColumnImage;\n"],"names":["name","props","columnImageProps","setup","value","useColumn","unref","_createVNode","ElImage"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,mBAAmB,WAAW;AAAA,EACzC,GAAG;AACL,CAAU;ACDV,MAAA,8CAA+B;AAAA,EAC7BA,MAAM;AAAA,EACNC,OAAOC;AAAAA,EACPC,MAAMF,OAAO;AACX,UAAM;AAAA,MAAEG;AAAAA,IAAM,IAAIC,UAAUJ,KAAK;AAEjC,WAAO,MAAM;AACX,UAAI,CAACK,MAAMF,KAAK,GAAG;AACjB,eAAO;AAAA,MACT;AAEA,aAAAG,YAAAC,SAAA;AAAA,QAAA,QAAsB;AAAA,QAAI,OAAOF,MAAMF,KAAK;AAAA,MAAC,GAAA,IAAA;AAAA,IAC/C;AAAA,EACF;AACF,CAAC;ACjBM,MAAM,gBAAgB;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, inject, computed, unref, createVNode } from "vue";
|
|
2
2
|
import { buildProps } from "@maketribe/utils";
|
|
3
|
-
import { c as columnProps, D as DATA_TABLE_CONTEXT_KEY } from "./index-
|
|
3
|
+
import { c as columnProps, D as DATA_TABLE_CONTEXT_KEY } from "./index-CJErFr3g.js";
|
|
4
4
|
import "vue-router";
|
|
5
5
|
import "@maketribe/dm";
|
|
6
6
|
import { ElCheckbox } from "element-plus";
|
|
@@ -105,4 +105,4 @@ export {
|
|
|
105
105
|
MKColumnSelect,
|
|
106
106
|
MKColumnSelect as default
|
|
107
107
|
};
|
|
108
|
-
//# sourceMappingURL=index-
|
|
108
|
+
//# sourceMappingURL=index-B1uxvLO_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-B1uxvLO_.js","sources":["../../src/components/data-model/data-table/components/column-select/column-select-options.ts","../../src/components/data-model/data-table/components/column-select/column-select-header-options.ts","../../src/components/data-model/data-table/components/column-select/column-select-header.tsx","../../src/components/data-model/data-table/components/column-select/column-select.tsx","../../src/components/data-model/data-table/components/column-select/index.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\nimport { columnProps } from \"../../composables\";\n\nexport const columnSelectProps = buildProps({\n ...columnProps,\n});\n\nexport type ColumnSelectProps = ExtractPropTypes<typeof columnSelectProps>;\n","import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\n\nexport const columnSelectHeaderProps = buildProps({});\n\nexport type ColumnSelectHeaderProps = ExtractPropTypes<\n typeof columnSelectHeaderProps\n>;\n","import { computed, defineComponent, inject, unref } from \"vue\";\nimport { columnSelectHeaderProps } from \"./column-select-header-options\";\nimport { ElCheckbox } from \"element-plus\";\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../token\";\n\nexport default defineComponent({\n name: \"MKColumnSelectHeader\",\n props: columnSelectHeaderProps,\n setup() {\n const dataTable = inject(DATA_TABLE_CONTEXT_KEY)!.dataTable;\n\n const indeterminate = computed(() => {\n const primaryKey = dataTable.primaryKey;\n\n const selection = dataTable.getSelection();\n\n const list = dataTable.getList();\n\n const pageSelection = list.filter((item) =>\n selection.includes(item[primaryKey])\n );\n\n return pageSelection.length !== list.length && pageSelection.length > 0;\n });\n\n const isChecked = computed({\n get: () => !!dataTable.getSelection().length,\n set: (isChecked: boolean) => {\n const primaryKey = dataTable.primaryKey;\n\n if (isChecked || unref(indeterminate)) {\n dataTable.setSelection(\n dataTable.getList().map((item) => item[primaryKey])\n );\n\n return;\n }\n\n dataTable.setSelection([]);\n },\n });\n\n return () => {\n return (\n <div class=\"mk-column-selection-header\">\n <ElCheckbox\n disabled={!unref(dataTable.getList().length)}\n modelValue={unref(isChecked)}\n indeterminate={unref(indeterminate)}\n checked={unref(isChecked)}\n onChange={(v: any) => (isChecked.value = v as boolean)}\n />\n </div>\n );\n };\n },\n});\n","import { computed, defineComponent, inject, unref } from \"vue\";\nimport { columnSelectProps } from \"./column-select-options\";\nimport { ElCheckbox } from \"element-plus\";\nimport ColumnSelectHeader from \"./column-select-header\";\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../token\";\n\nexport default defineComponent({\n name: \"MKColumnSelect\",\n props: columnSelectProps,\n Header: ColumnSelectHeader,\n setup(props) {\n const dataTable = inject(DATA_TABLE_CONTEXT_KEY)!.dataTable;\n\n const i = computed(() => props.index + 1);\n\n const isSelected = computed({\n get: () => {\n const primaryKey = dataTable.primaryKey;\n\n return !!dataTable\n .getSelection()\n .find((item) => item === props.row[primaryKey]);\n },\n set: (v: boolean) => {\n const primaryKey = dataTable.primaryKey;\n\n const item = dataTable\n .getSelection()\n .find((item) => item === props.row[primaryKey]);\n\n if (v) {\n if (item) {\n return;\n }\n\n dataTable.setSelection(\n dataTable.getSelection().concat(props.row[primaryKey])\n );\n\n return;\n }\n\n if (item) {\n dataTable.setSelection(\n dataTable\n .getSelection()\n .filter((item) => item !== props.row[primaryKey])\n );\n }\n },\n });\n\n return () => {\n return (\n <div\n class={[\n \"mk-column-selection\",\n unref(isSelected) ? \"is-selected\" : \"\",\n ]}\n >\n <span class=\"mk-column-selection__index\">{unref(i)}</span>\n <span class=\"mk-column-selection__selection\">\n <ElCheckbox\n modelValue={unref(isSelected)}\n onUpdate:modelValue={(v: any) =>\n (isSelected.value = v as boolean)\n }\n />\n </span>\n </div>\n );\n };\n },\n});\n","import ColumnSelect from \"./column-select\";\nimport \"./index.scss\"\nexport const MKColumnSelect = ColumnSelect;\n\nexport default MKColumnSelect;\n"],"names":["name","props","columnSelectHeaderProps","setup","dataTable","inject","DATA_TABLE_CONTEXT_KEY","indeterminate","computed","primaryKey","selection","getSelection","list","getList","pageSelection","filter","item","includes","length","isChecked","get","set","unref","setSelection","map","_createVNode","ElCheckbox","v","value","columnSelectProps","Header","ColumnSelectHeader","i","index","isSelected","find","row","concat"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, watch, resolveComponent, createElementBlock, openBlock, createVNode, createElementVNode, withCtx, createTextVNode, unref, toDisplayString, Fragment, renderList, normalizeClass, pushScopeId, popScopeId } from "vue";
|
|
2
2
|
import { ElCard } from "element-plus";
|
|
3
|
-
import { G as DATA_MODEL_NAME, H as MODULE_NAME, I as MSAppClient, J as MsAccountTable, K as useMSAppClient, d as MKSvgIcon, _ as _export_sfc } from "./index-
|
|
3
|
+
import { G as DATA_MODEL_NAME, H as MODULE_NAME, I as MSAppClient, J as MsAccountTable, K as useMSAppClient, d as MKSvgIcon, _ as _export_sfc } from "./index-CJErFr3g.js";
|
|
4
4
|
import { DataForm, Messager, FormColumn, Dialoger } from "@maketribe/dm";
|
|
5
5
|
import "vue-cropper";
|
|
6
6
|
import "@lexical/overflow";
|
|
@@ -281,4 +281,4 @@ const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-75f8
|
|
|
281
281
|
export {
|
|
282
282
|
index as default
|
|
283
283
|
};
|
|
284
|
-
//# sourceMappingURL=index-
|
|
284
|
+
//# sourceMappingURL=index-B6eMiVss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-CgBuqx9B.js","sources":["../../src/pages/to-do/ToDoForm.ts","../../src/pages/to-do/index.vue"],"sourcesContent":["import { DataForm, DataFormOptions, FormColumn, Messager } from \"@maketribe/dm\";\nimport { DATA_MODEL_NAME, RegionLevel, MODULE_NAME } from \"../../constants\";\nimport { MSAppClient } from \"../../core\";\nimport { MsAccountTable } from \"../../dataviews\";\n\nexport class ToDoForm extends DataForm {\n static [DATA_MODEL_NAME]: string = \"todo\";\n\n constructor(options: DataFormOptions = {}) {\n super({\n name: ToDoForm[DATA_MODEL_NAME],\n moduleName: MODULE_NAME,\n ...options,\n });\n this.httpRequest = MSAppClient.instance!.httpRequest;\n }\n\n protected async initialize(): Promise<void> {\n await super.initialize();\n\n const result = await this.httpRequest.get(\"/ms/dv/todo/meta\")\n if (result.data.code != 200) {\n Messager.error({\n message: result.data.msg || '获取消息类型失败'\n })\n return;\n }\n\n this.setColumns([\n new FormColumn({\n name: \"memberId\", label: \"处理成员id\",\n componentInfo: \"MKFormDataTableSelect\",\n componentProps: {\n dataTable: this.register(new MsAccountTable()),\n labelFieldName: \"name\",\n },\n required: true\n }),\n new FormColumn({\n name: \"deadline\", label: \"截止时间\",\n componentInfo: \"MKFormDatePicker\",\n }),\n new FormColumn({\n name: \"relatedMemberIds\", label: \"关联成员\",\n componentInfo: \"MKFormDataTableSelect\",\n componentProps: {\n dataTable: this.register(new MsAccountTable()),\n labelFieldName: \"name\",\n multiple: true\n },\n required: true\n }),\n new FormColumn({\n name: \"intro\", label: \"待办简介\", componentInfo: \"MKFormInput\",\n componentProps: {\n autoSize: {\n minRows: 5,\n maxRows: 20\n }\n },\n required: true\n }),\n\n new FormColumn({\n name: \"content\", label: \"内容\",\n componentInfo: \"MKFormInput\",\n componentProps: {\n type: \"textarea\",\n autosize: {\n minRows: 5,\n maxRows: 20\n }\n },\n required: true\n }),\n new FormColumn({\n name: \"priority\", label: \"待办优先级\",\n componentInfo: \"MKFormDataSelect\",\n componentProps: {\n options: result.data.data.priorityList\n }, required: true,\n defaultValue: 0\n }),\n new FormColumn({\n name: \"status\", label: \"待办状态\",\n componentInfo: \"MKFormDataSelect\",\n componentProps: {\n options: result.data.data.statusList\n }, required: true,\n defaultValue: 0\n }),\n ]);\n\n }\n\n async submit() {\n const res = await this.httpRequest.post(\"/ms/dv/todo/create\", this.data)\n return res\n }\n}\n","<template>\n <div class=\"ms-todo\">\n <el-page-header style=\"background-color: #fff;padding: 10px;\" :icon=\"null\">\n <template #title>\n <h3 style=\"color: var(--el-text-color-regular);margin-left: 10px;\">\n <MKSvgIcon name=\"ep:timer\" style=\"margin-right: 5px;\" />\n 待办事项\n </h3>\n </template>\n <template #extra>\n </template>\n </el-page-header>\n <div class=\"ms-todo__body-warp\">\n <ElCard class=\"ms-todo__body-warp__calendar\">\n <div class=\"ms-todo__body-warp__calendar-header\">\n <div class=\"ms-todo__body-warp__calendar-header-left\">\n <span class=\"ms-todo__body-warp__calendar-header_left-title\">今日工作</span><span\n class=\"ms-todo__body-warp__calendar-header_left-date\">{{\n selectDate.toLocaleDateString().replace(/\\//g, '-')\n }}</span>\n </div>\n <div class=\"ms-todo__body-warp__calendar-header-right\">\n <ElButton link type=\"primary\" @click=\"addToDo\">\n <MKSvgIcon name=\"ep:plus\" style=\"margin-right: 10px;\"></MKSvgIcon>添加事项\n </ElButton>\n </div>\n </div>\n <div class=\"ms-todo__body-warp__calendar-body\">\n <div class=\"ms-todo__body-warp__calendar-body-left day-box\" @click=\"offsetValue--\">\n <MKSvgIcon name=\"ep:arrow-left\"></MKSvgIcon>\n </div>\n <div v-for=\"item in currentWeek\" class=\"ms-todo__body-warp__calendar-body_date day-box\"\n @click=\"selectDate = item.date; console.log(item);\">\n <div class=\"ms-todo__body-warp__calendar-body_date-weekDay\">\n {{ item.weekDay }}\n </div>\n <div\n :class=\"[item.date.toLocaleDateString() == selectDate.toLocaleDateString() ? 'is-active' : '', 'ms-todo__body-warp__calendar-body_date-day']\">\n {{ item.day }}\n </div>\n </div>\n <div class=\"ms-todo__body-warp__calendar-body-right day-box\" @click=\"offsetValue++\">\n <MKSvgIcon name=\"ep:arrow-right\"></MKSvgIcon>\n </div>\n </div>\n <div class=\"ms-todo__body-warp__calendar-work\">\n\n </div>\n </ElCard>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { ElCard } from 'element-plus';\nimport { MKSvgIcon } from \"../../components\"\nimport { useMSAppClient } from '../../composables';\nimport { Ref, ref, watch } from 'vue';\nimport { Dialoger } from '@maketribe/dm';\nimport { ToDoForm } from './ToDoForm';\nimport { DvOpt, Group } from '@maketribe/request';\n\nconst { httpRequest } = useMSAppClient();\n\ndefineOptions({\n mkRoute: {\n name: \"dv/ms-todo/single/list/dialog\",\n },\n})\n\nconst todoDv = DvOpt.createInstance({\n name: \"todo\",\n moduleName:\"ms\"\n})\nconst dayGroup = new Group()\n\n\nconst selectDate = ref(new Date());\nconst offsetValue = ref(0)\nconst currentWeek = ref();\nconst todoList: Ref<any[]> = ref([{\n \n}])\nhttpRequest.get(\"/ms/dv/todo/meta\")\n//获取当前周信息\nconst getWeek = (offset = 0) => {\n const now = new Date().getTime() + offset * 86400000;\n const dayOfWeek = new Date(now).getDay();\n const startDate = new Date(now - dayOfWeek * 86400000);\n const weekDate = [\n startDate,\n new Date(now - (dayOfWeek - 1) * 86400000),\n new Date(now - (dayOfWeek - 2) * 86400000),\n new Date(now - (dayOfWeek - 3) * 86400000),\n new Date(now - (dayOfWeek - 4) * 86400000),\n new Date(now - (dayOfWeek - 5) * 86400000),\n new Date(now - (dayOfWeek - 6) * 86400000)\n ]\n return {\n 0: { date: weekDate[0], day: weekDate[0].getDate(), weekDay: \"日\" },\n 1: { date: weekDate[1], day: weekDate[1].getDate(), weekDay: \"一\" },\n 2: { date: weekDate[2], day: weekDate[2].getDate(), weekDay: \"二\" },\n 3: { date: weekDate[3], day: weekDate[3].getDate(), weekDay: \"三\" },\n 4: { date: weekDate[4], day: weekDate[4].getDate(), weekDay: \"四\" },\n 5: { date: weekDate[5], day: weekDate[5].getDate(), weekDay: \"五\" },\n 6: { date: weekDate[6], day: weekDate[6].getDate(), weekDay: \"六\" },\n }\n}\n\n/**\n * 获取当前日期的待办事项\n * @param Date day \n */\nconst getDayTodo = async (day: Date) => {\n dayGroup.clear();\n dayGroup.addCondition(\"createdAt\", \"<=\", day);\n dayGroup.addCondition(\"deadline\", \">=\", day);\n return await todoDv.query().addGroup((g) => g.group.addGroup(dayGroup)).list();\n}\n\nconst addToDo = async () => {\n console.log(2154);\n Dialoger.dataFormDialog({\n dataForm: new ToDoForm()\n })\n}\n\nwatch(offsetValue, (newValue, oldValue) => {\n //获取当前周信息\n currentWeek.value = getWeek(offsetValue.value * 7);\n //更改选中的日期\n selectDate.value = new Date(selectDate.value.getTime() + (newValue - oldValue! || 0) * 7 * 86400000);\n}, { immediate: true }\n)\n\nwatch(selectDate, async () => {\n // selectDate.value = currentWeek.value[0];\n //todo 获取当前日期的待办事项\n todoList.value = await getDayTodo(selectDate.value)\n}, { immediate: true })\n\n\n</script>\n<style lang='scss' scoped>\n\n.ms-todo {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n\n &__body-warp {\n padding: 10px;\n display: flex;\n height: 100%;\n overflow: hidden;\n\n &__calendar {\n width: 100%;\n\n &-header {\n display: flex;\n justify-content: space-between;\n\n &_left {\n &-title {\n font-size: 16px;\n margin-right: 10px;\n }\n\n &-date {\n font-size: 14px;\n }\n }\n }\n\n &-body {\n display: flex;\n justify-content: space-around;\n width: 100%;\n\n &_date {\n display: flex;\n flex-direction: column;\n gap: 10px;\n\n &-day {\n padding: 10px;\n border-radius: 8px;\n }\n\n &-weekDay {}\n\n .is-active {\n background-color: #2876f6;\n color: #fff;\n }\n }\n\n\n\n .day-box {\n display: flex;\n align-items: center;\n padding: 10px;\n box-sizing: border-box;\n cursor: pointer;\n }\n }\n }\n }\n}\n</style>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-B6eMiVss.js","sources":["../../src/pages/to-do/ToDoForm.ts","../../src/pages/to-do/index.vue"],"sourcesContent":["import { DataForm, DataFormOptions, FormColumn, Messager } from \"@maketribe/dm\";\nimport { DATA_MODEL_NAME, RegionLevel, MODULE_NAME } from \"../../constants\";\nimport { MSAppClient } from \"../../core\";\nimport { MsAccountTable } from \"../../dataviews\";\n\nexport class ToDoForm extends DataForm {\n static [DATA_MODEL_NAME]: string = \"todo\";\n\n constructor(options: DataFormOptions = {}) {\n super({\n name: ToDoForm[DATA_MODEL_NAME],\n moduleName: MODULE_NAME,\n ...options,\n });\n this.httpRequest = MSAppClient.instance!.httpRequest;\n }\n\n protected async initialize(): Promise<void> {\n await super.initialize();\n\n const result = await this.httpRequest.get(\"/ms/dv/todo/meta\")\n if (result.data.code != 200) {\n Messager.error({\n message: result.data.msg || '获取消息类型失败'\n })\n return;\n }\n\n this.setColumns([\n new FormColumn({\n name: \"memberId\", label: \"处理成员id\",\n componentInfo: \"MKFormDataTableSelect\",\n componentProps: {\n dataTable: this.register(new MsAccountTable()),\n labelFieldName: \"name\",\n },\n required: true\n }),\n new FormColumn({\n name: \"deadline\", label: \"截止时间\",\n componentInfo: \"MKFormDatePicker\",\n }),\n new FormColumn({\n name: \"relatedMemberIds\", label: \"关联成员\",\n componentInfo: \"MKFormDataTableSelect\",\n componentProps: {\n dataTable: this.register(new MsAccountTable()),\n labelFieldName: \"name\",\n multiple: true\n },\n required: true\n }),\n new FormColumn({\n name: \"intro\", label: \"待办简介\", componentInfo: \"MKFormInput\",\n componentProps: {\n autoSize: {\n minRows: 5,\n maxRows: 20\n }\n },\n required: true\n }),\n\n new FormColumn({\n name: \"content\", label: \"内容\",\n componentInfo: \"MKFormInput\",\n componentProps: {\n type: \"textarea\",\n autosize: {\n minRows: 5,\n maxRows: 20\n }\n },\n required: true\n }),\n new FormColumn({\n name: \"priority\", label: \"待办优先级\",\n componentInfo: \"MKFormDataSelect\",\n componentProps: {\n options: result.data.data.priorityList\n }, required: true,\n defaultValue: 0\n }),\n new FormColumn({\n name: \"status\", label: \"待办状态\",\n componentInfo: \"MKFormDataSelect\",\n componentProps: {\n options: result.data.data.statusList\n }, required: true,\n defaultValue: 0\n }),\n ]);\n\n }\n\n async submit() {\n const res = await this.httpRequest.post(\"/ms/dv/todo/create\", this.data)\n return res\n }\n}\n","<template>\n <div class=\"ms-todo\">\n <el-page-header style=\"background-color: #fff;padding: 10px;\" :icon=\"null\">\n <template #title>\n <h3 style=\"color: var(--el-text-color-regular);margin-left: 10px;\">\n <MKSvgIcon name=\"ep:timer\" style=\"margin-right: 5px;\" />\n 待办事项\n </h3>\n </template>\n <template #extra>\n </template>\n </el-page-header>\n <div class=\"ms-todo__body-warp\">\n <ElCard class=\"ms-todo__body-warp__calendar\">\n <div class=\"ms-todo__body-warp__calendar-header\">\n <div class=\"ms-todo__body-warp__calendar-header-left\">\n <span class=\"ms-todo__body-warp__calendar-header_left-title\">今日工作</span><span\n class=\"ms-todo__body-warp__calendar-header_left-date\">{{\n selectDate.toLocaleDateString().replace(/\\//g, '-')\n }}</span>\n </div>\n <div class=\"ms-todo__body-warp__calendar-header-right\">\n <ElButton link type=\"primary\" @click=\"addToDo\">\n <MKSvgIcon name=\"ep:plus\" style=\"margin-right: 10px;\"></MKSvgIcon>添加事项\n </ElButton>\n </div>\n </div>\n <div class=\"ms-todo__body-warp__calendar-body\">\n <div class=\"ms-todo__body-warp__calendar-body-left day-box\" @click=\"offsetValue--\">\n <MKSvgIcon name=\"ep:arrow-left\"></MKSvgIcon>\n </div>\n <div v-for=\"item in currentWeek\" class=\"ms-todo__body-warp__calendar-body_date day-box\"\n @click=\"selectDate = item.date; console.log(item);\">\n <div class=\"ms-todo__body-warp__calendar-body_date-weekDay\">\n {{ item.weekDay }}\n </div>\n <div\n :class=\"[item.date.toLocaleDateString() == selectDate.toLocaleDateString() ? 'is-active' : '', 'ms-todo__body-warp__calendar-body_date-day']\">\n {{ item.day }}\n </div>\n </div>\n <div class=\"ms-todo__body-warp__calendar-body-right day-box\" @click=\"offsetValue++\">\n <MKSvgIcon name=\"ep:arrow-right\"></MKSvgIcon>\n </div>\n </div>\n <div class=\"ms-todo__body-warp__calendar-work\">\n\n </div>\n </ElCard>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { ElCard } from 'element-plus';\nimport { MKSvgIcon } from \"../../components\"\nimport { useMSAppClient } from '../../composables';\nimport { Ref, ref, watch } from 'vue';\nimport { Dialoger } from '@maketribe/dm';\nimport { ToDoForm } from './ToDoForm';\nimport { DvOpt, Group } from '@maketribe/request';\n\nconst { httpRequest } = useMSAppClient();\n\ndefineOptions({\n mkRoute: {\n name: \"dv/ms-todo/single/list/dialog\",\n },\n})\n\nconst todoDv = DvOpt.createInstance({\n name: \"todo\",\n moduleName:\"ms\"\n})\nconst dayGroup = new Group()\n\n\nconst selectDate = ref(new Date());\nconst offsetValue = ref(0)\nconst currentWeek = ref();\nconst todoList: Ref<any[]> = ref([{\n \n}])\nhttpRequest.get(\"/ms/dv/todo/meta\")\n//获取当前周信息\nconst getWeek = (offset = 0) => {\n const now = new Date().getTime() + offset * 86400000;\n const dayOfWeek = new Date(now).getDay();\n const startDate = new Date(now - dayOfWeek * 86400000);\n const weekDate = [\n startDate,\n new Date(now - (dayOfWeek - 1) * 86400000),\n new Date(now - (dayOfWeek - 2) * 86400000),\n new Date(now - (dayOfWeek - 3) * 86400000),\n new Date(now - (dayOfWeek - 4) * 86400000),\n new Date(now - (dayOfWeek - 5) * 86400000),\n new Date(now - (dayOfWeek - 6) * 86400000)\n ]\n return {\n 0: { date: weekDate[0], day: weekDate[0].getDate(), weekDay: \"日\" },\n 1: { date: weekDate[1], day: weekDate[1].getDate(), weekDay: \"一\" },\n 2: { date: weekDate[2], day: weekDate[2].getDate(), weekDay: \"二\" },\n 3: { date: weekDate[3], day: weekDate[3].getDate(), weekDay: \"三\" },\n 4: { date: weekDate[4], day: weekDate[4].getDate(), weekDay: \"四\" },\n 5: { date: weekDate[5], day: weekDate[5].getDate(), weekDay: \"五\" },\n 6: { date: weekDate[6], day: weekDate[6].getDate(), weekDay: \"六\" },\n }\n}\n\n/**\n * 获取当前日期的待办事项\n * @param Date day \n */\nconst getDayTodo = async (day: Date) => {\n dayGroup.clear();\n dayGroup.addCondition(\"createdAt\", \"<=\", day);\n dayGroup.addCondition(\"deadline\", \">=\", day);\n return await todoDv.query().addGroup((g) => g.group.addGroup(dayGroup)).list();\n}\n\nconst addToDo = async () => {\n console.log(2154);\n Dialoger.dataFormDialog({\n dataForm: new ToDoForm()\n })\n}\n\nwatch(offsetValue, (newValue, oldValue) => {\n //获取当前周信息\n currentWeek.value = getWeek(offsetValue.value * 7);\n //更改选中的日期\n selectDate.value = new Date(selectDate.value.getTime() + (newValue - oldValue! || 0) * 7 * 86400000);\n}, { immediate: true }\n)\n\nwatch(selectDate, async () => {\n // selectDate.value = currentWeek.value[0];\n //todo 获取当前日期的待办事项\n todoList.value = await getDayTodo(selectDate.value)\n}, { immediate: true })\n\n\n</script>\n<style lang='scss' scoped>\n\n.ms-todo {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n\n &__body-warp {\n padding: 10px;\n display: flex;\n height: 100%;\n overflow: hidden;\n\n &__calendar {\n width: 100%;\n\n &-header {\n display: flex;\n justify-content: space-between;\n\n &_left {\n &-title {\n font-size: 16px;\n margin-right: 10px;\n }\n\n &-date {\n font-size: 14px;\n }\n }\n }\n\n &-body {\n display: flex;\n justify-content: space-around;\n width: 100%;\n\n &_date {\n display: flex;\n flex-direction: column;\n gap: 10px;\n\n &-day {\n padding: 10px;\n border-radius: 8px;\n }\n\n &-weekDay {}\n\n .is-active {\n background-color: #2876f6;\n color: #fff;\n }\n }\n\n\n\n .day-box {\n display: flex;\n align-items: center;\n padding: 10px;\n box-sizing: border-box;\n cursor: pointer;\n }\n }\n }\n }\n}\n</style>\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { defineComponent, ref, watch, computed, withAsyncContext, resolveCompone
|
|
|
2
2
|
import { ElScrollbar, ElMessageBox, ElMessage, ElButton } from "element-plus";
|
|
3
3
|
import { Dialoger } from "@maketribe/dm";
|
|
4
4
|
import { DvOpt } from "@maketribe/request";
|
|
5
|
-
import { v as MsRoleForm, d as MKSvgIcon, _ as _export_sfc, w as MsAccountMemberRoleTable, x as MKPagePanel, h as MKDataTable, y as MKTable, z as MKDataTablePagination } from "./index-
|
|
5
|
+
import { v as MsRoleForm, d as MKSvgIcon, _ as _export_sfc, w as MsAccountMemberRoleTable, x as MKPagePanel, h as MKDataTable, y as MKTable, z as MKDataTablePagination } from "./index-CJErFr3g.js";
|
|
6
6
|
import "vue-cropper";
|
|
7
7
|
import "@lexical/overflow";
|
|
8
8
|
import "@lexical/text";
|
|
@@ -367,4 +367,4 @@ const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6fdf
|
|
|
367
367
|
export {
|
|
368
368
|
index as default
|
|
369
369
|
};
|
|
370
|
-
//# sourceMappingURL=index-
|
|
370
|
+
//# sourceMappingURL=index-BAzpn8Sj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-Doxkktpi.js","sources":["../../src/pages/role/components/RoleAside.vue","../../src/pages/role/index.vue"],"sourcesContent":["<template>\n <div class=\"ms-role-aside\">\n <div class=\"ms-role-aside__main\" v-loading=\"loading\">\n <ElScrollbar height=\"100%\">\n <div class=\"ms-role-aside__role-list\">\n <div\n v-for=\"role in roles\"\n class=\"ms-role-aside__role-item flex flex-justify-between\"\n :class=\"[role.id === currentRole?.id ? 'is-active' : '',]\"\n :key=\"role.id\"\n @click=\"handleRoleClick(role)\"\n >\n <div class=\"flex justify-center items-center\">\n <MKSvgIcon class=\"ms-role-aside__role-icon\" name=\"ep:user\"/>\n <span class=\"ms-role-aside__role-desc\">{{ role.desc }}</span>\n </div>\n <div @click.prevent class=\"flex flex-items-center\">\n <ElDropdown>\n <span class=\"ms-role-aside__icon\">\n <MKSvgIcon name=\"ri:more-fill\"/>\n </span>\n\n <template #dropdown>\n <ElDropdownMenu>\n <ElDropdownItem :icon=\"Edit\" @click=\"handleMemberRoleEdit(role)\">\n 编辑\n </ElDropdownItem>\n <ElDropdownItem :icon=\"Delete\" @click=\"handleDelete(role)\">\n 删除\n </ElDropdownItem>\n </ElDropdownMenu>\n </template>\n </ElDropdown>\n </div>\n </div>\n </div>\n </ElScrollbar>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onMounted, ref, Ref, watch, computed, unref} from \"vue\";\nimport {DvOpt} from \"@maketribe/request\";\nimport {Dialoger} from \"@maketribe/dm\";\nimport {Edit, Delete} from \"@element-plus/icons-vue\";\nimport {ElButton, ElMessage, ElScrollbar, ElMessageBox} from \"element-plus\";\nimport {MKSvgIcon} from \"../../../components\";\nimport {MsRole, MsRoleForm} from \"../../../dataviews\";\n\nconst props = defineProps({\n roleForm: {\n type: MsRoleForm,\n required: true,\n },\n});\n\nconst emit = defineEmits([\"role-select\"]);\n\nconst dvOpt = DvOpt.createInstance({name: \"ms-role\"});\n\nconst roles: Ref<MsRole[]> = ref([]);\n\nconst currentRole: Ref<MsRole | null> = ref(null);\n\nconst loading = ref(false);\n\n\nwatch(currentRole, () => {\n emit(\"role-select\", currentRole.value);\n});\n\n//asdasda\nwatch(\n computed(() => props.roleForm),\n (roleForm, _, onCleanup) => {\n const disposable = roleForm.submittedEvent.on(() => {\n loadRoleList();\n });\n\n onCleanup(() => {\n disposable.dispose();\n });\n },\n {immediate: true}\n);\n\nconst loadRoleList = async () => {\n try {\n loading.value = true;\n\n roles.value = await dvOpt.query().list<MsRole>();\n\n // 加载完成之后默认选中第一个\n if (roles.value.length) {\n handleRoleClick(roles.value[0])\n }\n\n } finally {\n loading.value = false;\n }\n};\n\nconst handleMemberRoleEdit = (role: MsRole) => {\n Dialoger.dataFormDialog({\n dataForm: props.roleForm,\n recId: role.id,\n });\n};\n\nconst handleRoleClick = (role: MsRole) => {\n currentRole.value = role;\n};\n\nconst handleDelete = async (role: MsRole) => {\n const isConfirm = await ElMessageBox.confirm(\"是否确认删除\", {\n type: \"warning\",\n }).then(\n () => true,\n () => false\n );\n\n if (!isConfirm) {\n return;\n }\n\n try {\n const result = await dvOpt.delete(role.id);\n\n if (result.code !== 200) {\n ElMessage.error({message: result.msg});\n return;\n }\n\n ElMessage.success({message: \"删除成功\"});\n\n if (unref(currentRole)?.id === role.id) {\n currentRole.value = null;\n }\n\n loadRoleList();\n } catch (e) {\n console.error(e);\n ElMessage.error({message: \"网络异常\"});\n }\n};\n\n// 加载角色列表\nawait loadRoleList();\n</script>\n\n<style lang=\"scss\" scoped>\n.ms-role-aside {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n\n &__main {\n height: 0;\n flex: 1;\n }\n\n &__role {\n &-icon {\n margin-right: 8px;\n font-size: 16px;\n }\n &-item+&-item {\n margin-top: 5px;\n }\n &-item {\n display: flex;\n align-items: center;\n height: 36px;\n padding: 5px 10px;\n line-height: 36px;\n border-radius: 5px;\n cursor: pointer;\n\n &.is-active,\n &:hover {\n background-color: #f4f4f4;\n }\n\n .ms-role-aside__icon {\n display: none;\n border-radius: 3px;\n font-size: 14px;\n\n &:hover {\n background-color: #f4f4f4;\n }\n }\n\n &:hover {\n .ms-role-aside__icon {\n padding: 5px;\n display: inline-flex;\n }\n }\n }\n }\n}\n</style>\n","<template>\n <MKPagePanel class=\"ms-role\">\n <template #extra>\n <el-button type=\"primary\" @click=\"handleAddRoleClick\" style=\"margin-right: 10px;\">\n <MKSvgIcon name=\"ep:plus\" style=\"margin-right: 5px;\"/>\n 添加角色\n </el-button>\n </template>\n <div class=\"ms-role__body-warp\">\n <div class=\"ms-role__aside\">\n <RoleAside\n @role-select=\"handleRoleSelect\"\n :role-form=\"roleForm\"\n ref=\"RoleAsideEl\"\n />\n </div>\n <div class=\"ms-role__main\">\n <div class=\"ms-role__content\" v-if=\"currentRole\">\n <div class=\"flex flex-justify-between\">\n <div class=\"ms-role__title\" flex=\"flex flex-row\">\n <div>\n <MKSvgIcon class=\"ms-role-aside__role-icon\" name=\"ms-user\" m=\"r-2\"/>\n {{ currentRole.desc }}\n </div>\n <div v-if=\"currentRole.memo\" :style=\"`font-size: 13px;color:#ccc;font-weight:200`\">{{ currentRole.memo }}</div>\n </div>\n <div class=\"ms-role__tools\">\n <ElButton type=\"primary\" text @click=\"handlePermissionEdit\">\n 权限设置\n </ElButton>\n <ElButton text type=\"primary\" @click=\"handleSelectUserClick\">\n 添加成员\n </ElButton>\n <ElButton text type=\"danger\" :disabled=\"disabledBatchDelete\" @click=\"handleBatchDelete\">\n 批量删除\n </ElButton>\n </div>\n </div>\n <MKDataTable :data-table=\"memberRoleTable\">\n <MKTable/>\n <MKDataTablePagination/>\n </MKDataTable>\n </div>\n </div>\n </div>\n </MKPagePanel>\n</template>\n<script setup lang=\"ts\">\nimport {\n reactive,\n Ref,\n ref,\n watch,\n unref,\n computed,\n onBeforeUnmount,\n} from \"vue\";\nimport {ElButton, ElMessage, ElMessageBox} from \"element-plus\";\nimport {Dialoger} from \"@maketribe/dm\";\nimport {DvOpt} from \"@maketribe/request\";\nimport {MKDataTable, MKPagePanel, MKSvgIcon, MKTable, MKDataTablePagination} from \"../../components\";\nimport {MsRole, MsAccountMemberRoleTable, MsRoleForm} from \"../../dataviews\";\nimport RoleAside from \"./components/RoleAside.vue\";\n\nconst router = useRouter();\n\nconst dvOpt = DvOpt.createInstance({name: \"ms-role\"});\n\nconst currentRole: Ref<MsRole | null> = ref(null);\n\nconst memberRoleTable = reactive(new MsAccountMemberRoleTable()) as MsAccountMemberRoleTable;\n\nconst roleForm = reactive(new MsRoleForm()) as MsRoleForm;\n\nconst disabledBatchDelete = computed(\n () => memberRoleTable.getSelection().length === 0\n);\n\nwatch(currentRole, (currentRole) => {\n memberRoleTable.setCurrentRole(currentRole);\n});\n\nonBeforeUnmount(() => {\n memberRoleTable.dispose();\n roleForm.dispose();\n});\n\nconst handleAddRoleClick = () => {\n Dialoger.dataFormDialog({\n dataForm: roleForm\n });\n};\n\nconst handleRoleSelect = (role: MsRole) => {\n currentRole.value = role;\n};\n\nconst handleSelectUserClick = async () => {\n const selectResult = await Dialoger.dataTableSelectDialog(\n memberRoleTable.memberTable\n );\n\n if (!selectResult.isConfirm) {\n return;\n }\n\n const roleId = unref(currentRole)!.id;\n\n const memberRoleList = selectResult.selections.map((item) => ({\n roleId,\n memberId: item,\n }));\n\n try {\n const result = await dvOpt.batchSave(memberRoleList);\n\n if (result.code !== 200) {\n ElMessage.error({message: result.msg});\n return;\n }\n\n ElMessage.success({message: \"添加成功\"});\n\n memberRoleTable.load();\n } catch (e) {\n console.error(e);\n\n ElMessage.error({message: \"网络异常\"});\n }\n};\n\nconst handleBatchDelete = async () => {\n const isConfirm = await ElMessageBox.confirm(\"是否确认删除\", {\n type: \"warning\",\n }).then(() => true,() => false);\n\n if (!isConfirm) { return; }\n\n try {\n const result = await dvOpt.batchDelete(memberRoleTable.getSelection());\n\n if (result.code !== 200) {\n ElMessage.error({message: result.msg});\n return;\n }\n\n ElMessage.success({message: \"删除成功\"});\n memberRoleTable.load();\n } catch (e) {\n console.error(e);\n ElMessage.error({message: \"网络异常\"});\n }\n};\n\nconst handlePermissionEdit = () => {\n router.push({name: \"dv/ms-role/permission\", params: {id: unref(currentRole)?.id}})\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.ms-role {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n padding: 0px;\n\n &__body-warp {\n padding: 10px;\n display: flex;\n height: 100%;\n overflow: hidden;\n }\n\n &__aside {\n background-color: #fff;\n padding: 10px;\n max-width: 360px;\n min-width: 220px;\n margin-right: 10px;\n }\n\n &__main {\n width: 0;\n flex: 1;\n\n .mk-data-table {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n .el-table {\n height: 0;\n flex: 1;\n }\n }\n }\n\n &__content {\n display: flex;\n flex-direction: column;\n padding: 12px;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n background-color: #fff;\n }\n\n &__title {\n font-size: 18px;\n font-weight: 600;\n margin: 10px 0;\n }\n\n &__tools {\n margin: 10px 0;\n display: flex;\n justify-content: flex-end;\n }\n}\n\n</style>\n"],"names":["_withAsyncContext","currentRole"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-BAzpn8Sj.js","sources":["../../src/pages/role/components/RoleAside.vue","../../src/pages/role/index.vue"],"sourcesContent":["<template>\n <div class=\"ms-role-aside\">\n <div class=\"ms-role-aside__main\" v-loading=\"loading\">\n <ElScrollbar height=\"100%\">\n <div class=\"ms-role-aside__role-list\">\n <div\n v-for=\"role in roles\"\n class=\"ms-role-aside__role-item flex flex-justify-between\"\n :class=\"[role.id === currentRole?.id ? 'is-active' : '',]\"\n :key=\"role.id\"\n @click=\"handleRoleClick(role)\"\n >\n <div class=\"flex justify-center items-center\">\n <MKSvgIcon class=\"ms-role-aside__role-icon\" name=\"ep:user\"/>\n <span class=\"ms-role-aside__role-desc\">{{ role.desc }}</span>\n </div>\n <div @click.prevent class=\"flex flex-items-center\">\n <ElDropdown>\n <span class=\"ms-role-aside__icon\">\n <MKSvgIcon name=\"ri:more-fill\"/>\n </span>\n\n <template #dropdown>\n <ElDropdownMenu>\n <ElDropdownItem :icon=\"Edit\" @click=\"handleMemberRoleEdit(role)\">\n 编辑\n </ElDropdownItem>\n <ElDropdownItem :icon=\"Delete\" @click=\"handleDelete(role)\">\n 删除\n </ElDropdownItem>\n </ElDropdownMenu>\n </template>\n </ElDropdown>\n </div>\n </div>\n </div>\n </ElScrollbar>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onMounted, ref, Ref, watch, computed, unref} from \"vue\";\nimport {DvOpt} from \"@maketribe/request\";\nimport {Dialoger} from \"@maketribe/dm\";\nimport {Edit, Delete} from \"@element-plus/icons-vue\";\nimport {ElButton, ElMessage, ElScrollbar, ElMessageBox} from \"element-plus\";\nimport {MKSvgIcon} from \"../../../components\";\nimport {MsRole, MsRoleForm} from \"../../../dataviews\";\n\nconst props = defineProps({\n roleForm: {\n type: MsRoleForm,\n required: true,\n },\n});\n\nconst emit = defineEmits([\"role-select\"]);\n\nconst dvOpt = DvOpt.createInstance({name: \"ms-role\"});\n\nconst roles: Ref<MsRole[]> = ref([]);\n\nconst currentRole: Ref<MsRole | null> = ref(null);\n\nconst loading = ref(false);\n\n\nwatch(currentRole, () => {\n emit(\"role-select\", currentRole.value);\n});\n\n//asdasda\nwatch(\n computed(() => props.roleForm),\n (roleForm, _, onCleanup) => {\n const disposable = roleForm.submittedEvent.on(() => {\n loadRoleList();\n });\n\n onCleanup(() => {\n disposable.dispose();\n });\n },\n {immediate: true}\n);\n\nconst loadRoleList = async () => {\n try {\n loading.value = true;\n\n roles.value = await dvOpt.query().list<MsRole>();\n\n // 加载完成之后默认选中第一个\n if (roles.value.length) {\n handleRoleClick(roles.value[0])\n }\n\n } finally {\n loading.value = false;\n }\n};\n\nconst handleMemberRoleEdit = (role: MsRole) => {\n Dialoger.dataFormDialog({\n dataForm: props.roleForm,\n recId: role.id,\n });\n};\n\nconst handleRoleClick = (role: MsRole) => {\n currentRole.value = role;\n};\n\nconst handleDelete = async (role: MsRole) => {\n const isConfirm = await ElMessageBox.confirm(\"是否确认删除\", {\n type: \"warning\",\n }).then(\n () => true,\n () => false\n );\n\n if (!isConfirm) {\n return;\n }\n\n try {\n const result = await dvOpt.delete(role.id);\n\n if (result.code !== 200) {\n ElMessage.error({message: result.msg});\n return;\n }\n\n ElMessage.success({message: \"删除成功\"});\n\n if (unref(currentRole)?.id === role.id) {\n currentRole.value = null;\n }\n\n loadRoleList();\n } catch (e) {\n console.error(e);\n ElMessage.error({message: \"网络异常\"});\n }\n};\n\n// 加载角色列表\nawait loadRoleList();\n</script>\n\n<style lang=\"scss\" scoped>\n.ms-role-aside {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n\n &__main {\n height: 0;\n flex: 1;\n }\n\n &__role {\n &-icon {\n margin-right: 8px;\n font-size: 16px;\n }\n &-item+&-item {\n margin-top: 5px;\n }\n &-item {\n display: flex;\n align-items: center;\n height: 36px;\n padding: 5px 10px;\n line-height: 36px;\n border-radius: 5px;\n cursor: pointer;\n\n &.is-active,\n &:hover {\n background-color: #f4f4f4;\n }\n\n .ms-role-aside__icon {\n display: none;\n border-radius: 3px;\n font-size: 14px;\n\n &:hover {\n background-color: #f4f4f4;\n }\n }\n\n &:hover {\n .ms-role-aside__icon {\n padding: 5px;\n display: inline-flex;\n }\n }\n }\n }\n}\n</style>\n","<template>\n <MKPagePanel class=\"ms-role\">\n <template #extra>\n <el-button type=\"primary\" @click=\"handleAddRoleClick\" style=\"margin-right: 10px;\">\n <MKSvgIcon name=\"ep:plus\" style=\"margin-right: 5px;\"/>\n 添加角色\n </el-button>\n </template>\n <div class=\"ms-role__body-warp\">\n <div class=\"ms-role__aside\">\n <RoleAside\n @role-select=\"handleRoleSelect\"\n :role-form=\"roleForm\"\n ref=\"RoleAsideEl\"\n />\n </div>\n <div class=\"ms-role__main\">\n <div class=\"ms-role__content\" v-if=\"currentRole\">\n <div class=\"flex flex-justify-between\">\n <div class=\"ms-role__title\" flex=\"flex flex-row\">\n <div>\n <MKSvgIcon class=\"ms-role-aside__role-icon\" name=\"ms-user\" m=\"r-2\"/>\n {{ currentRole.desc }}\n </div>\n <div v-if=\"currentRole.memo\" :style=\"`font-size: 13px;color:#ccc;font-weight:200`\">{{ currentRole.memo }}</div>\n </div>\n <div class=\"ms-role__tools\">\n <ElButton type=\"primary\" text @click=\"handlePermissionEdit\">\n 权限设置\n </ElButton>\n <ElButton text type=\"primary\" @click=\"handleSelectUserClick\">\n 添加成员\n </ElButton>\n <ElButton text type=\"danger\" :disabled=\"disabledBatchDelete\" @click=\"handleBatchDelete\">\n 批量删除\n </ElButton>\n </div>\n </div>\n <MKDataTable :data-table=\"memberRoleTable\">\n <MKTable/>\n <MKDataTablePagination/>\n </MKDataTable>\n </div>\n </div>\n </div>\n </MKPagePanel>\n</template>\n<script setup lang=\"ts\">\nimport {\n reactive,\n Ref,\n ref,\n watch,\n unref,\n computed,\n onBeforeUnmount,\n} from \"vue\";\nimport {ElButton, ElMessage, ElMessageBox} from \"element-plus\";\nimport {Dialoger} from \"@maketribe/dm\";\nimport {DvOpt} from \"@maketribe/request\";\nimport {MKDataTable, MKPagePanel, MKSvgIcon, MKTable, MKDataTablePagination} from \"../../components\";\nimport {MsRole, MsAccountMemberRoleTable, MsRoleForm} from \"../../dataviews\";\nimport RoleAside from \"./components/RoleAside.vue\";\n\nconst router = useRouter();\n\nconst dvOpt = DvOpt.createInstance({name: \"ms-role\"});\n\nconst currentRole: Ref<MsRole | null> = ref(null);\n\nconst memberRoleTable = reactive(new MsAccountMemberRoleTable()) as MsAccountMemberRoleTable;\n\nconst roleForm = reactive(new MsRoleForm()) as MsRoleForm;\n\nconst disabledBatchDelete = computed(\n () => memberRoleTable.getSelection().length === 0\n);\n\nwatch(currentRole, (currentRole) => {\n memberRoleTable.setCurrentRole(currentRole);\n});\n\nonBeforeUnmount(() => {\n memberRoleTable.dispose();\n roleForm.dispose();\n});\n\nconst handleAddRoleClick = () => {\n Dialoger.dataFormDialog({\n dataForm: roleForm\n });\n};\n\nconst handleRoleSelect = (role: MsRole) => {\n currentRole.value = role;\n};\n\nconst handleSelectUserClick = async () => {\n const selectResult = await Dialoger.dataTableSelectDialog(\n memberRoleTable.memberTable\n );\n\n if (!selectResult.isConfirm) {\n return;\n }\n\n const roleId = unref(currentRole)!.id;\n\n const memberRoleList = selectResult.selections.map((item) => ({\n roleId,\n memberId: item,\n }));\n\n try {\n const result = await dvOpt.batchSave(memberRoleList);\n\n if (result.code !== 200) {\n ElMessage.error({message: result.msg});\n return;\n }\n\n ElMessage.success({message: \"添加成功\"});\n\n memberRoleTable.load();\n } catch (e) {\n console.error(e);\n\n ElMessage.error({message: \"网络异常\"});\n }\n};\n\nconst handleBatchDelete = async () => {\n const isConfirm = await ElMessageBox.confirm(\"是否确认删除\", {\n type: \"warning\",\n }).then(() => true,() => false);\n\n if (!isConfirm) { return; }\n\n try {\n const result = await dvOpt.batchDelete(memberRoleTable.getSelection());\n\n if (result.code !== 200) {\n ElMessage.error({message: result.msg});\n return;\n }\n\n ElMessage.success({message: \"删除成功\"});\n memberRoleTable.load();\n } catch (e) {\n console.error(e);\n ElMessage.error({message: \"网络异常\"});\n }\n};\n\nconst handlePermissionEdit = () => {\n router.push({name: \"dv/ms-role/permission\", params: {id: unref(currentRole)?.id}})\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.ms-role {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n padding: 0px;\n\n &__body-warp {\n padding: 10px;\n display: flex;\n height: 100%;\n overflow: hidden;\n }\n\n &__aside {\n background-color: #fff;\n padding: 10px;\n max-width: 360px;\n min-width: 220px;\n margin-right: 10px;\n }\n\n &__main {\n width: 0;\n flex: 1;\n\n .mk-data-table {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n .el-table {\n height: 0;\n flex: 1;\n }\n }\n }\n\n &__content {\n display: flex;\n flex-direction: column;\n padding: 12px;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n background-color: #fff;\n }\n\n &__title {\n font-size: 18px;\n font-weight: 600;\n margin: 10px 0;\n }\n\n &__tools {\n margin: 10px 0;\n display: flex;\n justify-content: flex-end;\n }\n}\n\n</style>\n"],"names":["_withAsyncContext","currentRole"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, unref, createVNode, isVNode } from "vue";
|
|
2
|
-
import { c as columnTextProps } from "./index-
|
|
3
|
-
import { u as useColumn, b as MKText } from "./index-
|
|
2
|
+
import { c as columnTextProps } from "./index-BoiAjkKC.js";
|
|
3
|
+
import { u as useColumn, b as MKText } from "./index-CJErFr3g.js";
|
|
4
4
|
import "@maketribe/utils";
|
|
5
5
|
import "vue-router";
|
|
6
6
|
import "@maketribe/dm";
|
|
@@ -48,4 +48,4 @@ export {
|
|
|
48
48
|
columnTextProps,
|
|
49
49
|
MKColumnText as default
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=index-
|
|
51
|
+
//# sourceMappingURL=index-BLWAMDNo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BLWAMDNo.js","sources":["../../src/components/data-model/data-table/components/column-text/column-text.tsx","../../src/components/data-model/data-table/components/column-text/index.ts"],"sourcesContent":["import { computed, defineComponent, unref } from \"vue\";\nimport { columnTextProps } from \"./column-text-options\";\nimport { useColumn } from \"../../composables\";\nimport {MKText} from \"../../../../basic\";\n\nexport default defineComponent({\n name: \"MKColumnText\",\n props: columnTextProps,\n setup(props) {\n const { value } = useColumn(props);\n\n const formatValue = computed(() => props.formatValue(unref(value)));\n\n return () => {\n return <MKText class=\"mk-column-text\" copy={props.copy}>{unref(formatValue)}</MKText>;\n };\n },\n});\n","import ColumnText from \"./column-text\";\nimport \"./index.scss\"\nexport const MKColumnText = ColumnText;\nexport default MKColumnText;\n\nexport * from \"./column-text-options\";\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","props","columnTextProps","setup","value","useColumn","formatValue","computed","unref","_slot","_createVNode","MKText","copy","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAGyC,SAAAA,QAAAC,GAAA;AAAA,SAAA,OAAAA,MAAA,cAAAC,OAAAC,UAAAC,SAAAC,KAAAJ,CAAA,MAAA,qBAAA,CAAAK,QAAAL,CAAA;AAAA;AAEzC,MAAA,6CAA+B;AAAA,EAC7BM,MAAM;AAAA,EACNC,OAAOC;AAAAA,EACPC,MAAMF,OAAO;AACX,UAAM;AAAA,MAAEG;AAAAA,IAAM,IAAIC,UAAUJ,KAAK;AAEjC,UAAMK,cAAcC,SAAS,MAAMN,MAAMK,YAAYE,MAAMJ,KAAK,CAAC,CAAC;AAElE,WAAO,MAAM;AAAA,UAAAK;AACX,aAAAC,YAAAC,QAAA;AAAA,QAAA,SAAA;AAAA,QAAA,QAA4CV,MAAMW;AAAAA,SAAInB,QAAAgB,QAAGD,MAAMF,WAAW,CAAC,IAAAG,QAAA;AAAA,QAAAI,SAAAA,MAAA,CAAAJ,KAAA;AAAA,MAAA,CAAA;AAAA,IAC7E;AAAA,EACF;AACF,CAAC;ACfM,MAAM,eAAe;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, resolveComponent, createBlock, openBlock, unref, withCtx, createVNode } from "vue";
|
|
2
|
-
import { L as MKLayout } from "./index-
|
|
2
|
+
import { L as MKLayout } from "./index-CJErFr3g.js";
|
|
3
3
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
4
|
__name: "index",
|
|
5
5
|
setup(__props) {
|
|
@@ -17,4 +17,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
17
17
|
export {
|
|
18
18
|
_sfc_main as default
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=index-
|
|
20
|
+
//# sourceMappingURL=index-BYI6j3rX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BYI6j3rX.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { buildProps, withInstall } from "@maketribe/utils";
|
|
2
2
|
import { defineComponent, computed, watch, unref, ref, resolveComponent, createElementBlock, openBlock, createVNode, withCtx, createTextVNode, toDisplayString } from "vue";
|
|
3
|
-
import { g as useFormItem, h as MKDataTable, i as DataForm, j as MKForm, _ as _export_sfc } from "./index-
|
|
3
|
+
import { g as useFormItem, h as MKDataTable, i as DataForm, j as MKForm, _ as _export_sfc } from "./index-CJErFr3g.js";
|
|
4
4
|
import { FormDetailColumn, Messager, DataFormType } from "@maketribe/dm";
|
|
5
5
|
import { ElButton } from "element-plus";
|
|
6
6
|
import { I18n } from "@maketribe/locale";
|
|
@@ -161,4 +161,4 @@ export {
|
|
|
161
161
|
formDetailEmits,
|
|
162
162
|
formDetailProps
|
|
163
163
|
};
|
|
164
|
-
//# sourceMappingURL=index-
|
|
164
|
+
//# sourceMappingURL=index-BoXTMwMe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BoXTMwMe.js","sources":["../../src/components/data-model/data-form/components/form-detail/form-detail-options.ts","../../src/components/data-model/data-form/components/form-detail/form-detail.vue","../../src/components/data-model/data-form/components/form-detail/index.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\nimport { FormDetailColumn } from \"@maketribe/dm\";\n\nexport const formDetailProps = buildProps({\n modelValue: {\n type: null,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n column: { type: FormDetailColumn, required: true },\n formWidth: {\n type: String,\n default: \"400px\",\n },\n} as const);\n\nexport type FormDetailProps = ExtractPropTypes<typeof formDetailProps>;\n\nexport const formDetailEmits = {\n \"update:model-value\": (v: any) => true,\n};\n\nexport type FormDetailEmits = ExtractPropTypes<typeof formDetailEmits>;\n","<script setup lang=\"ts\">\nimport {computed, ref, unref, watch} from \"vue\";\nimport {MKDataTable} from \"../../../data-table\";\nimport DataForm from \"../../data-form.vue\";\nimport {formDetailEmits, formDetailProps} from \"./form-detail-options\";\nimport {useFormItem} from \"../../composables\";\nimport {MKForm} from '../../views'\nimport {ElButton, ElEmpty} from \"element-plus\";\nimport { I18n } from \"@maketribe/locale\";\nimport {DataFormType, Messager} from \"@maketribe/dm\";\n\nconst props = defineProps(formDetailProps);\n\nconst emit = defineEmits(formDetailEmits)\n\nconst detailTable = computed(() => props.column.detailTable);\nconst detailForm = computed(() => props.column.detailForm!);\n\nconst {value} = useFormItem();\n\nwatch(\n computed(() => unref(value)),\n (value) => {\n const _detailTable = unref(detailTable);\n\n value = Array.isArray(value) ? value : [];\n\n _detailTable.setList(\n value.map((item: any) => _detailTable.formatItem(item))\n );\n }\n);\n\nconst isShowDataForm = ref(false);\n\nwatch(\n detailTable,\n (dataTable, _, onCleanup) => {\n\n const addRecordDisposable = dataTable.addRecordEvent.on(async ({item}) => {\n const _dataForm = unref(detailForm);\n\n if (!_dataForm) {\n console.warn(`没有对应的 (${dataTable.name}) DataForm 实现`);\n return;\n }\n\n isShowDataForm.value = true;\n\n _dataForm.addRecord(item);\n });\n\n const editRecordDisposable = dataTable.editRecordEvent.on(\n async ({item}) => {\n const _dataForm = unref(detailForm);\n\n if (!_dataForm) {\n console.warn(`没有对应的 (${dataTable.name}) DataForm 实现`);\n return;\n }\n\n isShowDataForm.value = true;\n\n try {\n const response = await _dataForm.editRecord(item);\n\n if (response.data.code !== 200) {\n Messager.error({message: response.data.msg});\n isShowDataForm.value = false;\n return;\n }\n } catch (e) {\n console.error(e);\n isShowDataForm.value = false;\n }\n }\n );\n\n onCleanup(() => {\n addRecordDisposable.dispose();\n editRecordDisposable.dispose();\n });\n },\n {immediate: true}\n);\n\nwatch(\n detailForm,\n (dataForm, _, onCleanup) => {\n const submittedDisposable = dataForm.submittedEvent.on(() => {\n isShowDataForm.value = false;\n\n unref(detailTable)?.load();\n });\n\n const cancelDisposable = dataForm.cancelEvent.on(() => {\n isShowDataForm.value = false;\n });\n\n onCleanup(() => {\n submittedDisposable.dispose();\n cancelDisposable.dispose();\n });\n },\n {immediate: true}\n);\n\nconst isUpdateForm = computed(()=> unref(detailForm).getDataFormType() == DataFormType.UPDATE)\n\nconst handleFormSave = async () => {\n await unref(detailForm)?.simpleSubmit();\n};\n\nconst handleFormCancel = () => {\n unref(detailForm).cancel();\n};\n\n\n</script>\n\n<template>\n <div class=\"mk-form-detail\">\n <MKDataTable :dataTable=\"detailTable\" :autoLoad=\"false\" />\n <ElDrawer v-model=\"isShowDataForm\" append-to-body :title=\"column.label\">\n <DataForm :dataForm=\"detailForm\" :autoLoad=\"false\" >\n <MKForm labelPosition=\"top\" />\n </DataForm>\n <template #footer>\n <ElButton @click=\"handleFormCancel\">\n {{I18n.instance.translate(\"mk.dataForm.cancelButton\")}}\n </ElButton>\n <ElButton type=\"primary\" @click=\"handleFormSave\">\n {{ isUpdateForm ? I18n.instance.translate(\"mk.dataForm.saveButton\") : I18n.instance.translate(\"mk.dataForm.addButton\")}}\n </ElButton>\n </template>\n\n<!-- <template #empty>-->\n<!-- <ElEmpty :image-size=\"100\"/>-->\n<!-- </template>-->\n </ElDrawer>\n </div>\n</template>\n<style scoped lang=\"scss\">\n.mk-form-detail {\n width: 100%;\n min-height: 200px;\n\n .mk-data-table {\n height: 100%;\n }\n\n .mk-data-table-search {\n display: none;\n }\n\n .el-table {\n flex: 1;\n }\n\n @at-root {\n &__drawer {\n .el-card {\n border: none;\n\n &__body {\n --el-card-padding: 0px;\n }\n }\n }\n }\n}\n\n</style>\n","import { withInstall } from \"@maketribe/utils\";\nimport FormDetail from \"./form-detail.vue\";\n\nexport const MKFormDetail = withInstall(FormDetail);\nexport default MKFormDetail;\n\nexport * from \"./form-detail-options\";\n"],"names":["value"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { buildProps } from "@maketribe/utils";
|
|
2
|
-
import { c as columnProps } from "./index-
|
|
2
|
+
import { c as columnProps } from "./index-CJErFr3g.js";
|
|
3
3
|
import "vue";
|
|
4
4
|
import "vue-router";
|
|
5
5
|
import "@maketribe/dm";
|
|
@@ -27,4 +27,4 @@ const columnTextProps = buildProps({
|
|
|
27
27
|
export {
|
|
28
28
|
columnTextProps as c
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=index-
|
|
30
|
+
//# sourceMappingURL=index-BoiAjkKC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BoiAjkKC.js","sources":["../../src/components/data-model/data-table/components/column-text/column-text-options.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\nimport { columnProps } from \"../../composables\";\n\nexport const columnTextProps = buildProps({\n ...columnProps,\n copy: { type: Boolean, required: false },\n formatValue: { type: Function, default: (value: any) => value },\n});\n\nexport type ColumnTextProps = ExtractPropTypes<typeof columnTextProps>;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,kBAAkB,WAAW;AAAA,EACxC,GAAG;AAAA,EACH,MAAM,EAAE,MAAM,SAAS,UAAU,MAAA;AAAA,EACjC,aAAa,EAAE,MAAM,UAAU,SAAS,CAAC,UAAe,MAAA;AAC1D,CAAC;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, inject, computed, createVNode, unref, createTextVNode } from "vue";
|
|
2
2
|
import { ElDropdown, ElDropdownMenu, ElDropdownItem } from "element-plus";
|
|
3
|
-
import { D as DATA_TABLE_CONTEXT_KEY, d as MKSvgIcon } from "./index-
|
|
3
|
+
import { D as DATA_TABLE_CONTEXT_KEY, d as MKSvgIcon } from "./index-CJErFr3g.js";
|
|
4
4
|
import { Dialoger, Messager } from "@maketribe/dm";
|
|
5
5
|
import "vue-cropper";
|
|
6
6
|
import "@lexical/overflow";
|
|
@@ -70,4 +70,4 @@ export {
|
|
|
70
70
|
MKBatchOpt,
|
|
71
71
|
MKBatchOpt as default
|
|
72
72
|
};
|
|
73
|
-
//# sourceMappingURL=index-
|
|
73
|
+
//# sourceMappingURL=index-BwZKYOQS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BwZKYOQS.js","sources":["../../src/components/data-model/data-table/components/header-components/batch-opt/batch-opt.tsx","../../src/components/data-model/data-table/components/header-components/batch-opt/index.ts"],"sourcesContent":["import { computed, defineComponent, inject, unref } from \"vue\";\nimport { ElDropdown, ElDropdownItem, ElDropdownMenu } from \"element-plus\";\nimport { MKSvgIcon } from \"../../../../../basic\";\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../../token\";\nimport { Dialoger, Messager } from \"@maketribe/dm\";\n\nexport default defineComponent({\n name: \"MKBatchOpt\",\n setup(props) {\n const dataTable = inject(DATA_TABLE_CONTEXT_KEY)?.dataTable!;\n\n var disallowBatchOpt = computed(\n () => (dataTable?.getSelection().length ?? 0) === 0\n );\n\n const handleExport = (...args: any[]) => {\n dataTable.exportData();\n };\n\n const handleBatchDelete = async () => {\n const isConfirm = await Dialoger.confirm({\n message: \"是否删除选中项\",\n type: \"warning\",\n title: \"批量删除\",\n });\n\n if (!isConfirm) {\n return;\n }\n\n const response = await dataTable.batchDelete(dataTable.getSelection());\n\n if (response.data.code !== 200) {\n Messager.error({ message: response.data.msg });\n return;\n }\n\n dataTable.load();\n };\n\n return () => {\n return (\n <ElDropdown\n onClick={handleExport}\n splitButton\n v-slots={{\n dropdown: () => {\n return (\n <ElDropdownMenu>\n <ElDropdownItem\n disabled={unref(disallowBatchOpt)}\n onClick={handleBatchDelete}\n >\n <MKSvgIcon name=\"icon-park-solid:delete-themes\" /> 批量删除\n </ElDropdownItem>\n </ElDropdownMenu>\n );\n },\n }}\n >\n <MKSvgIcon name=\"clarity:export-solid-badged\" />\n </ElDropdown>\n );\n };\n },\n});\n","import BatchOpt from \"./batch-opt\";\n\nexport const MKBatchOpt = BatchOpt;\nexport default MKBatchOpt;\n"],"names":["name","setup","props","dataTable","inject","DATA_TABLE_CONTEXT_KEY","disallowBatchOpt","computed","getSelection","length","handleExport","args","exportData","handleBatchDelete","isConfirm","Dialoger","confirm","message","type","title","response","batchDelete","data","code","Messager","error","msg","load","_createVNode","ElDropdown","default","MKSvgIcon","dropdown","ElDropdownMenu","ElDropdownItem","unref","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;AAMA,MAAA,2CAA+B;AAAA,EAC7BA,MAAM;AAAA,EACNC,MAAMC,OAAO;AACX,UAAMC,YAAYC,OAAOC,sBAAsB,GAAGF;AAElD,QAAIG,mBAAmBC,SACrB,OAAOJ,WAAWK,eAAeC,UAAU,OAAO,CACpD;AAEA,UAAMC,eAAeA,IAAIC,SAAgB;AACvCR,gBAAUS,WAAU;AAAA,IACtB;AAEA,UAAMC,oBAAoB,YAAY;AACpC,YAAMC,YAAY,MAAMC,SAASC,QAAQ;AAAA,QACvCC,SAAS;AAAA,QACTC,MAAM;AAAA,QACNC,OAAO;AAAA,MACT,CAAC;AAED,UAAI,CAACL,WAAW;AACd;AAAA,MACF;AAEA,YAAMM,WAAW,MAAMjB,UAAUkB,YAAYlB,UAAUK,aAAY,CAAE;AAErE,UAAIY,SAASE,KAAKC,SAAS,KAAK;AAC9BC,iBAASC,MAAM;AAAA,UAAER,SAASG,SAASE,KAAKI;AAAAA,QAAI,CAAC;AAC7C;AAAA,MACF;AAEAvB,gBAAUwB,KAAI;AAAA,IAChB;AAEA,WAAO,MAAM;AACX,aAAAC,YAAAC,YAAA;AAAA,QAAA,WAEanB;AAAAA,QAAY,eAAA;AAAA,MAAA,GAAA;AAAA,QAAAoB,SAAAA,MAAA,CAAAF,YAAAG,WAAA;AAAA,UAAA,QAAA;AAAA,QAAA,GAAA,IAAA,CAAA;AAAA,QAGnBC,UAAUA,MAAM;AACd,iBAAAJ,YAAAK,gBAAA,MAAA;AAAA,YAAAH,SAAAA,MAAA,CAAAF,YAAAM,gBAAA;AAAA,cAAA,YAGgBC,MAAM7B,gBAAgB;AAAA,cAAC,WACxBO;AAAAA,YAAiB,GAAA;AAAA,cAAAiB,SAAAA,MAAA,CAAAF,YAAAG,WAAA;AAAA,gBAAA,QAAA;AAAA,cAAA,GAAA,IAAA,GAAAK,gBAAA,OAAA,CAAA;AAAA,YAAA,CAAA,CAAA;AAAA,UAAA,CAAA;AAAA,QAMlC;AAAA,MAAC,CAAA;AAAA,IAMT;AAAA,EACF;AACF,CAAC;AC/DM,MAAM,aAAa;"}
|
|
@@ -3,7 +3,7 @@ import { useRouter } from "vue-router";
|
|
|
3
3
|
import "@maketribe/dm";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
import "@maketribe/utils";
|
|
6
|
-
import { o as MsRouteTable, p as DataModelDefines, q as useSingleView, h as MKDataTable, r as MKTableView, s as MKTableTree, d as MKSvgIcon, t as MKDataForm } from "./index-
|
|
6
|
+
import { o as MsRouteTable, p as DataModelDefines, q as useSingleView, h as MKDataTable, r as MKTableView, s as MKTableTree, d as MKSvgIcon, t as MKDataForm } from "./index-CJErFr3g.js";
|
|
7
7
|
import "@maketribe/request";
|
|
8
8
|
import "@maketribe/locale";
|
|
9
9
|
import "lodash-es";
|
|
@@ -83,4 +83,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
83
83
|
export {
|
|
84
84
|
_sfc_main as default
|
|
85
85
|
};
|
|
86
|
-
//# sourceMappingURL=index-
|
|
86
|
+
//# sourceMappingURL=index-CJDC1EPh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-CJDC1EPh.js","sources":["../../src/pages/menu/index.vue"],"sourcesContent":["<template>\n <MKDataTable v-if=\"dataTree\" v-show=\"!isShowDataForm\" :data-table=\"dataTree\" mode=\"page\" enableQueryParams>\n <MKTableView mode=\"page\">\n <MKTableTree defaultExpandAll>\n <template #col-data.title-content=\"{ row }\">\n <div flex=\"inline items-center\">\n <MKSvgIcon :name=\"row.data.icon\"/>\n <span class=\"mx-2\">{{ row.data.title }}</span>\n </div>\n </template>\n </MKTableTree>\n </MKTableView>\n </MKDataTable>\n <MKDataForm v-if=\"dataForm && isShowDataForm\" mode=\"page\" labelPosition=\"top\" :data-form=\"dataForm\" />\n</template>\n<script setup lang=\"ts\">\nimport {\n unref,\n computed,\n watch,\n ref,\n Ref,\n reactive,\n onBeforeUnmount,\n} from \"vue\";\nimport {useRouter} from \"vue-router\";\nimport {DataForm, DataTree} from \"@maketribe/dm\";\nimport {DataModelDefines} from \"../../core\";\nimport {\n MKSvgIcon,\n MKDataTable, MKTableView, MKTableTree, MKDataForm,\n} from \"../../components\";\nimport {useSingleView} from \"../../composables\";\nimport {MsRouteTable} from \"../../dataviews\";\n\nconst router = useRouter();\n\nconst dataTree: Ref<DataTree | null> = ref(null);\nconst dataForm: Ref<DataForm | null> = ref(null);\n\n// 路由表单\nconst routeTable = reactive(new MsRouteTable()) as MsRouteTable;\n\nwatch(\n computed(() => unref(router.currentRoute).meta.name as string),\n (name) => {\n dataTree.value = DataModelDefines.instance.getDataTree(name);\n dataForm.value = DataModelDefines.instance.getDataForm(name);\n },\n {immediate: true}\n);\n\nconst {isShowDataForm} = useSingleView({dataTable: dataTree, dataForm});\n\nonBeforeUnmount(() => { routeTable.dispose();});\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,UAAM,SAAS,UAAA;AAEf,UAAM,WAAiC,IAAI,IAAI;AAC/C,UAAM,WAAiC,IAAI,IAAI;AAG/C,UAAM,aAAa,SAAS,IAAI,cAAc;AAE9C;AAAA,MACE,SAAS,MAAM,MAAM,OAAO,YAAY,EAAE,KAAK,IAAc;AAAA,MAC7D,CAAC,SAAS;AACR,iBAAS,QAAQ,iBAAiB,SAAS,YAAY,IAAI;AAC3D,iBAAS,QAAQ,iBAAiB,SAAS,YAAY,IAAI;AAAA,MAC7D;AAAA,MACA,EAAC,WAAW,KAAA;AAAA,IAAI;AAGlB,UAAM,EAAC,mBAAkB,cAAc,EAAC,WAAW,UAAU,UAAS;AAEtE,oBAAgB,MAAM;AAAE,iBAAW,QAAA;AAAA,IAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|