From 79736a1cdb390e9036375f08a5aa6c8743820abb Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期日, 22 十二月 2024 16:29:33 +0800
Subject: [PATCH] 订单打印优化

---
 src/views/order/index.vue |  306 ++++++++++++++++++++++++++------------------------
 1 files changed, 161 insertions(+), 145 deletions(-)

diff --git a/src/views/order/index.vue b/src/views/order/index.vue
index 05f2131..ca46952 100644
--- a/src/views/order/index.vue
+++ b/src/views/order/index.vue
@@ -1,166 +1,183 @@
 <template>
-  <div class="app-container">
-    <div style="display: flex; justify-content: space-between">
-      <div style="width: 300px">
-        <el-input
-          placeholder="鎸夊鍚嶃�佽绋嬨�佺數璇濇悳绱�"
-          v-model="data.keyword"
-          class="input-with-select"
-          size="small"
-        >
-          <el-button
-            slot="append"
-            icon="el-icon-search"
-            @click="handleClick"
-          ></el-button>
-        </el-input>
-      </div>
-    </div>
-    <div style="height: calc(100vh - 208px)">
-      <el-table
-        v-loading="listLoading"
-        :data="list"
-        element-loading-text="Loading"
-        fit
-        height="100%"
-      >
-        <el-table-column label="璁㈠崟鍙�" width="200" prop="number">
-        </el-table-column>
-        <el-table-column label="瀛﹀憳" prop="playerBaseInfo.name">
-        </el-table-column>
-        <el-table-column label="鐢佃瘽" prop="mobile"> </el-table-column>
-        <el-table-column label="璐拱鏂瑰紡" width="200" prop="payType">
-          <template slot-scope="scope">
-            {{ scope.row.payType == "DIRECT" ? "鏀惰垂褰曞叆" : "鍟嗗煄璐叆" }}
-          </template>
-        </el-table-column>
-        <el-table-column label="鎬讳环" width="80" prop="originAmt">
-        </el-table-column>
-        <el-table-column label="鎶樻墸" width="80" prop="discount">
-        </el-table-column>
-        <el-table-column label="瀹為檯缂磋垂" width="80" prop="amt">
-        </el-table-column>
-        <el-table-column label="璁㈠崟鏃堕棿" width="200" prop="createTime">
-        </el-table-column>
-        <el-table-column label="鎿嶄綔" width="200">
-          <template slot-scope="scope">
-            <el-link
-              @click="handlePrint(scope.row)"
-              type="primary"
-              :underline="false"
-              >鎵撳嵃鏀舵嵁</el-link
+    <div class="app-container">
+        <div style="display: flex; justify-content: space-between">
+            <div style="width: 300px">
+                <el-input
+                    placeholder="鎸夊鍚嶃�佽绋嬨�佺數璇濇悳绱�"
+                    v-model="data.keyword"
+                    class="input-with-select"
+                    size="small"
+                >
+                    <el-button
+                        slot="append"
+                        icon="el-icon-search"
+                        @click="handleClick"
+                    ></el-button>
+                </el-input>
+            </div>
+        </div>
+        <div style="height: calc(100vh - 208px)">
+            <el-table
+                v-loading="listLoading"
+                :data="list"
+                element-loading-text="Loading"
+                fit
+                height="100%"
             >
-          </template>
-        </el-table-column>
-      </el-table>
+                <el-table-column label="璁㈠崟鍙�" width="200" prop="number">
+                </el-table-column>
+                <el-table-column label="瀛﹀憳" prop="playerBaseInfo.name">
+                </el-table-column>
+                <el-table-column label="鐢佃瘽" prop="mobile"> </el-table-column>
+                <el-table-column label="璐拱鏂瑰紡" width="200" prop="payType">
+                    <template slot-scope="scope">
+                        {{
+                            scope.row.payType == 'DIRECT'
+                                ? '鏀惰垂褰曞叆'
+                                : '鍟嗗煄璐叆'
+                        }}
+                    </template>
+                </el-table-column>
+                <el-table-column label="鎬讳环" width="80" prop="originAmt">
+                </el-table-column>
+                <el-table-column label="鎶樻墸" width="80" prop="discount">
+                </el-table-column>
+                <el-table-column label="瀹為檯缂磋垂" width="80" prop="amt">
+                </el-table-column>
+                <el-table-column label="璁㈠崟鏃堕棿" width="200" prop="createTime">
+                </el-table-column>
+                <el-table-column label="鎿嶄綔" width="200">
+                    <template slot-scope="scope">
+                        <el-link
+                            @click="handlePrint(scope.row)"
+                            type="primary"
+                            :underline="false"
+                            >鎵撳嵃鏀舵嵁</el-link
+                        >
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+        <div>
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :current-page="data.pageIn.index + 1"
+                :page-sizes="[10, 20, 30, 40]"
+                :page-size="data.pageIn.size"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="total"
+            >
+            </el-pagination>
+        </div>
     </div>
-    <div>
-      <el-pagination
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-        :current-page="data.pageIn.index + 1"
-        :page-sizes="[10, 20, 30, 40]"
-        :page-size="data.pageIn.size"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total"
-      >
-      </el-pagination>
-    </div>
-  </div>
 </template>
 
 <script>
-import { getData } from "@/api/order";
+import { getData, findPlayerAccByOrderId } from "@/api/order";
 import { printHtml } from "@/utils/print";
 import { convertCurrency } from "@/utils/ruoyi";
 
 export default {
-  filters: {
-    statusFilter(status) {
-      const statusMap = {
-        published: "success",
-        draft: "gray",
-        deleted: "danger",
-      };
-      return statusMap[status];
-    },
-  },
-  data() {
-    return {
-      dateRange: [],
-      list: null,
-      listLoading: true,
-      total: 0,
-      data: {
-        staffId: JSON.parse(localStorage.getItem("selectStaff")).id,
-        keyword: "",
-        pageIn: {
-          //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
-          index: 0, //蹇呴��
-          size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
-          sorts: {
-            name: "createTime", //鎺掑簭瀛楁鍚嶇О
-            direction: "DESC", //鎺掑簭鏂瑰悜
-          },
+    filters: {
+        statusFilter(status) {
+            const statusMap = {
+                published: "success",
+                draft: "gray",
+                deleted: "danger",
+            };
+            return statusMap[status];
         },
-      },
-      dialogVisible: false,
-    };
-  },
-  created() {
-    this.fetchData();
-  },
-  methods: {
-    reloadData() {
-      this.dialogVisible = false;
-      this.fetchData();
     },
-    fetchData() {
-      this.listLoading = true;
-      getData(this.data).then((response) => {
-        this.list = response.data.findOrderByOrgId.ls;
-        this.total = response.data.findOrderByOrgId.pageOut.total;
-        this.listLoading = false;
-      });
+    data() {
+        return {
+            dateRange: [],
+            list: null,
+            listLoading: true,
+            total: 0,
+            data: {
+                staffId: JSON.parse(localStorage.getItem("selectStaff")).id,
+                keyword: "",
+                pageIn: {
+                    //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
+                    index: 0, //蹇呴��
+                    size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
+                    sorts: {
+                        name: "createTime", //鎺掑簭瀛楁鍚嶇О
+                        direction: "DESC", //鎺掑簭鏂瑰悜
+                    },
+                },
+            },
+            dialogVisible: false,
+        };
     },
-    handleClick() {
-      this.fetchData();
+    created() {
+        this.fetchData();
     },
-    handleSizeChange(val) {
-      this.data.pageIn.size = val;
-      this.fetchData();
-    },
-    handleCurrentChange(val) {
-      this.data.pageIn.index = val - 1;
-      this.fetchData();
-    },
-    handlePrint(row) {
-      const orgName = JSON.parse(localStorage.getItem("selectStaff")).org.name;
+    methods: {
+        reloadData() {
+            this.dialogVisible = false;
+            this.fetchData();
+        },
+        fetchData() {
+            this.listLoading = true;
+            getData(this.data).then((response) => {
+                this.list = response.data.findOrderByOrgId.ls;
+                this.total = response.data.findOrderByOrgId.pageOut.total;
+                this.listLoading = false;
+            });
+        },
+        handleClick() {
+            this.fetchData();
+        },
+        handleSizeChange(val) {
+            this.data.pageIn.size = val;
+            this.fetchData();
+        },
+        handleCurrentChange(val) {
+            this.data.pageIn.index = val - 1;
+            this.fetchData();
+        },
+        handlePrint(row) {
 
-      let detail = "";
-      row.details.forEach((o) => {
-        detail += `<tr>
+            if (row.payType == "DIRECT") {
+                findPlayerAccByOrderId({ 'orderId': row.id }).then(res => {
+                    if (res.data.findPlayerAccByOrderId.length > 0) {
+                        row.staffName = res.data.findPlayerAccByOrderId[0].staffName
+                        row.message = res.data.findPlayerAccByOrderId[0].description
+                    }
+                    this.doPrint(row)
+                })
+            }
+            else {
+                this.doPrint(row)
+            }
+
+        },
+        doPrint(row) {
+            const orgName = JSON.parse(localStorage.getItem("selectStaff")).org.name;
+            let detail = "";
+            row.details.forEach((o) => {
+                detail += `<tr>
                 <td> ${o.voucherName || o.goodsName}</td>
                 <td>${o.qty} </td>
-                <td> ${o.giftQty}</td>
+                <td> ${o.giftQty || 0}</td>
                 <td>${o.amt}</td>
                 <td>${row.saleStaff.name} </td>
             </tr>`;
-      });
+            });
 
-      let printData = `<div style="display: flex; justify-content: center;">
+            let printData = `<div style="display: flex; justify-content: center;">
     <div style="margin-top: 50px; width: 600px;line-height: 2;">
         <h2 style="text-align: center;">${orgName}缂磋垂鏀舵嵁 </h2>
         <div> 璁㈠崟鍙凤細${row.number}</div>
         <div class="div-2-column">
-            <div> 瀛﹀憳濮撳悕锛�<u>${
-              row.playerBaseInfo ? row.playerBaseInfo.name : ""
-            }</u> </div>
+            <div> 瀛﹀憳濮撳悕锛�<u>${row.playerBaseInfo ? row.playerBaseInfo.name : ""
+                }</u> </div>
             <div>鑱旂郴鐢佃瘽锛�<u>${row.mobile || "鏈綍鍏�"} </u></div>
         </div>
-        <div> 璁㈠崟绫诲瀷锛�${
-          row.payType == "DIRECT" ? "鏀惰垂褰曞叆" : "鍟嗗煄璐叆"
-        } </div>
+        <div> 璁㈠崟绫诲瀷锛�${row.payType == "DIRECT" ? "鏀惰垂褰曞叆" : "鍟嗗煄璐叆"
+                } </div>
 
         <div class="m-h2"> 璇剧▼淇℃伅</div>
         <table class="txt-center" width="100%" border="1" cellpadding="2" cellspacing="0">
@@ -183,25 +200,24 @@
                 <td>&nbsp;鎶樻墸/璧犻�侀噾棰濓細${row.discount}</td>
             </tr>
             <tr>
-                <td>&nbsp;瀹炵即閲戦锛�${convertCurrency(row.amt)}锛埪�${
-        row.amt
-      }锛�</td>
+                <td>&nbsp;瀹炵即閲戦锛�${convertCurrency(row.amt)}锛埪�${row.amt
+                }锛�</td>
             </tr>
         </table>
         <div>&nbsp;澶囨敞锛�${row.message || ""} </div>
         <br>
         <br>
         <div class="div-2-column">
-            <div> 缁忓姙浜猴細${row.buyer.name}  </div>
+            <div> 缁忓姙浜猴細${row.staffName || ''}  </div>
             <div>缁忓姙鏃ユ湡锛�${row.createTime} </div>
         </div>
     </div>
 </div>`;
-      printHtml(printData);
+            printHtml(printData);
+        },
+        showCreate() {
+            this.$refs.studentCreate.showDialog();
+        },
     },
-    showCreate() {
-      this.$refs.studentCreate.showDialog();
-    },
-  },
 };
 </script>

--
Gitblit v1.8.0