From f7a2fcdda7f1120498c5c5f75c5a99955fc54b43 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期二, 16 十二月 2025 16:54:09 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue |  377 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 377 insertions(+), 0 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue
new file mode 100644
index 0000000..2ea2710
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue
@@ -0,0 +1,377 @@
+<script setup>
+import request from "@/utils/request"
+import {computed, onMounted, ref} from "vue"
+import PrintFoot from "@/components/sd/order/PrintFoot.vue"
+import companyInfo from "@/stores/sd/companyInfo"
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {add,multiply,multiplyAuto,divideAuto} from '@/utils/decimal';
+const company = companyInfo()
+let produceList = ref([])
+let delivery = ref([])
+let otherMoney = []
+let otherMoney1 = []
+let money = ref("")
+let dialogVisible = ref(false)
+let otherMoneys = 0
+let sumMoney = 0
+let takeCare = "娉ㄦ剰:璇峰Ε鍠勪繚绠″ソ鎴戝徃鐨勭幓鐠冩灦锛屽鏈変涪澶辨垨鎹熷潖锛屾寜1500鍏冨彧璧斿伩銆傝阿璋㈤厤鍚�!"
+let remark = "澶囨敞:鏈壒鐜荤拑涓轰紭绛夊悎鏍煎搧锛岃鍦ㄥ嵏璐ф椂,褰撻潰娑堢偣楠屾敹銆佸鏈夎川閲忛棶棰樺湪涓�鍛ㄥ唴涓庢湰鍏徃鑱旂郴,鍚﹀垯姒備笉璐熻矗锛�"
+
+
+
+let props = defineProps({
+  orderId:null
+})
+const form = ref({
+})
+const selectedValues = ref([])
+let productIdData = ref({
+})
+const getData = () => {
+  if(props.orderId===null  || props.orderId===undefined || props.orderId===''){
+    return
+  }
+  form.value.orderId=props.orderId
+
+  request.post(`/delivery/getSelectOrderPrinting/null`,form.value).then((res) => {
+    if(res.code==200){
+      productIdData.value=deepClone(res.data.data)
+      produceList.value = deepClone(res.data.data)
+
+      delivery.value=deepClone(res.data.delivery)
+      money.value=deepClone(res.data.money)
+      produceList.value.forEach(item => {
+        sumMoney+=item.DeliveryDetail.grossAmount
+      })
+      otherMoney1=[]
+      otherMoney=deepClone(res.data.otherMoney)
+      for(let i=0;i<otherMoney.length;i++){
+        if(otherMoney[i].DeliveryDetailOtherMoney.monery!=null){
+          otherMoneys+=otherMoney[i].DeliveryDetailOtherMoney.monery
+          if(otherMoney1.length===0){
+            otherMoney1.push(otherMoney[i])
+          }
+          else{
+            for(let s=0;s<otherMoney1.length;s++){
+              if(otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){
+                otherMoney1[s].DeliveryDetailOtherMoney.count=add(otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count)
+                otherMoney1[s].DeliveryDetailOtherMoney.monery =add(otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery)
+                break
+              }
+              if(s+1===otherMoney1.length){
+                otherMoney1.push(otherMoney[i])
+                break
+              }
+            }
+
+          }
+        }
+
+      }
+      /*let otherMoney2=[]
+      otherMoney.value.forEach(item => {
+        if(item.DeliveryDetailOtherMoney.monery!=null){
+          otherMoneys+=item.DeliveryDetailOtherMoney.monery
+          let otherMoney3
+          if(otherMoney2.length===0){
+            console.log(item)
+            otherMoney3=item
+            console.log(otherMoney3)
+            otherMoney2.push(otherMoney3)
+            console.log(otherMoney2)
+          }else{
+            console.log(otherMoney2)
+            otherMoney2.forEach(items=>{
+
+              if(item.DeliveryDetailOtherMoney.alias===items.DeliveryDetailOtherMoney.alias){
+                items.DeliveryDetailOtherMoney.count+=item.DeliveryDetailOtherMoney.count
+                items.DeliveryDetailOtherMoney.monery +=item.DeliveryDetailOtherMoney.monery
+                otherMoney2.push(items)
+                console.log(11)
+              }else{
+                otherMoney2.push(item)
+                console.log(22)
+              }
+
+            })
+            console.log(otherMoney2)
+          }
+
+
+        }
+
+      })*/
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+}
+
+const handleChange = () => {
+  if(selectedValues.value.length===0){
+    selectedValues.value=null;
+  }
+
+  request.post(`/delivery/getSelectOrderPrinting/${selectedValues.value}`,form.value).then((res) => {
+    if(res.code==200){
+      sumMoney=0
+      produceList.value = deepClone(res.data.data)
+      delivery.value=deepClone(res.data.delivery)
+      money.value=deepClone(res.data.money)
+      produceList.value.forEach(item => {
+        sumMoney+=item.DeliveryDetail.grossAmount
+      })
+      otherMoney1=[]
+      otherMoney=deepClone(res.data.otherMoney)
+      for(let i=0;i<otherMoney.length;i++){
+        if(otherMoney[i].DeliveryDetailOtherMoney.monery!=null){
+          otherMoneys+=otherMoney[i].DeliveryDetailOtherMoney.monery
+          if(otherMoney1.length===0){
+            otherMoney1.push(otherMoney[i])
+          }
+          else{
+            for(let s=0;s<otherMoney1.length;s++){
+              if(otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){
+                otherMoney1[s].DeliveryDetailOtherMoney.count=add(otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count)
+                otherMoney1[s].DeliveryDetailOtherMoney.monery =add(otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery)
+                break
+              }
+              if(s+1===otherMoney1.length){
+                otherMoney1.push(otherMoney[i])
+                break
+              }
+            }
+
+          }
+        }
+
+      }
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+
+}
+
+onMounted(() => {
+  getData()
+})
+
+const handleDoubleClick = () => {
+  dialogVisible.value=true
+}
+
+
+
+
+
+
+
+
+</script>
+
+
+<template>
+  <div id="sheet" @dblclick="handleDoubleClick">
+    <table border="1" >
+      <thead>
+      <tr class="title-s">
+        <th colspan="9">
+          <h1>
+            {{company.companyName}}
+          </h1>
+        </th>
+      </tr>
+
+      <tr  class="title-s">
+        <th colspan="2"></th>
+        <th colspan="5">
+          <h4 v-if="!company.showDeliveryCreator" >閲戝崕甯備箰鍔ㄦ櫤鑳界鎶�鏈夐檺鍏徃</h4>
+          <h3 >閿�鍞‘璁ゅ崟</h3>
+
+        </th>
+        <th colspan="2" style="text-align: left;font-weight: bold;" v-if="company.showDeliveryCreator">鍙戣揣鍗曞彿锛�<span>{{delivery.deliveryId}}</span></th>
+        <th colspan="2" style="text-align: left;font-weight: bold;" v-else></th>
+      </tr>
+      <tr>
+        <th style="text-align: left;border:none;font-weight: bold;" colspan="4">瀹㈡埛鍚嶇О锛�<span>{{delivery.customerName}}</span></th>
+        <th style="text-align: left;border:none;font-weight: bold;" colspan="3">椤圭洰鍚嶇О锛�<span>{{delivery.project}}</span></th>
+        <th style="text-align: left;border:none;font-weight: bold;" colspan="2">鑱旂郴浜猴細<span>{{delivery.contacts}}</span></th>
+      </tr>
+      <tr>
+        <th style="text-align: left;border:none;font-weight: bold;" colspan="4">閫佽揣鍦板潃锛�<span>{{delivery.deliveryAddress}}</span></th>
+        <th style="text-align: left;border:none;font-weight: bold;" colspan="3">閫佽揣鏃堕棿锛�<span>{{delivery.deliveryDate}}</span></th>
+        <th style="text-align: left;border:none;font-weight: bold;" colspan="2">鑱旂郴鐢佃瘽锛�<span>{{delivery.contactNumber}}</span></th>
+      </tr>
+      <tr>
+        <th style="width: 6%;">搴忓彿</th>
+        <th style="width: 15%;">妤煎眰缂栧彿</th>
+        <th style="width: 17%;" colspan="1">瀹絏楂�</th>
+        <th style="width: 10%;">鏁伴噺</th>
+        <th style="width: 10%;">鎬婚潰绉�</th>
+        <th style="width: 10%;">鍗曚环</th>
+        <th style="width: 12%;">閲戦</th>
+        <th v-if="company.showDeliveryCreator" style="width: 20%;" colspan="2">鍔犲伐瑕佹眰</th>
+        <th v-if="!company.showDeliveryCreator" style="width: 10%;" colspan="1">鍔犲伐瑕佹眰</th>
+        <th v-if="!company.showDeliveryCreator" style="width: 10%;" colspan="1">澶囨敞</th>
+      </tr>
+      </thead>
+      <template v-for="(item, index) in produceList" :key="index" >
+        <tr>
+          <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="4">浜у搧鍚嶇О:
+            <span v-if="company.productName!=='product_abbreviation'">{{item.productName}}</span>
+            <span v-else >{{item.remarks}}</span>
+          </td>
+          <td v-if="company.showDeliveryCreator" style="font-size: 15px;font-weight: bold;text-align: left" colspan="2">璁㈣揣鏃ユ湡:<span>{{delivery.contractId}}</span></td>
+          <td v-else style="font-size: 15px;font-weight: bold;text-align: left" colspan="2"></td>
+          <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="3">璁㈠崟缂栧彿:<span>{{item.DeliveryDetail.orderId}}</span></td>
+        </tr>
+
+        <tr class="day-in" v-for="(items, index1) in item.DeliveryDetailList" :key="index1">
+          <td>{{items.order_number}}</td>
+          <td>{{items.buildingNumber}}</td>
+          <td colspan="1" style="font-size: 15px;font-weight: bold;" v-if="company.showDeliveryCreator&&items.other_columns!=null&&(JSON.parse(items.other_columns).S02!=null)">{{JSON.parse(items.other_columns).S02}}</td>
+          <td colspan="1" style="font-size: 15px;font-weight: bold;" v-else>{{items.width}}x{{items.height}}</td>
+          <td>{{items.quantity}}</td>
+          <td>{{items.compute_gross_area}}</td>
+          <td>{{items.price}}</td>
+          <td>{{items.gross_amount}}</td>
+          <td v-if="company.showDeliveryCreator" colspan="2">{{items.processingNote}}</td>
+          <td v-if="!company.showDeliveryCreator" >{{items.processingNote}}</td>
+          <td v-if="!company.showDeliveryCreator" >{{items.remarks}}</td>
+        </tr>
+        <tr class="day-in" >
+          <td style="font-size: 15px;font-weight: bold;" colspan="3">灏忚:</td>
+          <td>{{item.DeliveryDetail.quantity}}</td>
+          <td>{{item.DeliveryDetail.area}}</td>
+          <td></td>
+          <td>{{item.DeliveryDetail.grossAmount}}</td>
+          <td colspan="2"></td>
+        </tr>
+
+      </template>
+      <tr class="day-in">
+        <td style="font-size: 15px;font-weight: bold;" colspan="3">鍚堣:</td>
+        <td>{{delivery.quantity}}</td>
+        <td>{{delivery.area}}</td>
+        <td></td>
+        <td>{{parseFloat(sumMoney.toFixed(2))}}</td>
+        <td colspan="2"></td>
+      </tr>
+      <tr class="day-in">
+        <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6" colspan="4">
+          <div style="display: flex;font-size: 10px;text-align: center;">
+            <span style="width: 25%">鍔犲伐璐圭敤</span>&nbsp;
+            <span  style="width: 25%">鍗曚环</span>&nbsp;
+            <span  style="width: 25%">鏁伴噺</span>&nbsp;
+            <span  style="width: 25%">閲戦</span>
+          </div>
+        </td>
+        <td style="text-align: left;border:none;font-size: 15px;font-weight: bold;" colspan="5">鎬婚噾棰�:&nbsp;&nbsp;&nbsp;&nbsp;{{delivery.money}}</td>
+      </tr>
+      <tr class="day-in">
+        <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6;" colspan="4" >
+          <div style="display: flex;font-size: 10px;text-align: center" v-for="(item, index2) in otherMoney1" :key="index2">
+            <span style="width: 25%">{{item.DeliveryDetailOtherMoney.alias}}</span>&nbsp;
+            <span  style="width: 25%">{{item.DeliveryDetailOtherMoney.price}}</span>&nbsp;
+            <span  style="width: 25%">{{item.DeliveryDetailOtherMoney.count}}</span>&nbsp;
+            <span  style="width: 25%">{{parseFloat(item.DeliveryDetailOtherMoney.monery).toFixed(2)}}</span>
+          </div>
+        </td>
+        <td style="text-align: left;border:none;font-size: 15px;font-weight: bold;" colspan="5">澶у啓閲戦:&nbsp;&nbsp;&nbsp;&nbsp;{{money}}</td>
+      </tr>
+
+    </table>
+    <el-row :gutter="20">
+      <el-col :span="4">鍒跺崟鍛橈細<span style="font-size: 10px">{{delivery.creator}}</span></el-col>
+      <el-col :span="4">鍒跺崟鏃ユ湡锛�<span style="font-size: 10px">{{delivery.createTime}}</span></el-col>
+      <el-col v-if="company.showDeliveryCreator" :span="4">鍙戣揣鍛橈細</el-col>
+      <el-col v-if="company.showDeliveryCreator" :span="3">鍙告満锛�</el-col>
+      <el-col v-if="company.showDeliveryCreator" :span="4">瀹㈡埛绛惧瓧锛�</el-col>
+      <el-col v-if="company.showDeliveryCreator" :span="4">绛炬敹鏃ユ湡锛�</el-col>
+
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px;" v-if="company.showDeliveryCreator">
+      <el-col :span="4"><div class="bottom">鏋跺瓙&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;鍙�</div></el-col>
+      <el-col :span="20"><div class="bottom">{{takeCare}}</div></el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px;" v-if="company.showDeliveryCreator">
+      <el-col :span="24"><div class="bottom">{{remark}}</div></el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px;" v-if="!company.showDeliveryCreator">
+<!--      <el-input
+          v-model=""
+          autosize
+          type="textarea"
+          placeholder="Please input"
+      />-->
+      <el-col :span="24"><div class="bottom">{{delivery.processingNote}}</div></el-col>
+    </el-row>
+
+    <el-dialog v-model="dialogVisible" style="width: 40%;height: 20%;margin-top: 10%" >
+      <el-select v-model="selectedValues" style="width: 100%" @change="handleChange" multiple  placeholder="璇烽�夋嫨">
+        <el-option
+            v-for="item in productIdData"
+            :key="item"
+            :label='item.productId+"   "+item.productName'
+            :value="item.productId">
+        </el-option>
+      </el-select>
+    </el-dialog>
+
+  </div>
+
+
+</template>
+
+
+
+<style scoped>
+h1,h3{
+  left:0;
+  right:0;
+  top:0;
+  bottom:0;
+  margin:auto;
+}
+h1{
+  font-size: 1.5rem;
+}
+h3{
+  font-size: 1.2rem;
+  font-weight: bolder;
+}
+
+
+table{
+  border-collapse: collapse;
+  width: 100%;
+  text-align: center;
+}
+tr,td,th{
+  border: 1px solid black;
+}
+
+th,.no-change-row {
+  white-space: nowrap;
+}
+
+.title-1{
+  width: 76px;
+}
+.title-s,.title-s th{
+  border:0
+}
+
+.hr-border{
+  height: 2px;
+  width: 100%;
+  background-color: black;
+  color: black;
+}
+
+
+</style>
\ No newline at end of file

--
Gitblit v1.8.0