label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
111 lines (108 loc) • 4.64 kB
JavaScript
import { defineComponent, openBlock, createElementBlock, createElementVNode, createVNode, createCommentVNode } from 'vue';
import StyleDesign from './style-design.vue.mjs';
import { defaultPreviewData, clearPanel, getCurrentPanel } from '../../../utils/elementUtil.mjs';
import { record, ActionEnum } from '../../../utils/historyUtil.mjs';
import { updatePanel } from '../../../plugins/moveable/moveable.mjs';
import { MyPrinter } from '../../../printer.mjs';
import { download, mitt } from '../../../utils/utils.mjs';
import { MyMessage } from '../../my/message/my-message.mjs';
import { useAppStoreHook } from '../../../stores/app.mjs';
const _hoisted_1 = { class: "toolbar-container" };
const _hoisted_2 = { class: "display-flex space-between width-100-p" };
var _sfc_main = /* @__PURE__ */ defineComponent({
__name: "toolbar",
props: {
designProps: {}
},
setup(__props) {
const useApp = useAppStoreHook();
function print() {
const defaultPrinter = MyPrinter.getDefaultPrinter();
MyPrinter.clientPrinter({ previewDataList: defaultPreviewData(useApp.previewData), printer: defaultPrinter?.name }).then((res) => {
switch (res.status) {
case "SUCCESS":
break;
case "TIMEOUT":
MyMessage.error("\u6253\u5370\u8D85\u65F6");
break;
case "ERROR":
MyMessage.error("\u6253\u5370\u5931\u8D25\uFF0C" + res.msg);
break;
}
}).catch((e) => {
MyMessage.error("\u6253\u5370\u5931\u8D25\uFF0C" + e.msg);
});
}
function serverDownloadPdf() {
MyPrinter.pdfServer({ previewDataList: defaultPreviewData(useApp.previewData) }).then((res) => {
switch (res.status) {
case "SUCCESS":
download(res.blob, "myprint.pdf");
break;
case "TIMEOUT":
MyMessage.error("\u4E0B\u8F7D\u8D85\u65F6");
break;
case "ERROR":
MyMessage.error("\u4E0B\u8F7D\u5931\u8D25\uFF0C" + res.msg);
break;
}
}).catch((e) => {
MyMessage.error("\u4E0B\u8F7D\u5931\u8D25\uFF0C" + e.msg);
});
}
function preview() {
MyPrinter.chromePreview({ previewDataList: defaultPreviewData(useApp.previewData) });
}
function save() {
mitt.emit("saveTemplate", {});
}
function clearPanelClick() {
clearPanel(getCurrentPanel());
updatePanel();
record({
action: ActionEnum.CLEAR
});
}
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", _hoisted_1, [
createElementVNode("div", _hoisted_2, [
createVNode(StyleDesign),
createCommentVNode(` <div class="display-flex-column toolbar-tool">
<div class="display-flex">
<my-button v-if="designProps.showPrintButton" size="small" class="toolbar-tool_button_margin_right"
="print">
<my-icon>
<Printer />
</my-icon>
{{ i18n('toolbar.print') }}
</my-button>
<my-button v-if="designProps.showDownloadPdfButton" size="small"
class="toolbar-tool_button_margin_right"
="serverDownloadPdf">
<my-icon>
<Printer />
</my-icon>
{{ i18n('toolbar.download') }}
</my-button>
<my-button v-if="designProps.showPreviewButton" size="small"
class="toolbar-tool_button_margin_right" ="preview">
<i class="icon-zitiyulan iconfont" />
{{ i18n('toolbar.preview') }}
</my-button>
<my-button v-if="designProps.showClearButton" size="small" class="toolbar-tool_button_margin_right"
="clearPanelClick">
{{ i18n('toolbar.clear') }}
</my-button>
<my-button v-if="designProps.showSaveButton" size="small" class="toolbar-tool_button_margin_right"
:disabled="getCurrentPanel().name == null || getCurrentPanel().name == ''"
="save">{{ i18n('toolbar.save') }}
</my-button>
</div>
</div> `)
])
]);
};
}
});
export { _sfc_main as default };
//# sourceMappingURL=toolbar.vue2.mjs.map