From d9034590bf44fe8858679cff822f60a15fd23f05 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 31 十月 2025 11:13:44 +0800
Subject: [PATCH] 汇星与博达-会计核算页面

---
 src/views/financialManagement/accounting/index.vue |  231 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 231 insertions(+), 0 deletions(-)

diff --git a/src/views/financialManagement/accounting/index.vue b/src/views/financialManagement/accounting/index.vue
new file mode 100644
index 0000000..06bf4cf
--- /dev/null
+++ b/src/views/financialManagement/accounting/index.vue
@@ -0,0 +1,231 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="16" class="mb-16">
+      <el-col :span="12">
+        <el-card shadow="hover">
+          <div class="section-title">缁熶竴浼氳绉戠洰浣撶郴</div>
+          <el-tree
+            :data="accountTree"
+            node-key="code"
+            :props="{ label: 'label', children: 'children' }"
+            highlight-current
+            default-expand-all
+          />
+        </el-card>
+      </el-col>
+      <el-col :span="12">
+        <el-card shadow="hover">
+          <div class="section-title">鍑瘉妯℃澘</div>
+          <el-table :data="voucherTemplates" border size="small">
+            <el-table-column prop="name" label="妯℃澘鍚嶇О" min-width="140" />
+            <el-table-column prop="bizScene" label="涓氬姟鍦烘櫙" min-width="140" />
+            <el-table-column prop="debit" label="鍊熸柟绉戠洰" min-width="160" />
+            <el-table-column prop="credit" label="璐锋柟绉戠洰" min-width="160" />
+            <el-table-column prop="auxDims" label="杈呭姪鏍哥畻缁村害" min-width="180">
+              <template #default="scope">
+                <el-space wrap>
+                  <el-tag v-for="dim in scope.row.auxDims" :key="dim" size="small" type="info">{{ dim }}</el-tag>
+                </el-space>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-card>
+      </el-col>
+    </el-row>
+
+    <el-row :gutter="16" class="mb-16">
+      <el-col :span="12">
+        <el-card shadow="hover">
+          <div class="section-title">涓氬姟娴佺▼ 鈫� 鍑瘉鑷姩鐢熸垚</div>
+          <div class="toolbar">
+            <el-text type="info">婕旂ず鏁版嵁浠呯敤浜庡睍绀虹粨鏋勪笌瀛楁</el-text>
+          </div>
+          <el-table :data="generatedVouchers" border size="small">
+            <el-table-column prop="date" label="鏃ユ湡" width="110" />
+            <el-table-column prop="bizScene" label="涓氬姟鍦烘櫙" min-width="120" />
+            <el-table-column prop="summary" label="鎽樿" min-width="160" />
+            <el-table-column prop="amount" label="閲戦(楼)" width="110" />
+            <el-table-column prop="status" label="鐘舵��" width="100">
+              <template #default="scope">
+                <el-tag :type="scope.row.status === '宸茬敓鎴�' ? 'success' : 'warning'">{{ scope.row.status }}</el-tag>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-card>
+      </el-col>
+      <el-col :span="12">
+        <el-card shadow="hover">
+          <div class="section-title">澶氱淮杈呭姪鏍哥畻</div>
+          <div class="dims">
+            <el-tag type="success">瀹㈡埛</el-tag>
+            <el-tag type="warning">椤圭洰</el-tag>
+            <el-tag type="info">閮ㄩ棬</el-tag>
+            <el-tag type="primary">绠$悊鍛�</el-tag>
+          </div>
+          <el-table :data="auxSummary" size="small" border>
+            <el-table-column prop="dimension" label="缁村害" width="100" />
+            <el-table-column prop="category" label="绫诲埆" min-width="140" />
+            <el-table-column prop="debit" label="鍊熸柟(鏈湡)" width="110" />
+            <el-table-column prop="credit" label="璐锋柟(鏈湡)" width="110" />
+            <el-table-column prop="balance" label="浣欓" width="100" />
+          </el-table>
+        </el-card>
+      </el-col>
+    </el-row>
+
+    <el-row :gutter="16" class="mb-16">
+      <el-col :span="12">
+        <el-card shadow="hover">
+          <div class="section-title">缁撹处浠诲姟锛堟湀/瀛�/骞达級</div>
+          <div class="toolbar">
+            <el-space>
+              <el-button size="small" @click="runClose('鏈堢粨')">鎵ц鏈堢粨</el-button>
+              <el-button size="small" @click="runClose('瀛f姤')">鎵ц瀛f姤</el-button>
+              <el-button size="small" @click="runClose('骞村害缁撹处')">鎵ц骞村害缁撹处</el-button>
+            </el-space>
+          </div>
+          <el-timeline style="margin-top: 6px;">
+            <el-timeline-item
+              v-for="item in closingTasks"
+              :key="item.id"
+              :type="item.type"
+              :timestamp="item.time"
+              placement="top"
+            >
+              <div class="close-item">
+                <div class="title">{{ item.name }}</div>
+                <el-tag :type="item.status === '瀹屾垚' ? 'success' : 'info'" size="small">{{ item.status }}</el-tag>
+              </div>
+            </el-timeline-item>
+          </el-timeline>
+        </el-card>
+      </el-col>
+      <el-col :span="12">
+        <el-card shadow="hover">
+          <div class="section-title">瀹¤鐣欑棔涓庡鎵规潈闄�</div>
+          <el-table :data="auditTrail" border size="small">
+            <el-table-column prop="time" label="鏃堕棿" width="160" />
+            <el-table-column prop="action" label="鍔ㄤ綔" min-width="160" />
+            <el-table-column prop="bizScene" label="鍏宠仈涓氬姟" min-width="140" />
+            <el-table-column prop="role" label="鎵ц瑙掕壊" width="120" />
+            <el-table-column prop="result" label="缁撴灉" width="100">
+              <template #default="scope">
+                <el-tag :type="scope.row.result === '閫氳繃' ? 'success' : (scope.row.result === '椹冲洖' ? 'danger' : 'info')">
+                  {{ scope.row.result }}
+                </el-tag>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-card>
+      </el-col>
+    </el-row>
+  </div>
+  
+</template>
+
+<script setup>
+import { ref } from 'vue'
+
+// 绉戠洰鏍戯紙绀轰緥锛�
+const accountTree = ref([
+  { code: '1001', label: '璧勪骇', children: [
+    { code: '100101', label: '搴撳瓨鐜伴噾' },
+    { code: '100102', label: '閾惰瀛樻' },
+    { code: '1122', label: '搴旀敹璐︽' },
+    { code: '1601', label: '鍥哄畾璧勪骇' },
+  ]},
+  { code: '2001', label: '璐熷��', children: [
+    { code: '2202', label: '搴斾粯璐︽' },
+    { code: '2241', label: '鍏朵粬搴斾粯娆�' },
+  ]},
+  { code: '3001', label: '鎵�鏈夎�呮潈鐩�', children: [
+    { code: '3103', label: '鏈勾鍒╂鼎' },
+  ]},
+  { code: '4001', label: '鎴愭湰璐圭敤', children: [
+    { code: '5601', label: '鍒堕�犺垂鐢�' },
+    { code: '6602', label: '绠$悊璐圭敤' },
+  ]},
+])
+
+// 鍑瘉妯℃澘锛堢ず渚嬶級
+const voucherTemplates = ref([
+  { name: '閿�鍞敹鍏ョ‘璁�', bizScene: '閿�鍞嚭搴�', debit: '1122 搴旀敹璐︽', credit: '6001 涓昏惀涓氬姟鏀跺叆', auxDims: ['瀹㈡埛','椤圭洰'] },
+  { name: '閲囪喘搴斾粯纭', bizScene: '閲囪喘鍏ュ簱', debit: '1403 鍦ㄩ�旂墿璧�', credit: '2202 搴斾粯璐︽', auxDims: ['椤圭洰','閮ㄩ棬'] },
+  { name: '璐圭敤鎶ラ攢', bizScene: '璐圭敤鍗�', debit: '6602 绠$悊璐圭敤', credit: '1002 閾惰瀛樻', auxDims: ['閮ㄩ棬'] },
+  { name: '鍥哄畾璧勪骇鎶樻棫', bizScene: '鏈堟湯鎶樻棫', debit: '6602 绠$悊璐圭敤', credit: '1602 绱鎶樻棫', auxDims: ['閮ㄩ棬'] },
+])
+
+// 鑷姩鐢熸垚鐨勫嚟璇侊紙绀轰緥锛�
+const generatedVouchers = ref([
+  { date: '2025-10-01', bizScene: '閿�鍞嚭搴�', summary: '纭搴旀敹涓庢敹鍏�', amount: 128000, status: '宸茬敓鎴�' },
+  { date: '2025-10-03', bizScene: '閲囪喘鍏ュ簱', summary: '纭鍒拌揣搴斾粯', amount: 56000, status: '宸茬敓鎴�' },
+  { date: '2025-10-05', bizScene: '璐圭敤鍗�', summary: '鍔炲叕璐圭敤鎶ラ攢', amount: 3200, status: '宸茬敓鎴�' },
+])
+
+// 鏃犳ā鎷熺敓鎴愭搷浣滐紝浠呭睍绀洪潤鎬佺ず渚嬫暟鎹�
+
+// 杈呭姪鏍哥畻绀轰緥姹囨�伙紙鏃犱釜浜哄鍚嶏紝浠呯淮搴︾被鍒級
+const auxSummary = ref([
+  { dimension: '瀹㈡埛', category: '閲嶇偣瀹㈡埛闆嗗悎', debit: 320000, credit: 210000, balance: 110000 },
+  { dimension: '椤圭洰', category: '椤圭洰A', debit: 150000, credit: 120000, balance: 30000 },
+  { dimension: '閮ㄩ棬', category: '杩愯惀涓績', debit: 42000, credit: 18000, balance: 24000 },
+  { dimension: '绠$悊鍛�', category: '绯荤粺瑙掕壊', debit: 0, credit: 0, balance: 0 },
+])
+
+// 缁撹处浠诲姟
+const closingTasks = ref([
+  { id: 1, name: '2025骞�10鏈� 鏈堢粨', time: '2025-10-31 18:00', status: '瀹屾垚', type: 'success' },
+  { id: 2, name: '2025骞碤4 瀛f姤', time: '2025-12-31 18:00', status: '璁″垝', type: 'info' },
+  { id: 3, name: '2025骞村害 骞村害缁撹处', time: '2025-12-31 23:00', status: '璁″垝', type: 'info' },
+])
+
+function runClose(kind) {
+  closingTasks.value.unshift({
+    id: Date.now(),
+    name: `${new Date().getFullYear()}骞�${kind}`,
+    time: new Date().toISOString().replace('T',' ').slice(0,16),
+    status: '瀹屾垚',
+    type: 'success',
+  })
+}
+
+// 瀹¤鐣欑棔锛堜笉鍚釜浜哄鍚嶏紝浠呰鑹�/鏈哄埗锛�
+const auditTrail = ref([
+  { time: '2025-10-01 09:12', action: '閿�鍞嚭搴撹Е鍙戝嚟璇佺敓鎴�', bizScene: '閿�鍞嚭搴�', role: '绯荤粺鑷姩鍖�', result: '閫氳繃' },
+  { time: '2025-10-03 14:20', action: '閲囪喘鍏ュ簱瑙﹀彂搴斾粯纭', bizScene: '閲囪喘鍏ュ簱', role: '绯荤粺鑷姩鍖�', result: '閫氳繃' },
+  { time: '2025-10-05 10:03', action: '璐圭敤鍗曞鎵�', bizScene: '璐圭敤鍗�', role: '璐㈠姟瀹℃壒', result: '閫氳繃' },
+  { time: '2025-10-08 16:45', action: '鍑瘉杩囪处', bizScene: '鎬昏处', role: '浼氳瀹℃牳', result: '閫氳繃' },
+  { time: '2025-10-31 18:05', action: '鏈堢粨瀹屾垚骞堕攣璐�', bizScene: '鎬昏处', role: '绯荤粺鑷姩鍖�', result: '閫氳繃' },
+])
+</script>
+
+<style scoped lang="scss">
+.app-container {
+  padding: 16px;
+}
+.page-header {
+  margin-bottom: 12px;
+  h2 { margin: 0 0 6px 0; font-weight: 600; }
+  p { margin: 0; color: #666; }
+}
+.section-title {
+  position: relative;
+  padding-left: 10px;
+  margin-bottom: 10px;
+  font-weight: 700;
+}
+.section-title::before {
+  content: '';
+  position: absolute;
+  left: 0; top: 0.2em;
+  width: 4px; height: 1.2em;
+  background: #002FA7;
+  border-radius: 2px;
+}
+.mb-16 { margin-bottom: 16px; }
+.toolbar { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
+.dims { display: flex; gap: 8px; margin-bottom: 10px; }
+.close-item { display: flex; align-items: center; gap: 8px; }
+</style>
+
+

--
Gitblit v1.9.3