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/index.vue |  342 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 342 insertions(+), 0 deletions(-)

diff --git a/src/pages/procurementManagement/procurementLedger/index.vue b/src/pages/procurementManagement/procurementLedger/index.vue
new file mode 100644
index 0000000..495f250
--- /dev/null
+++ b/src/pages/procurementManagement/procurementLedger/index.vue
@@ -0,0 +1,342 @@
+<template>
+	<view class="sales-account">
+		<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
+		<PageHeader title="閲囪喘鍙拌处" @back="goBack" />
+		
+		<!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
+		<view class="search-filter-section">
+			<view class="search-bar">
+				<view class="search-input">
+					<input
+						class="search-text"
+						placeholder="璇疯緭鍏ラ噰璐悎鍚屽彿/瀹㈡埛鍚嶇О"
+						v-model="searchKeyword"
+					/>
+				</view>
+				<view class="filter-button" @click="getList">
+					<up-icon name="search" size="24" color="#999"></up-icon>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 閲囪喘鍙拌处鐎戝竷娴� -->
+		<view class="ledger-list" v-if="ledgerList.length > 0">
+			<view v-for="(item, index) in ledgerList" :key="index">
+				<view class="ledger-item" @click="handleInfo('edit', item)">
+					<view class="item-header">
+						<view class="item-left">
+							<view class="document-icon">
+								<up-icon name="file-text" size="16" color="#ffffff"></up-icon>
+							</view>
+							<text class="item-id">{{ item.purchaseContractNumber }}</text>
+						</view>
+						<!--							<view class="item-tag">-->
+						<!--								<text class="tag-text">{{ item.recorder }}</text>-->
+						<!--							</view>-->
+					</view>
+					<up-divider></up-divider>
+					
+					<view class="item-details">
+						<view class="detail-row">
+							<text class="detail-label">閿�鍞悎鍚屽彿</text>
+							<text class="detail-value">{{ item.salesContractNo }}</text>
+						</view>
+						<view class="detail-row">
+							<text class="detail-label">渚涘簲鍟嗗悕绉�</text>
+							<text class="detail-value">{{ item.supplierName }}</text>
+						</view>
+						<view class="detail-row">
+							<text class="detail-label">椤圭洰鍚嶇О</text>
+							<text class="detail-value">{{ item.projectName }}</text>
+						</view>
+						<view class="detail-row">
+							<text class="detail-label">浠樻鏂瑰紡</text>
+							<text class="detail-value">{{ item.paymentMethod }}</text>
+						</view>
+						<view class="detail-row">
+							<text class="detail-label">鍚堝悓閲戦(鍏�)</text>
+							<text class="detail-value highlight">{{ item.contractAmount }}</text>
+						</view>
+						<up-divider></up-divider>
+						<view class="detail-info">
+							<view class="detail-row">
+								<text class="detail-label">褰曞叆浜�</text>
+								<text class="detail-value">{{ item.recorderName }}</text>
+							</view>
+							<view class="detail-row">
+								<text class="detail-label">褰曞叆鏃ユ湡</text>
+								<text class="detail-value">{{ item.entryDate }}</text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-else class="no-data">
+			<text>鏆傛棤閲囪喘鍙拌处鏁版嵁</text>
+		</view>
+		
+		<!-- 娴姩鎿嶄綔鎸夐挳 -->
+		<view class="fab-button" @click="handleInfo('add')">
+			<up-icon name="plus" size="24" color="#ffffff"></up-icon>
+		</view>
+	</view>
+</template>
+
+<script setup>
+import { ref } from 'vue';
+import { onShow } from '@dcloudio/uni-app';
+import useUserStore from "@/store/modules/user";
+import PageHeader from "@/components/PageHeader.vue";
+import {purchaseListPage} from "@/api/procurementManagement/procurementLedger";
+const userStore = useUserStore()
+
+// 鎼滅储鍏抽敭璇�
+const searchKeyword = ref('');
+
+// 閲囪喘鍙拌处鏁版嵁
+const ledgerList = ref([]);
+
+// 杩斿洖涓婁竴椤�
+const goBack = () => {
+	uni.navigateBack();
+};
+// 鏌ヨ鍒楄〃
+const getList = () => {
+	const page = {
+		current: -1,
+		size: -1
+	}
+	purchaseListPage({...page}).then((res) => {
+		ledgerList.value = res.data.records;
+	}).catch(() => {
+			// tableLoading.value = false;
+	});
+};
+
+// 澶勭悊鍙拌处淇℃伅鎿嶄綔锛堟煡鐪�/缂栬緫/鏂板锛�
+const handleInfo = (type, row) => {
+  try {
+    // 璁剧疆鎿嶄綔绫诲瀷
+    uni.setStorageSync('operationType', type);
+    
+    // 濡傛灉鏄煡鐪嬫垨缂栬緫鎿嶄綔
+    if (type !== 'add') {
+      // 楠岃瘉琛屾暟鎹槸鍚﹀瓨鍦�
+      if (!row) {
+        uni.showToast({
+          title: '鏁版嵁涓嶅瓨鍦�',
+          icon: 'error'
+        });
+        return;
+      }
+      
+      // 妫�鏌ユ潈闄愶細鍙湁褰曞叆浜烘墠鑳界紪杈�
+      if (row.recorderName != userStore.nickName) {
+        // 闈炲綍鍏ヤ汉璺宠浆鍒板彧璇昏鎯呴〉闈�
+        uni.setStorageSync('editData', JSON.stringify(row));
+        uni.navigateTo({
+          url: '/pages/procurementManagement/procurementLedger/view'
+        });
+        return;
+      }
+      
+      // 褰曞叆浜虹紪杈戯細瀛樺偍鏁版嵁骞惰烦杞埌缂栬緫椤甸潰
+      uni.setStorageSync('editData', JSON.stringify(row));
+      uni.navigateTo({
+        url: '/pages/procurementManagement/procurementLedger/detail'
+      });
+      return;
+    }
+    
+    // 鏂板鎿嶄綔锛氱洿鎺ヨ烦杞埌缂栬緫椤甸潰
+    uni.navigateTo({
+      url: '/pages/procurementManagement/procurementLedger/detail'
+    });
+    
+  } catch (error) {
+    console.error('澶勭悊鍙拌处淇℃伅鎿嶄綔澶辫触:', error);
+    uni.showToast({
+      title: '鎿嶄綔澶辫触锛岃閲嶈瘯',
+      icon: 'error'
+    });
+  }
+};
+
+onShow(() => {
+    // 椤甸潰鏄剧ず鏃跺埛鏂板垪琛�
+    getList();
+});
+</script>
+
+<style scoped lang="scss">
+.u-divider {
+	margin: 0 !important;
+}
+.sales-account {
+	min-height: 100vh;
+	background: #f8f9fa;
+	position: relative;
+}
+
+
+
+.search-filter-section {
+	padding: 10px 20px;
+	background: #ffffff;
+}
+
+.search-bar {
+	display: flex;
+	align-items: center;
+	gap: 12px;
+}
+
+.search-input {
+	flex: 1;
+	background: #f5f5f5;
+	border-radius: 24px;
+	padding: 10px 16px;
+	display: flex;
+	align-items: center;
+	gap: 8px;
+}
+
+.search-text {
+	flex: 1;
+	font-size: 14px;
+	color: #333;
+	background: transparent;
+	border: none;
+	outline: none;
+}
+
+.search-text::placeholder {
+	color: #999;
+}
+
+.filter-button {
+	width: 40px;
+	height: 40px;
+	border-radius: 8px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+
+.ledger-list {
+	padding: 20px;
+}
+
+.ledger-item {
+	background: #ffffff;
+	border-radius: 12px;
+	margin-bottom: 16px;
+	overflow: hidden;
+	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
+	padding: 0 16px;
+}
+
+.item-header {
+	padding: 16px 0;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+
+.item-left {
+	display: flex;
+	align-items: center;
+	gap: 8px;
+}
+
+.document-icon {
+	width: 24px;
+	height: 24px;
+	background: #2979ff;
+	border-radius: 4px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+
+.item-id {
+	font-size: 14px;
+	color: #333;
+	font-weight: 500;
+}
+
+.item-tag {
+	background: #4caf50;
+	border-radius: 4px;
+	padding: 2px 4px;
+}
+
+.tag-text {
+	font-size: 11px;
+	color: #ffffff;
+	font-weight: 500;
+}
+
+.item-details {
+	padding: 16px 0;
+}
+
+.detail-row {
+	display: flex;
+	align-items: flex-end;
+	justify-content: space-between;
+	margin-bottom: 8px;
+	
+	&:last-child {
+		margin-bottom: 0;
+	}
+}
+.detail-info {
+	margin-top: 10px;
+	display: flex;
+	align-items: flex-start;
+	justify-content: space-between;
+}
+
+.detail-label {
+	font-size: 12px;
+	color: #777777;
+	min-width: 60px;
+}
+
+.detail-value {
+	font-size: 12px;
+	color: #000000;
+	text-align: right;
+	flex: 1;
+	margin-left: 16px;
+}
+
+.detail-value.highlight {
+	color: #2979ff;
+	font-weight: 500;
+}
+
+.no-data {
+	padding: 40px 0;
+	text-align: center;
+	color: #999;
+}
+
+.fab-button {
+	position: fixed;
+	bottom: calc(30px + env(safe-area-inset-bottom));
+	right: 30px;
+	width: 56px;
+	height: 56px;
+	background: #2979ff;
+	border-radius: 50%;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3);
+	z-index: 1000;
+	/* 纭繚娴姩鎸夐挳涓嶈搴曢儴瀹夊叏鍖哄煙閬尅 */
+}
+</style>

--
Gitblit v1.9.3