Ver Fonte

Merge remote-tracking branch 'origin/master'

hmc há 1 ano atrás
pai
commit
fc01b6542f

+ 111 - 0
zkqy-ui/src/utils/print/sendOrderPrint.js

@@ -0,0 +1,111 @@
+function receiptDocuments(data, domId) {
+  let yy = new Date().getFullYear();
+  let mm = new Date().getMonth() + 1;
+  if (mm < 10) {
+    mm = "0" + mm;
+  }
+  let dd = new Date().getDate();
+  if (dd < 10) {
+    dd = "0" + dd;
+  }
+  let { customerName, saleProductInfoList, noticeNumber, printUser, drawer, salesman } = data;
+
+  let printContent = `<div class="table" style="display: flex;flex-direction: column;align-items: center;width: 1000px;">
+    <div class="tableName" style="margin: 0 auto;font-size: 30px;font-weight: bold;">
+      诸暨市新丝维纤维有限公司送货单
+    </div>
+    <div class="title" style="width: 100%; padding: 0 10px;position: relative;">
+      <div style="display: flex;justify-content: space-between;width: 100%;padding: 0 10px;box-sizing: border-box;">
+        <span>通知单号&nbsp;&nbsp;${noticeNumber}</span>
+        <span>单号&nbsp;&nbsp;${'未知'}</span>
+      </div>
+      <div
+        style="display: flex;justify-content: space-between;width: 100%; padding: 0 10px;box-sizing: border-box;margin-bottom: 5px;">
+        <span>客户名称&nbsp;&nbsp;<span class="name" style="display: inline-block;
+          width: 300px;
+          border-bottom: 2px solid black;
+          padding-bottom: 3px;">${customerName}</span>
+        </span>
+        <span>时间&nbsp;&nbsp;${yy} 年 ${mm} 月 ${dd} 日</span>
+
+      </div>
+      <div class="aside" style="position: absolute;right: -40px;top: 1px;">
+        <span style="writing-mode: vertical-lr;">白联财务联,红联仓库联,黄联客户联</span>
+      </div>
+      <div class="tableContext" style="width: 100%;">
+        <table style="width:100%; border-collapse:collapse;" border="1" cellpadding="10" align="center">
+          <tbody>
+            <tr align="center">
+              <td width="200px">品名</td>
+              <td width="200px">规格</td>
+              <td width="50px">等级</td>
+              <td width="150px">色泽</td>
+              <td width="60px">批号</td>
+              <td width="90px">实发箱数</td>
+              <td width="120px">数量(公斤)</td>
+              <td width="50px">单价</td>
+              <td width="100px">金额</td>
+            </tr>`;
+  let totalBoxNum = 0, totalWeight = 0, totalPrice = 0;
+  for (let i = 0; i < saleProductInfoList.length; i++) {
+    let item = saleProductInfoList[i];
+    if (item.boxNum) {
+      totalBoxNum += Number(item.boxNum);
+    }
+    if (item.weight) {
+      totalWeight += Number(item.weight);
+    }
+    let price = 0
+    if (item.weight && item.unitPrice) {
+      price = Number(item.weight) * Number(item.unitPrice);
+      totalPrice += price
+    }
+    printContent += `<tr align="center">
+      <td>${item.productName}</td>
+      <td>${item.productSpecifications}</td>
+      <td>${item.levels}</td>
+      <td>${item.productColor}</td>
+      <td>${item.lotNum}</td>
+      <td>${item.boxNum}</td>
+      <td>${item.weight}</td>
+      <td>${item.unitPrice}</td>
+      <td>${price}</td>
+      </tr>`
+  }
+  printContent += `<tr align="center">
+              <td colspan="5">合计</td>
+              <td>${totalBoxNum}</td>
+              <td>${totalWeight}</td>
+              <td></td>
+              <td>${totalPrice}</td>
+            </tr>`
+
+
+  printContent += `</tbody>
+        </table>
+      </div>
+      <div class="tableBottom" style='width: 100%;
+      padding: 0 10px;
+        margin: 0 auto;
+        position: relative;
+        top: 200px;
+        display: flex;
+        flex-direction: row;
+        flex-wrap: wrap;
+        justify-content: space-between;'>
+        <span style="width: 100%;">备注:</span>
+        <span>制单员&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${printUser}</span>
+        <span>销货员&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${salesman}</span>
+        <span>提货人</span>
+        <span>收货单位签名或盖章:</span>
+        <span style="width: 100%;">客户收货员签名,即视为已收到本单货物和对欠款金额的确认。则该送货单上的期末欠款金额作为欠款法律凭证。</span>
+        <span style="width: 100%">不同批号,不得混用。发现质量问题请在10天内提告本公司。如有后道编织物品,恕不负责退还及赔偿</span>
+      </div>
+    </div>`
+  document.body.innerHTML = document.getElementById(domId).innerHTML = printContent;
+  window.print(); //打印
+  window.location.reload();
+  return false;
+
+}
+export default receiptDocuments

+ 7 - 4
zkqy-ui/src/views/orderMange/ProductInvoice/index.vue

@@ -215,6 +215,7 @@ import {
   updateProductInvoice,
 } from "@/api/system/ProductInvoice";
 import deliverOrderPrint from "@/utils/print/deliverOrderPrint";
+import sendOrderPrint from "@/utils/print/sendOrderPrint";
 import {
   productInvoiceInfo,
   queryDropDownBoxData,
@@ -289,12 +290,13 @@ export default {
       if (res.code == 200) {
         let printData = res.data;
         console.log("printData", {
-          ...printData,
           ...row,
+          ...printData,
+
           printUser: this.username,
         });
         deliverOrderPrint(
-          { ...printData, ...row, printUser: this.username },
+          { ...row, ...printData, printUser: this.username },
           "printDom"
         );
       } else {
@@ -316,12 +318,13 @@ export default {
       if (res.code == 200) {
         let printData = res.data;
         console.log("printData", {
-          ...printData,
           ...row,
+          ...printData,
+
           printUser: this.username,
         });
         sendOrderPrint(
-          { ...printData, ...row, printUser: this.username },
+          { ...row, ...printData, printUser: this.username },
           "printDom"
         );
       } else {

+ 175 - 0
zkqy-ui/src/views/orderMange/ProductInvoice/send.html

@@ -0,0 +1,175 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>单据2</title>
+  <style>
+    /* .table {
+      .tableName {
+        text-align: center;
+        font-size: 24px;
+      }
+
+      .title {
+        width: 980px;
+        margin: 0 auto;
+        position: relative;
+        top: 20px;
+        display: flex;
+        flex-direction: row;
+        flex-wrap: wrap;
+        justify-content: space-between;
+
+        span {
+          width: 400px;
+        }
+
+        span:nth-child(2n) {
+          position: relative;
+          left: 160px;
+        }
+
+        .name {
+          display: inline-block;
+          width: 300px;
+          border-bottom: 2px solid black;
+          padding-bottom: 5px;
+        }
+      }
+
+      .aside {
+        position: relative;
+        float: right;
+        top: -20px;
+        right: 230px;
+        display: inline-block;
+        writing-mode: vertical-lr;
+      }
+
+      .tableContext {
+        position: relative;
+        top: 30px;
+      }
+
+      .tableBottom {
+        width: 980px;
+        margin: 0 auto;
+        position: relative;
+        top: 200px;
+        display: flex;
+        flex-direction: row;
+        flex-wrap: wrap;
+        justify-content: space-between;
+
+        span {
+          margin: 5px 0;
+          width: 200px;
+        }
+      }
+    } */
+  </style>
+</head>
+
+<body>
+  <div class="table" style="display: flex;flex-direction: column;align-items: center;width: 1000px;">
+    <div class="tableName" style="margin: 0 auto;font-size: 30px;font-weight: bold;">
+      诸暨市新丝维纤维有限公司送货单
+    </div>
+    <div class="title" style="width: 100%; padding: 0 10px;position: relative;">
+      <div style="display: flex;justify-content: space-between;width: 100%;padding: 0 10px;box-sizing: border-box;">
+        <span>通知单号&nbsp;&nbsp;20230903020024</span>
+        <span>单号&nbsp;&nbsp;00035102</span>
+      </div>
+      <div
+        style="display: flex;justify-content: space-between;width: 100%; padding: 0 10px;box-sizing: border-box;margin-bottom: 5px;">
+        <span>客户名称&nbsp;&nbsp;<span class="name" style="display: inline-block;
+          width: 300px;
+          border-bottom: 2px solid black;
+          padding-bottom: 3px;">许泽祥</span>
+        </span>
+        <span>时间&nbsp;&nbsp;2023 年 09 月 03 日</span>
+
+      </div>
+      <div class="aside" style="position: absolute;right: -40px;top: 1px;">
+        <span style="writing-mode: vertical-lr;">白联财务联,红联仓库联,黄联客户联</span>
+      </div>
+      <div class="tableContext" style="width: 100%;">
+        <table style="width:100%; border-collapse:collapse;" border="1" cellpadding="10" align="center">
+          <tbody>
+            <tr align="center">
+              <td width="200px">品名</td>
+              <td width="200px">规格</td>
+              <td width="40px">等级</td>
+              <td width="150px">色泽</td>
+              <td width="60px">批号</td>
+              <td width="90px">实发箱数</td>
+              <td width="120px">数量(公斤)</td>
+              <td width="40px">单价</td>
+              <td width="100px">金额</td>
+            </tr>
+            <tr align="center">
+              <td>BTS高弹合股轻网</td>
+              <td>140D/72f</td>
+              <td>AA</td>
+              <td>094驼咖</td>
+              <td>22-1</td>
+              <td>1</td>
+              <td>19.40</td>
+              <td align="right">15.00</td>
+              <td align="right">291.00</td>
+            </tr>
+            <tr align="center">
+              <td>BTS高弹合股轻网</td>
+              <td>140D/72f</td>
+              <td>AA</td>
+              <td>015象牙黄</td>
+              <td>23-6</td>
+              <td>2</td>
+              <td>40.55</td>
+              <td align="right">14.50</td>
+              <td align="right">587.98</td>
+            </tr>
+            <tr align="center">
+              <td>BTS高弹合股轻网</td>
+              <td>140D/72f</td>
+              <td>AA</td>
+              <td>010驼杏</td>
+              <td>21-0</td>
+              <td>1</td>
+              <td>19.35</td>
+              <td align="right">14.50</td>
+              <td align="right">280.58</td>
+            </tr>
+            <tr align="center">
+              <td colspan="5">合计</td>
+              <td>4</td>
+              <td>79.30</td>
+              <td align="right"></td>
+              <td align="right">1159.56</td>
+            </tr>
+          </tbody>
+        </table>
+      </div>
+      <div class="tableBottom" style='width: 100%;
+      padding: 0 10px;
+        margin: 0 auto;
+        position: relative;
+        top: 200px;
+        display: flex;
+        flex-direction: row;
+        flex-wrap: wrap;
+        justify-content: space-between;'>
+        <span style="width: 100%;">备注:</span>
+        <span>制单员&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;张丽</span>
+        <span>销货员&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公司</span>
+        <span>提货人</span>
+        <span>收货单位签名或盖章:</span>
+        <span style="width: 100%;">客户收货员签名,即视为已收到本单货物和对欠款金额的确认。则该送货单上的期末欠款金额作为欠款法律凭证。</span>
+        <span style="width: 100%">不同批号,不得混用。发现质量问题请在10天内提告本公司。如有后道编织物品,恕不负责退还及赔偿</span>
+      </div>
+    </div>
+</body>
+
+</html>

+ 461 - 0
zkqy-ui/src/views/orderMange/financialReconciliation/index.vue

@@ -0,0 +1,461 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="通知单号" prop="noticeNumber">
+        <el-input
+          v-model="queryParams.noticeNumber"
+          placeholder="请输入通知单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="日期" prop="noticeDate">
+        <el-date-picker
+          clearable
+          v-model="queryParams.noticeDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择通知日期"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <!-- <el-form-item label="状态" prop="status">
+        <el-select
+          v-model="queryParams.status"
+          value-key=""
+          placeholder=""
+          clearable
+          filterable
+          @change=""
+        >
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item> -->
+
+      <el-form-item label="客户编号" prop="customerId">
+        <el-input
+          v-model="queryParams.customerId"
+          placeholder="请输入客户编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:ProductInvoice:add']"
+          >新增</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:ProductInvoice:edit']"
+          >修改</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:ProductInvoice:remove']"
+          >删除</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:ProductInvoice:export']"
+          >导出</el-button
+        >
+      </el-col> -->
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="ProductInvoiceList"
+      @selection-change="handleSelectionChange"
+    >
+      <!-- <el-table-column label="编号" align="center" prop="id" />
+       -->
+      <el-table-column
+        label="日期"
+        align="center"
+        prop="noticeDate"
+        width="180"
+      >
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.noticeDate, "{y}-{m}-{d}") }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="通知单号" align="center" prop="noticeNumber" />
+
+      <!-- <el-table-column label="销售员" align="center" prop="salesman" />
+      <el-table-column label="客户编号" align="center" prop="customerId" />
+      <el-table-column label="开票员" align="center" prop="drawer" />
+      <el-table-column
+        label="发货单备注"
+        align="center"
+        prop="dispatchNoteRemark"
+      /> -->
+      <!-- <el-table-column label="开票类型" align="center" prop="billingType" />
+      <el-table-column
+        label="货车登记"
+        align="center"
+        prop="truckRegistration"
+      />
+      <el-table-column label="单据类型" align="center" prop="documentType" />
+      <el-table-column label="售货单位" align="center" prop="sellingUnit" />
+      <el-table-column label="计算类型" align="center" prop="calculationType" />
+      <el-table-column label="审核意见" align="center" prop="auditOpinion" /> -->
+      <el-table-column label="客户名称" align="center" prop="customerName" />
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="scope">{{ scope.row.status }}</template>
+      </el-table-column>
+
+      <!-- <el-table-column label="销售单合同号" align="center" prop="saleOrderNo" />
+      <el-table-column label="备注" align="center" prop="remark" /> -->
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
+        <template slot-scope="scope">
+          <el-dropdown>
+            <el-button type="warning" plain size="small">
+              处理<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <!-- <el-dropdown-item>
+                <el-button
+                  type="text"
+                  size="mini"
+                  @click="handleDeliverOrder(scope.$index, scope.row)"
+                  >打印发货单</el-button
+                >
+              </el-dropdown-item> -->
+              <el-dropdown-item>
+                <el-button
+                  type="text"
+                  size="mini"
+                  @click="handleSendOrder(scope.$index, scope.row)"
+                  >打印对账单</el-button
+                >
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <div id="printDom"></div>
+  </div>
+</template>
+
+<script>
+import {
+  listProductInvoice,
+  getProductInvoice,
+  delProductInvoice,
+  addProductInvoice,
+  updateProductInvoice,
+} from "@/api/system/ProductInvoice";
+import deliverOrderPrint from "@/utils/print/deliverOrderPrint";
+import sendOrderPrint from "@/utils/print/sendOrderPrint";
+import {
+  productInvoiceInfo,
+  queryDropDownBoxData,
+} from "@/api/tablelist/commonTable";
+import { mapState } from "vuex";
+
+export default {
+  name: "ProductInvoice",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 产品发货单表格数据
+      ProductInvoiceList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        noticeNumber: null,
+        noticeDate: null,
+        salesman: null,
+        customerId: null,
+        drawer: null,
+        dispatchNoteRemark: null,
+        billingType: null,
+        truckRegistration: null,
+        documentType: null,
+        sellingUnit: null,
+        calculationType: null,
+        auditOpinion: null,
+        status: 2,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+    };
+  },
+  created() {
+    this.getList();
+  },
+  computed: {
+    ...mapState({
+      username: (state) => state.user.name,
+    }),
+  },
+  methods: {
+    // 打印发货单回调
+    async handleDeliverOrder(index, row) {
+      let { saleOrderNo } = row;
+      if (!saleOrderNo) {
+        this.$message.error("数据异常,暂无saleOrderNo");
+      }
+      let payload = {
+        saleOrderNo: saleOrderNo,
+      };
+      let res = await productInvoiceInfo(payload);
+      if (res.code == 200) {
+        let printData = res.data;
+        console.log("printData", {
+          ...row,
+          ...printData,
+          
+          printUser: this.username,
+        });
+        deliverOrderPrint(
+          { ...row,...printData,  printUser: this.username },
+          "printDom"
+        );
+      } else {
+        console.log(res);
+        this.$message.error(res.msg);
+      }
+      // deliverOrderPrint(row, "printDom");
+    },
+    // 打印送货单回调
+    async handleSendOrder(index, row) {
+      let { saleOrderNo } = row;
+      if (!saleOrderNo) {
+        this.$message.error("数据异常,暂无saleOrderNo");
+      }
+      let payload = {
+        saleOrderNo: saleOrderNo,
+      };
+      let res = await productInvoiceInfo(payload);
+      if (res.code == 200) {
+        let printData = res.data;
+        console.log("printData", {
+          ...row,
+          ...printData,
+          printUser: this.username,
+        });
+        sendOrderPrint(
+          { ...row,...printData,  printUser: this.username },
+          "printDom"
+        );
+      } else {
+        console.log(res);
+        this.$message.error(res.msg);
+      }
+    },
+    /** 查询产品发货单列表 */
+    getList() {
+      this.loading = true;
+      listProductInvoice(this.queryParams).then((response) => {
+        this.ProductInvoiceList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        noticeNumber: null,
+        noticeDate: null,
+        salesman: null,
+        customerId: null,
+        drawer: null,
+        dispatchNoteRemark: null,
+        billingType: null,
+        truckRegistration: null,
+        documentType: null,
+        sellingUnit: null,
+        calculationType: null,
+        auditOpinion: null,
+        status: null,
+        saleOrderNo: null,
+        spare1: null,
+        spare2: null,
+        spare3: null,
+        spare4: null,
+        remark: null,
+        delFlag: null,
+        createBy: null,
+        createById: null,
+        createTime: null,
+        updateBy: null,
+        updateById: null,
+        updateTime: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加产品发货单";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getProductInvoice(id).then((response) => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改产品发货单";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateProductInvoice(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addProductInvoice(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal
+        .confirm('是否确认删除产品发货单编号为"' + ids + '"的数据项?')
+        .then(function () {
+          return delProductInvoice(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/ProductInvoice/export",
+        {
+          ...this.queryParams,
+        },
+        `ProductInvoice_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>