2 Commits 80386861f3 ... 492b0c91fd

Autor SHA1 Mensaje Fecha
  liangbowen 492b0c91fd 目录字段校验修改 hace 2 semanas
  liangbowen 9efe5409ef 修改表格打印样式 hace 3 semanas

+ 1 - 0
package.json

@@ -43,6 +43,7 @@
     "vue-barcode": "^1.3.0",
     "vue-layer": "^1.2.0",
     "vue-pdf": "^4.1.0",
+    "vue-print-nb": "^1.7.5",
     "vue-qr": "^4.0.9",
     "vue-quill-editor": "^3.0.6",
     "vue-router": "3.0.6",

+ 2 - 2
src/main.js

@@ -7,8 +7,8 @@ import "normalize.css/normalize.css"; // a modern alternative to CSS resets
 import "./styles/element-variables.scss";
 import "@/styles/global.scss";
 import "@/styles/index.scss"; // global css
-// import Print from 'vue-print-nb'
-import Print from './assets/print'
+import Print from 'vue-print-nb'
+//import Print from './assets/print'
 import 'default-passive-events';
 Vue.use(Print);
 

+ 60 - 24
src/views/components/printTable.vue

@@ -1,11 +1,15 @@
 <template>
-  <div>
-    <div v-for="(im, inx) in taData" :key="inx">
-      <div style="width:100%;height:50px;text-align:center;line-height:50px;">
+  <div class="print-content">
+    <!-- <div v-for="(im, inx) in taData" :key="inx"> -->
+    <div class="table-container">
+      <div class="print-header">
         {{ userName }}
       </div>
       <table class="printTable" border="1" style="table-layout: auto">
         <thead>
+          <tr style="height:50px;border-right: none;">
+            <th></th>
+          </tr>
           <tr>
             <th
               v-for="(item, index) in tableHeader"
@@ -17,7 +21,7 @@
           </tr>
         </thead>
         <tbody>
-          <tr v-for="(item, index) in im" :key="index">
+          <tr v-for="(item, index) in taData" :key="index">
             <td v-for="(itm, idx) in tableHeader" :key="idx">
               <span v-if="itm.value == 'iFas'">
                 <span v-if="item.isFas == '0'">否</span>
@@ -29,20 +33,21 @@
           </tr>
           <tr>
             <td>合计</td>
-            <td colspan="5">{{ chaseData(im) }}</td>
-            <td>{{ amtNumber(im) }}</td>
+            <td colspan="5">{{ chaseData() }}</td>
+            <td>{{ amtNumber() }}</td>
             <td colspan="7"></td>
           </tr>
         </tbody>
       </table>
-      <div class="fot-val">
-        {{ tableLabel }}
-        <br />
-        <br />
-        &nbsp; &nbsp; &nbsp; &nbsp;{{ time }}
-      </div>
-      <div style="page-break-after: always"></div>
     </div>
+    <div class="fot-val">
+      {{ tableLabel }}
+      <br />
+      <br />
+      &nbsp; &nbsp; &nbsp; &nbsp;{{ time }}
+    </div>
+    <!-- <div style="page-break-after: always"></div> -->
+    <!-- </div> -->
   </div>
 </template>
 <script>
@@ -78,17 +83,17 @@ export default {
       }
       return newArr;
     },
-    amtNumber(item) {
+    amtNumber() {
       let nub = 0;
-      item.forEach(item => {
+      this.taData.forEach(item => {
         nub += Number(item.amt);
       });
       let pasNub = parseFloat(nub.toFixed(4));
       return pasNub + "元";
     },
-    chaseData(item) {
+    chaseData() {
       let nub = 0;
-      item.forEach(item => {
+      this.taData.forEach(item => {
         nub += Number(item.amt);
       });
       let pasNub = parseFloat(nub.toFixed(4));
@@ -103,10 +108,10 @@ export default {
       this.$route.query.branchName +
       "----" +
       this.$route.query.stmtPrd +
-      "结算单";
+      "---结算单";
     this.tableLabel = this.$store.state.user.username;
-    let newData = this.paginData(this.tableData, 15);
-    this.taData = newData;
+    // let newData = this.paginData(this.tableData, 5);
+    this.taData = this.tableData;
   }
 };
 </script>
@@ -122,6 +127,7 @@ export default {
       border: 1px solid black;
       text-align: center;
     }
+
     th {
       padding: 3px;
     }
@@ -134,12 +140,26 @@ export default {
     zoom: 75%;
   }
   @page {
-    size: auto; /* 重置页面大小,避免出现空白页 */
-    margin-top: 10mm; /* 取消页眉 */
-    margin-left: 6mm; /* 取消默认的左右页边距 */
-    margin-right: 45mm; /* 取消默认的左右页边距 */
+    size: auto;
+    /* 重置页面大小,避免出现空白页 */
+    margin-top: 10mm;
+    /* 取消页眉 */
+    margin-left: 6mm;
+    /* 取消默认的左右页边距 */
+    margin-right: 45mm;
+    /* 取消默认的左右页边距 */
+  }
+  table {
+    page-break-inside: auto;
+  }
+  tr {
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
   }
 }
+
 .fot-val {
   width: 100%;
   height: 100px;
@@ -148,4 +168,20 @@ export default {
   justify-content: flex-end;
   padding-right: 50px;
 }
+
+.print-header {
+  width: 100%;
+  height: 50px;
+  text-align: center;
+  line-height: 50px;
+  position: absolute;
+  left: 0;
+  top: 0;
+  background: #fff;
+}
+.table-container {
+  position: relative;
+}
+.print-header {
+}
 </style>

+ 3 - 7
src/views/page/consumCataManage-sup/catalogdetails.vue

@@ -87,7 +87,6 @@
                 <el-form-item
                   label="生产企业"
                   prop="prodEntp"
-                  :rules="rules.required"
                 >
                   <div class="content" v-if="isShow">
                     {{ infoData.prodEntp }}
@@ -104,7 +103,6 @@
                 <el-form-item
                   label="代理企业"
                   prop="agnt"
-                  :rules="rules.required"
                 >
                   <div class="content" v-if="isShow">
                     {{ infoData.agnt }}
@@ -116,7 +114,7 @@
                   ></el-input>
                 </el-form-item>
 
-                <el-form-item label="规格" prop="spec" :rules="rules.required">
+                <el-form-item label="规格" prop="spec">
                   <div class="content" v-if="isShow">
                     {{ infoData.spec }}
                   </div>
@@ -126,7 +124,7 @@
                     placeholder="请输入规格"
                   ></el-input>
                 </el-form-item>
-                <el-form-item label="型号" prop="mol" :rules="rules.required">
+                <el-form-item label="型号" prop="mol">
                   <div class="content" v-if="isShow">
                     {{ infoData.mol }}
                   </div>
@@ -138,7 +136,7 @@
                 </el-form-item>
               </div>
               <div class="flex-css">
-                <el-form-item label="材质" prop="matl" :rules="rules.required">
+                <el-form-item label="材质" prop="matl">
                   <div class="content" v-if="isShow">
                     {{ infoData.matl }}
                   </div>
@@ -151,7 +149,6 @@
                 <el-form-item
                   label="包装材质"
                   prop="pacmatl"
-                  :rules="rules.required"
                 >
                   <div class="content" v-if="isShow">
                     {{ infoData.pacmatl }}
@@ -165,7 +162,6 @@
                 <el-form-item
                   label="注册证号"
                   prop="regcertno"
-                  :rules="rules.required"
                 >
                   <div class="content" v-if="isShow">
                     {{ infoData.regcertno }}

+ 7 - 23
src/views/page/consumCataManage-sup/catalogdetailsadd.vue

@@ -76,11 +76,7 @@
                     ></el-option>
                   </el-select>
                 </el-form-item>
-                <el-form-item
-                  label="生产企业"
-                  prop="prodEntp"
-                  :rules="rules.required"
-                >
+                <el-form-item label="生产企业" prop="prodEntp">
                   <el-input
                     v-model="infoData.prodEntp"
                     maxlength="50"
@@ -89,11 +85,7 @@
                 </el-form-item>
               </div>
               <div class="flex-css">
-                <el-form-item
-                  label="代理企业"
-                  prop="agnt"
-                  :rules="rules.required"
-                >
+                <el-form-item label="代理企业" prop="agnt">
                   <el-input
                     v-model="infoData.agnt"
                     placeholder="请输入代理企业"
@@ -102,14 +94,14 @@
                 </el-form-item>
                 <!--  -->
 
-                <el-form-item label="规格" prop="spec" :rules="rules.required">
+                <el-form-item label="规格" prop="spec">
                   <el-input
                     v-model="infoData.spec"
                     placeholder="请输入规格"
                     maxlength="50"
                   ></el-input>
                 </el-form-item>
-                <el-form-item label="型号" prop="mol" :rules="rules.required">
+                <el-form-item label="型号" prop="mol">
                   <el-input
                     v-model="infoData.mol"
                     placeholder="请输入型号"
@@ -118,29 +110,21 @@
                 </el-form-item>
               </div>
               <div class="flex-css">
-                <el-form-item label="材质" prop="matl" :rules="rules.required">
+                <el-form-item label="材质" prop="matl">
                   <el-input
                     v-model="infoData.matl"
                     placeholder="请输入材质"
                     maxlength="50"
                   ></el-input>
                 </el-form-item>
-                <el-form-item
-                  label="包装材质"
-                  prop="pacmatl"
-                  :rules="rules.required"
-                >
+                <el-form-item label="包装材质" prop="pacmatl">
                   <el-input
                     v-model="infoData.pacmatl"
                     placeholder="请输入包装材质"
                     maxlength="50"
                   ></el-input>
                 </el-form-item>
-                <el-form-item
-                  label="注册证号"
-                  prop="regcertno"
-                  :rules="rules.required"
-                >
+                <el-form-item label="注册证号" prop="regcertno">
                   <el-input
                     v-model="infoData.regcertno"
                     placeholder="请输入注册证号"

+ 20 - 8
src/views/page/procurement-settlement/reconciliation/supplierDetail.vue

@@ -121,7 +121,7 @@
           append-to-body
         >
           <div class="prWrap">
-            <div id="printMe">
+            <div id="printMe" class="print-container">
               <printTable :tableHeader="tableHeader" :tableData="list" />
             </div>
           </div>
@@ -154,6 +154,14 @@ import {
   exportAllSetlExcel
 } from "@/api/procurement-settlement/index";
 import { exportData } from "../../consumCataManage-sup/const.js";
+const printCSS = `
+    @media print{.print-header{position: fixed !important;top: 0 !important;left:10px; !important;height: 51px !important;background: #fff !important;margin-left:1px;}
+   table{page-break-inside: auto;}
+   tr{page-break-inside: avoid;}
+   thead{display: table-header-group;}
+   @page{@bottom-right{content: "第" counter(page) "页/共" counter(pages) "页";font-family: Arial;font-size: 10pt;}}
+   body{counter-reset: page;}
+`;
 export default {
   components: {
     ylStep,
@@ -249,19 +257,22 @@ export default {
       printObj: {
         id: "printMe",
         popTitle: "", // 打印配置页上方标题
-        extraHead: "", //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
+        extraHead: `<style>${printCSS}</style>`, //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
         preview: "", // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
         previewTitle: "", // 打印预览的标题(开启预览模式后出现),
         previewPrintBtnLabel: "", // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
         zIndex: "", // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
-        previewBeforeOpenCallback() {}, //预览窗口打开之前的callback(开启预览模式调用)
+        previewBeforeOpenCallback() {
+          console.log("执行了吗");
+        }, //预览窗口打开之前的callback(开启预览模式调用)
         previewOpenCallback() {}, // 预览窗口打开之后的callback(开启预览模式调用)
         beforeOpenCallback: () => {}, // 开启打印前的回调事件
+        beforePrintCallback: () => {},
         openCallback() {}, // 调用打印之后的回调事件
         closeCallback() {}, //关闭打印的回调事件(无法确定点击的是确认还是取消)
         url: "",
         standard: "",
-        extraCss: ""
+        extraCss: printCSS
       }
     };
   },
@@ -308,10 +319,6 @@ export default {
     comhandleClose() {
       this.comModal = false;
     },
-    //设置表格第一行的颜色
-    // getRowClass({ row, column, rowIndex, columnIndex }) {
-    //     return "background:#e2e1e1;text-align:center";
-    // },
     arraySpanMethod() {
       //table合计行合并单元格
       setTimeout(() => {
@@ -408,16 +415,19 @@ export default {
 #printMe {
   ::v-deep .print-table {
     border: 1px solid #999;
+
     td,
     th {
       border-right: 1px solid #999;
       border-bottom: 1px solid #999;
     }
   }
+
   ::v-deep .price-css {
     margin-left: 94%;
   }
 }
+
 .el-card {
   ::v-deep .el-card__body {
     padding: 10px 0px 10px 0px;
@@ -425,6 +435,7 @@ export default {
     margin-right: 20px;
   }
 }
+
 .right-btn {
   width: 100%;
   height: 50px;
@@ -436,6 +447,7 @@ export default {
   align-items: center;
   justify-content: flex-end;
 }
+
 .prWrap {
   height: 400px;
   overflow: auto;

+ 1 - 2
vue.config.js

@@ -5,7 +5,6 @@ const webpack = require("webpack");
 function resolve(dir) {
   return path.join(__dirname, dir);
 }
-
 const name = defaultSettings.title || "zxkcadmin"; // page title
 
 // If your port is set to 80,
@@ -46,7 +45,7 @@ module.exports = {
       // change xxx-api/login => mock/login
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://127.0.0.1:8603`,
+        target: `http://192.168.0.246:8602`,
         // target: `http://192.168.0.56:8502`,
         // target: `http://192.168.0.248:6000`,
         //target: `http://api.szlcloud.com/admin`,