huangmp 1 ano atrás
pai
commit
847d8aa971

+ 12 - 2
src/components/order-card-item/index.vue

@@ -177,6 +177,9 @@
           }else if(prodName.indexOf("二宫格") !== -1){
             width = 1252;
             height = 732;
+          }else if(prodName.indexOf("AR明信片") !== -1){
+            width = 1252;
+            height = 1819;
           }else if(prodName.indexOf("明信片") !== -1){
             width = 1229;
             height = 1796;
@@ -240,6 +243,9 @@
           }else if(prodName.indexOf("游戏") !== -1){
             width = 803;
             height = 1098;
+          }else if(prodName.indexOf("大3寸") !== -1){
+            width = 803;
+            height = 1098;
           }
           let _URL = window.URL || window.webkitURL;
           let img = new Image();
@@ -361,8 +367,10 @@
           this.prodType = '直拍封面';
         }else if(prodName.indexOf('票根') != -1){
           this.prodType = '票根';
-        }else if(prodName.indexOf('明信片') != -1){
-          this.prodType = '明信片';
+        }else if(prodName.indexOf('AR明信片') != -1){
+          this.prodType = 'AR明信片';
+        }else if(prodName.indexOf('AR明信片') != -1){
+          this.prodType = 'AR明信片';
         }else if(prodName.indexOf('小方卡') != -1){
           this.prodType = '小方卡';
         }else if(prodName.indexOf('方卡') != -1){
@@ -389,6 +397,8 @@
           this.prodType = '5寸直角卡';
         }else if(prodName.indexOf('游戏') != -1){
           this.prodType = '游戏';
+        }else if(prodName.indexOf('大3寸') != -1){
+          this.prodType = '大3寸';
         }
         this.$nextTick(() =>{
           this.$refs.canvasPreviewRef.init(cardItem, this.resourcesUrl + picUrl, this.prodType, side)

+ 28 - 6
src/components/yuyin-preview/index.vue

@@ -44,14 +44,19 @@
         <el-col :span="dataForm.cardNote.type === 'AI' ? 12 : 8">
           <el-form-item label="语音/视频内容">
             <el-button size="mini" @click="changeAudio" v-if="dataForm.cardNote.type === 'AI' || dataForm.cardNote.type === 'NORMAL'">更换音频</el-button>
-            <el-button size="mini" @click="changeAudio" v-if="dataForm.cardNote.type === 'AR'">更换视频</el-button>
+            <el-button size="mini" @click="changeVideo" v-if="dataForm.cardNote.type === 'AR'">更换视频</el-button>
             <br/>
+            <span size="mini" v-if="dataForm.cardNote.type === 'AR'">原始分辨率:{{dataForm.cardNote.originVideoWidth + "x" + dataForm.cardNote.originVideoHeight}}</span>
+            <br/>
+            <span size="mini" v-if="dataForm.cardNote.type === 'AR'">检测的分辨率:{{videoResolution}}</span>
             <video v-if="dataForm.cardNote.audioUrl"
               style="width: 300px; height: 210px"
               :src="resourcesUrl + dataForm.cardNote.audioUrl"
               controls="controls"/>
             <video v-if="dataForm.cardNote.videoUrl"
-                   style="width: 300px; height: 210px"
+                   ref="myVideo"
+                   style="width: 330px; height: 210px"
+                   @loadedmetadata="getVideoResolution"
                    :src="resourcesUrl + dataForm.cardNote.videoUrl"
                    controls="controls"/>
           </el-form-item>
@@ -85,14 +90,16 @@
       </el-form-item>
     </el-form>
     <audio-box v-if="audioBoxVisible" ref="audioBox" @refreshPic="refreshAudio"></audio-box>
+    <video-box v-if="videoBoxVisible" ref="videoBox" @refreshPic="refreshVideo"></video-box>
   </el-dialog>
 </template>
 
 <script>
   import AudioBox from '@/components/AudioBox'
+  import VideoBox from '@/components/VideoBox'
   export default {
     components: {
-      AudioBox
+      AudioBox,VideoBox
     },
     name: "YuyinPreview",
     data() {
@@ -100,26 +107,41 @@
         authorNameEdit: true,
         personalSignEdit: true,
         audioBoxVisible: false,
+        videoBoxVisible: false,
         visible: false,
         dataForm:{cardNote:{}, qrNoteMapping:{}},
         newAudioUrl: null,
         newVideoUrl:null,
         resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
-        transLoading: false
+        transLoading: false,
+        videoResolution: '0 x 0'
       };
     },
-    mounted() {
-    },
     methods: {
+      getVideoResolution(detail){
+        let video = this.$refs.myVideo;
+        if (video) {
+          this.videoResolution = `${video.videoWidth}x${video.videoHeight}`;
+        }
+      },
       changeAudio(){
         this.audioBoxVisible = true
         this.$nextTick(() => {
           this.$refs.audioBox.init(1)
         })
       },
+      changeVideo(){
+        this.videoBoxVisible = true
+        this.$nextTick(() => {
+          this.$refs.videoBox.init(1)
+        })
+      },
       refreshAudio(filePath){
         this.newAudioUrl = filePath;
       },
+      refreshVideo(filePath){
+        this.newVideoUrl = filePath;
+      },
       onSave(){
         this.$http({
           url: this.$http.adornUrl('/cardNote'),

+ 11 - 2
src/views/modules/print/print-order.vue

@@ -57,6 +57,7 @@
                 <el-option key="fk" label="方卡" value="方卡"></el-option>
                 <el-option key="hz" label="徽章" value="徽章"></el-option>
                 <el-option key="sf" label="手幅" value="手幅"></el-option>
+                <el-option key="sf" label="闪卡" value="闪卡"></el-option>
               </el-select>
             </template>
           </el-form-item>
@@ -435,6 +436,7 @@
           <el-select v-model="wave.gram">
             <el-option key="1" label="400g" value="400g"></el-option>
             <el-option key="2" label="350g" value="350g"></el-option>
+            <el-option key="3" label="750g" value="750g"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="产品" label-width="100px">
@@ -442,8 +444,14 @@
             <el-option key="1" label="圆角小卡" value="圆角"></el-option>
             <el-option key="2" label="直角" value="直角"></el-option>
             <el-option key="3" label="直拍" value="直拍"></el-option>
-            <el-option key="4" label="混合" value="混合"></el-option>
-            <el-option key="5" label="镭射票" value="镭射票"></el-option>
+            <el-option key="4" label="小镭射票" value="小镭射票"></el-option>
+            <el-option key="5" label="大镭射票" value="大镭射票"></el-option>
+            <el-option key="6" label="混合" value="混合"></el-option>
+            <el-option key="7" label="UV闪卡" value="UV闪卡"></el-option>
+            <el-option key="8" label="UV明信片" value="UV明信片"></el-option>
+            <el-option key="9" label="UV大方卡" value="UV大方卡"></el-option>
+            <el-option key="10" label="UV小镭射票" value="UV小镭射票"></el-option>
+            <el-option key="11" label="UV大镭射票" value="UV大镭射票"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="工艺" label-width="100px">
@@ -457,6 +465,7 @@
             <el-option key="7" label="烟花" value="烟花"></el-option>
             <el-option key="8" label="五角星" value="五角星"></el-option>
             <el-option key="9" label="十字膜" value="十字膜"></el-option>
+            <el-option key="9" label="镭射白墨" value="镭射白墨"></el-option>
           </el-select>
         </el-form-item>
       </el-form>

+ 102 - 46
src/views/modules/print/wave-print-order.vue

@@ -995,55 +995,111 @@
       async mergeAndDownloadPDF(){ // urlList 单个PDF文件的URL
         try{
           this.wavePrintOrderPdfDownloadLoading = true;
-          // 获取pdf链接集合
-          this.getPrintPdfBatch().then(async (list)=>{
-            let newPdf = await PDFDocument.create();
-            let pageWidth = 0;
-            let pageHeight = 0;
-            for(let i=0 ; i <list.length; i++){
-              let pdfList = list[i].pdfList;
-              for(let j=0 ; j <pdfList.length; j++){
-                let randomStr = Math.floor(Math.random()*100000).toString();
-                let pdfBuffer = await this.getPdfFile2(this.resourcesUrl + pdfList[j].pdfUrl+"?u="+randomStr);
-                let pdfDocument = await PDFDocument.load(pdfBuffer);
-                let contentPages = await newPdf.copyPages(pdfDocument, pdfDocument.getPageIndices());
-                for (let l=0; l<contentPages.length; l++) {
-                  newPdf.addPage(contentPages[l]);
-                  if(pageWidth == 0){
-                    pageWidth = contentPages[l].getWidth();
-                    pageHeight = contentPages[l].getHeight();
+          if(this.wave.waveName.indexOf("白墨") !== -1){
+            this.getPrintPdfBatch().then(async (list)=>{
+              let pdfList = list
+              const newZip = new JSzip()
+              const promises = []
+              pdfList.forEach((item, j) => {
+                let pdf = item.pdfList[0]
+                if(pdf.pdfName.endsWith('.zip') && pdf.pdfName.indexOf('对裱') === -1){
+                  const zip = new JSzip()
+                  let innerPromise = new Promise((resolve, reject) => {
+                    fetch(this.resourcesUrl + pdf.pdfUrl).then(response =>{
+                      if (!response.ok) {
+                        throw new Error('Network response was not ok ' + response.statusText);
+                      }
+                      return response.blob();
+                    }).then(blob => {
+                      // 现在你有了一个Blob对象,可以根据需要使用它
+                      let folderData = []
+                      zip.loadAsync(blob).then(zipData =>{
+                        for(let filename of Object.keys(zipData.files)){
+                          let data = zipData.files[filename].async('blob')
+                          folderData.push({name: filename, data: data})
+                        }
+                        resolve(folderData)
+                      })
+                    })
+                  }).then(folderData =>{
+                    let folder = newZip.folder(pdf.pdfFolderName)
+                    for(let key in folderData) {
+                      folder.file(folderData[key].name, folderData[key].data, {binary: true})
+                    }
+                  })
+                  promises.push(innerPromise)
+                }else{
+                  const promise = this.getPdfFile(this.resourcesUrl + pdf.pdfUrl).then(data => {
+                    newZip.file(pdf.pdfName, data, {
+                      binary: true
+                    })
+                  })
+                  promises.push(promise)
+                }
+              })
+              Promise.all(promises).then(() => {
+                newZip.generateAsync({ type: 'blob' }).then(content => {
+                  let outputName = this.wave.waveNo + "_" + this.wave.colorPrint + "_" + this.wave.gram + "_" + this.wave.waveName + ".zip"
+                  // 生成二进制流   然后保存文件(如果这个下载不了 也可以将下方这一行换成a标签下载逻辑)
+                  saveAs(content, outputName) // 利用file-saver保存文件  自定义文件名
+                  this.wavePrintOrderPdfDownloadLoading = false
+                })
+                // eslint-disable-next-line handle-callback-err
+              }).catch((error) => {
+                this.wavePrintOrderPdfDownloadLoading = false
+              })
+            })
+          }else{
+            // 获取pdf链接集合
+            this.getPrintPdfBatch().then(async (list)=>{
+              let newPdf = await PDFDocument.create();
+              let pageWidth = 0;
+              let pageHeight = 0;
+              for(let i=0 ; i <list.length; i++){
+                let pdfList = list[i].pdfList;
+                for(let j=0 ; j <pdfList.length; j++){
+                  let randomStr = Math.floor(Math.random()*100000).toString();
+                  let pdfBuffer = await this.getPdfFile2(this.resourcesUrl + pdfList[j].pdfUrl+"?u="+randomStr);
+                  let pdfDocument = await PDFDocument.load(pdfBuffer);
+                  let contentPages = await newPdf.copyPages(pdfDocument, pdfDocument.getPageIndices());
+                  for (let l=0; l<contentPages.length; l++) {
+                    newPdf.addPage(contentPages[l]);
+                    if(pageWidth == 0){
+                      pageWidth = contentPages[l].getWidth();
+                      pageHeight = contentPages[l].getHeight();
+                    }
                   }
                 }
               }
-            }
-            //如果是圆角,就补充空白页
-            if(this.wave.printChannel === "KuaiYin"){
-              // if(this.wave.waveName.indexOf("圆角") != -1){
-              //   let allPageSize = newPdf.getPageCount();
-              //   let totalPage = 144
-              //   if(this.wave.colorPrint === '四色'){
-              //     totalPage = 120
-              //   }
-              //   let mod = allPageSize % totalPage;
-              //   if(mod != 0){
-              //     let diff = totalPage - mod;
-              //     for(let i = 1; i <= diff; i++){
-              //       newPdf.addPage([pageWidth, pageHeight]);
-              //     }
-              //   }
-              // }
-            }
-            let uint8Array = await newPdf.save();
-            let mergeBuffer = Buffer.from(uint8Array);
-            if(this.wave.printChannel === "KuaiYin"){
-              downloadPdf(mergeBuffer, this.wave.waveNo + "_" + this.wave.colorPrint + "_" + this.wave.gram + "_" + this.wave.waveName
-                + ".pdf");
-            }else{
-              downloadPdf(mergeBuffer, this.wave.waveNo + "_" + this.wave.waveName
-                + ".pdf");
-            }
-            this.wavePrintOrderPdfDownloadLoading = false;
-          });
+              //如果是圆角,就补充空白页
+              if(this.wave.printChannel === "KuaiYin"){
+                // if(this.wave.waveName.indexOf("圆角") != -1){
+                //   let allPageSize = newPdf.getPageCount();
+                //   let totalPage = 144
+                //   if(this.wave.colorPrint === '四色'){
+                //     totalPage = 120
+                //   }
+                //   let mod = allPageSize % totalPage;
+                //   if(mod != 0){
+                //     let diff = totalPage - mod;
+                //     for(let i = 1; i <= diff; i++){
+                //       newPdf.addPage([pageWidth, pageHeight]);
+                //     }
+                //   }
+                // }
+              }
+              let uint8Array = await newPdf.save();
+              let mergeBuffer = Buffer.from(uint8Array);
+              if(this.wave.printChannel === "KuaiYin"){
+                downloadPdf(mergeBuffer, this.wave.waveNo + "_" + this.wave.colorPrint + "_" + this.wave.gram + "_" + this.wave.waveName
+                  + ".pdf");
+              }else{
+                downloadPdf(mergeBuffer, this.wave.waveNo + "_" + this.wave.waveName
+                  + ".pdf");
+              }
+              this.wavePrintOrderPdfDownloadLoading = false;
+            });
+          }
         }catch (error) {
           this.wavePrintOrderPdfDownloadLoading = false;
         }

+ 8 - 3
src/views/modules/promotion/promotionOrder.vue

@@ -25,8 +25,10 @@
           </el-form-item>
           <el-form-item label="订单状态" prop="status">
             <el-select v-model="searchForm.status" placeholder="请选择" size="small" :clearable="true">
+              <el-option :key="1" label="待付款" value="待付款"></el-option>
               <el-option :key="2" label="待发货" value="待发货"></el-option>
               <el-option :key="3" label="已发货" value="已发货"></el-option>
+              <el-option :key="6" label="交易失败" value="交易失败"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="视频状态" prop="status">
@@ -128,9 +130,12 @@
                      @click="openDeliveryPage(deliveryOrder.dvyFlowId, deliveryOrder.dvyNo)">{{ deliveryOrder.dvyFlowId }}
                 </div>
               </div>
-<!--              <el-tag v-if="scope.row.status === '已发货'" type="success">-->
-<!--                -->
-<!--              </el-tag>-->
+              <el-tag v-if="scope.row.status === '待付款'" type="primary">
+                {{scope.row.status}}
+              </el-tag>
+              <el-tag v-if="scope.row.status === '交易失败'" type="danger">
+                {{scope.row.status}}
+              </el-tag>
               <el-tag v-if="scope.row.status.indexOf('部分发货') != -1" type="warning">{{scope.row.status}}</el-tag>
             </template>
           </el-table-column>