Jelajahi Sumber

图片偏移量

xzc 1 Minggu lalu
induk
melakukan
c7f8f85edc

+ 1 - 0
yudao-ui-admin-vue3/src/api/pressure2/dynamictb/index.ts

@@ -15,6 +15,7 @@ export interface DynamicTbVO {
   formUrl: string // 模板表单地址
   formPath: string // 模板表单文件
   skipPageCount: number // 跳过页码数:生成报告时跳过前N页不添加页码,默认0
+  imageOffset: string // 图片偏移量,格式:x,y
 }
 
 // 承压动态报表表单 API

+ 108 - 49
yudao-ui-admin-vue3/src/views/pressure2/dynamictb/DynamicTbForm.vue

@@ -11,54 +11,78 @@
       <el-tab-pane label="模板信息" name="模板信息">
         <div class="form-container">
           <el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
-          <el-form-item label="模板名字" prop="tbName">
-            <el-input v-model="formData.tbName" placeholder="请输入模板名字" :disabled="formType === 'view'" />
-          </el-form-item>
-          <el-form-item label="模板编号" prop="tbCode">
-            <el-input v-model="formData.tbCode" placeholder="请输入模板编号" :disabled="formType === 'view'" />
-          </el-form-item>
-          <el-form-item label="模板分类" prop="tbType">
-            <el-select v-model="formData.tbType" placeholder="请选择模板分类" :disabled="formType === 'view'">
-              <el-option v-for="dict in getIntDictOptions(DICT_TYPE.PRESSURE2_TB_TYPE)" :key="dict.value"
-                :label="dict.label" :value="dict.value" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="模板类型" prop="reportType">
-            <el-select v-model="formData.reportType" placeholder="请选择模板类型" :disabled="formType === 'view'">
-              <el-option v-for="dict in getIntDictOptions(DICT_TYPE.PRESSURE2_DYNAMIC_REPORT_TYPE)" :key="dict.value"
-                         :label="dict.label" :value="dict.value" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="项目分类" prop="pjType">
-            <el-select v-model="formData.pjType" placeholder="请选择项目分类" :disabled="formType === 'view'">
-              <el-option v-for="dict in getIntDictOptions(DICT_TYPE.PRESSURE2_DYNAMIC_PROJECT_TYPE)"
-                :key="dict.value" :label="dict.label" :value="dict.value" />
-            </el-select>
-          </el-form-item>
-          <el-form-item v-if="false" label="模板地址" prop="tbUrl">
-            <el-input v-model="formData.tbUrl" placeholder="请输入模板地址" :disabled="formType === 'view'" />
-          </el-form-item>
-          <el-form-item label="版本号" prop="versionNo">
-            <el-input v-model="formData.versionNo" placeholder="请输入版本号" :disabled="formType === 'view'" />
-          </el-form-item>
-          <el-form-item label="跳过页码数" prop="skipPageCount">
-            <el-input-number v-model="formData.skipPageCount" :min="0" :max="10" :disabled="formType === 'view'" />
-          </el-form-item>
-          <el-form-item label="模板说明" prop="tbNote">
-            <el-input v-model="formData.tbNote" type="textarea" placeholder="请输入模板说明" :disabled="formType === 'view'" />
-          </el-form-item>
-          <el-form-item label="创建人名" prop="creatorName">
-            <el-input v-model="formData.creatorName" placeholder="请输入创建人名" :disabled="formType === 'view'" />
-          </el-form-item>
-          <el-form-item label="报告原件" prop="filePaths">
-            <CustomUploadFile
-              v-model:fileList="formData.filePaths"
-              apiUrl="infra/file/upload"
-              accept=".pdf,.jpg,.png,.doc,.wps,.docx,.DOC"
-              list-type="text"
-              :disabled="formType === 'view'"
-            />
-          </el-form-item>
+          <el-row :gutter="20">
+            <el-col :xs="24" :md="12">
+              <el-form-item label="模板名字" prop="tbName">
+                <el-input v-model="formData.tbName" placeholder="请输入模板名字" :disabled="formType === 'view'" />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :md="12">
+              <el-form-item label="模板编号" prop="tbCode">
+                <el-input v-model="formData.tbCode" placeholder="请输入模板编号" :disabled="formType === 'view'" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :xs="24" :md="12">
+              <el-form-item label="模板分类" prop="tbType">
+                <el-select v-model="formData.tbType" placeholder="请选择模板分类" :disabled="formType === 'view'">
+                  <el-option v-for="dict in getIntDictOptions(DICT_TYPE.PRESSURE2_TB_TYPE)" :key="dict.value"
+                    :label="dict.label" :value="dict.value" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :md="12">
+              <el-form-item label="模板类型" prop="reportType">
+                <el-select v-model="formData.reportType" placeholder="请选择模板类型" :disabled="formType === 'view'">
+                  <el-option v-for="dict in getIntDictOptions(DICT_TYPE.PRESSURE2_DYNAMIC_REPORT_TYPE)" :key="dict.value"
+                             :label="dict.label" :value="dict.value" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :xs="24" :md="12">
+              <el-form-item label="项目分类" prop="pjType">
+                <el-select v-model="formData.pjType" placeholder="请选择项目分类" :disabled="formType === 'view'">
+                  <el-option v-for="dict in getIntDictOptions(DICT_TYPE.PRESSURE2_DYNAMIC_PROJECT_TYPE)"
+                    :key="dict.value" :label="dict.label" :value="dict.value" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :md="12">
+              <el-form-item label="版本号" prop="versionNo">
+                <el-input v-model="formData.versionNo" placeholder="请输入版本号" :disabled="formType === 'view'" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :xs="24" :md="12">
+              <el-form-item label="创建人名" prop="creatorName">
+                <el-input v-model="formData.creatorName" placeholder="请输入创建人名" :disabled="formType === 'view'" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="24">
+              <el-form-item label="模板说明" prop="tbNote">
+                <el-input v-model="formData.tbNote" type="textarea" placeholder="请输入模板说明" :disabled="formType === 'view'" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="24">
+              <el-form-item label="报告原件" prop="filePaths">
+                <CustomUploadFile
+                  v-model:fileList="formData.filePaths"
+                  apiUrl="infra/file/upload"
+                  accept=".pdf,.jpg,.png,.doc,.wps,.docx,.DOC"
+                  list-type="text"
+                  :disabled="formType === 'view'"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
         </el-form>
         </div>
       </el-tab-pane>
@@ -99,6 +123,30 @@
           </el-tab-pane>
         </el-tabs>
       </el-tab-pane>
+      <el-tab-pane label="模板配置" name="模板配置">
+        <div class="form-container">
+          <el-form ref="formConfigRef" :model="formData" :rules="formConfigRules" label-width="140px">
+            <el-row :gutter="20">
+              <el-col :xs="24" :md="8">
+                <el-form-item label="跳过页码数" prop="skipPageCount">
+                  <el-input-number v-model="formData.skipPageCount" :min="0" :max="10" :disabled="formType === 'view'" />
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :md="16">
+                <el-form-item prop="imageOffset">
+                  <template #label>
+                    图片偏移量
+                    <el-tooltip content="格式:sheet,x,y,多个sheet用、隔开&#10;示例:记录,10,20、报告,20,30" placement="top">
+                      <el-icon style="margin-left:4px;cursor:pointer;vertical-align:middle;"><QuestionFilled /></el-icon>
+                    </el-tooltip>
+                  </template>
+                  <el-input v-model="formData.imageOffset" placeholder="记录,10,20、报告,20,30" :disabled="formType === 'view'" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </el-tab-pane>
     </el-tabs>
     <div class="unit-footer-btns">
       <el-button @click="submitForm" type="primary" :disabled="formLoading" v-if="formType !== 'view'">确 定</el-button>
@@ -112,7 +160,7 @@
 <script setup lang="ts">
 import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
 import { DynamicTbApi, DynamicTbVO } from '@/api/pressure2/dynamictb'
-import { Close } from "@element-plus/icons-vue";
+import { Close, QuestionFilled } from "@element-plus/icons-vue";
 //import SpreadView from "@/components/DynamicReport/index1.vue";
 import {SpreadEditor, SpreadViewer} from '@/components/DynamicReport/index';
 //import { DocumentEditor } from "@onlyoffice/document-editor-vue";
@@ -152,6 +200,7 @@ const formData = ref({
   formPath: undefined,
   filePaths: [],
   skipPageCount: 0,
+  imageOffset: undefined,
   status: 400, // 默认下架状态
 })
 const formRules = reactive({
@@ -161,6 +210,15 @@ const formRules = reactive({
   reportType: [{ required: true, message: '模板类型不能为空', trigger: 'change' }],
   pjType: [{ required: true, message: '项目分类不能为空', trigger: 'change' }]
 })
+const formConfigRules = reactive({
+  imageOffset: [
+    {
+      pattern: /^[\u4e00-\u9fa5\w]+,\d+,\d+(、[\u4e00-\u9fa5\w]+,\d+,\d+)*$/,
+      message: '图片偏移量格式错误,请输入 sheet,x,y,多个sheet用、隔开,如 记录,10,20、报告,20,30',
+      trigger: 'blur'
+    }
+  ]
+})
 
 //const documentServerUrl = import.meta.env.VITE_ONLY_OFFICE_SERVER_URL;
 
@@ -562,6 +620,7 @@ const resetForm = () => {
     formPath: undefined,
     filePaths: [],
     skipPageCount: 0,
+    imageOffset: undefined,
     status: 400, // 默认下架状态
   }
   formRef.value?.resetFields()