From 424304d58e1acbe096fad794605906482c3a2ef7 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 19 八月 2025 16:42:51 +0800 Subject: [PATCH] 1.销售台账联调 2.开票登记开发联调 --- src/pages/sales/invoicingRegistration/view.vue | 325 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 325 insertions(+), 0 deletions(-) diff --git a/src/pages/sales/invoicingRegistration/view.vue b/src/pages/sales/invoicingRegistration/view.vue new file mode 100644 index 0000000..2050719 --- /dev/null +++ b/src/pages/sales/invoicingRegistration/view.vue @@ -0,0 +1,325 @@ +<template> + <view class="account-view"> + <!-- 椤堕儴鏍囬鏍� --> + <van-nav-bar + title="寮�绁ㄧ櫥璁拌鎯�" + left-text="杩斿洖" + left-arrow + @click-left="goBack" + fixed + placeholder + /> + + <!-- 鍩烘湰淇℃伅灞曠ず --> + <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.salesContractNo }}</text> + </view> + <view class="info-item"> + <text class="info-label">瀹㈡埛鍚堝悓鍙�</text> + <text class="info-value">{{ form.customerContractNo }}</text> + </view> + <view class="info-item"> + <text class="info-label">瀹㈡埛鍚嶇О</text> + <text class="info-value">{{ form.customerName }}</text> + </view> + <view class="info-item"> + <text class="info-label">涓氬姟鍛�</text> + <text class="info-value">{{ form.salesman }}</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 highlight">{{ form.contractAmount }}</text> + </view> + <view class="info-item"> + <text class="info-label">宸插紑绁ㄩ噾棰�(鍏�)</text> + <text class="info-value highlight">{{ form.invoiceTotal }}</text> + </view> + <view class="info-item"> + <text class="info-label">鏈紑绁ㄩ噾棰�(鍏�)</text> + <text class="info-value redlight">{{ form.noInvoiceAmountTotal }}</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.quantity }}</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.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 highlight">{{ product.invoiceNum }}</text> + </view> + <view class="info-item"> + <text class="info-label">寮�绁ㄩ噾棰�(鍏�)</text> + <text class="info-value highlight">{{ product.invoiceAmount }}</text> + </view> + <view class="info-item"> + <text class="info-label">鏈紑绁ㄦ暟</text> + <text class="info-value highlight">{{ product.noInvoiceNum }}</text> + </view> + <view class="info-item"> + <text class="info-label">鏈紑绁ㄩ噾棰�(鍏�)</text> + <text class="info-value redlight">{{ product.noInvoiceAmount }}</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 { getSalesLedgerWithProducts } from "@/api/salesManagement/salesLedger"; + +// 琛ㄥ崟鏁版嵁 +const form = ref({ + id: '', + salesContractNo: '', + customerContractNo: '', + customerId: '', + customerName: '', + projectName: '', + executionDate: '', + contractAmount: '', + invoiceTotal: '', + noInvoiceAmountTotal: '', + salesman: '' +}); + +// 浜у搧鏁版嵁 +const productData = ref([]); + +// 缂栬緫鏁版嵁 +const editData = ref(null); + +// 杩斿洖涓婁竴椤� +const goBack = () => { + // 娓呯悊鏈湴瀛樺偍鐨勬暟鎹� + uni.removeStorageSync('editData'); + uni.navigateBack(); +}; + +// 濉厖琛ㄥ崟鏁版嵁 +const fillFormData = () => { + if (!editData.value) return; + + // 鑾峰彇瀹屾暣鐨勪骇鍝佷俊鎭� + getSalesLedgerWithProducts({ id: editData.value.id, type: 1 }).then((res) => { + productData.value = res.productData || []; + }); + + // 濉厖鍩烘湰淇℃伅 + form.value.salesContractNo = editData.value.salesContractNo || ''; + form.value.customerContractNo = editData.value.customerContractNo || ''; + form.value.customerName = editData.value.customerName || ''; + form.value.projectName = editData.value.projectName || ''; + form.value.executionDate = editData.value.executionDate || ''; + form.value.contractAmount = editData.value.contractAmount || ''; + form.value.salesman = editData.value.salesman || ''; + form.value.invoiceTotal = editData.value.invoiceTotal || 0; + form.value.noInvoiceAmountTotal = editData.value.noInvoiceAmountTotal || 0; + form.value.id = editData.value.id || ''; + form.value.customerId = editData.value.customerId || ''; +}; + +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; +} +.info-value.redlight { + color: red; + 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