@maketribe/ms-app 4.0.0-alpha.3 → 4.0.0-alpha.5
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-DWSwF-XG.cjs → 404-DGgEMQMF.cjs} +2 -2
- package/dist/cjs/{404-DWSwF-XG.cjs.map → 404-DGgEMQMF.cjs.map} +1 -1
- package/dist/cjs/{article-edit-add-page-DMGZ8mH4.cjs → article-edit-add-page-Bje080RK.cjs} +3 -3
- package/dist/cjs/{article-edit-add-page-DMGZ8mH4.cjs.map → article-edit-add-page-Bje080RK.cjs.map} +1 -1
- package/dist/cjs/{cms-settings-DIOam34M.cjs → cms-settings-Qdpc_nmk.cjs} +2 -2
- package/dist/cjs/{cms-settings-DIOam34M.cjs.map → cms-settings-Qdpc_nmk.cjs.map} +1 -1
- package/dist/cjs/{dialog-vkfjga6H.cjs → dialog-BOcxD8Ri.cjs} +2 -2
- package/dist/cjs/{dialog-vkfjga6H.cjs.map → dialog-BOcxD8Ri.cjs.map} +1 -1
- package/dist/cjs/{dialog-B947T7vf.cjs → dialog-DD9hjDmn.cjs} +2 -2
- package/dist/cjs/{dialog-B947T7vf.cjs.map → dialog-DD9hjDmn.cjs.map} +1 -1
- package/dist/cjs/{dialog-BqZgPcm2.cjs → dialog-aRYiTFfI.cjs} +2 -2
- package/dist/cjs/{dialog-BqZgPcm2.cjs.map → dialog-aRYiTFfI.cjs.map} +1 -1
- package/dist/cjs/{edit-6Zmg9aTH.cjs → edit-BL5dngfc.cjs} +2 -2
- package/dist/cjs/{edit-6Zmg9aTH.cjs.map → edit-BL5dngfc.cjs.map} +1 -1
- package/dist/cjs/{index-BM8SqnND.cjs → index-3lwyakW0.cjs} +2 -2
- package/dist/cjs/{index-BM8SqnND.cjs.map → index-3lwyakW0.cjs.map} +1 -1
- package/dist/cjs/{index-CYQny13b.cjs → index-63F98Jtn.cjs} +2 -2
- package/dist/cjs/{index-CYQny13b.cjs.map → index-63F98Jtn.cjs.map} +1 -1
- package/dist/cjs/index-B-Aeexgc.cjs +200 -0
- package/dist/cjs/index-B-Aeexgc.cjs.map +1 -0
- package/dist/cjs/{index-CJiJ6jy7.cjs → index-B1VQXzw4.cjs} +101 -69
- package/dist/cjs/index-B1VQXzw4.cjs.map +1 -0
- package/dist/cjs/{index-DB88N2cP.cjs → index-B7ZJf5GV.cjs} +2 -2
- package/dist/cjs/{index-DB88N2cP.cjs.map → index-B7ZJf5GV.cjs.map} +1 -1
- package/dist/cjs/{index-Bu_g8P0A.cjs → index-Ba7fImfP.cjs} +2 -2
- package/dist/cjs/{index-Bu_g8P0A.cjs.map → index-Ba7fImfP.cjs.map} +1 -1
- package/dist/cjs/{index-BaBoZUBz.cjs → index-Bc2B_X5p.cjs} +2 -2
- package/dist/cjs/index-Bc2B_X5p.cjs.map +1 -0
- package/dist/cjs/{index-BFgkbUEa.cjs → index-BjyJK1r7.cjs} +3 -3
- package/dist/cjs/{index-BFgkbUEa.cjs.map → index-BjyJK1r7.cjs.map} +1 -1
- package/dist/cjs/{index-BIjMV8Hr.cjs → index-BolEvnXh.cjs} +2 -2
- package/dist/cjs/{index-BIjMV8Hr.cjs.map → index-BolEvnXh.cjs.map} +1 -1
- package/dist/cjs/{index-BrZdnq8W.cjs → index-CaCUViDy.cjs} +2 -2
- package/dist/cjs/index-CaCUViDy.cjs.map +1 -0
- package/dist/cjs/{index-64qKudS1.cjs → index-CdtDddiW.cjs} +2 -2
- package/dist/cjs/{index-64qKudS1.cjs.map → index-CdtDddiW.cjs.map} +1 -1
- package/dist/cjs/{index-Dl_nvllQ.cjs → index-Cg0aBXSH.cjs} +2 -2
- package/dist/cjs/{index-Dl_nvllQ.cjs.map → index-Cg0aBXSH.cjs.map} +1 -1
- package/dist/cjs/{index-oxaOb3VO.cjs → index-Cir-kUe5.cjs} +3 -3
- package/dist/cjs/{index-oxaOb3VO.cjs.map → index-Cir-kUe5.cjs.map} +1 -1
- package/dist/cjs/{index-CAZDWsf3.cjs → index-CjULkhHo.cjs} +2 -2
- package/dist/cjs/{index-CAZDWsf3.cjs.map → index-CjULkhHo.cjs.map} +1 -1
- package/dist/cjs/{index-T3Vf8XMJ.cjs → index-DUxljBVo.cjs} +2 -2
- package/dist/cjs/{index-T3Vf8XMJ.cjs.map → index-DUxljBVo.cjs.map} +1 -1
- package/dist/cjs/{index-Dv6z6LqI.cjs → index-DWyoz9uB.cjs} +8 -10
- package/dist/cjs/index-DWyoz9uB.cjs.map +1 -0
- package/dist/cjs/{index-CvN_2DSE.cjs → index-DcyP91fA.cjs} +2 -2
- package/dist/cjs/{index-CvN_2DSE.cjs.map → index-DcyP91fA.cjs.map} +1 -1
- package/dist/cjs/{index-CEHVP61_.cjs → index-DkGZObr_.cjs} +2 -2
- package/dist/cjs/{index-CEHVP61_.cjs.map → index-DkGZObr_.cjs.map} +1 -1
- package/dist/cjs/{index-BLEQMNvQ.cjs → index-DkIRPJAw.cjs} +2 -2
- package/dist/cjs/{index-BLEQMNvQ.cjs.map → index-DkIRPJAw.cjs.map} +1 -1
- package/dist/cjs/{index-YRbQttqL.cjs → index-DrBXbJbx.cjs} +2 -2
- package/dist/cjs/index-DrBXbJbx.cjs.map +1 -0
- package/dist/cjs/{index-9Oy5JtDM.cjs → index-DtsfTu6t.cjs} +2 -2
- package/dist/cjs/{index-9Oy5JtDM.cjs.map → index-DtsfTu6t.cjs.map} +1 -1
- package/dist/cjs/{index-qBBjmPWr.cjs → index-HNgq3w7m.cjs} +2 -2
- package/dist/cjs/{index-qBBjmPWr.cjs.map → index-HNgq3w7m.cjs.map} +1 -1
- package/dist/cjs/{index-C2NSwxxH.cjs → index-MUZMUnyF.cjs} +9 -10
- package/dist/cjs/index-MUZMUnyF.cjs.map +1 -0
- package/dist/cjs/{index-DjP1khaa.cjs → index-Oe0BUapJ.cjs} +2 -2
- package/dist/cjs/{index-DjP1khaa.cjs.map → index-Oe0BUapJ.cjs.map} +1 -1
- package/dist/cjs/{index-DmsVtl33.cjs → index-T1YsHAiR.cjs} +3 -3
- package/dist/cjs/{index-DmsVtl33.cjs.map → index-T1YsHAiR.cjs.map} +1 -1
- package/dist/cjs/{index-BSPRCyGW.cjs → index-bj8-MXln.cjs} +3 -3
- package/dist/cjs/{index-BSPRCyGW.cjs.map → index-bj8-MXln.cjs.map} +1 -1
- package/dist/cjs/{index-Br7b64td.cjs → index-g-sCVX8Y.cjs} +2 -2
- package/dist/cjs/{index-Br7b64td.cjs.map → index-g-sCVX8Y.cjs.map} +1 -1
- package/dist/cjs/{index-Cr2MyczI.cjs → index-gYJKZkJ6.cjs} +3 -3
- package/dist/cjs/{index-Cr2MyczI.cjs.map → index-gYJKZkJ6.cjs.map} +1 -1
- package/dist/cjs/{index-DHbVriDb.cjs → index-h4ZlI0EM.cjs} +2 -2
- package/dist/cjs/{index-DHbVriDb.cjs.map → index-h4ZlI0EM.cjs.map} +1 -1
- package/dist/cjs/{index-x4E7Eggf.cjs → index-rVOOWou_.cjs} +3 -3
- package/dist/cjs/{index-x4E7Eggf.cjs.map → index-rVOOWou_.cjs.map} +1 -1
- package/dist/cjs/{index-Ddqk3hMe.cjs → index-z5P0Kaen.cjs} +2 -2
- package/dist/cjs/{index-Ddqk3hMe.cjs.map → index-z5P0Kaen.cjs.map} +1 -1
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/{index.vue_vue_type_script_setup_true_lang-D8YMnc_N.cjs → index.vue_vue_type_script_setup_true_lang-C4ujB235.cjs} +2 -2
- package/dist/cjs/{index.vue_vue_type_script_setup_true_lang-D8YMnc_N.cjs.map → index.vue_vue_type_script_setup_true_lang-C4ujB235.cjs.map} +1 -1
- package/dist/cjs/{json-editor-DcwX0iMa.cjs → json-editor-BuDPJNoi.cjs} +2 -2
- package/dist/cjs/{json-editor-DcwX0iMa.cjs.map → json-editor-BuDPJNoi.cjs.map} +1 -1
- package/dist/cjs/{markdown-editor-8CPE3qxN.cjs → markdown-editor-VlKQ5rmm.cjs} +2 -2
- package/dist/cjs/{markdown-editor-8CPE3qxN.cjs.map → markdown-editor-VlKQ5rmm.cjs.map} +1 -1
- package/dist/cjs/{normal-BRUVTnIj.cjs → normal-162tp8x5.cjs} +2 -2
- package/dist/cjs/{normal-BRUVTnIj.cjs.map → normal-162tp8x5.cjs.map} +1 -1
- package/dist/cjs/{normal-Dr8AYe2r.cjs → normal-D2713i_m.cjs} +2 -2
- package/dist/cjs/{normal-Dr8AYe2r.cjs.map → normal-D2713i_m.cjs.map} +1 -1
- package/dist/cjs/{permission-manage-DeDXlRil.cjs → permission-manage-DphCZ2al.cjs} +3 -3
- package/dist/cjs/{permission-manage-DeDXlRil.cjs.map → permission-manage-DphCZ2al.cjs.map} +1 -1
- package/dist/cjs/{resource-select-input-DK-y2auR.cjs → resource-select-input-iHLmmMyn.cjs} +2 -2
- package/dist/cjs/{resource-select-input-DK-y2auR.cjs.map → resource-select-input-iHLmmMyn.cjs.map} +1 -1
- package/dist/cjs/style.css +3 -1
- package/dist/cjs/{table-C3yMZ6mu.cjs → table-gztffYjX.cjs} +2 -2
- package/dist/cjs/{table-C3yMZ6mu.cjs.map → table-gztffYjX.cjs.map} +1 -1
- package/dist/esm/{404-D5XFfiHo.js → 404-CW_9KTBN.js} +2 -2
- package/dist/esm/{404-D5XFfiHo.js.map → 404-CW_9KTBN.js.map} +1 -1
- package/dist/esm/{article-edit-add-page-AeJ2loBa.js → article-edit-add-page-BxbovMjH.js} +3 -3
- package/dist/esm/{article-edit-add-page-AeJ2loBa.js.map → article-edit-add-page-BxbovMjH.js.map} +1 -1
- package/dist/esm/{cms-settings-DHQmoLKI.js → cms-settings-3ysZKNMa.js} +2 -2
- package/dist/esm/{cms-settings-DHQmoLKI.js.map → cms-settings-3ysZKNMa.js.map} +1 -1
- package/dist/esm/{dialog-BQtjgY66.js → dialog-CoFIYAyR.js} +2 -2
- package/dist/esm/{dialog-BQtjgY66.js.map → dialog-CoFIYAyR.js.map} +1 -1
- package/dist/esm/{dialog-CPR8_y9H.js → dialog-DknjQoA1.js} +2 -2
- package/dist/esm/{dialog-CPR8_y9H.js.map → dialog-DknjQoA1.js.map} +1 -1
- package/dist/esm/{dialog-Cb7Lps0k.js → dialog-E7M9atVV.js} +2 -2
- package/dist/esm/{dialog-Cb7Lps0k.js.map → dialog-E7M9atVV.js.map} +1 -1
- package/dist/esm/{edit-Bk7te-2r.js → edit-BM-Do19m.js} +2 -2
- package/dist/esm/{edit-Bk7te-2r.js.map → edit-BM-Do19m.js.map} +1 -1
- package/dist/esm/{index-Cxr1pm2r.js → index-6pZHgXtY.js} +3 -3
- package/dist/esm/{index-Cxr1pm2r.js.map → index-6pZHgXtY.js.map} +1 -1
- package/dist/esm/{index-CPBRsmn3.js → index-B7V4NKgm.js} +2 -2
- package/dist/esm/{index-CPBRsmn3.js.map → index-B7V4NKgm.js.map} +1 -1
- package/dist/esm/index-BFKVNCwz.js +200 -0
- package/dist/esm/index-BFKVNCwz.js.map +1 -0
- package/dist/esm/{index-pWRDGnCA.js → index-BQuQ8jEs.js} +2 -2
- package/dist/esm/{index-pWRDGnCA.js.map → index-BQuQ8jEs.js.map} +1 -1
- package/dist/esm/{index-C-nug2my.js → index-BUQ8XMhN.js} +2 -2
- package/dist/esm/{index-C-nug2my.js.map → index-BUQ8XMhN.js.map} +1 -1
- package/dist/esm/{index-Bus0Ed53.js → index-C2Y6k5VU.js} +2 -2
- package/dist/esm/{index-Bus0Ed53.js.map → index-C2Y6k5VU.js.map} +1 -1
- package/dist/esm/{index-mNJ5Nh1F.js → index-CAmafqoX.js} +3 -3
- package/dist/esm/{index-mNJ5Nh1F.js.map → index-CAmafqoX.js.map} +1 -1
- package/dist/esm/{index-CYsTe22K.js → index-CKR8AVN2.js} +3 -3
- package/dist/esm/{index-CYsTe22K.js.map → index-CKR8AVN2.js.map} +1 -1
- package/dist/esm/{index-Cx70jXqW.js → index-CZ8jfaGv.js} +3 -3
- package/dist/esm/{index-Cx70jXqW.js.map → index-CZ8jfaGv.js.map} +1 -1
- package/dist/esm/{index-DulOSNCq.js → index-CdTUER4F.js} +2 -2
- package/dist/esm/{index-DulOSNCq.js.map → index-CdTUER4F.js.map} +1 -1
- package/dist/esm/{index-mq3nYYwD.js → index-ClxRVkUv.js} +275 -243
- package/dist/esm/index-ClxRVkUv.js.map +1 -0
- package/dist/esm/{index-BZDkvIT8.js → index-CpVtmerJ.js} +2 -2
- package/dist/esm/{index-BZDkvIT8.js.map → index-CpVtmerJ.js.map} +1 -1
- package/dist/esm/{index-BZ4nk74T.js → index-CuoLNqsR.js} +2 -2
- package/dist/esm/{index-BZ4nk74T.js.map → index-CuoLNqsR.js.map} +1 -1
- package/dist/esm/{index-Y7lD4xpK.js → index-Cw4Br85S.js} +2 -2
- package/dist/esm/index-Cw4Br85S.js.map +1 -0
- package/dist/esm/{index-B0JN-XM8.js → index-D9OxO5-n.js} +2 -2
- package/dist/esm/{index-B0JN-XM8.js.map → index-D9OxO5-n.js.map} +1 -1
- package/dist/esm/{index-84gxgRCL.js → index-DH4urB62.js} +2 -2
- package/dist/esm/{index-84gxgRCL.js.map → index-DH4urB62.js.map} +1 -1
- package/dist/esm/{index-WK-zyRhV.js → index-DNqEddef.js} +2 -2
- package/dist/esm/index-DNqEddef.js.map +1 -0
- package/dist/esm/{index-8H_Cvlt6.js → index-DRv4tRm_.js} +2 -2
- package/dist/esm/{index-8H_Cvlt6.js.map → index-DRv4tRm_.js.map} +1 -1
- package/dist/esm/{index-D0XxzoBI.js → index-DVprQ057.js} +2 -2
- package/dist/esm/{index-D0XxzoBI.js.map → index-DVprQ057.js.map} +1 -1
- package/dist/esm/{index-B4r9F3Zh.js → index-D_72zZcS.js} +2 -2
- package/dist/esm/index-D_72zZcS.js.map +1 -0
- package/dist/esm/{index-CvV8qbPg.js → index-DbE9AANc.js} +2 -2
- package/dist/esm/{index-CvV8qbPg.js.map → index-DbE9AANc.js.map} +1 -1
- package/dist/esm/{index-Cmc71fzA.js → index-Dh0Vib2I.js} +2 -2
- package/dist/esm/{index-Cmc71fzA.js.map → index-Dh0Vib2I.js.map} +1 -1
- package/dist/esm/{index-B0iifroA.js → index-Dt4bQBBJ.js} +9 -10
- package/dist/esm/index-Dt4bQBBJ.js.map +1 -0
- package/dist/esm/{index-BSvkrpO1.js → index-Dtte-7PW.js} +9 -11
- package/dist/esm/index-Dtte-7PW.js.map +1 -0
- package/dist/esm/{index-DCRMtVnn.js → index-DvMY_TAx.js} +2 -2
- package/dist/esm/{index-DCRMtVnn.js.map → index-DvMY_TAx.js.map} +1 -1
- package/dist/esm/{index-VZNiNwyo.js → index-Dw_8CNLO.js} +2 -2
- package/dist/esm/{index-VZNiNwyo.js.map → index-Dw_8CNLO.js.map} +1 -1
- package/dist/esm/{index-CpnOCrKn.js → index-Rs0Y4chB.js} +2 -2
- package/dist/esm/{index-CpnOCrKn.js.map → index-Rs0Y4chB.js.map} +1 -1
- package/dist/esm/{index-ELFtoTxz.js → index-Wod-kleB.js} +3 -3
- package/dist/esm/{index-ELFtoTxz.js.map → index-Wod-kleB.js.map} +1 -1
- package/dist/esm/{index-_hBIn8hO.js → index-ZsmNUCj7.js} +2 -2
- package/dist/esm/{index-_hBIn8hO.js.map → index-ZsmNUCj7.js.map} +1 -1
- package/dist/esm/{index-p8vYirVH.js → index-aRsrq1KN.js} +2 -2
- package/dist/esm/{index-p8vYirVH.js.map → index-aRsrq1KN.js.map} +1 -1
- package/dist/esm/{index-CgCwBVWj.js → index-vHGC9cSD.js} +3 -3
- package/dist/esm/{index-CgCwBVWj.js.map → index-vHGC9cSD.js.map} +1 -1
- package/dist/esm/index.js +176 -176
- package/dist/esm/{index.vue_vue_type_script_setup_true_lang-Bfxqixud.js → index.vue_vue_type_script_setup_true_lang-B9tW53id.js} +2 -2
- package/dist/esm/{index.vue_vue_type_script_setup_true_lang-Bfxqixud.js.map → index.vue_vue_type_script_setup_true_lang-B9tW53id.js.map} +1 -1
- package/dist/esm/{json-editor-wqz1RgJf.js → json-editor-CQkxKSXs.js} +2 -2
- package/dist/esm/{json-editor-wqz1RgJf.js.map → json-editor-CQkxKSXs.js.map} +1 -1
- package/dist/esm/{markdown-editor-DI3xA77v.js → markdown-editor-gKhIB3Bf.js} +2 -2
- package/dist/esm/{markdown-editor-DI3xA77v.js.map → markdown-editor-gKhIB3Bf.js.map} +1 -1
- package/dist/esm/{normal-BSDfzy52.js → normal-BX6dhg2W.js} +2 -2
- package/dist/esm/{normal-BSDfzy52.js.map → normal-BX6dhg2W.js.map} +1 -1
- package/dist/esm/{normal-kBdt-_xr.js → normal-W9IqF1DG.js} +2 -2
- package/dist/esm/{normal-kBdt-_xr.js.map → normal-W9IqF1DG.js.map} +1 -1
- package/dist/esm/{permission-manage-B7Gr83rb.js → permission-manage-CGSDXzZP.js} +3 -3
- package/dist/esm/{permission-manage-B7Gr83rb.js.map → permission-manage-CGSDXzZP.js.map} +1 -1
- package/dist/esm/{resource-select-input-Cm9nIaHj.js → resource-select-input-BHZ9ndaS.js} +2 -2
- package/dist/esm/{resource-select-input-Cm9nIaHj.js.map → resource-select-input-BHZ9ndaS.js.map} +1 -1
- package/dist/esm/style.css +3 -1
- package/dist/esm/{table-BeLB_exN.js → table-DJQh65QP.js} +2 -2
- package/dist/esm/{table-BeLB_exN.js.map → table-DJQh65QP.js.map} +1 -1
- package/dist/types/components/data-model/data-form/components/form-detail/form-detail.vue.d.ts +39 -0
- package/dist/types/components/data-model/data-form/components/form-detail/index.d.ts +2 -2
- package/dist/types/layouts/new/ui-kit/HDialog.vue.d.ts +1 -0
- package/package.json +3 -3
- package/dist/cjs/index-BaBoZUBz.cjs.map +0 -1
- package/dist/cjs/index-BrZdnq8W.cjs.map +0 -1
- package/dist/cjs/index-C2NSwxxH.cjs.map +0 -1
- package/dist/cjs/index-CJiJ6jy7.cjs.map +0 -1
- package/dist/cjs/index-Cw_e9O7Z.cjs +0 -167
- package/dist/cjs/index-Cw_e9O7Z.cjs.map +0 -1
- package/dist/cjs/index-Dv6z6LqI.cjs.map +0 -1
- package/dist/cjs/index-YRbQttqL.cjs.map +0 -1
- package/dist/esm/index-B0iifroA.js.map +0 -1
- package/dist/esm/index-B4r9F3Zh.js.map +0 -1
- package/dist/esm/index-BSvkrpO1.js.map +0 -1
- package/dist/esm/index-WK-zyRhV.js.map +0 -1
- package/dist/esm/index-Y7lD4xpK.js.map +0 -1
- package/dist/esm/index-mq3nYYwD.js.map +0 -1
- package/dist/esm/index-pzNnwUiS.js +0 -167
- package/dist/esm/index-pzNnwUiS.js.map +0 -1
package/dist/esm/{article-edit-add-page-AeJ2loBa.js.map → article-edit-add-page-BxbovMjH.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article-edit-add-page-AeJ2loBa.js","sources":["../../src/modules/cms/pages/cms-contents/components/article-atlas.vue","../../src/modules/cms/pages/cms-contents/article-edit-add-page.vue"],"sourcesContent":["<template>\r\n <el-card class=\"cms-article-atlas\">\r\n <template #header>\r\n <div @click=\"showAtlasFormHandle()\" class=\"cms-article-atlas__header\">\r\n <span>\r\n <MKSvgIcon iconClass=\"Picture\" style=\"margin-right: 5px;\" />\r\n 文章媒体库\r\n </span>\r\n <MKSvgIcon class=\"cms-article-atlas__header__btn\" iconClass=\"Plus\" style=\"color: #409EFF;\" />\r\n </div>\r\n </template>\r\n <el-empty v-if=\"atlas.length <= 0\" description=\"暂无内容\" />\r\n <el-scrollbar class=\"cms-article-atlas__list\" v-else>\r\n <el-card class=\"cms-article-atlas__list__item\" v-for=\"(item, index) in atlas\" :key=\"item.id\">\r\n <el-image class=\"images\" :src=\"item.path\" v-if=\"item.type == 1\" fit=\"contain\">\r\n <div slot=\"placeholder\" class=\"image-slot\">\r\n 加载中<span class=\"dot\">...</span>\r\n </div>\r\n </el-image>\r\n <video class=\"video\" v-if=\"item.type == 2\" :src=\"item.path\" controls></video>\r\n <div class=\"cms-article-atlas__list__item__desc\">\r\n <div class=\"item-desc-left\">\r\n <div class=\"title ellipsis\">\r\n <MKSvgIcon class=\"icon\" v-if=\"item.type == 1\" iconClass=\"Picture\"></MKSvgIcon>\r\n <MKSvgIcon class=\"icon\" v-if=\"item.type == 2\" iconClass=\"VideoCamera\"></MKSvgIcon>\r\n <span :title=\"item.title\">{{ item.title }}</span>\r\n </div>\r\n <div class=\"external-links ellipsis\">\r\n <MKSvgIcon class=\"icon\" v-if=\"item.link\" iconClass=\"Link\"></MKSvgIcon>\r\n <a :href=\"item.link\" target=\"_blank\" :title=\"item.path\">{{ item.link }}</a>\r\n </div>\r\n </div>\r\n <el-dropdown trigger=\"click\" :teleported=\"false\" class=\"item-desc-right\">\r\n <span class=\"el-dropdown-link\">\r\n 更多<el-icon class=\"el-icon--right\"><arrow-down /></el-icon>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item class=\"edit-button\" :icon=\"EditPen\" @click=\"editHandle(item)\">编辑</el-dropdown-item>\r\n <el-dropdown-item class=\"delete-button\" :icon=\"Delete\"\r\n @click=\"deleteHandle(index)\">删除</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </el-card>\r\n <el-dialog v-model=\"formVisible\" append-to-body>\r\n <MKDataForm :dataForm=\"atlasDv\">\r\n <MKForm></MKForm>\r\n </MKDataForm>\r\n <template #footer>\r\n <el-button type=\"primary\" @click=\"saveAlatsHandle\">保存</el-button>\r\n <el-button @click=\"formVisible = false\"> 取消 </el-button>\r\n </template>\r\n </el-dialog>\r\n\r\n </el-scrollbar>\r\n </el-card>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, computed, ref, defineProps, watch, reactive } from \"vue\";\r\nimport { EditPen, ArrowDown, Delete } from \"@element-plus/icons-vue\"\r\nimport { CmsArticleAtlasForm } from \"../../../dataviews/cms-articles/cms-article-atlas\";\r\nimport { MKDataForm, MKForm } from \"../../../../../components\";\r\n\r\n// 参数\r\nconst props = defineProps({\r\n articleId: { type: Number, default: \"\" },\r\n modelValue: { type: Array<any>, default: () => [] },\r\n})\r\nconst emit = defineEmits([\"update:modelValue\"])\r\n//atlas表单\r\nconst atlasDv = reactive(new CmsArticleAtlasForm()) as CmsArticleAtlasForm;\r\nconst formVisible = ref(false);\r\n\r\nconst imgExtension = [\".jpg\", \".png\", \".gif\", \".jpeg\", \".bmp\", \".webp\", \".svg\", \".tiff\", \".tif\", \".ico\", \".jfif\", \".jpe\"]\r\nconst videoExtension = [\".mp4\", \".avi\", \".rmvb\", \".flv\", \".mkv\", \".wmv\", \".mov\", \".webm\", \".m4v\", \".mpg\", \".mpeg\", \".mts\", \".m2ts\", \".m2v\", \".mpe\", \".mpv\", \".vob\", \".ogv\", \".3gp\", \".3g2\", \".3gpp\", \".3gpp2\", \".3gp2\"]\r\n\r\n\r\n//图集数据\r\nconst atlas = computed(\r\n () => {\r\n const _arr = props.modelValue.map((item, index) => {\r\n const extension = item.path.slice(item.path.lastIndexOf(\".\"))\r\n let type = 0;\r\n if (imgExtension.includes(extension)) {\r\n type = 1\r\n } else if (videoExtension.includes(extension)) {\r\n type = 2\r\n }\r\n return { ...item, type, uid: item.title + index }\r\n })\r\n return _arr\r\n },\r\n);\r\n\r\n\r\n(window as any).atlasDv = atlasDv;\r\n(window as any).atlas = atlas;\r\n(window as any).modelValue = props.modelValue;\r\n/***\r\n * 展示atlas表单\r\n */\r\nconst showAtlasFormHandle = () => {\r\n formVisible.value = true;\r\n atlasDv.addRecord({\r\n cmsArticlesId: props.articleId\r\n })\r\n}\r\n\r\n//重置atlas表单\r\nwatch(formVisible, (v) => {\r\n atlasDv.reset();\r\n})\r\n\r\n/**\r\n * 保存\r\n */\r\nconst saveAlatsHandle = async () => {\r\n if (atlasDv.data.uid) {\r\n const index = atlas.value.findIndex(item => item.uid == atlasDv.data.uid)\r\n atlas.value[index] = { ...atlas.value[index], ...atlasDv.data }\r\n } else {\r\n atlas.value.push(atlasDv.data)\r\n }\r\n\r\n emit(\"update:modelValue\", atlas.value)\r\n formVisible.value = false;\r\n}\r\n/**\r\n * 删除\r\n */\r\nconst deleteHandle = (index: number) => {\r\n atlas.value.splice(index, 1)\r\n emit(\"update:modelValue\", atlas.value)\r\n}\r\n\r\nconst editHandle = (item: any) => {\r\n atlasDv.addRecord(item)\r\n formVisible.value = true;\r\n}\r\n// 挂在完成之后\r\nonMounted(async () => {\r\n await atlasDv.init();\r\n})\r\n\r\n</script>\r\n","<template>\r\n <div class=\"mk-cms-article-eidtadd__warp\">\r\n <el-page-header style=\"background-color: #fff;padding: 10px;\" :icon=\"ArrowLeftBold\" title=\"返回\"\r\n @back=\"() => router.push({ name: 'cms/contents', query: { pid: articleForm?.data?.cmsPartId } })\">\r\n <template #content>\r\n <template v-if=\"!articleForm.loading\">\r\n <el-text v-if=\"!articleForm.data?.modifier\">{{ !!route.query.id ? \"编辑文章\" : \"创建文章\" }}</el-text>\r\n <el-text v-else>{{ articleForm.data?.modifierName }} 于 {{ articleForm.data?.updatedAt }} 更新</el-text>\r\n </template>\r\n </template>\r\n <template #extra>\r\n <div class=\"mk-cms-article-eidtadd__header_tools\">\r\n\r\n <template v-if=\"!articleForm.loading\">\r\n <el-tag v-if=\"!articleForm.data?.publishTime\" effect=\"dark\" round>未发布</el-tag>\r\n <el-text v-else>发布时间:{{ articleForm.data?.publishTime }}</el-text>\r\n </template>\r\n\r\n <el-dropdown split-button type=\"primary\" style=\"margin-left: 10px;\" @click=\"saveHandle\">\r\n <MKSvgIcon name=\"carbon:save\" style=\"margin-right: 10px;\" />\r\n 保存\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"saveAndViewHandle\">\r\n <MKSvgIcon name=\"ep:view\" style=\"margin-right: 5px;\" />\r\n 保存并预览\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"saveAndPublishHandle\">\r\n <MKSvgIcon name=\"ep:share\" style=\"margin-right: 5px;\" />\r\n 保存并发布\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-article-eidtadd__body\" v-loading=\"articleForm.loading\">\r\n\r\n <MKDocEditor v-if=\"articleForm.data\" :css=\"CmsSettings.content.doc.css\" namespace=\"cms-article\"\r\n :js=\"CmsSettings.content.doc.js\" :modelValue=\"content\" @update:modelValue=\"docEditorChangeHandle\">\r\n <template #header>\r\n <div class=\"mk-cms-article-eidtadd__body__header\">\r\n <el-row>\r\n <el-input class=\"title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"请输入标题\" v-model=\"title\" />\r\n </el-row>\r\n <el-row>\r\n <el-input class=\"sub-title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"[选填] 请输入子标题\" v-model=\"subTitle\" />\r\n </el-row>\r\n </div>\r\n </template>\r\n <template #after-extentions>\r\n <div class=\"mk-cms-article-eidtadd__body__extentions\" :class=\"{ hide: closeExtentions! }\" ref=\"extentionsRef\">\r\n <MKSvgIcon name=\"ep:arrow-left\" class=\"open\" @click=\"closeExtentionsHandle\" v-if=\"closeExtentions\">\r\n </MKSvgIcon>\r\n <MKSvgIcon v-else name=\"ep:arrow-right\" class=\"close\" @click=\"hideExtentionsHandle\">\r\n </MKSvgIcon>\r\n <el-divider content-position=\"left\">文章设置</el-divider>\r\n <MKDataForm :dataForm=\"articleForm\">\r\n <MKForm :dataForm=\"articleForm\" style=\"width:225px\" label-width=\"110px\">\r\n <el-row v-if=\"CmsSettings.content.useTop\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isTop\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useNew\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isNew\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useHotRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isHotRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.usePartRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isPartRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isShowList\"></MKDataFormItem>\r\n </el-row>\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isDraft\"></MKDataFormItem>\r\n </el-row> -->\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"sortNo\"></MKDataFormItem>\r\n </el-row> -->\r\n </MKForm>\r\n </MKDataForm>\r\n </div>\r\n </template>\r\n <template #footer>\r\n <div class=\"mk-cms-article-eidtadd__body__footer\">\r\n <el-tabs v-model=\"articleOptionsActive\">\r\n <el-tab-pane label=\"基础内容\" name=\"content\">\r\n <div class=\"content\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"6\">\r\n <el-input placeholder=\"[选填] 作者\" v-model=\"articleForm.data.author\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon name=\"ep:user-filled\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n <el-col :span=\"6\">\r\n <el-date-picker v-model=\"releaseDate\" type=\"datetime\" placeholder=\"发布时间\"\r\n :default-time=\"new Date()\" />\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-input placeholder=\"[选填] 发布地址\" v-model=\"articleForm.data.locationDesc\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon name=\"ep:location\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useTags\">\r\n <el-select v-model=\"tags\" multiple filterable allow-create default-first-option\r\n :reserve-keyword=\"false\" placeholder=\"[可选] 选择文章标签\" style=\"width: 100%\">\r\n <template #prefix>\r\n <MKSvgIcon name=\"ep:collection-tag\" />\r\n </template>\r\n </el-select>\r\n </el-row>\r\n <el-divider content-position=\"left\">\r\n 文章封面/简介\r\n <el-switch v-model=\"descAutoCreate\" style=\"margin-left: 10px;\" inline-prompt active-text=\"自动生成\"\r\n inactive-text=\"手动撰写\" />\r\n </el-divider>\r\n <el-row class=\"cover-desc\">\r\n <MKUploadImage style=\"margin-right: 10px;\" v-model=\"articleForm.data.cover\" width=\"115px\" height=\"115px\" \r\n :uploadContext=\"new ImageUploadContext(CmsSettings.content.coverImageSize)\">\r\n\r\n </MKUploadImage>\r\n <el-input class=\"desc\" type=\"textarea\" :autosize=\"{ minRows: 5, maxRows: 30 }\" maxlength=\"1000\"\r\n show-word-limit placeholder=\"[选填] 文章简介\" v-model=\"desc\" />\r\n </el-row>\r\n <el-divider content-position=\"left\">文章Banner图</el-divider>\r\n <el-row>\r\n <MKUploadImage v-model=\"articleForm.data.banner\" style=\"width: 100%;\" height=\"300px\" :uploadContext=\"new ImageUploadContext(CmsSettings.content.bannerImageSize)\">\r\n\r\n </MKUploadImage>\r\n </el-row>\r\n </div>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"文章资源库\" name=\"atlas\" v-if=\"CmsSettings.content.useAtlas\">\r\n <ArticleAtlas v-model=\"atlas\" :articleId=\"parseInt(articleForm.data?.id)\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面设置\" name=\"settings\" v-if=\"CmsSettings.publish.mode == 'static'\">\r\n <MKDataForm :dataForm=\"articleForm\" label-width=\"120px\">\r\n <MKForm :dataForm=\"articleForm\">\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoKeywords\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoDesc\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </template>\r\n </MKDocEditor>\r\n </div>\r\n </div>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, reactive, ref, computed } from \"vue\";\r\nimport { ArrowLeftBold } from \"@element-plus/icons-vue\"\r\nimport { MKDocEditor, MKSvgIcon, MKUploadImage } from '../../../../components'\r\nimport { MKDataForm, MKForm, MKDataFormItem } from \"../../../../components\";\r\nimport ArticleAtlas from \"./components/article-atlas.vue\";\r\nimport { CmsArticlesForm } from \"../../dataviews\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { ImageUploadContext } from \"../../../ms\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\nconst route = useRoute()\r\nconst router = useRouter();\r\n\r\n\r\n// 文章请求\r\nconst articleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\nconst articleOptionsActive = ref(\"content\");\r\n\r\n\r\n// 标题\r\nconst title = computed({\r\n get() { return articleForm.data?.title || \"\"; },\r\n set(val) { articleForm.data.title = val; }\r\n});\r\n// 子标题\r\nconst subTitle = computed({\r\n get() { return articleForm.data?.subTitle || \"\"; },\r\n set(val) { articleForm.data.subTitle = val; }\r\n});\r\n// 获取默认简介\r\nconst getDefaultDescContent = () => {\r\n if (!descAutoCreate.value) {\r\n return \"\";\r\n }\r\n let val: any = \"\";\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = content.value;\r\n val = div.textContent?.substring(0, 700);\r\n if (div.textContent!.length > 700) {\r\n val += \"...\";\r\n }\r\n return val;\r\n}\r\nconst descAutoCreate = ref(true)\r\n// 简介\r\nconst desc = computed({\r\n get() {\r\n return articleForm.data?.desc || getDefaultDescContent();\r\n },\r\n set(val) {\r\n articleForm.data.desc = val;\r\n }\r\n});\r\n// 发布时间\r\nconst releaseDate = computed({\r\n get() { return articleForm.data?.releaseDate || articleForm.data?.publishTime; },\r\n set(val) { articleForm.data.releaseDate = val; }\r\n});\r\n// 标签\r\nconst tags = ref([]);\r\n// computed({ \r\n// get() { return articleForm.data?.tags || [] }, \r\n// set(val) { articleForm.data.tags = val; } \r\n// });\r\n// 内容\r\nconst content = computed({\r\n get() { return articleForm.data?.content || \"\"; },\r\n set(val) { articleForm.data.content = val; }\r\n});\r\n\r\n// 图集\r\nconst atlas = computed({\r\n get() {\r\n return articleForm.data?.atlas\r\n },\r\n set(val) { articleForm.data.atlas = val; }\r\n});\r\n\r\n// 表单初始化\r\nconst formInitDataInfo = ()=>{\r\n // 初始化数据加载\r\n if (route.query.id) {\r\n articleForm.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleForm.addRecord({ cmsPartId: route.query.partId,isDraft:1 });\r\n }\r\n else {\r\n articleForm.addRecord({ isDraft:1 });\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n formInitDataInfo();\r\n articleForm.init();\r\n\r\n})\r\n\r\n// 保存\r\nconst saveHandle = async () => {\r\n\r\n // 简介不存在的时候使用自动生成的\r\n if (!articleForm.data?.desc) {\r\n desc.value = getDefaultDescContent();\r\n }\r\n\r\n let result = await articleForm.submit();\r\n\r\n router.back();\r\n\r\n return result;\r\n}\r\n\r\n// 保存并预览\r\nconst saveAndViewHandle = async ()=>{\r\n const partId = articleForm.data.cmsPartId;\r\n const data = await saveHandle();\r\n if(data.data.code == 200 && data.data.data){\r\n window.open('/api/cms/content/preview/content/' + partId + '/' + data.data.data)\r\n }\r\n}\r\n\r\n// 保存并发布\r\nconst saveAndPublishHandle = async ()=>{\r\n const result:any = await articleForm.saveAndPublish(CmsSettings.publish.mode);\r\n if(result.data.code == 200){\r\n router.back();\r\n }\r\n}\r\n\r\n// 隐藏扩展\r\nconst closeExtentions = ref(true);\r\nconst extentionsRef = ref();\r\nconst hideExtentionsHandle = () => {\r\n closeExtentions.value = true;\r\n}\r\n//展示扩展\r\nconst closeExtentionsHandle = () => {\r\n closeExtentions.value = false;\r\n}\r\n\r\nconst docEditorChangeHandle = (v: any) => {\r\n articleForm.data.content = v;\r\n}\r\n\r\n</script>\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"article-edit-add-page-BxbovMjH.js","sources":["../../src/modules/cms/pages/cms-contents/components/article-atlas.vue","../../src/modules/cms/pages/cms-contents/article-edit-add-page.vue"],"sourcesContent":["<template>\r\n <el-card class=\"cms-article-atlas\">\r\n <template #header>\r\n <div @click=\"showAtlasFormHandle()\" class=\"cms-article-atlas__header\">\r\n <span>\r\n <MKSvgIcon iconClass=\"Picture\" style=\"margin-right: 5px;\" />\r\n 文章媒体库\r\n </span>\r\n <MKSvgIcon class=\"cms-article-atlas__header__btn\" iconClass=\"Plus\" style=\"color: #409EFF;\" />\r\n </div>\r\n </template>\r\n <el-empty v-if=\"atlas.length <= 0\" description=\"暂无内容\" />\r\n <el-scrollbar class=\"cms-article-atlas__list\" v-else>\r\n <el-card class=\"cms-article-atlas__list__item\" v-for=\"(item, index) in atlas\" :key=\"item.id\">\r\n <el-image class=\"images\" :src=\"item.path\" v-if=\"item.type == 1\" fit=\"contain\">\r\n <div slot=\"placeholder\" class=\"image-slot\">\r\n 加载中<span class=\"dot\">...</span>\r\n </div>\r\n </el-image>\r\n <video class=\"video\" v-if=\"item.type == 2\" :src=\"item.path\" controls></video>\r\n <div class=\"cms-article-atlas__list__item__desc\">\r\n <div class=\"item-desc-left\">\r\n <div class=\"title ellipsis\">\r\n <MKSvgIcon class=\"icon\" v-if=\"item.type == 1\" iconClass=\"Picture\"></MKSvgIcon>\r\n <MKSvgIcon class=\"icon\" v-if=\"item.type == 2\" iconClass=\"VideoCamera\"></MKSvgIcon>\r\n <span :title=\"item.title\">{{ item.title }}</span>\r\n </div>\r\n <div class=\"external-links ellipsis\">\r\n <MKSvgIcon class=\"icon\" v-if=\"item.link\" iconClass=\"Link\"></MKSvgIcon>\r\n <a :href=\"item.link\" target=\"_blank\" :title=\"item.path\">{{ item.link }}</a>\r\n </div>\r\n </div>\r\n <el-dropdown trigger=\"click\" :teleported=\"false\" class=\"item-desc-right\">\r\n <span class=\"el-dropdown-link\">\r\n 更多<el-icon class=\"el-icon--right\"><arrow-down /></el-icon>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item class=\"edit-button\" :icon=\"EditPen\" @click=\"editHandle(item)\">编辑</el-dropdown-item>\r\n <el-dropdown-item class=\"delete-button\" :icon=\"Delete\"\r\n @click=\"deleteHandle(index)\">删除</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </el-card>\r\n <el-dialog v-model=\"formVisible\" append-to-body>\r\n <MKDataForm :dataForm=\"atlasDv\">\r\n <MKForm></MKForm>\r\n </MKDataForm>\r\n <template #footer>\r\n <el-button type=\"primary\" @click=\"saveAlatsHandle\">保存</el-button>\r\n <el-button @click=\"formVisible = false\"> 取消 </el-button>\r\n </template>\r\n </el-dialog>\r\n\r\n </el-scrollbar>\r\n </el-card>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, computed, ref, defineProps, watch, reactive } from \"vue\";\r\nimport { EditPen, ArrowDown, Delete } from \"@element-plus/icons-vue\"\r\nimport { CmsArticleAtlasForm } from \"../../../dataviews/cms-articles/cms-article-atlas\";\r\nimport { MKDataForm, MKForm } from \"../../../../../components\";\r\n\r\n// 参数\r\nconst props = defineProps({\r\n articleId: { type: Number, default: \"\" },\r\n modelValue: { type: Array<any>, default: () => [] },\r\n})\r\nconst emit = defineEmits([\"update:modelValue\"])\r\n//atlas表单\r\nconst atlasDv = reactive(new CmsArticleAtlasForm()) as CmsArticleAtlasForm;\r\nconst formVisible = ref(false);\r\n\r\nconst imgExtension = [\".jpg\", \".png\", \".gif\", \".jpeg\", \".bmp\", \".webp\", \".svg\", \".tiff\", \".tif\", \".ico\", \".jfif\", \".jpe\"]\r\nconst videoExtension = [\".mp4\", \".avi\", \".rmvb\", \".flv\", \".mkv\", \".wmv\", \".mov\", \".webm\", \".m4v\", \".mpg\", \".mpeg\", \".mts\", \".m2ts\", \".m2v\", \".mpe\", \".mpv\", \".vob\", \".ogv\", \".3gp\", \".3g2\", \".3gpp\", \".3gpp2\", \".3gp2\"]\r\n\r\n\r\n//图集数据\r\nconst atlas = computed(\r\n () => {\r\n const _arr = props.modelValue.map((item, index) => {\r\n const extension = item.path.slice(item.path.lastIndexOf(\".\"))\r\n let type = 0;\r\n if (imgExtension.includes(extension)) {\r\n type = 1\r\n } else if (videoExtension.includes(extension)) {\r\n type = 2\r\n }\r\n return { ...item, type, uid: item.title + index }\r\n })\r\n return _arr\r\n },\r\n);\r\n\r\n\r\n(window as any).atlasDv = atlasDv;\r\n(window as any).atlas = atlas;\r\n(window as any).modelValue = props.modelValue;\r\n/***\r\n * 展示atlas表单\r\n */\r\nconst showAtlasFormHandle = () => {\r\n formVisible.value = true;\r\n atlasDv.addRecord({\r\n cmsArticlesId: props.articleId\r\n })\r\n}\r\n\r\n//重置atlas表单\r\nwatch(formVisible, (v) => {\r\n atlasDv.reset();\r\n})\r\n\r\n/**\r\n * 保存\r\n */\r\nconst saveAlatsHandle = async () => {\r\n if (atlasDv.data.uid) {\r\n const index = atlas.value.findIndex(item => item.uid == atlasDv.data.uid)\r\n atlas.value[index] = { ...atlas.value[index], ...atlasDv.data }\r\n } else {\r\n atlas.value.push(atlasDv.data)\r\n }\r\n\r\n emit(\"update:modelValue\", atlas.value)\r\n formVisible.value = false;\r\n}\r\n/**\r\n * 删除\r\n */\r\nconst deleteHandle = (index: number) => {\r\n atlas.value.splice(index, 1)\r\n emit(\"update:modelValue\", atlas.value)\r\n}\r\n\r\nconst editHandle = (item: any) => {\r\n atlasDv.addRecord(item)\r\n formVisible.value = true;\r\n}\r\n// 挂在完成之后\r\nonMounted(async () => {\r\n await atlasDv.init();\r\n})\r\n\r\n</script>\r\n","<template>\r\n <div class=\"mk-cms-article-eidtadd__warp\">\r\n <el-page-header style=\"background-color: #fff;padding: 10px;\" :icon=\"ArrowLeftBold\" title=\"返回\"\r\n @back=\"() => router.push({ name: 'cms/contents', query: { pid: articleForm?.data?.cmsPartId } })\">\r\n <template #content>\r\n <template v-if=\"!articleForm.loading\">\r\n <el-text v-if=\"!articleForm.data?.modifier\">{{ !!route.query.id ? \"编辑文章\" : \"创建文章\" }}</el-text>\r\n <el-text v-else>{{ articleForm.data?.modifierName }} 于 {{ articleForm.data?.updatedAt }} 更新</el-text>\r\n </template>\r\n </template>\r\n <template #extra>\r\n <div class=\"mk-cms-article-eidtadd__header_tools\">\r\n\r\n <template v-if=\"!articleForm.loading\">\r\n <el-tag v-if=\"!articleForm.data?.publishTime\" effect=\"dark\" round>未发布</el-tag>\r\n <el-text v-else>发布时间:{{ articleForm.data?.publishTime }}</el-text>\r\n </template>\r\n\r\n <el-dropdown split-button type=\"primary\" style=\"margin-left: 10px;\" @click=\"saveHandle\">\r\n <MKSvgIcon name=\"carbon:save\" style=\"margin-right: 10px;\" />\r\n 保存\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"saveAndViewHandle\">\r\n <MKSvgIcon name=\"ep:view\" style=\"margin-right: 5px;\" />\r\n 保存并预览\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"saveAndPublishHandle\">\r\n <MKSvgIcon name=\"ep:share\" style=\"margin-right: 5px;\" />\r\n 保存并发布\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-article-eidtadd__body\" v-loading=\"articleForm.loading\">\r\n\r\n <MKDocEditor v-if=\"articleForm.data\" :css=\"CmsSettings.content.doc.css\" namespace=\"cms-article\"\r\n :js=\"CmsSettings.content.doc.js\" :modelValue=\"content\" @update:modelValue=\"docEditorChangeHandle\">\r\n <template #header>\r\n <div class=\"mk-cms-article-eidtadd__body__header\">\r\n <el-row>\r\n <el-input class=\"title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"请输入标题\" v-model=\"title\" />\r\n </el-row>\r\n <el-row>\r\n <el-input class=\"sub-title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"[选填] 请输入子标题\" v-model=\"subTitle\" />\r\n </el-row>\r\n </div>\r\n </template>\r\n <template #after-extentions>\r\n <div class=\"mk-cms-article-eidtadd__body__extentions\" :class=\"{ hide: closeExtentions! }\" ref=\"extentionsRef\">\r\n <MKSvgIcon name=\"ep:arrow-left\" class=\"open\" @click=\"closeExtentionsHandle\" v-if=\"closeExtentions\">\r\n </MKSvgIcon>\r\n <MKSvgIcon v-else name=\"ep:arrow-right\" class=\"close\" @click=\"hideExtentionsHandle\">\r\n </MKSvgIcon>\r\n <el-divider content-position=\"left\">文章设置</el-divider>\r\n <MKDataForm :dataForm=\"articleForm\">\r\n <MKForm :dataForm=\"articleForm\" style=\"width:225px\" label-width=\"110px\">\r\n <el-row v-if=\"CmsSettings.content.useTop\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isTop\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useNew\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isNew\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useHotRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isHotRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.usePartRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isPartRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isShowList\"></MKDataFormItem>\r\n </el-row>\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isDraft\"></MKDataFormItem>\r\n </el-row> -->\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"sortNo\"></MKDataFormItem>\r\n </el-row> -->\r\n </MKForm>\r\n </MKDataForm>\r\n </div>\r\n </template>\r\n <template #footer>\r\n <div class=\"mk-cms-article-eidtadd__body__footer\">\r\n <el-tabs v-model=\"articleOptionsActive\">\r\n <el-tab-pane label=\"基础内容\" name=\"content\">\r\n <div class=\"content\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"6\">\r\n <el-input placeholder=\"[选填] 作者\" v-model=\"articleForm.data.author\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon name=\"ep:user-filled\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n <el-col :span=\"6\">\r\n <el-date-picker v-model=\"releaseDate\" type=\"datetime\" placeholder=\"发布时间\"\r\n :default-time=\"new Date()\" />\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-input placeholder=\"[选填] 发布地址\" v-model=\"articleForm.data.locationDesc\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon name=\"ep:location\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useTags\">\r\n <el-select v-model=\"tags\" multiple filterable allow-create default-first-option\r\n :reserve-keyword=\"false\" placeholder=\"[可选] 选择文章标签\" style=\"width: 100%\">\r\n <template #prefix>\r\n <MKSvgIcon name=\"ep:collection-tag\" />\r\n </template>\r\n </el-select>\r\n </el-row>\r\n <el-divider content-position=\"left\">\r\n 文章封面/简介\r\n <el-switch v-model=\"descAutoCreate\" style=\"margin-left: 10px;\" inline-prompt active-text=\"自动生成\"\r\n inactive-text=\"手动撰写\" />\r\n </el-divider>\r\n <el-row class=\"cover-desc\">\r\n <MKUploadImage style=\"margin-right: 10px;\" v-model=\"articleForm.data.cover\" width=\"115px\" height=\"115px\" \r\n :uploadContext=\"new ImageUploadContext(CmsSettings.content.coverImageSize)\">\r\n\r\n </MKUploadImage>\r\n <el-input class=\"desc\" type=\"textarea\" :autosize=\"{ minRows: 5, maxRows: 30 }\" maxlength=\"1000\"\r\n show-word-limit placeholder=\"[选填] 文章简介\" v-model=\"desc\" />\r\n </el-row>\r\n <el-divider content-position=\"left\">文章Banner图</el-divider>\r\n <el-row>\r\n <MKUploadImage v-model=\"articleForm.data.banner\" style=\"width: 100%;\" height=\"300px\" :uploadContext=\"new ImageUploadContext(CmsSettings.content.bannerImageSize)\">\r\n\r\n </MKUploadImage>\r\n </el-row>\r\n </div>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"文章资源库\" name=\"atlas\" v-if=\"CmsSettings.content.useAtlas\">\r\n <ArticleAtlas v-model=\"atlas\" :articleId=\"parseInt(articleForm.data?.id)\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面设置\" name=\"settings\" v-if=\"CmsSettings.publish.mode == 'static'\">\r\n <MKDataForm :dataForm=\"articleForm\" label-width=\"120px\">\r\n <MKForm :dataForm=\"articleForm\">\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoKeywords\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoDesc\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </template>\r\n </MKDocEditor>\r\n </div>\r\n </div>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, reactive, ref, computed } from \"vue\";\r\nimport { ArrowLeftBold } from \"@element-plus/icons-vue\"\r\nimport { MKDocEditor, MKSvgIcon, MKUploadImage } from '../../../../components'\r\nimport { MKDataForm, MKForm, MKDataFormItem } from \"../../../../components\";\r\nimport ArticleAtlas from \"./components/article-atlas.vue\";\r\nimport { CmsArticlesForm } from \"../../dataviews\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { ImageUploadContext } from \"../../../ms\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\nconst route = useRoute()\r\nconst router = useRouter();\r\n\r\n\r\n// 文章请求\r\nconst articleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\nconst articleOptionsActive = ref(\"content\");\r\n\r\n\r\n// 标题\r\nconst title = computed({\r\n get() { return articleForm.data?.title || \"\"; },\r\n set(val) { articleForm.data.title = val; }\r\n});\r\n// 子标题\r\nconst subTitle = computed({\r\n get() { return articleForm.data?.subTitle || \"\"; },\r\n set(val) { articleForm.data.subTitle = val; }\r\n});\r\n// 获取默认简介\r\nconst getDefaultDescContent = () => {\r\n if (!descAutoCreate.value) {\r\n return \"\";\r\n }\r\n let val: any = \"\";\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = content.value;\r\n val = div.textContent?.substring(0, 700);\r\n if (div.textContent!.length > 700) {\r\n val += \"...\";\r\n }\r\n return val;\r\n}\r\nconst descAutoCreate = ref(true)\r\n// 简介\r\nconst desc = computed({\r\n get() {\r\n return articleForm.data?.desc || getDefaultDescContent();\r\n },\r\n set(val) {\r\n articleForm.data.desc = val;\r\n }\r\n});\r\n// 发布时间\r\nconst releaseDate = computed({\r\n get() { return articleForm.data?.releaseDate || articleForm.data?.publishTime; },\r\n set(val) { articleForm.data.releaseDate = val; }\r\n});\r\n// 标签\r\nconst tags = ref([]);\r\n// computed({ \r\n// get() { return articleForm.data?.tags || [] }, \r\n// set(val) { articleForm.data.tags = val; } \r\n// });\r\n// 内容\r\nconst content = computed({\r\n get() { return articleForm.data?.content || \"\"; },\r\n set(val) { articleForm.data.content = val; }\r\n});\r\n\r\n// 图集\r\nconst atlas = computed({\r\n get() {\r\n return articleForm.data?.atlas\r\n },\r\n set(val) { articleForm.data.atlas = val; }\r\n});\r\n\r\n// 表单初始化\r\nconst formInitDataInfo = ()=>{\r\n // 初始化数据加载\r\n if (route.query.id) {\r\n articleForm.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleForm.addRecord({ cmsPartId: route.query.partId,isDraft:1 });\r\n }\r\n else {\r\n articleForm.addRecord({ isDraft:1 });\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n formInitDataInfo();\r\n articleForm.init();\r\n\r\n})\r\n\r\n// 保存\r\nconst saveHandle = async () => {\r\n\r\n // 简介不存在的时候使用自动生成的\r\n if (!articleForm.data?.desc) {\r\n desc.value = getDefaultDescContent();\r\n }\r\n\r\n let result = await articleForm.submit();\r\n\r\n router.back();\r\n\r\n return result;\r\n}\r\n\r\n// 保存并预览\r\nconst saveAndViewHandle = async ()=>{\r\n const partId = articleForm.data.cmsPartId;\r\n const data = await saveHandle();\r\n if(data.data.code == 200 && data.data.data){\r\n window.open('/api/cms/content/preview/content/' + partId + '/' + data.data.data)\r\n }\r\n}\r\n\r\n// 保存并发布\r\nconst saveAndPublishHandle = async ()=>{\r\n const result:any = await articleForm.saveAndPublish(CmsSettings.publish.mode);\r\n if(result.data.code == 200){\r\n router.back();\r\n }\r\n}\r\n\r\n// 隐藏扩展\r\nconst closeExtentions = ref(true);\r\nconst extentionsRef = ref();\r\nconst hideExtentionsHandle = () => {\r\n closeExtentions.value = true;\r\n}\r\n//展示扩展\r\nconst closeExtentionsHandle = () => {\r\n closeExtentions.value = false;\r\n}\r\n\r\nconst docEditorChangeHandle = (v: any) => {\r\n articleForm.data.content = v;\r\n}\r\n\r\n</script>\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { reactive } from "vue";
|
|
2
|
-
import { p as MsConfigTable } from "./index-
|
|
2
|
+
import { p as MsConfigTable } from "./index-ClxRVkUv.js";
|
|
3
3
|
const CmsSettings = reactive({
|
|
4
4
|
publish: {
|
|
5
5
|
mode: "dynamic"
|
|
@@ -47,4 +47,4 @@ export {
|
|
|
47
47
|
CmsSettingsKEY as C,
|
|
48
48
|
useCmsSettings as u
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=cms-settings-
|
|
50
|
+
//# sourceMappingURL=cms-settings-3ysZKNMa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cms-settings-
|
|
1
|
+
{"version":3,"file":"cms-settings-3ysZKNMa.js","sources":["../../src/modules/cms/cms-settings.ts"],"sourcesContent":["import { reactive } from \"vue\"\r\nimport { MsConfigTable } from \"../ms/dataviews/ms-config/MsConfigTable\"\r\nimport { registerLexicalEditorModule,unRegisterLexicalEditorModule } from \"../../components/basic/lexical-editor\"\r\n\r\n/**\r\n * 发布配置\r\n */\r\ntype PublishSettings = {\r\n // 发布模式 静态发布和动态发布\r\n mode:'static' | 'dynamic'\r\n}\r\n\r\n/**\r\n * cms 文档编辑设置\r\n */\r\ntype CmsDocSettings = {\r\n css:string,\r\n js:string\r\n}\r\n\r\n/**\r\n * 栏目配置\r\n */\r\ntype PartSettings = {\r\n doc:CmsDocSettings\r\n openBanner:boolean,\r\n bannerImageSize:string,\r\n // 文档模块\r\n docModules:Array<any>,\r\n // 文档模版\r\n docTemplates:Array<any>\r\n}\r\n\r\n/**\r\n * 内容设置\r\n */\r\ntype ContentSettings = {\r\n /**\r\n * 内容文档设置\r\n */\r\n doc:CmsDocSettings,\r\n /**\r\n * 开启文档置顶功能\r\n */\r\n useTop:boolean,\r\n /**\r\n * 开启最新文档功能\r\n */\r\n useNew:boolean,\r\n /**\r\n * 开启热点推荐功能\r\n */\r\n useHotRecommend:boolean,\r\n /**\r\n * 开启栏目推荐功能\r\n */\r\n usePartRecommend:boolean,\r\n /**\r\n * 开启内容标签\r\n */\r\n useTags:boolean,\r\n /**\r\n * 开启媒体库\r\n */\r\n useAtlas:boolean,\r\n /**\r\n * 封面图的尺寸 默认 300 * 300\r\n */\r\n coverImageSize:string,\r\n /**\r\n * banner图的尺寸 默认 1440 * 560\r\n */\r\n bannerImageSize:string,\r\n // 文档模块\r\n docModules:Array<any>,\r\n // 文档模版\r\n docTemplates:Array<any>\r\n}\r\n\r\n/**\r\n * cms 系统设置\r\n */\r\nexport type CmsSettingsType = {\r\n // 发布配置\r\n publish:PublishSettings,\r\n devices:Array<'pc' | 'mobile'>,\r\n part:PartSettings,\r\n content:ContentSettings\r\n}\r\n\r\n/**\r\n * cms 配置\r\n */\r\nconst CmsSettings = reactive<CmsSettingsType>({\r\n publish:{\r\n mode:\"dynamic\"\r\n },\r\n devices:[\"pc\"],\r\n part:{\r\n openBanner:true,\r\n bannerImageSize:\"1440*560\",\r\n docModules:[],\r\n docTemplates:[],\r\n doc:{\r\n js:\"\",\r\n css:\"\"\r\n }\r\n },\r\n content:{\r\n doc:{\r\n js:\"\",\r\n css:\"\"\r\n },\r\n docModules:[],\r\n docTemplates:[],\r\n useTop:true,\r\n useNew:true,\r\n useHotRecommend:false,\r\n usePartRecommend:false,\r\n useTags:false,\r\n useAtlas:false,\r\n coverImageSize:\"300*300\",\r\n bannerImageSize:\"1440*560\"\r\n }\r\n})\r\n\r\n/**\r\n * \r\n */\r\nexport const CmsSettingsKEY = \"cms:content:man:settings\";\r\n\r\n/**\r\n * 使用cms配置\r\n * @param load \r\n */\r\nexport const useCmsSettings = function(load:boolean|undefined = false):CmsSettingsType{\r\n\r\n if(load){\r\n \r\n MsConfigTable.getConfigValue<CmsSettingsType>(CmsSettingsKEY).then(data=>{\r\n if(data){ \r\n // 卸载掉老旧模块\r\n // CmsSettings.docModules.forEach(item=> unRegisterDocModule(item.name) );\r\n Object.assign(CmsSettings,data);\r\n // 加载新内容安装新模块\r\n // CmsSettings.docModules.forEach(item=>registerLexicalEditorModule(item,\"\"));\r\n }\r\n });\r\n\r\n }\r\n\r\n return CmsSettings;\r\n}\r\n"],"names":[],"mappings":";;AA6FA,MAAM,cAAc,SAA0B;AAAA,EAC5C,SAAQ;AAAA,IACN,MAAK;AAAA,EACP;AAAA,EACA,SAAQ,CAAC,IAAI;AAAA,EACb,MAAK;AAAA,IACH,YAAW;AAAA,IACX,iBAAgB;AAAA,IAChB,YAAW,CAAC;AAAA,IACZ,cAAa,CAAC;AAAA,IACd,KAAI;AAAA,MACF,IAAG;AAAA,MACH,KAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAQ;AAAA,IACN,KAAI;AAAA,MACF,IAAG;AAAA,MACH,KAAI;AAAA,IACN;AAAA,IACA,YAAW,CAAC;AAAA,IACZ,cAAa,CAAC;AAAA,IACd,QAAO;AAAA,IACP,QAAO;AAAA,IACP,iBAAgB;AAAA,IAChB,kBAAiB;AAAA,IACjB,SAAQ;AAAA,IACR,UAAS;AAAA,IACT,gBAAe;AAAA,IACf,iBAAgB;AAAA,EAClB;AACF,CAAC;AAKM,MAAM,iBAAiB;AAMjB,MAAA,iBAAkB,SAAS,OAAyB,OAAsB;AAErF,MAAG,MAAK;AAEN,kBAAc,eAAgC,cAAc,EAAE,KAAK,CAAM,SAAA;AACvE,UAAG,MAAK;AAGC,eAAA,OAAO,aAAY,IAAI;AAAA,MAGhC;AAAA,IAAA,CACD;AAAA,EAEH;AAEO,SAAA;AACT;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, watch, computed, unref, resolveComponent, openBlock, createBlock, withCtx, createVNode, createCommentVNode } from "vue";
|
|
2
2
|
import { useRouter } from "vue-router";
|
|
3
|
-
import { x as DataModelDefines, C as useSingleViewWithDialog, E as MKTreeView } from "./index-
|
|
3
|
+
import { x as DataModelDefines, C as useSingleViewWithDialog, E as MKTreeView } from "./index-ClxRVkUv.js";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
import "@maketribe/request";
|
|
6
6
|
import "@maketribe/utils";
|
|
@@ -49,4 +49,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
49
49
|
export {
|
|
50
50
|
_sfc_main as default
|
|
51
51
|
};
|
|
52
|
-
//# sourceMappingURL=dialog-
|
|
52
|
+
//# sourceMappingURL=dialog-CoFIYAyR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-
|
|
1
|
+
{"version":3,"file":"dialog-CoFIYAyR.js","sources":["../../src/page/index/dv/default/single/tree/dialog.vue"],"sourcesContent":["<template>\n <MKDataTablePage v-if=\"dataTree\" :data-table=\"dataTree\">\n <MKTreeView />\n </MKDataTablePage>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, unref, Ref, ref, watch } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { DataForm, DataTree } from \"@maketribe/dm\";\nimport { MKTreeView } from \"../../../../../../components\";\nimport { DataModelDefines } from \"../../../../../../core\";\nimport { useSingleViewWithDialog } from \"../../../../../../composables\";\n\nconst router = useRouter();\n\nconst dataTree: Ref<DataTree | null> = ref(null);\nconst dataForm: Ref<DataForm | null> = ref(null);\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\nuseSingleViewWithDialog({ dataTable: dataTree, dataForm });\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAcA,UAAM,SAAS;AAET,UAAA,WAAiC,IAAI,IAAI;AACzC,UAAA,WAAiC,IAAI,IAAI;AAE/C;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,EAAE,WAAW,KAAK;AAAA,IAAA;AAGpB,4BAAwB,EAAE,WAAW,UAAU,SAAU,CAAA;;;;;;;;;;;;;;;"}
|
|
@@ -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 { x as DataModelDefines, C as useSingleViewWithDialog, z as MKPageContainer, A as MKDataTable, F as MKTableView, G as MKTableTree } from "./index-
|
|
6
|
+
import { x as DataModelDefines, C as useSingleViewWithDialog, z as MKPageContainer, A as MKDataTable, F as MKTableView, G as MKTableTree } from "./index-ClxRVkUv.js";
|
|
7
7
|
import "@maketribe/request";
|
|
8
8
|
import "@maketribe/locale";
|
|
9
9
|
import "@lexical/overflow";
|
|
@@ -58,4 +58,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
58
58
|
export {
|
|
59
59
|
_sfc_main as default
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=dialog-
|
|
61
|
+
//# sourceMappingURL=dialog-DknjQoA1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-
|
|
1
|
+
{"version":3,"file":"dialog-DknjQoA1.js","sources":["../../src/page/index/dv/default/single/table-tree/dialog.vue"],"sourcesContent":["<template>\n <MKPageContainer v-if=\"dataTree\">\n <MKDataTable :data-table=\"dataTree\" enableQueryParams>\n <MKTableView>\n <MKTableTree />\n </MKTableView>\n </MKDataTable>\n </MKPageContainer>\n</template>\n<script setup lang=\"ts\">\nimport { unref, computed, watch, ref, Ref } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { DataForm, DataTree } from \"@maketribe/dm\";\nimport { DataModelDefines } from \"../../../../../../core\";\nimport {\n MKPageContainer,\n MKDataTable,\n MKTableView,\n MKTableTree,\n} from \"../../../../../../components\";\nimport { useSingleViewWithDialog } from \"../../../../../../composables\";\n\nconst router = useRouter();\n\nconst dataTree: Ref<DataTree | null> = ref(null);\nconst dataForm: Ref<DataForm | null> = ref(null);\n\nwatch(\n computed(() => unref(router.currentRoute).meta.name as string),\n (name) => {\n dataTree.value = DataModelDefines.instance.getDataTree(name);\n\n dataForm.value = DataModelDefines.instance.getDataForm(name);\n },\n { immediate: true }\n);\n\nuseSingleViewWithDialog({ dataTable: dataTree, dataForm });\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAsBA,UAAM,SAAS;AAET,UAAA,WAAiC,IAAI,IAAI;AACzC,UAAA,WAAiC,IAAI,IAAI;AAE/C;AAAA,MACE,SAAS,MAAM,MAAM,OAAO,YAAY,EAAE,KAAK,IAAc;AAAA,MAC7D,CAAC,SAAS;AACR,iBAAS,QAAQ,iBAAiB,SAAS,YAAY,IAAI;AAE3D,iBAAS,QAAQ,iBAAiB,SAAS,YAAY,IAAI;AAAA,MAC7D;AAAA,MACA,EAAE,WAAW,KAAK;AAAA,IAAA;AAGpB,4BAAwB,EAAE,WAAW,UAAU,SAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, watch, computed, unref, openBlock, createBlock, withCtx, createVNode, createCommentVNode } from "vue";
|
|
2
2
|
import { useRouter } from "vue-router";
|
|
3
|
-
import { x as DataModelDefines, C as useSingleViewWithDialog, z as MKPageContainer, A as MKDataTable } from "./index-
|
|
3
|
+
import { x as DataModelDefines, C as useSingleViewWithDialog, z as MKPageContainer, A as MKDataTable } from "./index-ClxRVkUv.js";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
import "@maketribe/request";
|
|
6
6
|
import "@maketribe/utils";
|
|
@@ -48,4 +48,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
48
48
|
export {
|
|
49
49
|
_sfc_main as default
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=dialog-
|
|
51
|
+
//# sourceMappingURL=dialog-E7M9atVV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-
|
|
1
|
+
{"version":3,"file":"dialog-E7M9atVV.js","sources":["../../src/page/index/dv/default/single/list/dialog.vue"],"sourcesContent":["<template>\n <MKPageContainer v-if=\"dataTable\">\n <MKDataTable :data-table=\"dataTable\" enableQueryParams />\n </MKPageContainer>\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, MKPageContainer } 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":";;;;;;;;;;;;;;;;;;;;;;AAcA,UAAM,SAAS;AAET,UAAA,YAAmC,IAAI,IAAI;AAC3C,UAAA,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,KAAK;AAAA,IAAA;AAGI,4BAAA,EAAE,WAAW,SAAA,CAAU;;;;;;;;;;;;;;"}
|
|
@@ -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 { x as DataModelDefines, z as MKPageContainer, B as MKDataForm } from "./index-
|
|
6
|
+
import { x as DataModelDefines, z as MKPageContainer, B as MKDataForm } from "./index-ClxRVkUv.js";
|
|
7
7
|
import "@maketribe/request";
|
|
8
8
|
import "@maketribe/locale";
|
|
9
9
|
import "@lexical/overflow";
|
|
@@ -62,4 +62,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
62
62
|
export {
|
|
63
63
|
_sfc_main as default
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=edit-
|
|
65
|
+
//# sourceMappingURL=edit-BM-Do19m.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-
|
|
1
|
+
{"version":3,"file":"edit-BM-Do19m.js","sources":["../../src/page/index/dv/default/edit.vue"],"sourcesContent":["<template>\n <MKPageContainer v-if=\"dataForm\">\n <MKDataForm :data-form=\"dataForm\" />\n </MKPageContainer>\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, MKPageContainer } from \"../../../../components\";\n\nconst router = useRouter();\n\nconst id = computed(() => unref(router.currentRoute).params.id as string);\n\nconst dataForm: Ref<DataForm | null> = 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":";;;;;;;;;;;;;;;;;;;;;;AAaA,UAAM,SAAS;AAET,UAAA,KAAK,SAAS,MAAM,MAAM,OAAO,YAAY,EAAE,OAAO,EAAY;AAElE,UAAA,WAAiC,SAAS,MAAM;AAC9CA,YAAAA,YAAW,iBAAiB,SAAS;AAAA,QACzC,MAAM,OAAO,YAAY,EAAE,KAAK;AAAA,MAAA;AAG3BA,aAAAA,YAAY,SAASA,SAAQ,IAAiB;AAAA,IAAA,CACtD;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,QAAA,CACjD;AAEDA,kBAAS,YAAY,GAAG,MAAM;AAC5B,iBAAO,KAAK,EAAE,MAAM,MAAMA,UAAS,IAAI,SAAS;AAAA,QAAA,CACjD;AAEG,YAAA,CAAC,MAAM,EAAE,GAAG;AACRA,sBAAAA,SAAQ,MAARA,mBAAW;AACjB;AAAA,QACF;AAEA,oBAAMA,SAAQ,MAAd,mBAAiB,WAAW,MAAM,EAAE;AAAA,MACtC;AAAA,MACA,EAAE,WAAW,KAAK;AAAA,IAAA;;;;;;;;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { defineComponent, ref, onMounted, watch, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, createVNode, withCtx, createElementVNode, unref, createTextVNode, createBlock, createCommentVNode } from "vue";
|
|
2
|
-
import { u as useCmsSettings, C as CmsSettingsKEY } from "./cms-settings-
|
|
2
|
+
import { u as useCmsSettings, C as CmsSettingsKEY } from "./cms-settings-3ysZKNMa.js";
|
|
3
3
|
import "@maketribe/dm";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
import "@maketribe/utils";
|
|
6
|
-
import { p as MsConfigTable, q as MKSvgIcon } from "./index-
|
|
6
|
+
import { p as MsConfigTable, q as MKSvgIcon } from "./index-ClxRVkUv.js";
|
|
7
7
|
import "vue-router";
|
|
8
8
|
import "@maketribe/request";
|
|
9
9
|
import "@maketribe/locale";
|
|
@@ -403,4 +403,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
403
403
|
export {
|
|
404
404
|
_sfc_main as default
|
|
405
405
|
};
|
|
406
|
-
//# sourceMappingURL=index-
|
|
406
|
+
//# sourceMappingURL=index-6pZHgXtY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-6pZHgXtY.js","sources":["../../src/modules/cms/pages/cms-settigns/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-appsettings__warp\" v-loading=\"loading\" style=\"\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular);\" m=\"l-[10px]\" flex=\"~ items-center\">\r\n <MKSvgIcon name=\"ep:operation\" m=\"r-[5px]\"/>\r\n CMS应用设置\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div>\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text :disabled=\"!changed\" @click=\"saveHandle\">\r\n <MKSvgIcon name=\"carbon:save\" />\r\n 保存\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-appsettings__form_warp\" style=\"\r\n background: #fff;\r\n flex: 1;\r\n height: 100%;\r\n padding: 10px;\r\n margin: 10px;\r\n overflow: auto;\r\n \">\r\n <el-tabs v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <el-tab-pane label=\"发布设置\" name=\"publish\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"发布模式 : \">\r\n <el-radio-group v-model=\"CmsSettings.publish.mode\">\r\n <el-radio value=\"static\">静态发布</el-radio>\r\n <el-radio value=\"dynamic\">动态发布</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"兼容设备 : \">\r\n <el-checkbox-group v-model=\"CmsSettings.devices\">\r\n <el-checkbox label=\"PC端\" value=\"pc\" />\r\n <el-checkbox label=\"移动端\" value=\"mobile\" />\r\n </el-checkbox-group>\r\n </el-form-item>\r\n </el-form>\r\n <!-- <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"文档模块 : \">\r\n <DocModuleEditForm :modules=\"CmsSettings.docModules\"></DocModuleEditForm>\r\n </el-form-item>\r\n </el-form> -->\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\">\r\n <el-divider content-position=\"left\">栏目内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"开启栏目轮播图 : \">\r\n <el-switch v-model=\"CmsSettings.part.openBanner\" />\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"CmsSettings.part.openBanner\" label=\"轮播图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.part.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n \r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.part.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.part.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"内容设置\" name=\"content\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"启用内容置顶 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTop\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用最新内容 : \">\r\n <el-switch v-model=\"CmsSettings.content.useNew\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用热门推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.useHotRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用栏目推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.usePartRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容标签 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTags\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容资源库 : \">\r\n <el-switch v-model=\"CmsSettings.content.useAtlas\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容封面图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.coverImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容Banner图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n \r\n <el-divider content-position=\"left\">内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.content.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.content.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref,onMounted,watch, } from \"vue\";\r\nimport { useCmsSettings,CmsSettingsKEY,type CmsSettingsType } from \"../../cms-settings\"\r\nimport { MsConfigTable } from \"../../../ms/dataviews/ms-config/\"\r\nimport DocModuleEditForm from \"./DocModuleEditForm.vue\"\r\nimport {MKSvgIcon} from \"../../../../components/basic\";\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true); \r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"publish\");\r\n// 激活的tab\r\nconst loading = ref(false);\r\nconst changed = ref(false);\r\n\r\n\r\nconst saveHandle = async ()=>{\r\n\r\n if(changed.value){\r\n loading.value = true;\r\n await MsConfigTable.setConfigValue(CmsSettingsKEY,JSON.stringify(CmsSettings))\r\n loading.value = false;\r\n changed.value = false;\r\n }\r\n\r\n}\r\n\r\nonMounted(async ()=>{\r\n\r\n // 初始化\r\n const data = await MsConfigTable.getConfigValue<CmsSettingsType>(CmsSettingsKEY);\r\n if(data){ Object.assign(CmsSettings,data) }\r\n setTimeout(() => {\r\n loading.value = false;\r\n }, 500);\r\n // 数据改变\r\n watch(CmsSettings,()=>{\r\n changed.value = true;\r\n },{ deep:true })\r\n})\r\n</script>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgJM,UAAA,cAAc,eAAe,IAAI;AAGjC,UAAA,gBAAgB,IAAI,SAAS;AAE7B,UAAA,UAAU,IAAI,KAAK;AACnB,UAAA,UAAU,IAAI,KAAK;AAGzB,UAAM,aAAa,YAAU;AAE3B,UAAG,QAAQ,OAAM;AACf,gBAAQ,QAAQ;AAChB,cAAM,cAAc,eAAe,gBAAe,KAAK,UAAU,WAAW,CAAC;AAC7E,gBAAQ,QAAQ;AAChB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAIF,cAAU,YAAU;AAGlB,YAAM,OAAQ,MAAM,cAAc,eAAgC,cAAc;AAChF,UAAG,MAAK;AAAS,eAAA,OAAO,aAAY,IAAI;AAAA,MAAE;AAC1C,iBAAW,MAAM;AACf,gBAAQ,QAAQ;AAAA,SACf,GAAG;AAEN,YAAM,aAAY,MAAI;AACpB,gBAAQ,QAAQ;AAAA,MAAA,GAChB,EAAE,MAAK,KAAA,CAAM;AAAA,IAAA,CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, computed, unref, createVNode } from "vue";
|
|
2
2
|
import { buildProps } from "@maketribe/utils";
|
|
3
3
|
import { TableColumn, TableActionColumn } from "@maketribe/dm";
|
|
4
|
-
import { T as columnProps, V as MKButton } from "./index-
|
|
4
|
+
import { T as columnProps, V as MKButton } from "./index-ClxRVkUv.js";
|
|
5
5
|
import "vue-router";
|
|
6
6
|
import "element-plus";
|
|
7
7
|
import "@maketribe/request";
|
|
@@ -46,4 +46,4 @@ export {
|
|
|
46
46
|
MKColumnAction,
|
|
47
47
|
MKColumnAction as default
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=index-
|
|
49
|
+
//# sourceMappingURL=index-B7V4NKgm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-B7V4NKgm.js","sources":["../../src/components/data-model/data-table/components/column-action/column-action-options.ts","../../src/components/data-model/data-table/components/column-action/column-action.tsx","../../src/components/data-model/data-table/components/column-action/index.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\nimport { TableColumn } from \"@maketribe/dm\";\nimport { columnProps } from \"../../composables\";\n\nexport const columnActionProps = buildProps({\n ...columnProps,\n column: { type: TableColumn, required: true },\n buttons: { type: Array, default: () => [] }\n} as const);\n\nexport type ColumnActionProps = ExtractPropTypes<typeof columnActionProps>;\n","import { computed, defineComponent, unref } from \"vue\";\nimport { ElButton } from \"element-plus\";\n\nimport { columnActionProps } from \"./column-action-options\";\nimport { MKButton } from \"../../../../basic/button\";\nimport { ActionButton, TableActionColumn } from \"@maketribe/dm\";\n\nexport type MKColumnActionButton = {\n name?: string;\n label?: string;\n type?: InstanceType<typeof ElButton>[\"type\"];\n handler?: (row: any) => any;\n};\n\nexport default defineComponent({\n name: \"MKColumnAction\",\n props: columnActionProps,\n setup(props) {\n const buttons = computed(() => {\n if (props.column instanceof TableActionColumn) {\n return props.column.buttons;\n }\n\n return props.buttons as ActionButton[];\n });\n\n const handleColumnActionClick = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n return () => {\n const buttonVnodes = unref(buttons)\n .filter((button) => button.predicate(props.row))\n .map((button) => (\n <MKButton\n icon={button.icon}\n label={button.label}\n type={button.type}\n link\n onClick={() => button.handler(props.row)}\n />\n ));\n\n return (\n <span class=\"mk-column-action\" onClick={handleColumnActionClick}>\n {buttonVnodes}\n </span>\n );\n };\n },\n});\n","import ColumnAction from \"./column-action\";\r\n\r\nexport const MKColumnAction = ColumnAction;\r\nexport default MKColumnAction;\r\n"],"names":["defineComponent","name","props","columnActionProps","setup","buttons","computed","column","TableActionColumn","handleColumnActionClick","e","preventDefault","stopPropagation","buttonVnodes","unref","filter","button","predicate","row","map","_createVNode","MKButton","icon","label","type","onClick","handler"],"mappings":";;;;;;;;;AAKO,MAAM,oBAAoB,WAAW;AAAA,EAC1C,GAAG;AAAA,EACH,QAAQ,EAAE,MAAM,aAAa,UAAU,KAAK;AAAA,EAC5C,SAAS,EAAE,MAAM,OAAO,SAAS,MAAM,CAAA,EAAG;AAC5C,CAAU;ACKV,MAAeA,+CAAgB;AAAA,EAC7BC,MAAM;AAAA,EACNC,OAAOC;AAAAA,EACPC,MAAMF,OAAO;AACX,UAAMG,UAAUC,SAAS,MAAM;AAC7B,UAAIJ,MAAMK,kBAAkBC,mBAAmB;AAC7C,eAAON,MAAMK,OAAOF;AAAAA,MACtB;AAEA,aAAOH,MAAMG;AAAAA,IACf,CAAC;AAED,UAAMI,0BAA2BC,OAAkB;AACjDA,QAAEC,eAAc;AAChBD,QAAEE,gBAAe;AAAA;AAGnB,WAAO,MAAM;AACX,YAAMC,eAAeC,MAAMT,OAAO,EAC/BU,OAAQC,YAAWA,OAAOC,UAAUf,MAAMgB,GAAG,CAAC,EAC9CC,IAAKH,YAAMI,YAAAC,UAAA;AAAA,QAAA,QAEFL,OAAOM;AAAAA,QAAI,SACVN,OAAOO;AAAAA,QAAK,QACbP,OAAOQ;AAAAA,QAAI,QAAA;AAAA,QAAA,WAERC,MAAMT,OAAOU,QAAQxB,MAAMgB,GAAG;AAAA,MAAC,GAAA,IAAA,CAE3C;AAEH,aAAAE,YAAA,QAAA;AAAA,QAAA,SAAA;AAAA,QAAA,WAC0CX;AAAAA,MAAuB,GAAA,CAC5DI,YAAY,CAAA;AAAA;EAIrB;AACF,CAAC;ACjDM,MAAM,iBAAiB;"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { buildProps, withInstall } from "@maketribe/utils";
|
|
2
|
+
import { inject, computed, unref, defineComponent, watch, ref, openBlock, createElementBlock, createVNode, withCtx, createTextVNode } from "vue";
|
|
3
|
+
import { a8 as DATA_FORM_ITEM_CONTEXT_KEY, A as MKDataTable, a9 as _sfc_main$1, z as MKPageContainer, aa as DataForm, a3 as MKForm } from "./index-ClxRVkUv.js";
|
|
4
|
+
import { FormDetailColumn, FormColumn, Messager } from "@maketribe/dm";
|
|
5
|
+
import { ElButton, ElEmpty } from "element-plus";
|
|
6
|
+
const formDetailProps = buildProps({
|
|
7
|
+
modelValue: {
|
|
8
|
+
type: null
|
|
9
|
+
},
|
|
10
|
+
disabled: {
|
|
11
|
+
type: Boolean,
|
|
12
|
+
default: false
|
|
13
|
+
},
|
|
14
|
+
column: { type: FormDetailColumn, required: true },
|
|
15
|
+
formWidth: {
|
|
16
|
+
type: String,
|
|
17
|
+
default: "400px"
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const formDetailEmits = {
|
|
21
|
+
"update:model-value": (v) => true
|
|
22
|
+
};
|
|
23
|
+
buildProps({
|
|
24
|
+
column: { type: FormColumn, required: true }
|
|
25
|
+
});
|
|
26
|
+
function useFormItem() {
|
|
27
|
+
const dataFormItemContext = inject(DATA_FORM_ITEM_CONTEXT_KEY);
|
|
28
|
+
const column = computed(() => {
|
|
29
|
+
var _a;
|
|
30
|
+
return ((_a = unref(dataFormItemContext)) == null ? void 0 : _a.column) ?? null;
|
|
31
|
+
});
|
|
32
|
+
const value = computed({
|
|
33
|
+
get: () => {
|
|
34
|
+
const _column = unref(column);
|
|
35
|
+
if (!_column) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
return _column.getValue();
|
|
39
|
+
},
|
|
40
|
+
set: (v) => {
|
|
41
|
+
const _column = unref(column);
|
|
42
|
+
if (!_column) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
_column.setValue(v);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const disabled = computed(() => {
|
|
49
|
+
var _a;
|
|
50
|
+
return ((_a = unref(column)) == null ? void 0 : _a.disabled) ?? false;
|
|
51
|
+
});
|
|
52
|
+
return { column, value, disabled };
|
|
53
|
+
}
|
|
54
|
+
const _hoisted_1 = { class: "mk-form-detail" };
|
|
55
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
56
|
+
__name: "form-detail",
|
|
57
|
+
props: formDetailProps,
|
|
58
|
+
emits: formDetailEmits,
|
|
59
|
+
setup(__props, { emit: __emit }) {
|
|
60
|
+
const props = __props;
|
|
61
|
+
const detailTable = computed(() => props.column.detailTable);
|
|
62
|
+
const detailForm = computed(() => props.column.detailForm);
|
|
63
|
+
const { value } = useFormItem();
|
|
64
|
+
watch(
|
|
65
|
+
computed(() => unref(value)),
|
|
66
|
+
(value2) => {
|
|
67
|
+
const _detailTable = unref(detailTable);
|
|
68
|
+
value2 = Array.isArray(value2) ? value2 : [];
|
|
69
|
+
_detailTable.setList(
|
|
70
|
+
value2.map((item) => _detailTable.formatItem(item))
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
const isShowDataForm = ref(false);
|
|
75
|
+
watch(
|
|
76
|
+
detailTable,
|
|
77
|
+
(dataTable, _, onCleanup) => {
|
|
78
|
+
const addRecordDisposable = dataTable.addRecordEvent.on(async ({ item }) => {
|
|
79
|
+
const _dataForm = unref(detailForm);
|
|
80
|
+
if (!_dataForm) {
|
|
81
|
+
console.warn(`没有对应的 (${dataTable.name}) DataForm 实现`);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
isShowDataForm.value = true;
|
|
85
|
+
_dataForm.addRecord(item);
|
|
86
|
+
});
|
|
87
|
+
const editRecordDisposable = dataTable.editRecordEvent.on(
|
|
88
|
+
async ({ item }) => {
|
|
89
|
+
const _dataForm = unref(detailForm);
|
|
90
|
+
if (!_dataForm) {
|
|
91
|
+
console.warn(`没有对应的 (${dataTable.name}) DataForm 实现`);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
isShowDataForm.value = true;
|
|
95
|
+
try {
|
|
96
|
+
const response = await _dataForm.editRecord(item);
|
|
97
|
+
if (response.data.code !== 200) {
|
|
98
|
+
Messager.error({ message: response.data.msg });
|
|
99
|
+
isShowDataForm.value = false;
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
} catch (e) {
|
|
103
|
+
console.error(e);
|
|
104
|
+
isShowDataForm.value = false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
onCleanup(() => {
|
|
109
|
+
addRecordDisposable.dispose();
|
|
110
|
+
editRecordDisposable.dispose();
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
{ immediate: true }
|
|
114
|
+
);
|
|
115
|
+
watch(
|
|
116
|
+
detailForm,
|
|
117
|
+
(dataForm, _, onCleanup) => {
|
|
118
|
+
const submittedDisposable = dataForm.submittedEvent.on(() => {
|
|
119
|
+
var _a;
|
|
120
|
+
isShowDataForm.value = false;
|
|
121
|
+
(_a = unref(detailTable)) == null ? void 0 : _a.load();
|
|
122
|
+
});
|
|
123
|
+
const cancelDisposable = dataForm.cancelEvent.on(() => {
|
|
124
|
+
isShowDataForm.value = false;
|
|
125
|
+
});
|
|
126
|
+
onCleanup(() => {
|
|
127
|
+
submittedDisposable.dispose();
|
|
128
|
+
cancelDisposable.dispose();
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
{ immediate: true }
|
|
132
|
+
);
|
|
133
|
+
const handleFormSave = async () => {
|
|
134
|
+
var _a;
|
|
135
|
+
await ((_a = unref(detailForm)) == null ? void 0 : _a.simpleSubmit());
|
|
136
|
+
};
|
|
137
|
+
const handleFormCancel = () => {
|
|
138
|
+
unref(detailForm).cancel();
|
|
139
|
+
};
|
|
140
|
+
return (_ctx, _cache) => {
|
|
141
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
142
|
+
createVNode(unref(MKDataTable), {
|
|
143
|
+
dataTable: detailTable.value,
|
|
144
|
+
autoLoad: false
|
|
145
|
+
}, null, 8, ["dataTable"]),
|
|
146
|
+
createVNode(_sfc_main$1, {
|
|
147
|
+
modelValue: isShowDataForm.value,
|
|
148
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isShowDataForm.value = $event),
|
|
149
|
+
title: "fdasfsaf"
|
|
150
|
+
}, {
|
|
151
|
+
footer: withCtx(() => [
|
|
152
|
+
createVNode(unref(ElButton), { onClick: handleFormCancel }, {
|
|
153
|
+
default: withCtx(() => [
|
|
154
|
+
createTextVNode("取消")
|
|
155
|
+
]),
|
|
156
|
+
_: 1
|
|
157
|
+
}),
|
|
158
|
+
createVNode(unref(ElButton), {
|
|
159
|
+
type: "primary",
|
|
160
|
+
onClick: handleFormSave
|
|
161
|
+
}, {
|
|
162
|
+
default: withCtx(() => [
|
|
163
|
+
createTextVNode("保存")
|
|
164
|
+
]),
|
|
165
|
+
_: 1
|
|
166
|
+
})
|
|
167
|
+
]),
|
|
168
|
+
empty: withCtx(() => [
|
|
169
|
+
createVNode(unref(ElEmpty), { "image-size": 100 })
|
|
170
|
+
]),
|
|
171
|
+
default: withCtx(() => [
|
|
172
|
+
createVNode(unref(MKPageContainer), null, {
|
|
173
|
+
default: withCtx(() => [
|
|
174
|
+
createVNode(DataForm, {
|
|
175
|
+
dataForm: detailForm.value,
|
|
176
|
+
autoLoad: false
|
|
177
|
+
}, {
|
|
178
|
+
default: withCtx(() => [
|
|
179
|
+
createVNode(unref(MKForm))
|
|
180
|
+
]),
|
|
181
|
+
_: 1
|
|
182
|
+
}, 8, ["dataForm"])
|
|
183
|
+
]),
|
|
184
|
+
_: 1
|
|
185
|
+
})
|
|
186
|
+
]),
|
|
187
|
+
_: 1
|
|
188
|
+
}, 8, ["modelValue"])
|
|
189
|
+
]);
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
const MKFormDetail = withInstall(_sfc_main);
|
|
194
|
+
export {
|
|
195
|
+
MKFormDetail,
|
|
196
|
+
MKFormDetail as default,
|
|
197
|
+
formDetailEmits,
|
|
198
|
+
formDetailProps
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=index-BFKVNCwz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BFKVNCwz.js","sources":["../../src/components/data-model/data-form/components/form-detail/form-detail-options.ts","../../src/components/data-model/data-form/composables/use-form-item.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","import { ExtractPropTypes, computed, inject, unref } from \"vue\";\nimport { DATA_FORM_ITEM_CONTEXT_KEY } from \"../token\";\nimport { FormColumn } from \"@maketribe/dm\";\nimport { buildProps } from \"@maketribe/utils\";\n\nexport const columnProps = buildProps({\n column: { type: FormColumn, required: true },\n} as const);\n\nexport type ColumnProps = ExtractPropTypes<typeof columnProps>;\n\nexport function useFormItem() {\n const dataFormItemContext = inject(DATA_FORM_ITEM_CONTEXT_KEY);\n const column = computed(() => unref(dataFormItemContext)?.column ?? null);\n\n const value = computed({\n get: () => {\n const _column = unref(column);\n\n if (!_column) {\n return;\n }\n\n return _column.getValue();\n },\n set: (v: any) => {\n const _column = unref(column);\n\n if (!_column) {\n return;\n }\n\n _column.setValue(v);\n },\n });\n\n const disabled = computed(() => unref(column)?.disabled ?? false);\n\n return { column, value, disabled };\n}\n","<script setup lang=\"ts\">\r\nimport {computed, defineComponent, ref, unref, watch} from \"vue\";\r\nimport {MKPageContainer} from \"../../../../basic/page-container\";\r\nimport {MKDataTable} from \"../../../data-table\";\r\nimport DataForm from \"../../data-form.vue\";\r\nimport {formDetailEmits, formDetailProps} from \"./form-detail-options\";\r\nimport {useFormItem} from \"../../composables\";\r\nimport {MKForm} from '../../views'\r\nimport {ElButton, ElEmpty} from \"element-plus\";\r\nimport {Messager} from \"@maketribe/dm\";\r\nimport HSlideover from '../../../../../layouts/new/ui-kit/HSlideover.vue'\r\n\r\nconst props = defineProps(formDetailProps);\r\n\r\nconst emit = defineEmits(formDetailEmits)\r\n\r\nconst detailTable = computed(() => props.column.detailTable);\r\nconst detailForm = computed(() => props.column.detailForm!);\r\n\r\nconst {value} = useFormItem();\r\n\r\nwatch(\r\n computed(() => unref(value)),\r\n (value) => {\r\n const _detailTable = unref(detailTable);\r\n\r\n value = Array.isArray(value) ? value : [];\r\n\r\n _detailTable.setList(\r\n value.map((item: any) => _detailTable.formatItem(item))\r\n );\r\n }\r\n);\r\n\r\nconst isShowDataForm = ref(false);\r\n\r\nwatch(\r\n detailTable,\r\n (dataTable, _, onCleanup) => {\r\n const addRecordDisposable = dataTable.addRecordEvent.on(async ({item}) => {\r\n const _dataForm = unref(detailForm);\r\n\r\n if (!_dataForm) {\r\n console.warn(`没有对应的 (${dataTable.name}) DataForm 实现`);\r\n return;\r\n }\r\n\r\n isShowDataForm.value = true;\r\n\r\n _dataForm.addRecord(item);\r\n });\r\n\r\n const editRecordDisposable = dataTable.editRecordEvent.on(\r\n async ({item}) => {\r\n const _dataForm = unref(detailForm);\r\n\r\n if (!_dataForm) {\r\n console.warn(`没有对应的 (${dataTable.name}) DataForm 实现`);\r\n return;\r\n }\r\n\r\n isShowDataForm.value = true;\r\n\r\n try {\r\n const response = await _dataForm.editRecord(item);\r\n\r\n if (response.data.code !== 200) {\r\n Messager.error({message: response.data.msg});\r\n isShowDataForm.value = false;\r\n return;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n isShowDataForm.value = false;\r\n }\r\n }\r\n );\r\n\r\n onCleanup(() => {\r\n addRecordDisposable.dispose();\r\n editRecordDisposable.dispose();\r\n });\r\n },\r\n {immediate: true}\r\n);\r\n\r\nwatch(\r\n detailForm,\r\n (dataForm, _, onCleanup) => {\r\n const submittedDisposable = dataForm.submittedEvent.on(() => {\r\n isShowDataForm.value = false;\r\n\r\n unref(detailTable)?.load();\r\n });\r\n\r\n const cancelDisposable = dataForm.cancelEvent.on(() => {\r\n isShowDataForm.value = false;\r\n });\r\n\r\n onCleanup(() => {\r\n submittedDisposable.dispose();\r\n cancelDisposable.dispose();\r\n });\r\n },\r\n {immediate: true}\r\n);\r\n\r\nconst handleFormSave = async () => {\r\n await unref(detailForm)?.simpleSubmit();\r\n};\r\n\r\nconst handleFormCancel = () => {\r\n unref(detailForm).cancel();\r\n};\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <div class=\"mk-form-detail\">\r\n <MKDataTable\r\n :dataTable=\"detailTable\"\r\n :autoLoad=\"false\"\r\n />\r\n <HSlideover v-model=\"isShowDataForm\" title=\"fdasfsaf\">\r\n <MKPageContainer>\r\n <DataForm :dataForm=\"detailForm\" :autoLoad=\"false\">\r\n <MKForm/>\r\n </DataForm>\r\n </MKPageContainer>\r\n\r\n <template #footer>\r\n\r\n <ElButton @click=\"handleFormCancel\">取消</ElButton>\r\n <ElButton type=\"primary\" @click=\"handleFormSave\">保存</ElButton>\r\n </template>\r\n\r\n <template #empty>\r\n <ElEmpty :image-size=\"100\"/>\r\n </template>\r\n </HSlideover>\r\n </div>\r\n</template>\r\n","import { withInstall } from \"@maketribe/utils\";\r\nimport FormDetail from \"./form-detail.vue\";\r\n\r\nexport const MKFormDetail = withInstall(FormDetail);\r\nexport default MKFormDetail;\r\n\r\nexport * from \"./form-detail-options\";\r\n"],"names":["value","FormDetail"],"mappings":"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"}
|