فهرست منبع

下单打印票联调

LaveyD 1 ماه پیش
والد
کامیت
3d864f5a3e
3فایلهای تغییر یافته به همراه55 افزوده شده و 48 حذف شده
  1. 35 39
      src/components/PrintTemplate.vue
  2. 4 3
      src/components/SmallTicketPrintTemplate.vue
  3. 16 6
      src/globalData.vue

+ 35 - 39
src/components/PrintTemplate.vue

@@ -46,7 +46,7 @@
           :style="elementStyle.singlePrice">
           <i style="font-size:0.8em; font-style:normal">{{ elementStyle.singlePrice&&elementStyle.singlePrice.format }}</i> ¥ {{ currentTicket.isPrint_price_active ? currentTicket.print_price : $NP.divide(currentTicket.price, currentTicket.checkNum) }} <span v-if="showUnit">元</span>
         </span>
-         -->
+        -->
 
         <!-- 三河古镇定制:线上订单也打印价格 -->
         <template v-if="'三河古镇' === scenicName">
@@ -79,14 +79,14 @@
           </span>
         </template>
 
-        <div :style="elementStyle.orderId">
-          {{ elementStyle.orderId&&elementStyle.orderId.format || '订单号:' }}{{ currentTicket.orderNo }}
+        <div :style="elementStyle.orderNo">
+          {{ elementStyle.orderNo&&elementStyle.orderNo.format || '订单号:' }}{{ currentTicket.orderNo }}
         </div>
 
         <div
-          :style="elementStyle.seller"
-          v-if="currentTicket.manager_name">
-          售票员:{{ currentTicket.manager_name }}
+          :style="elementStyle.saleAdminName"
+          v-if="currentTicket.saleAdminName">
+          售票员:{{ currentTicket.saleAdminName }}
         </div>
 
         <div
@@ -97,25 +97,18 @@
         </div>
 
         <div
-          :style="elementStyle.agency"
+          :style="elementStyle.teamName"
           v-if="currentTicket.travelAgencyName">
-          {{ elementStyle.agency&&elementStyle.agency.format||'旅行社:' }} {{ currentTicket.travelAgencyName }}
+          {{ elementStyle.teamName&&elementStyle.teamName.format||'旅行社:' }} {{ currentTicket.travelAgencyName }}
         </div>
 
         <div :style="elementStyle.ticketId">
-          {{ elementStyle.ticketId&&elementStyle.ticketId.format || '票号:' }}{{ currentTicket.qrcode }}
-          <!-- {{ elementStyle.ticketId&&elementStyle.ticketId.format || '票号:' }}{{ '大陈岛景区' !== scenicName ? currentTicket.qrcode : currentTicket.id }} -->
-        </div>
-        <!-- 大陈岛定制的打印连续序列号 -->
-        <div
-          :style="elementStyle.ticketSeqId"
-          v-if="'大陈岛景区' === scenicName">
-          {{ elementStyle.ticketSeqId&&elementStyle.ticketSeqId.format || '序列号:' }}{{ currentTicket.id }}
+          {{ elementStyle.ticketId&&elementStyle.ticketId.format || '票号:' }}{{ currentTicket.ticketNo }}
         </div>
         <div
           :style="elementStyle.createTime"
           v-if="currentTicket.createTime">
-          {{ elementStyle.createTime&&elementStyle.createTime.format || '出票时间:' }}{{ currentTicket.createTime }}
+          {{ elementStyle.createTime&&elementStyle.createTime.format || '出票时间:' }}{{ currentTicket.buyTime }}
         </div>
 
         <div :style="elementStyle.scenics">
@@ -127,20 +120,20 @@
             <template v-if="elementStyle.scenic.number==='0'">
               <span
                 style="margin-right:5px"
-                v-for="(item,index) in currentTicket.ticketScenic"
+                v-for="(item,index) in scenicList"
                 :key="index">
-                {{ item.scenic_name }} {{ item.checkLimitTimes }}次<span v-if="index!==(currentTicket.ticketScenic.length-1)">,</span>
+                {{ item.scenicName }} {{ item.checkLimitTimes }}次<span v-if="index!==(scenicList.length-1)">,</span>
               </span>
             </template>
             <template v-else>
               <span
                 style="margin-right:5px"
-                v-for="(item,index) in currentTicket.ticketScenic.slice(0,elementStyle.scenic.number||2)"
+                v-for="(item,index) in scenicList.slice(0,elementStyle.scenic.number||2)"
                 :key="index">
-                {{ item.scenic_name }} {{ item.checkLimitTimes }}次<span v-if="elementStyle.scenic.number>currentTicket.ticketScenic.length?index!==(currentTicket.ticketScenic.length-1):index!==(elementStyle.scenic.number||2)-1">,</span>
+                {{ item.scenicName }} {{ item.checkLimitTimes }}次<span v-if="elementStyle.scenic.number>scenicList.length?index!==(scenicList.length-1):index!==(elementStyle.scenic.number||2)-1">,</span>
               </span>
 
-              <span v-if="elementStyle.scenic.number<currentTicket.ticketScenic.length">...(多景点门票)</span>
+              <span v-if="elementStyle.scenic.number<scenicList.length">...(多景点门票)</span>
             </template>
           </div>
         </div>
@@ -156,20 +149,20 @@
             <td>票号:</td>
             <td>{{ currentTicket.qrcode }}</td>
           </tr>
-          <tr v-if="currentTicket.ticketScenic && currentTicket.ticketScenic.length>0">
-            <td>{{ currentTicket.ticketScenic[0].scenic_name }}</td>
+          <tr v-if="scenicList && scenicList.length>0">
+            <td>{{ scenicList[0].scenicName }}</td>
             <td>
-              可检 {{ currentTicket.ticketScenic[0].checkLimitTimes }} 次
-              单次可过人数: {{ currentTicket.ticketScenic[0].single_pass_times }} 人 <br>
-              <span v-if="currentTicket.ticketScenic.length>1">
+              可检 {{ scenicList[0].checkLimitTimes }} 次
+              单次可过人数: {{ scenicList[0].single_pass_times }} 人 <br>
+              <span v-if="scenicList.length>1">
                 (多景点门票)
               </span>
             </td>
           </tr>
         </table> -->
 
-        <div :style="elementStyle.ticketTitle">
-          {{ elementStyle.ticketTitle&&elementStyle.ticketTitle.format || '' }}{{ currentTicket.tname }}
+        <div :style="elementStyle.ticketTypeName">
+          {{ elementStyle.ticketTypeName&&elementStyle.ticketTypeName.format || '' }}{{ currentTicket.ticketTypeName }}
         </div>
 
         <div
@@ -191,7 +184,7 @@
             {{ elementStyle.invoiceQrcode&&elementStyle.invoiceQrcode.format }}
           </div>
         </div>
-         -->
+        -->
         <!-- 不需要再设置display,否则它会覆盖elementStyle里设置的display -->
         <div
           v-if="currentTicket.invoiceQrcode"
@@ -260,9 +253,9 @@
         </div>
 
         <div
-          :style="elementStyle.batch"
+          :style="elementStyle.batchConfigName"
           v-if="currentTicket.batchConfigName">
-          {{ elementStyle.batch&&elementStyle.batch.format||'场次:' }}{{ currentTicket.batchConfigName }}
+          {{ elementStyle.batchConfigName&&elementStyle.batchConfigName.format||'场次:' }}{{ currentTicket.batchConfigName }}
         </div>
 
         <div
@@ -319,9 +312,9 @@
         </div>
 
         <div
-          :style="elementStyle.batch"
+          :style="elementStyle.batchConfigName"
           v-if="currentTicket.batchConfigName">
-          {{ elementStyle.batch&&elementStyle.batch.format||'场次:' }}{{ currentTicket.batchConfigName }}
+          {{ elementStyle.batchConfigName&&elementStyle.batchConfigName.format||'场次:' }}{{ currentTicket.batchConfigName }}
         </div>
 
         <div
@@ -337,7 +330,7 @@
         </div>
 
         <div :style="elementStyle.checkNum">
-          {{ elementStyle.checkNum&&elementStyle.checkNum.format||'检票人数:' }}{{ currentTicket.person_number }} 人
+          {{ elementStyle.checkNum&&elementStyle.checkNum.format||'检票人数:' }}{{ currentTicket.checkNum }} 人
         </div>
 
         <div :style="elementStyle.remark">
@@ -375,9 +368,12 @@ export default {
       }
       return this.customStyle ? style : null
     },
+    scenicList () {
+      return this.currentTicket?.ticketScenic || this.currentTicket?.ticketCheckScenicList || []
+    },
     scenics () {
       if (this.currentTicket) {
-        const scenics = this.currentTicket.ticketScenic.map(i => i.scenic_name)
+        const scenics = this.scenicList.map(i => i.scenicName)
         return scenics.join(' - ')
       } else {
         return ''
@@ -410,7 +406,7 @@ export default {
     },
     currentTicket: {
       type: Object,
-      default: () => {}
+      default: () => ({})
     }
   },
   methods: {
@@ -472,8 +468,8 @@ export default {
             }
           }
 
-          if (this.currentTicket.qrcode) {
-            this.qrImg = await QRCode.toDataURL(this.currentTicket.qrcode, opts)
+          if (this.currentTicket.ticketNo) {
+            this.qrImg = await QRCode.toDataURL(this.currentTicket.ticketNo, opts)
           }
 
           if (this.currentTicket.invoiceQrcode) {

+ 4 - 3
src/components/SmallTicketPrintTemplate.vue

@@ -101,7 +101,7 @@ export default {
   methods: {
     startPrint () {
       const webview = document.querySelector('#printSmallTicketWebview')
-      let printDoc = this.$refs.printMe.outerHTML
+      let printDoc = this.$refs.printMe?.outerHTML
       if (this.preview) {
         console.log(printDoc)
         // return
@@ -125,7 +125,7 @@ export default {
     getOrderInfo () {
       const orderInfo = []
 
-      this.currentOrder.tickets.forEach(ticket => {
+      this.currentOrder.ticketList.forEach(ticket => {
         let target = orderInfo.find(i => i.ticketTypeId === ticket.ticketTypeId)
 
         if (target) {
@@ -140,7 +140,7 @@ export default {
 
       this.orderInfo = orderInfo
 
-      const { performName, batchConfigName, ticket_price_plan_name } = this.currentOrder.tickets[0]
+      const { performName, batchConfigName, ticket_price_plan_name } = this.currentOrder.ticketList[0]
 
       this.currentOrder.createTime = moment(this.currentOrder.createTime).format('YYYY-MM-DD HH:mm:ss')
 
@@ -156,6 +156,7 @@ export default {
     printTemplate: {
       handler (val) {
         if (val) {
+          console.log('printTemplate', val)
           this.customStyle = val
         }
       },

+ 16 - 6
src/globalData.vue

@@ -14,8 +14,8 @@ export default {
   created () {
     getIp()
     // 获取打印模板
-    // this.getReceiptPrintModel()
-    // this.getTicketPrintModelList()
+    this.getReceiptPrintModel()
+    this.getTicketPrintModelList()
 
     this.$store.dispatch('setTravelAgencyType')
 
@@ -56,11 +56,16 @@ export default {
         content: ''
       }
       getTicketPrintModelList(params).then(res => {
-        const list = res.data.records
+        const list = res.data.records || []
         let id = this.$localStore.get('defaultTemplate')
-        let target = list.find(i => i.id === id)
+        let target = id ? list.find(i => i.id === id) : list.find(i => i.isDefault)
         // 设置当前打印模板
         this.$store.commit('SET_PRINT_TEMPLATE', target ? JSON.parse(target.content) : whitePaper)
+
+        if (target) {
+          this.$localStore.set('defaultTemplate', target.id)
+        }
+
         // 设置打印模板列表
         list.length > 0 && this.$store.commit('SET_PRINT_TEMPLATE_LIST', list)
       })
@@ -68,10 +73,15 @@ export default {
     getReceiptPrintModel () {
       getReceiptPrintModel().then(res => {
         let id = this.$localStore.get('defaultSmallTicketTemplate')
-        const list = res.data.records
-        let target = list.find(i => i.id === id)
+        const list = res.data.records || []
+        let target = id ? list.find(i => i.id === id) : list.find(i => i.isDefault)
         // 设置当前打印模板
         target && this.$store.commit('SET_SMALL_TICKET_TEMPLATE', target ? JSON.parse(target.content) : defaultSmallTicket)
+
+        if (target) {
+          this.$localStore.set('defaultSmallTicketTemplate', target.id)
+        }
+
         // 设置打印模板列表
         list.length > 0 && this.$store.commit('SET_SMALL_TICKET_TEMPLATE_LIST', res.list)
       })