From 5d51aeded717c667a22096174168e4e5e59bde39 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 22 八月 2025 15:38:57 +0800
Subject: [PATCH] 1.来票登记开发联调

---
 src/pages/procurementManagement/procurementLedger/view.vue |  287 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 287 insertions(+), 0 deletions(-)

diff --git a/src/pages/procurementManagement/procurementLedger/view.vue b/src/pages/procurementManagement/procurementLedger/view.vue
new file mode 100644
index 0000000..174b8ae
--- /dev/null
+++ b/src/pages/procurementManagement/procurementLedger/view.vue
@@ -0,0 +1,287 @@
+<template>
+  <view class="account-view">
+    <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
+		<PageHeader title="鍙拌处璇︽儏" @back="goBack" />
+
+    <!-- 鍩烘湰淇℃伅灞曠ず -->
+    <view class="info-section">
+      <view class="section-title">鍩烘湰淇℃伅</view>
+      <view class="info-grid">
+        <view class="info-item">
+          <text class="info-label">閲囪喘鍚堝悓鍙�</text>
+          <text class="info-value">{{ form.purchaseContractNumber }}</text>
+        </view>
+        <view class="info-item">
+          <text class="info-label">閿�鍞悎鍚屽彿</text>
+          <text class="info-value">{{ form.salesContractNo }}</text>
+        </view>
+        <view class="info-item">
+          <text class="info-label">渚涘簲鍟嗗悕绉�</text>
+          <text class="info-value">{{ form.supplierName }}</text>
+        </view>
+        <view class="info-item">
+          <text class="info-label">椤圭洰鍚嶇О</text>
+          <text class="info-value">{{ form.projectName }}</text>
+        </view>
+        <view class="info-item">
+          <text class="info-label">浠樻鏂瑰紡</text>
+          <text class="info-value">{{ form.paymentMethod }}</text>
+        </view>
+        <view class="info-item">
+          <text class="info-label">褰曞叆浜�</text>
+          <text class="info-value">{{ form.recorderName }}</text>
+        </view>
+        <view class="info-item">
+          <text class="info-label">褰曞叆鏃ユ湡</text>
+          <text class="info-value">{{ form.entryDate }}</text>
+        </view>
+      </view>
+    </view>
+
+    <!-- 浜у搧淇℃伅灞曠ず -->
+    <view class="product-section" v-if="productData && productData.length > 0">
+      <view class="section-title">浜у搧淇℃伅</view>
+      <view class="product-card" v-for="(product, idx) in productData" :key="idx">
+        <view class="product-header">
+          <view class="product-title">
+            <van-icon name="description" color="#2979ff" size="15" />
+            <text class="product-productCategory">浜у搧 {{ idx + 1 }}</text>
+          </view>
+        </view>
+        
+        <view class="product-info">
+          <view class="info-grid">
+            <view class="info-item">
+              <text class="info-label">浜у搧澶х被</text>
+              <text class="info-value">{{ product.productCategory }}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">瑙勬牸鍨嬪彿</text>
+              <text class="info-value">{{ product.specificationModel }}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">鍗曚綅</text>
+              <text class="info-value">{{ product.unit }}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">绋庣巼(%)</text>
+              <text class="info-value">{{ product.taxRate }}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">鍚◣鍗曚环(鍏�)</text>
+              <text class="info-value highlight">{{ product.taxInclusiveUnitPrice }}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">鏁伴噺</text>
+              <text class="info-value highlight">{{ product.quantity }}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">鍚◣鎬讳环(鍏�)</text>
+              <text class="info-value highlight">{{ product.taxInclusiveTotalPrice }}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">涓嶅惈绋庢�讳环(鍏�)</text>
+              <text class="info-value highlight">{{ product.taxExclusiveTotalPrice }}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">鍙戠エ绫诲瀷</text>
+              <text class="info-value">{{ product.invoiceType }}</text>
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <!-- 鏃犱骇鍝佷俊鎭彁绀� -->
+    <view class="no-product" v-else>
+      <text>鏆傛棤浜у搧淇℃伅</text>
+    </view>
+  </view>
+</template>
+
+<script setup>
+import { onMounted, ref } from 'vue';
+import {getPurchaseById} from "@/api/procurementManagement/procurementLedger";
+
+// 琛ㄥ崟鏁版嵁
+const form = ref({
+  id: '',
+  salesContractNo: '',
+  customerContractNo: '',
+  customerId: '',
+  customerName: '',
+  projectName: '',
+  executionDate: '',
+  paymentMethod: '',
+  entryPerson: '',
+  entryPersonName: '',
+  entryDate: '',
+  salesman: ''
+});
+
+// 浜у搧鏁版嵁
+const productData = ref([]);
+
+// 缂栬緫鏁版嵁
+const editData = ref(null);
+
+// 杩斿洖涓婁竴椤�
+const goBack = () => {
+  // 娓呯悊鏈湴瀛樺偍鐨勬暟鎹�
+  uni.removeStorageSync('editData');
+  uni.navigateBack();
+};
+
+// 濉厖琛ㄥ崟鏁版嵁
+const fillFormData = () => {
+  if (!editData.value) return;
+  
+  // 鑾峰彇瀹屾暣鐨勪骇鍝佷俊鎭�
+	getPurchaseById({ id: editData.value.id, type: 2 }).then((res) => {
+    productData.value = res.productData || [];
+		form.value = {...res}
+  });
+};
+
+onMounted(() => {
+  // 鑾峰彇缂栬緫鏁版嵁骞跺~鍏呰〃鍗�
+  const editDataStr = uni.getStorageSync('editData');
+  if (editDataStr) {
+    try {
+      editData.value = JSON.parse(editDataStr);
+      // 浣跨敤 nextTick 纭繚鏁版嵁鍔犺浇瀹屾垚鍚庡啀濉厖
+      setTimeout(() => {
+        fillFormData();
+      }, 100);
+    } catch (error) {
+      console.error('瑙f瀽缂栬緫鏁版嵁澶辫触:', error);
+    }
+  }
+});
+</script>
+
+<style scoped lang="scss">
+.account-view {
+  min-height: 100vh;
+  background: #f8f9fa;
+  padding-bottom: 2rem;
+}
+
+.header {
+  display: flex;
+  align-items: center;
+  background: #fff;
+  padding: 1rem 1.25rem;
+  border-bottom: 0.0625rem solid #f0f0f0;
+  position: sticky;
+  top: 0;
+  z-index: 100;
+  /* 鍏煎 iOS 鍒樻捣/鐏靛姩宀涘畨鍏ㄥ尯 */
+  padding-top: env(safe-area-inset-top);
+}
+
+.title {
+  flex: 1;
+  text-align: center;
+  font-size: 1.125rem;
+  font-weight: 600;
+  color: #333;
+}
+
+.info-section {
+  background: #fff;
+  margin: 1rem;
+  padding: 1rem;
+  border-radius: 0.5rem;
+  box-shadow: 0 0.125rem 0.5rem rgba(0,0,0,0.04);
+}
+
+.section-title {
+  font-size: 1rem;
+  font-weight: 600;
+  color: #333;
+  margin-bottom: 1rem;
+  padding-bottom: 1rem;
+  border-bottom: 0.0625rem solid #e8e8e8;
+}
+
+.info-grid {
+  display: grid;
+  grid-template-columns: 1fr 1fr;
+  gap: 0.75rem;
+}
+
+.info-item {
+  display: flex;
+  flex-direction: column;
+  gap: 0.25rem;
+}
+
+.info-label {
+  font-size: 0.75rem;
+  color: #666;
+  font-weight: 400;
+}
+
+.info-value {
+  font-size: 0.875rem;
+  color: #333;
+  font-weight: 500;
+}
+
+.info-value.highlight {
+  color: #2979ff;
+  font-weight: 600;
+}
+
+.product-section {
+  background: #fff;
+  margin: 1rem;
+  padding: 1rem;
+  border-radius: 0.5rem;
+  box-shadow: 0 0.125rem 0.5rem rgba(0,0,0,0.04);
+}
+
+.product-card {
+  background: #f8f9fa;
+  border-radius: 0.5rem;
+  padding: 1rem;
+  margin-bottom: 1rem;
+}
+
+.product-card:last-child {
+  margin-bottom: 0;
+}
+
+.product-header {
+  display: flex;
+  align-items: center;
+  padding-bottom: 0.75rem;
+  border-bottom: 0.0625rem solid #e8e8e8;
+  margin-bottom: 1rem;
+}
+
+.product-title {
+  display: flex;
+  align-items: center;
+  gap: 0.5rem;
+}
+
+.product-productCategory {
+  font-size: 0.875rem;
+  font-weight: 500;
+  color: #333;
+}
+
+.product-info .info-grid {
+  grid-template-columns: 1fr 1fr;
+  gap: 0.5rem;
+}
+
+.no-product {
+  text-align: center;
+  padding: 2rem;
+  color: #999;
+  font-size: 0.875rem;
+}
+</style>

--
Gitblit v1.9.3