lilei 3 年之前
父節點
當前提交
c23c8e9fa6

+ 7 - 3
src/api/salesReturn.js

@@ -162,11 +162,15 @@ export const salesReturnSubmit = (params) => {
 }
 // 销售退货 详情  打印
 export const salesReturnDetailPrint = params => {
-  return axios.request({
+  const data = {
     url: `salesReturn/print/${params.sn}/${params.type}`,
     method: 'get',
-    responseType: 'blob'
-  })
+  }
+  // 喷墨打印
+  if(params.type=='INK'){
+    data.responseType = 'blob'
+  }
+  return axios.request(data)
 }
 // 销售退货 详情  导出
 export const salesDetailExport = params => {

+ 9 - 65
src/views/salesManagement/salesReturn/detail.vue

@@ -6,19 +6,7 @@
           <a href="javascript:;" @click="handleBack"><a-icon type="left"></a-icon> 返回列表</a>
         </template>
         <template slot="extra" v-if="$hasPermissions('B_salesReturnPrint')">
-          <a-radio-group key="4" v-model="printerType">
-            <a-radio value="NEEDLE">针式</a-radio>
-            <a-radio value="INK">喷墨</a-radio>
-          </a-radio-group>
-          <a-button key="3" id="salesReturnDetail-preview-btn" :disabled="localDataSource.length==0" @click="handlePrint('preview')">打印预览</a-button>
-          <a-button key="2" type="primary" id="salesReturnDetail-print-btn" :disabled="localDataSource.length==0" @click="handlePrint('print')">快捷打印</a-button>
-          <a-button
-            key="1"
-            type="primary"
-            class="button-warning"
-            id="salesReturnDetail-export-btn"
-            :disabled="localDataSource.length==0"
-            @click="handlePrint('export')">导出Excel</a-button>
+          <Print :disabled="localDataSource.length==0" @handlePrint="handlePrint"></Print>
         </template>
       </a-page-header>
       <!-- 基础信息 -->
@@ -70,19 +58,18 @@
         </s-table>
       </a-card>
     </a-spin>
-    <!-- 打印 -->
-    <div id="print"></div>
   </div>
 </template>
 
 <script>
-import moment from 'moment'
 import { getOperationalPrecision } from '@/libs/tools.js'
 import { STable, VSelect } from '@/components'
 import { salesReturnDetail, salesReturnQueryCount, salesReturnDetailList, salesReturnDetailPrint, salesDetailExport } from '@/api/salesReturn'
+import Print from '@/views/common/print.vue'
+import { hdPrint } from '@/libs/JGPrint'
 export default {
   name: 'SalesReturnDetail',
-  components: { STable, VSelect },
+  components: { STable, VSelect, Print },
   data () {
     return {
       spinning: false,
@@ -130,8 +117,7 @@ export default {
         })
       },
       localDataSource: [],
-      detailData: null, //  详情数据
-      printerType: 'NEEDLE' //  打印机类型
+      detailData: null //  详情数据
     }
   },
   methods: {
@@ -156,60 +142,18 @@ export default {
       })
     },
     // 打印预览/快捷打印
-    handlePrint (type) {
+    handlePrint (type, printerType) {
       const _this = this
       _this.spinning = true
       let url = salesReturnDetailPrint
-      let params = { sn: this.$route.params.sn, type: this.printerType }
+      const params = { sn: this.$route.params.sn }
       if (type == 'export') { //  导出
         url = salesDetailExport
-        params = { sn: this.$route.params.sn }
       }
-      url(params).then(res => {
+      // 打印或导出
+      hdPrint(printerType, type, url, params, '销售退货', function () {
         _this.spinning = false
-        if (res.type == 'application/json') {
-          var reader = new FileReader()
-          reader.addEventListener('loadend', function () {
-            const obj = JSON.parse(reader.result)
-            _this.$notification.error({
-              message: '提示',
-              description: obj.message
-            })
-          })
-          reader.readAsText(res)
-        } else {
-          if (type == 'export') { //  导出
-            this.download(res)
-          } else {
-            this.print(res, type)
-          }
-        }
       })
-    },
-    print (data, type) {
-      if (!data) {
-        return
-      }
-      const url = window.URL.createObjectURL(new Blob([data], { type: 'application/pdf' }))
-      document.getElementById('print').innerHTML = '<iframe id="printfsrd" name="printfsrd" src="' + url + '" hidden></iframe>'
-      if (type == 'preview') { //  预览
-        window.open(url)
-      } else if (type == 'print') { //  打印
-        window.frames['printfsrd'].focus()
-        window.frames['printfsrd'].print()
-      }
-    },
-    download (data) {
-      if (!data) { return }
-      const url = window.URL.createObjectURL(new Blob([data]))
-      const link = document.createElement('a')
-      link.style.display = 'none'
-      link.href = url
-      const a = moment().format('YYYYMMDDHHmmss')
-      const fname = '销售退货' + a
-      link.setAttribute('download', fname + '.xlsx')
-      document.body.appendChild(link)
-      link.click()
     }
   },
   mounted () {

+ 9 - 63
src/views/salesManagement/salesReturn/salesReturnEdit.vue

@@ -9,19 +9,7 @@
         </template>
         <!-- 操作区,位于 title 行的行尾 -->
         <template slot="extra" v-if="$hasPermissions('B_salesReturnPrint')">
-          <a-radio-group key="4" v-model="printerType">
-            <a-radio value="NEEDLE">针式</a-radio>
-            <a-radio value="INK">喷墨</a-radio>
-          </a-radio-group>
-          <a-button key="3" id="salesReturnEdit-preview-btn" :disabled="chooseLoadData.length==0" @click="handlePrint('preview')">打印预览</a-button>
-          <a-button key="2" type="primary" id="salesReturnEdit-print-btn" :disabled="chooseLoadData.length==0" @click="handlePrint('print')">快捷打印</a-button>
-          <a-button
-            key="1"
-            type="primary"
-            class="button-warning"
-            id="salesReturnEdit-export-btn"
-            :disabled="chooseLoadData.length==0"
-            @click="handlePrint('export')">导出Excel</a-button>
+          <Print :disabled="chooseLoadData.length==0" @handlePrint="handlePrint"></Print>
         </template>
       </a-page-header>
       <a-card size="small" :bordered="false" class="pages-wrap">
@@ -186,25 +174,25 @@
     </div>
     <!-- 选择客户弹框 -->
     <choose-custom-modal :show="openModal" @ok="chooseCustomOk" @cancel="openModal=false"></choose-custom-modal>
-    <!-- 打印 -->
-    <div id="print"></div>
   </div>
 </template>
 
 <script>
-import moment from 'moment'
 import { STable, VSelect } from '@/components'
 import queryPart from './queryPart.vue'
 import chooseCustomModal from './chooseCustomModal.vue'
 import { warehouseCascadeList } from '@/api/warehouse'
 import { salesReturnDetail, salesReturnQueryCount, salesReturnDetailList, salesReturnDiscount, salesReturnDelAll, salesReturnDetailDel, salesReturnSaveProduct, salesReturnSubmit, salesReturnDetailPrint, salesDetailExport } from '@/api/salesReturn'
+import Print from '@/views/common/print.vue'
+import { hdPrint } from '@/libs/JGPrint'
 export default {
   name: 'SalesDetail',
   components: {
     STable,
     VSelect,
     queryPart,
-    chooseCustomModal
+    chooseCustomModal,
+    Print
   },
   data () {
     return {
@@ -494,61 +482,19 @@ export default {
       })
     },
     // 打印预览/快捷打印
-    handlePrint (type) {
+    handlePrint (type, printerType) {
       const _this = this
       _this.spinning = true
       let url = salesReturnDetailPrint
-      let params = { sn: this.$route.params.sn, type: this.printerType }
+      const params = { sn: this.$route.params.sn }
       if (type == 'export') { //  导出
         url = salesDetailExport
-        params = { sn: this.$route.params.sn }
       }
-      url(params).then(res => {
+      // 打印或导出
+      hdPrint(printerType, type, url, params, '销售退货', function () {
         _this.spinning = false
-        if (res.type == 'application/json') {
-          var reader = new FileReader()
-          reader.addEventListener('loadend', function () {
-            const obj = JSON.parse(reader.result)
-            _this.$notification.error({
-              message: '提示',
-              description: obj.message
-            })
-          })
-          reader.readAsText(res)
-        } else {
-          if (type == 'export') { //  导出
-            this.download(res)
-          } else {
-            this.print(res, type)
-          }
-        }
       })
     },
-    print (data, type) {
-      if (!data) {
-        return
-      }
-      const url = window.URL.createObjectURL(new Blob([data], { type: 'application/pdf' }))
-      document.getElementById('print').innerHTML = '<iframe id="printfsre" name="printfsre" src="' + url + '" hidden></iframe>'
-      if (type == 'preview') { //  预览
-        window.open(url)
-      } else if (type == 'print') { //  打印
-        window.frames['printfsre'].focus()
-        window.frames['printfsre'].print()
-      }
-    },
-    download (data) {
-      if (!data) { return }
-      const url = window.URL.createObjectURL(new Blob([data]))
-      const link = document.createElement('a')
-      link.style.display = 'none'
-      link.href = url
-      const a = moment().format('YYYYMMDDHHmmss')
-      const fname = '销售退货' + a
-      link.setAttribute('download', fname + '.xlsx')
-      document.body.appendChild(link)
-      link.click()
-    },
     pageInit () {
       this.orderId = this.$route.params.id
       this.orderSn = this.$route.params.sn

+ 9 - 62
src/views/salesManagement/salesReturn/salesReturnGrabEdit.vue

@@ -9,19 +9,7 @@
         </template>
         <!-- 操作区,位于 title 行的行尾 -->
         <template slot="extra" v-if="$hasPermissions('B_salesReturnPrint')">
-          <a-radio-group key="4" v-model="printerType">
-            <a-radio value="NEEDLE">针式</a-radio>
-            <a-radio value="INK">喷墨</a-radio>
-          </a-radio-group>
-          <a-button key="3" id="salesReturnEdit-preview-btn" :disabled="chooseLoadData.length==0" @click="handlePrint('preview')">打印预览</a-button>
-          <a-button key="2" type="primary" id="salesReturnEdit-print-btn" :disabled="chooseLoadData.length==0" @click="handlePrint('print')">快捷打印</a-button>
-          <a-button
-            key="1"
-            type="primary"
-            class="button-warning"
-            id="salesReturnEdit-export-btn"
-            :disabled="chooseLoadData.length==0"
-            @click="handlePrint('export')">导出Excel</a-button>
+          <Print :disabled="chooseLoadData.length==0" @handlePrint="handlePrint"></Print>
         </template>
       </a-page-header>
       <a-card size="small" :bordered="false" class="pages-wrap">
@@ -174,8 +162,6 @@
     </div>
     <!-- 选择客户弹框 -->
     <choose-custom-modal :show="openModal" @ok="chooseCustomOk" @cancel="openModal=false"></choose-custom-modal>
-    <!-- 打印 -->
-    <div id="print"></div>
   </div>
 </template>
 
@@ -186,13 +172,16 @@ import queryPart from './queryPart.vue'
 import chooseCustomModal from './chooseCustomModal.vue'
 import { warehouseCascadeList } from '@/api/warehouse'
 import { salesReturnDetail, salesReturnQueryCount, salesReturnDetailList, salesReturnDiscount, salesReturnDelAll, salesReturnDetailDel, salesReturnSaveProduct, salesReturnSubmit, salesReturnDetailPrint, salesDetailExport } from '@/api/salesReturn'
+import Print from '@/views/common/print.vue'
+import { hdPrint } from '@/libs/JGPrint'
 export default {
   name: 'SalesDetail',
   components: {
     STable,
     VSelect,
     queryPart,
-    chooseCustomModal
+    chooseCustomModal,
+    Print
   },
   data () {
     return {
@@ -482,61 +471,19 @@ export default {
       })
     },
     // 打印预览/快捷打印
-    handlePrint (type) {
+    handlePrint (type, printerType) {
       const _this = this
       _this.spinning = true
       let url = salesReturnDetailPrint
-      let params = { sn: this.$route.params.sn, type: this.printerType }
+      const params = { sn: this.$route.params.sn }
       if (type == 'export') { //  导出
         url = salesDetailExport
-        params = { sn: this.$route.params.sn }
       }
-      url(params).then(res => {
+      // 打印或导出
+      hdPrint(printerType, type, url, params, '销售退货', function () {
         _this.spinning = false
-        if (res.type == 'application/json') {
-          var reader = new FileReader()
-          reader.addEventListener('loadend', function () {
-            const obj = JSON.parse(reader.result)
-            _this.$notification.error({
-              message: '提示',
-              description: obj.message
-            })
-          })
-          reader.readAsText(res)
-        } else {
-          if (type == 'export') { //  导出
-            this.download(res)
-          } else {
-            this.print(res, type)
-          }
-        }
       })
     },
-    print (data, type) {
-      if (!data) {
-        return
-      }
-      const url = window.URL.createObjectURL(new Blob([data], { type: 'application/pdf' }))
-      document.getElementById('print').innerHTML = '<iframe id="printfsrge" name="printfsrge" src="' + url + '" hidden></iframe>'
-      if (type == 'preview') { //  预览
-        window.open(url)
-      } else if (type == 'print') { //  打印
-        window.frames['printfsrge'].focus()
-        window.frames['printfsrge'].print()
-      }
-    },
-    download (data) {
-      if (!data) { return }
-      const url = window.URL.createObjectURL(new Blob([data]))
-      const link = document.createElement('a')
-      link.style.display = 'none'
-      link.href = url
-      const a = moment().format('YYYYMMDDHHmmss')
-      const fname = '销售退货' + a
-      link.setAttribute('download', fname + '.xlsx')
-      document.body.appendChild(link)
-      link.click()
-    },
     pageInit () {
       this.orderId = this.$route.params.id
       this.orderSn = this.$route.params.sn