From ed3ce5c8f6e1f7ac1aad3218ab5e518fc95cdb0f Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期二, 10 九月 2024 10:26:54 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override
---
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet5.vue | 350 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 350 insertions(+), 0 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet5.vue b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet5.vue
new file mode 100644
index 0000000..d99358b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet5.vue
@@ -0,0 +1,350 @@
+<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 useUserInfoStore from "@/stores/userInfo";
+import {Bottom, Burger, Food} from "@element-plus/icons-vue";
+const company = companyInfo()
+const userStore = useUserInfoStore()
+const username = userStore.user.userName
+let dialogVisible = ref(false)
+
+
+let props = defineProps({
+ orderId:null
+})
+let productId=ref({
+
+})
+let data = ref({
+ order:{
+ processingNote:''
+ },
+ orderProductDetail:[]
+})
+let productIdData = ref({
+})
+const selectedValues = ref([])
+
+const grossNum = ref({
+ quantity: 0,
+ grossArea: 0,
+ perimeter: 0
+})
+const getData = () => {
+ request.post(`/order/printOrderProductGlassDetailMonolithic/${props.orderId}`,selectedValues.value).then(res => {
+ data.value= res.data
+ productIdData.value=data.value.orderDetail
+ data.value.orderDetail.forEach(item => {
+ item.productDetail.forEach(items => {
+ grossNum.value.quantity += getQuantity(items.orderGlassDetails)
+ grossNum.value.grossArea += getArea(items.orderGlassDetails)
+ grossNum.value.perimeter += getPerimeter(items.orderGlassDetails)
+ })
+
+
+ })
+ grossNum.value.quantity = parseFloat(grossNum.value.quantity.toFixed(2))
+ grossNum.value.grossArea = parseFloat(grossNum.value.grossArea.toFixed(2))
+ grossNum.value.perimeter = parseFloat(grossNum.value.perimeter.toFixed(2))
+
+
+
+ })
+}
+
+const handleChange = () => {
+
+ request.post(`/order/printOrderProductGlassDetailMonolithic/${props.orderId}`,selectedValues.value).then(res => {
+ grossNum.value.quantity=0
+ grossNum.value.grossArea=0
+ grossNum.value.perimeter=0
+ data.value= res.data
+ data.value.orderDetail.forEach(item => {
+ item.productDetail.forEach(items => {
+ grossNum.value.quantity += getQuantity(items.orderGlassDetails)
+ grossNum.value.grossArea += getArea(items.orderGlassDetails)
+ grossNum.value.perimeter += getPerimeter(items.orderGlassDetails)
+ })
+
+
+ })
+ grossNum.value.quantity = parseFloat(grossNum.value.quantity.toFixed(2))
+ grossNum.value.grossArea = parseFloat(grossNum.value.grossArea.toFixed(2))
+ grossNum.value.perimeter = parseFloat(grossNum.value.perimeter.toFixed(2))
+
+ })
+
+}
+
+const handleDoubleClick = () => {
+ dialogVisible.value=true
+}
+
+onMounted(() => {
+ getData()
+})
+
+const stringToJson = (productList) => {
+ productList.forEach(item => {
+ item.otherColumns = JSON.parse(item.otherColumns)
+ })
+}
+
+const getQuantity = (productList) => {
+ let quantity = 0
+ productList.forEach(item => {
+
+ quantity += item.quantity
+ })
+ return parseFloat(quantity.toFixed(2))
+
+}
+
+const getArea = (productList) => {
+ let area = 0
+ productList.forEach(item => {
+ area += item.gross_area
+ })
+ return parseFloat(area.toFixed(2))
+
+}
+
+const getPerimeter = (productList) => {
+ let perimeter = 0
+ productList.forEach(item => {
+ perimeter += parseFloat(item.perimeter)
+ })
+ return parseFloat(perimeter.toFixed(2))
+}
+
+const printSheet = () => {
+}
+
+
+
+
+defineExpose({
+ printSheet
+});
+</script>
+
+
+<template>
+
+ <div id="sheet" @dblclick="handleDoubleClick" >
+ <table style="border-style: none;" >
+ <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" >
+ <h3 style="margin-left: 25%">鐢熸垚浠诲姟鍗�(鍗曞搧)</h3>
+ </th>
+ <th colspan="2" style="text-align: center;font-weight: bold;">璁㈠崟缂栧彿锛�<span>{{ data.order.orderId }}</span></th>
+ </tr>
+ <tr>
+ <th style="text-align: left;border:none;font-weight: bold;font-size: 17px;" colspan="4">
+ 瀹㈡埛鍚嶇О锛�<span>{{ data.order.customerName }}</span></th>
+ <th style="text-align: left;border:none;font-weight: bold;font-size: 17px;" colspan="3">
+ 椤圭洰鍚嶇О锛�<span>{{ data.order.project }}</span></th>
+ <th style="text-align: left;border:none;font-weight: bold;font-size: 17px;" colspan="2">
+ 鍙戣揣鏃ユ湡锛�<span>{{ data.order.deliveryDate }}</span></th>
+ </tr>
+ <tr>
+ <th style="text-align: left;border:none;font-weight: bold;font-size: 17px;" colspan="7">
+ 閫佽揣鍦板潃锛�<span>{{ data.order.deliveryAddress }}</span></th>
+ <th style="text-align: left;border:none;font-weight: bold;font-size: 17px;" colspan="2">
+ 鑱旂郴鐢佃瘽锛�<span>{{ data.order.contactNumber }}</span></th>
+ </tr>
+
+ </thead>
+ <tr style="border-style: none">
+ <td colspan="9" style="border-style: none">
+ <table style="border-style: none;width: 100%;height: 100%">
+ <template v-for="(item, index) in data.orderDetail" :key="index" >
+ <thead>
+ <tr v-if="index===0">
+ <th style="width: 6%;font-weight: bold;">搴�</th>
+ <th style="width: 10%;font-weight: bold;" >妤煎眰缂栧彿</th>
+ <th style="width: 15%;font-weight: bold;" colspan="1">瀹�(寮ч暱)X楂�</th>
+ <th style="width: 20%;font-weight: bold;" colspan="1">鍒囧壊瀹�(寮ч暱)*楂�</th>
+ <th style="width: 10%;font-weight: bold;">鏁伴噺</th>
+ <th style="width: 10%;font-weight: bold;">闈㈢Н</th>
+ <th style="width: 10%;font-weight: bold;">鍛ㄩ暱</th>
+ <th style="width: 17%;font-weight: bold;" colspan="2">鍔犲伐瑕佹眰</th>
+ </tr>
+
+
+ </thead>
+ <tr style="border-style: none">
+ <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="9">
+ 浜у搧鍚嶇О:<span>{{item.productName}}</span>
+ </td>
+ </tr>
+ <template v-for="(items, index1) in item.productDetail" :key="index1" >
+ <tr style="border-style: none">
+ <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="9">
+ 鍗曠墖鍚嶇О:<span>{{items.detail}}</span>
+ </td>
+ </tr>
+ <tr class="day-in" v-for="(items2, index2) in items.orderGlassDetails" :key="index2">
+
+ <td>{{items2.order_number}}/{{items2.technology_number}}</td>
+ <td>{{items2.building_number}}</td>
+ <td colspan="1" style="font-size: 15px;font-weight: bold;" >{{items2.width}}x{{items2.height}}</td>
+ <td colspan="1" style="font-size: 15px;font-weight: bold;" >{{items2.child_width}}x{{items2.child_height}}/R={{items2.bend_radius}}</td>
+ <td>{{items2.quantity}}</td>
+ <td>{{items2.gross_area.toFixed(2)}}</td>
+ <td>{{parseFloat(items2.perimeter).toFixed(2)}}</td>
+ <td colspan="2">{{items2.processing_note}}</td>
+ </tr>
+ <tr class="day-in" >
+ <td style="font-size: 15px;font-weight: bold;" colspan="4">灏忚:</td>
+ <td>{{getQuantity(items.orderGlassDetails)}}</td>
+ <td>{{getArea(items.orderGlassDetails)}}</td>
+ <td>{{getPerimeter(items.orderGlassDetails)}}</td>
+ <td colspan="2"></td>
+ </tr>
+
+ </template>
+
+ </template>
+ <tr class="day-in">
+ <td style="font-size: 15px;font-weight: bold;" colspan="4">鍚堣:</td>
+ <td>{{grossNum.quantity}}</td>
+ <td>{{grossNum.grossArea}}</td>
+ <td>{{grossNum.perimeter}}</td>
+ <td colspan="2"></td>
+ </tr>
+ <tr class="day-in">
+ <td style="text-align: left;border-width: 0 0 0 0; border-style: solid; border-color: #d3dce6" colspan="9">
+ <template v-for="(item,index) in data.order.processingNote.split('\n')">
+ {{item}}
+ <br>
+ </template>
+ </td>
+ </tr>
+
+ <tfoot style="border: 0">
+ <!-- <el-row :gutter="24">
+ <el-col :span="4"><div style="font-size: 12px" class="bottom">鍒跺崟鍛橈細{{data.order.creator}}<span style="font-size: 10px"></span></div></el-col>
+ <el-col :span="6"><div style="font-size: 12px" class="bottom">鍒跺崟鏃ユ湡锛歿{data.order.createTime}}<span style="font-size: 10px"></span></div></el-col>
+ <el-col :span="4"><div style="font-size: 12px" class="bottom">瀹℃牳鍛橈細{{data.order.verifier}}</div></el-col>
+ <el-col :span="6"><div style="font-size: 12px" class="bottom">瀹℃牳鏃ユ湡锛歿{data.order.updateTime}}</div></el-col>
+ <el-col :span="4"><div style="font-size: 12px" class="bottom">鎵撳嵃浜猴細{{username}}</div></el-col>
+
+ </el-row>-->
+ <tr class="day-in" style="border: 0;">
+ <td colspan="9" style="border: 0;">
+ <div style="display:flex;">
+ <div style="width: 15%">鍒跺崟鍛橈細{{ data.order.creator }}</div>
+ <div style="width: 25%">鍒跺崟鏃ユ湡锛歿{ data.order.createTime }}</div>
+ <div style="width: 15%">瀹℃牳鍛橈細{{ data.order.verifier }}</div>
+ <div style="width: 25%">瀹℃牳鏃ユ湡锛歿{ data.order.updateTime }}</div>
+ <div style="width: 15%">鎵撳嵃浜猴細{{ username }}</div>
+ </div>
+
+
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+ </td>
+ </tr>
+
+
+
+
+
+
+ </table>
+
+ <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;
+}
+table {
+ border-collapse: collapse;
+ width: 100%;
+
+}
+td > table {
+ margin: 0;
+ padding: 0;
+}
+@media print {
+ @page {
+ margin: 5mm 5mm 10mm 5mm;
+ }
+}
+
+
+
+
+</style>
\ No newline at end of file
--
Gitblit v1.8.0