Kaynağa Gözat

打印优化

lilei 2 yıl önce
ebeveyn
işleme
a24874f397

+ 2 - 1
src/libs/JGPrint.js

@@ -143,7 +143,7 @@ export const jGPrint = function (data, type, callback, printLogParams, printPage
 }
 
 // 批量打印销售收款单html
-export const jGPlPrint = function (data, type, callback, printLogParams, orginData) {
+export const jGPlPrint = function (data, type, callback, printLogParams, taskName) {
   if (!data) {
     return
   }
@@ -166,6 +166,7 @@ export const jGPlPrint = function (data, type, callback, printLogParams, orginDa
     })
     return
   }
+  LODOP.PRINT_INIT(taskName)
   LODOP.SET_SHOW_MODE('HIDE_PAPER_BOARD', 1) //  隐藏底图上有模拟走纸板的条纹线
   // 执行该语句之后,PRINT指令不再返回那个所谓“打印成功”,才能获取到打印状态
   // LODOP.SET_PRINT_MODE('CATCH_PRINT_STATUS', true)

+ 30 - 7
src/views/expenseManagement/expenseReimbursement/detail.vue

@@ -39,6 +39,7 @@
               <a-descriptions-item label="费用发生月份">{{ detailData&&detailData.expenseDate?detailData.expenseDate.substring(0, 7) : '--' }}</a-descriptions-item>
               <a-descriptions-item label="合计金额">{{ (detailData.applyExpenseTotal || detailData.applyExpenseTotal == 0) ? toThousands(detailData.applyExpenseTotal)+' 元' : '--' }}</a-descriptions-item>
               <a-descriptions-item label="状态">{{ detailData&&detailData.stateDictValue || '--' }}</a-descriptions-item>
+              <a-descriptions-item label="打印状态">{{ detailData&&detailData.printStatusDictValue || '--' }}</a-descriptions-item>
               <a-descriptions-item label="创建时间">{{ detailData&&detailData.createDate || '--' }}</a-descriptions-item>
               <a-descriptions-item label="审核时间">{{ detailData&&detailData.finishDate || '--' }}</a-descriptions-item>
               <a-descriptions-item label="主题" :span="3">{{ detailData&&detailData.title || '--' }}</a-descriptions-item>
@@ -98,26 +99,35 @@
       </a-card>
     </a-spin>
     <!-- 打印预览 -->
-    <previewModal ref="previewModal" @printOk="printOk"></previewModal>
+    <commonModal modalTit="费用报销单打印预览" width="700pt" okText="立即打印" :openModal="showTipModal" @cancel="showTipModal=false" @ok="$refs.printModal.prints()">
+      <previewModal v-if="printType=='preview'" ref="printModal" @printOk="printOk"></previewModal>
+    </commonModal>
+    <!-- 快捷打印 -->
+    <div style="height:0;overflow: hidden;">
+      <previewModal v-if="printType=='print'" ref="printModal" @printOk="printOk"></previewModal>
+    </div>
   </div>
 </template>
 
 <script>
 import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
+import commonModal from '@/views/common/commonModal.vue'
 import { expenseAccountDetail, expenseAcctDetailFindList, getProcessInstance, expenseAccountUpdateBatch } from '@/api/expenseManagement'
 import previewModal from './previewModal.vue'
 
 export default {
   name: 'ExpenseReimbursementListDetail',
   mixins: [commonMixin],
-  components: { STable, previewModal },
+  components: { STable, previewModal, commonModal },
   data () {
     let _this=this
     return {
       spinning: false,
       disabled: false,
       baseData: null,
+      showTipModal: false,
+      printType:'',
       count: 0,
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
@@ -162,16 +172,28 @@ export default {
     },
     // 打印
     async handlePrint (type) {
+      this.printType = type
       this.spinning = true
       // 费用明细
       const fyListData = await expenseAcctDetailFindList({ expenseAccountSn: this.$route.params.sn }).then(res => res.data)
       // 审核明细,待提交状态不获取
       const spListData = this.detailData.state != 'WAIT_SUBMIT' ? await getProcessInstance({ businessType: 'EXPENSES', businessSn: this.$route.params.sn }).then(res => res.data) : null
-      this.$refs.previewModal.setData([{
-        expenseInfo: this.detailData,
-        fyListData,
-        spListData
-      }])
+      // 打印预览弹框
+      if(type == 'preview'){
+        this.showTipModal = true
+      } 
+      this.$nextTick(()=>{
+        this.$refs.printModal.setData([{
+          expenseInfo: this.detailData,
+          fyListData,
+          spListData
+        }])
+        // 立即打印
+        if(type == 'print'){
+          this.$refs.printModal.prints()
+        }
+        this.spinning = false
+      })
     },
     printOk(data){
       if(data&&data.status == 200){
@@ -183,6 +205,7 @@ export default {
              this.getDetail()
           }
           this.spinning = false
+          this.showTipModal = false
         })
       }else{
         this.spinning = false

+ 13 - 3
src/views/expenseManagement/expenseReimbursement/list.vue

@@ -161,7 +161,9 @@
     <!-- 新增 -->
     <baseDataModal :show="openBaseModal" @close="openBaseModal=false"></baseDataModal>
     <!-- 打印预览 -->
-    <previewModal ref="printModal" @printOk="printOk"></previewModal>
+    <commonModal modalTit="费用报销单打印预览" width="700pt" okText="立即打印" :openModal="showTipModal" @cancel="showTipModal=false" @ok="$refs.printModal.prints()">
+      <previewModal ref="printModal" @printOk="printOk"></previewModal>
+    </commonModal>
   </a-card>
 </template>
 
@@ -174,6 +176,7 @@ import employee from './employee.js'
 import { STable, VSelect } from '@/components'
 import verifyModal from './verifyModal.vue'
 import previewModal from './previewModal.vue'
+import commonModal from '@/views/common/commonModal.vue'
 import expenseType from '@/views/common/expenseType.js'
 import { getBatchLastProcessInstance } from '@/api/financeBook'
 import { expenseAccountList, expenseAccountDelete, expenseAccountAgainEdit, expenseAcctDetailFindList, expenseAccountUpdateBatch } from '@/api/expenseManagement'
@@ -181,7 +184,7 @@ import baseDataModal from './baseDataModal.vue'
 export default {
   name: 'ExpenseReimbursementList',
   mixins: [commonMixin],
-  components: { STable, VSelect, subarea, verifyModal, baseDataModal, employee, expenseType, previewModal },
+  components: { STable, VSelect, subarea, verifyModal, baseDataModal, employee, expenseType, previewModal, commonModal },
   data () {
     let _this=this
     return {
@@ -191,6 +194,7 @@ export default {
       disabled: false, //  查询、重置按钮是否可操作
       openModal: false, // 审核进度弹框是否显示
       openBaseModal: false, // 基础信息新建
+      showTipModal: false,
       itemSn: '', // 费用单sn
       tableHeight: 0,
       expenseTypes: [],
@@ -268,6 +272,7 @@ export default {
             this.$refs.table.clearSelected()
           }
           this.spinning = false
+          this.showTipModal = false
         })
       }else{
         this.spinning = false
@@ -306,7 +311,12 @@ export default {
         item.spListData = sp ? sp.taskVOList : []
       })
       console.log(pageData)
-      this.$refs.printModal.setData(pageData)
+      // 打开预览弹框
+      this.showTipModal = true
+      this.$nextTick(()=>{
+        this.$refs.printModal.setData(pageData)
+        this.spinning = false
+      })
     },
     onChange (date, dateString) {
       this.queryParam.expenseDate = dateString

+ 4 - 7
src/views/expenseManagement/expenseReimbursement/previewModal.vue

@@ -1,9 +1,9 @@
 <template>
   <div class="container-print-view" 
-  style="width:100%;font-size: 12pt;position: fixed;font-family: auto;left:-1000000px;padding:0;margin:0 auto;background-color: #fff;" 
+  style="width:100%;font-size: 12pt;height: 600px;overflow: auto;" 
   >
   <div class="expense-detail-print" style="width:564pt;margin:0 auto;" v-for="item in list" :key="item.expenseInfo.expenseAccountSn">
-    <p class="container-title" style="text-align: center;font-size: 24px;font-weight: 600;">箭冠汽配企业费用报销单</p>
+    <div class="container-title" style="text-align: center;font-size: 24px;font-weight: 600;margin: 20px 0;">箭冠汽配企业费用报销单</div>
     <div class="container-info" style="width:564pt;border: 1px solid #000000;">
       <div class="container-info-basics" v-if="item.expenseInfo">
         <div class="basics-item" style="width: 100%;border-bottom: 1px solid #000000;padding:0;margin:0;">
@@ -137,9 +137,6 @@ export default {
   methods: {
     setData (list) {
       this.list = list
-      setTimeout(()=>{
-        this.prints()
-      },100)
     },
     // 打印
     prints(){
@@ -169,10 +166,10 @@ export default {
       this.$store.state.app.curActionPermission = 'B_eRPrint'
       // html, type, callback, printLogParams
       // console.log(htmlStr)
-      jGPlPrint(htmlStr, 'preview', function (res) {
+      jGPlPrint(htmlStr, 'print', function (res) {
         _this.$store.state.app.curActionPermission = ''
         _this.$emit('printOk', res)
-      })
+      },null,'费用报销单')
     }
   }
 }

+ 1 - 1
src/views/salesManagement/receiptPrint/printModel.vue

@@ -138,7 +138,7 @@ export default {
         }
         _this.$emit('printOk', res)
         _this.spinning = false
-      }, this.printNums, this.financeBookList)
+      }, this.printNums, '收款单')
     },
     getData (data, list) {
       console.log(data, list)

+ 2 - 2
vue.config.js

@@ -107,9 +107,9 @@ const vueConfig = {
     // If you want to turn on the proxy, please remosve the mockjs /src/main.jsL11
     proxy: {
       '/api': {
-        target: 'http://192.168.2.113:8660/ocs-admin',
+        // target: 'http://192.168.2.113:8660/ocs-admin',
         // target: 'https://t.ocs.360arrow.com/ocs-admin', //  练习
-        // target: 'http://p.ocs.360arrow.com/ocs-admin', //  预发布
+        target: 'http://p.ocs.360arrow.com/ocs-admin', //  预发布
         ws: false,
         changeOrigin: true,
         pathRewrite: {