diff --git a/src/api/mes/printtemplate/index.ts b/src/api/mes/printtemplate/index.ts index 99d5fea3..74b59b79 100644 --- a/src/api/mes/printtemplate/index.ts +++ b/src/api/mes/printtemplate/index.ts @@ -5,6 +5,7 @@ export interface PrintTemplateVO { templateCode: string templateName: string templateType: number + templateBizType: string templateJson: string remark: string isEnable: boolean diff --git a/src/locales/en.ts b/src/locales/en.ts index a5e948d5..b58bc504 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -2806,6 +2806,9 @@ export default { templateCode: 'Template Code', templateName: 'Template Name', templateType: 'Template Type', + templateBizType: 'Template Category', + bizTypePrint: 'Print', + bizTypeReport: 'Report', templateJson: 'Template JSON', isConfigured: 'Configured', configured: 'Configured', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index ee469d84..c3d572c2 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -2308,6 +2308,9 @@ export default { templateCode: '模板编码', templateName: '模板名称', templateType: '模板类型', + templateBizType: '模板分类', + bizTypePrint: '打印', + bizTypeReport: '报表', templateJson: '模板JSON', isConfigured: '是否已配置', configured: '已配置', diff --git a/src/views/mes/printTemplate/PrintTemplateDesigner.vue b/src/views/mes/printTemplate/PrintTemplateDesigner.vue index 90575492..57a9ca46 100644 --- a/src/views/mes/printTemplate/PrintTemplateDesigner.vue +++ b/src/views/mes/printTemplate/PrintTemplateDesigner.vue @@ -36,6 +36,22 @@ + + + 旋转 + + + + 预览 + + + + {{ t('common.save') }} @@ -65,6 +81,10 @@ + + +
+
@@ -222,6 +242,9 @@ const scaleValue = ref(1) const scaleMax = 5 const scaleMin = 0.5 +const previewVisible = ref(false) +const previewHtml = ref('') + let hiprintInited = false let hiprintTemplate: any @@ -295,6 +318,30 @@ const changeScale = (isZoomIn: boolean) => { hiprintTemplate.zoom(nextScale) } +const rotatePaper = () => { + if (!hiprintTemplate) return + hiprintTemplate.rotatePaper() +} + +const handlePreview = () => { + if (!hiprintTemplate) return + const jquery = (window as any).$ + const htmlResult = hiprintTemplate.getHtml({}) + if (htmlResult && jquery) { + previewHtml.value = jquery('
').append(htmlResult).html() || '' + } + previewVisible.value = true +} + +const clearPaper = () => { + if (!hiprintTemplate) return + try { + hiprintTemplate.clear() + } catch (error) { + message.error('清空失败') + } +} + const handleSave = async () => { if (!hiprintTemplate) { return diff --git a/src/views/mes/printTemplate/PrintTemplateForm.vue b/src/views/mes/printTemplate/PrintTemplateForm.vue index 13b7b856..e692aebc 100644 --- a/src/views/mes/printTemplate/PrintTemplateForm.vue +++ b/src/views/mes/printTemplate/PrintTemplateForm.vue @@ -22,9 +22,15 @@ + + + {{ t('TemplateManagement.PrintTemplate.bizTypePrint') }} + {{ t('TemplateManagement.PrintTemplate.bizTypeReport') }} + + - + @@ -60,6 +66,7 @@ const formData = ref({ isAutoCode: true, templateName: undefined, templateType: undefined, + templateBizType: '1', remark: undefined, isEnable: true, }) @@ -67,14 +74,27 @@ const formRules = computed(() => ({ templateCode: formData.value.isAutoCode ? [] : [{ required: true, message: t('TemplateManagement.PrintTemplate.validatorCodeRequired'), trigger: 'blur' }], templateName: [{ required: true, message: t('TemplateManagement.PrintTemplate.validatorNameRequired'), trigger: 'blur' }], templateType: [{ required: true, message: t('TemplateManagement.PrintTemplate.validatorTypeRequired'), trigger: 'change' }], + templateBizType: [{ required: true, message: '请选择模板分类', trigger: 'change' }], })) const formRef = ref() -const open = async (type: string, id?: number) => { +const templateTypeDictOptions = computed(() => { + const dictType = formData.value.templateBizType === '2' ? 'report_template_type' : 'print_template_type' + return getIntDictOptions(dictType) +}) + +watch(() => formData.value.templateBizType, () => { + formData.value.templateType = undefined +}) + +const open = async (type: string, id?: number, bizType?: string) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type resetForm() + if (bizType) { + formData.value.templateBizType = bizType + } if (id) { formLoading.value = true try { @@ -117,6 +137,7 @@ const resetForm = () => { isAutoCode: true, templateName: undefined, templateType: undefined, + templateBizType: '1', remark: undefined, isEnable: true, } diff --git a/src/views/mes/printTemplate/ReportTemplateDesigner.vue b/src/views/mes/printTemplate/ReportTemplateDesigner.vue new file mode 100644 index 00000000..32c5f6df --- /dev/null +++ b/src/views/mes/printTemplate/ReportTemplateDesigner.vue @@ -0,0 +1,532 @@ + + + + + \ No newline at end of file diff --git a/src/views/mes/printTemplate/index.vue b/src/views/mes/printTemplate/index.vue index 7d811861..4f81526f 100644 --- a/src/views/mes/printTemplate/index.vue +++ b/src/views/mes/printTemplate/index.vue @@ -29,6 +29,10 @@ + + + + @@ -39,14 +43,13 @@ @@ -80,6 +83,7 @@ +