|
@@ -1,123 +1,92 @@
|
|
|
<template>
|
|
|
<div class="yvan-print-page-format">
|
|
|
- <div class="yvan-print-page-format__content">
|
|
|
- <el-form label-width="80px">
|
|
|
- <el-form-item label="纸张大小">
|
|
|
- <el-select v-model="pageFormat.pageSize" class="m-2" placeholder="请选择纸张大小" clearable>
|
|
|
- <el-option
|
|
|
- v-for="pageSize in pageSizeList"
|
|
|
- :key="pageSize.name"
|
|
|
- :label="pageSize.name"
|
|
|
- :value="pageSize.name"/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="纸张方向">
|
|
|
- <el-radio-group v-model="pageFormat.pageDirection">
|
|
|
- <el-radio-button
|
|
|
- v-for="pageDirection in pageDirectionList"
|
|
|
- :label="pageDirection.label"/>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="宽度">
|
|
|
- <el-input-number v-model="pageFormat.width" controls-position="right"/>
|
|
|
- (mm)
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="高度">
|
|
|
- <el-input-number v-model="pageFormat.height" controls-position="right"/>
|
|
|
- (mm)
|
|
|
- </el-form-item>
|
|
|
- <!-- <el-form-item label="单位">-->
|
|
|
- <!-- <el-select class="m-2" placeholder="Select">-->
|
|
|
- <!-- <el-option key="item.value" label="item.label" value="item.value"/>-->
|
|
|
- <!-- </el-select>-->
|
|
|
- <!-- </el-form-item>-->
|
|
|
- <el-form-item label="外边距" class="yvan-print-page-format__margins">
|
|
|
- <el-input-number v-model="pageFormat.margins.top" placeholder="上" controls-position="right"/>
|
|
|
- <el-input-number v-model="pageFormat.margins.right" placeholder="右" controls-position="right"/>
|
|
|
- <el-input-number v-model="pageFormat.margins.bottom" placeholder="下" controls-position="right"/>
|
|
|
- <el-input-number v-model="pageFormat.margins.left" placeholder="左" controls-position="right"/>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- <div class="yvan-print-page-format__content_display">
|
|
|
- <div class="yvan-print-page-format__content_display_detail"/>
|
|
|
- </div>
|
|
|
+ <el-form label-width="80px">
|
|
|
+ <el-form-item label="模板名称">
|
|
|
+ <el-input v-model="pageConfig.title" placeholder="请输入模板名称"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="模板编码">
|
|
|
+ <el-input v-model="pageConfig.code" placeholder="请输入模板编码"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="纸张大小">
|
|
|
+ <el-select v-model="pageConfig.pageSize" class="m-2" placeholder="请选择纸张大小" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="pageSize in pageSizeList"
|
|
|
+ :key="pageSize.name"
|
|
|
+ :label="pageSize.name"
|
|
|
+ :value="pageSize.name"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="纸张方向">
|
|
|
+ <el-radio-group v-model="pageConfig.pageDirection" @change="changePageDirection">
|
|
|
+ <el-radio-button
|
|
|
+ v-for="pageDirection in pageDirectionList"
|
|
|
+ :label="pageDirection.value">
|
|
|
+ {{ pageDirection.label }}
|
|
|
+ </el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="宽度">
|
|
|
+ <el-input-number v-model="pageConfig.pageWidth" controls-position="right" @change="changePageWidth"/>
|
|
|
+ (mm)
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="高度">
|
|
|
+ <el-input-number v-model="pageConfig.pageHeight" controls-position="right" @change="changePageHeight"/>
|
|
|
+ (mm)
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="外边距" class="yvan-print-page-format__margins">
|
|
|
+ <el-input-number v-model="pageConfig.margins.top" placeholder="上" controls-position="right"/>
|
|
|
+ <el-input-number v-model="pageConfig.margins.right" placeholder="右" controls-position="right"/>
|
|
|
+ <el-input-number v-model="pageConfig.margins.bottom" placeholder="下" controls-position="right"/>
|
|
|
+ <el-input-number v-model="pageConfig.margins.left" placeholder="左" controls-position="right"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
+import {storeToRefs} from "pinia";
|
|
|
+import {globalStore} from "@/store";
|
|
|
import {pageSizeList, pageDirectionList} from '@/components/config/globalConfig'
|
|
|
-import {reactive} from "vue";
|
|
|
|
|
|
-const defaultPageSize = pageSizeList[0]
|
|
|
-const defaultPageDirection = pageDirectionList[0]
|
|
|
+const {pageConfig} = storeToRefs(globalStore())
|
|
|
|
|
|
-const pageFormat = reactive<PageFormat>({
|
|
|
- pageSize: defaultPageSize,
|
|
|
- pageDirection: defaultPageDirection.label,
|
|
|
- width: defaultPageSize.width,
|
|
|
- height: defaultPageSize.height,
|
|
|
- unit: "mm",
|
|
|
- margins: {
|
|
|
- top: 10,
|
|
|
- bottom: 10,
|
|
|
- left: 10,
|
|
|
- right: 10
|
|
|
- }
|
|
|
-})
|
|
|
-
|
|
|
-interface PageFormat {
|
|
|
- pageSize: any,
|
|
|
- pageDirection: string,
|
|
|
- width: number,
|
|
|
- height: number,
|
|
|
- unit: string,
|
|
|
- margins: Margins
|
|
|
+const changePageDirection = (newPageDirection) => {
|
|
|
+ globalStore().togglePageDirection(newPageDirection)
|
|
|
}
|
|
|
|
|
|
-interface Margins {
|
|
|
- top: number,
|
|
|
- bottom: number,
|
|
|
- left: number,
|
|
|
- right: number
|
|
|
+const changePageWidth = (newPageWidth) => {
|
|
|
+ globalStore().setPageSize({
|
|
|
+ pageSize: pageConfig.value.pageSize,
|
|
|
+ w: newPageWidth,
|
|
|
+ h: pageConfig.value.pageHeight
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+const changePageHeight = (newPageHeight) => {
|
|
|
+ globalStore().setPageSize({
|
|
|
+ pageSize: pageConfig.value.pageSize,
|
|
|
+ w: pageConfig.value.pageWidth,
|
|
|
+ h: newPageHeight
|
|
|
+ })
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style lang="less">
|
|
|
.yvan-print-page-format {
|
|
|
|
|
|
- .yvan-print-page-format__content {
|
|
|
- display: flex;
|
|
|
-
|
|
|
- .yvan-print-page-format__margins {
|
|
|
-
|
|
|
- .el-input-number {
|
|
|
- width: 80px;
|
|
|
- }
|
|
|
- }
|
|
|
+ .el-select {
|
|
|
+ width: 100%;
|
|
|
}
|
|
|
|
|
|
+ .el-input-number {
|
|
|
+ width: calc(100% - 36px);
|
|
|
+ }
|
|
|
|
|
|
- .yvan-print-page-format__content_display {
|
|
|
- background: #ffffff;
|
|
|
- position: absolute;
|
|
|
- top: 75px;
|
|
|
- right: 125px;
|
|
|
- width: 168px;
|
|
|
- height: 237.6px;
|
|
|
- border: 1px solid;
|
|
|
- box-shadow: -2px -2px #aaaaaa, 2px -2px #aaaaaa, -2px 2px #aaaaaa, 2px 2px #aaaaaa;
|
|
|
+ .yvan-print-page-format__margins {
|
|
|
|
|
|
- .yvan-print-page-format__content_display_detail {
|
|
|
- width: 158px;
|
|
|
- height: 227.6px;
|
|
|
- margin: 5px;
|
|
|
- border: 1px solid #aaaaaa;
|
|
|
+ .el-input-number {
|
|
|
+ width: 25%;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
</style>
|