|
@@ -26,29 +26,36 @@
|
|
|
<!-- 核心数据 -->
|
|
<!-- 核心数据 -->
|
|
|
<div class="core-data-section">
|
|
<div class="core-data-section">
|
|
|
<div class="section-header">
|
|
<div class="section-header">
|
|
|
- <h2>核心数据</h2>
|
|
|
|
|
- <a href="#" class="more-link">更多数据</a>
|
|
|
|
|
|
|
+ <h2>转账数据统计</h2>
|
|
|
|
|
+ <!-- <a href="#" class="more-link">更多数据</a> -->
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+
|
|
|
|
|
+ <div v-if="is_platform_user" style="margin-bottom: 16px; width: 300px;">
|
|
|
|
|
+ <el-select v-model="currentTenantId" placeholder="选择商户" @change="handleTenantChange">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="tenant in allTenantData"
|
|
|
|
|
+ :key="tenant.id"
|
|
|
|
|
+ :label="tenant.name"
|
|
|
|
|
+ :value="tenant.id"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
<div class="data-cards">
|
|
<div class="data-cards">
|
|
|
<div class="data-card">
|
|
<div class="data-card">
|
|
|
- <div class="card-title">近30日因公消费员工数(人)</div>
|
|
|
|
|
- <div class="card-value">--</div>
|
|
|
|
|
- <div class="card-link">日因公消费员工数 --</div>
|
|
|
|
|
|
|
+ <div class="card-title">今日转账金额(元)</div>
|
|
|
|
|
+ <div class="card-value">{{ statAmount.amount_of_today || "--" }}</div>
|
|
|
|
|
+ <!-- <div class="card-link"></div> -->
|
|
|
</div>
|
|
</div>
|
|
|
<div class="data-card">
|
|
<div class="data-card">
|
|
|
- <div class="card-title">近30日消费金额(元)</div>
|
|
|
|
|
- <div class="card-value">--</div>
|
|
|
|
|
- <div class="card-link">日消费金额 --</div>
|
|
|
|
|
|
|
+ <div class="card-title">近7日转账金额(元)</div>
|
|
|
|
|
+ <div class="card-value">{{ statAmount.amount_of_7days || "--" }}</div>
|
|
|
|
|
+ <!-- <div class="card-link"></div> -->
|
|
|
</div>
|
|
</div>
|
|
|
<div class="data-card">
|
|
<div class="data-card">
|
|
|
- <div class="card-title">近30日消费笔数(笔)</div>
|
|
|
|
|
- <div class="card-value">--</div>
|
|
|
|
|
- <div class="card-link">日消费笔数 --</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="data-card">
|
|
|
|
|
- <div class="card-title">总激活员工数(人)</div>
|
|
|
|
|
- <div class="card-value">--</div>
|
|
|
|
|
- <div class="card-link">日激活员工数 --</div>
|
|
|
|
|
|
|
+ <div class="card-title">总转账金额(元)</div>
|
|
|
|
|
+ <div class="card-value">{{ statAmount.amount_of_all || "--" }}</div>
|
|
|
|
|
+ <!-- <div class="card-link"></div> -->
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -58,9 +65,72 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
import { ref } from 'vue';
|
|
import { ref } from 'vue';
|
|
|
import { ElButton, ElTabs, ElTabPane } from 'element-plus';
|
|
import { ElButton, ElTabs, ElTabPane } from 'element-plus';
|
|
|
|
|
+import { useEnterpriseStore, useUserStore } from '@/store';
|
|
|
|
|
+import AccountAPI from '@/api/module_payment/account';
|
|
|
|
|
+import TenantAPI, { TenantTable } from '@/api/module_system/tenant';
|
|
|
|
|
+
|
|
|
|
|
+const userStore = useUserStore();
|
|
|
|
|
+const enterpriseStore = useEnterpriseStore();
|
|
|
|
|
+
|
|
|
|
|
+const is_platform_user = computed(() => {
|
|
|
|
|
+ return userStore.is_platform_user;
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+const currentTenantId = ref<number | undefined>(undefined);
|
|
|
|
|
+
|
|
|
|
|
+const currentEnterpriseId = computed(() => enterpriseStore.getCurrentEnterprise?.enterprise_id);
|
|
|
|
|
+
|
|
|
|
|
+const currentEnterprise = computed(() => enterpriseStore.getCurrentEnterprise);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+const statAmount = ref<{
|
|
|
|
|
+ amount_of_today?: string;
|
|
|
|
|
+ amount_of_7days?: string;
|
|
|
|
|
+ amount_of_all?: string;
|
|
|
|
|
+}>({});
|
|
|
|
|
+
|
|
|
|
|
+function handleTenantChange(value: number | undefined) {
|
|
|
|
|
+ currentTenantId.value = value;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const allTenantData = ref<TenantTable[]>([]);
|
|
|
|
|
+
|
|
|
|
|
+async function fetchStatAmount() {
|
|
|
|
|
+ // 如果不是平台用户,把 currentTenantId 设为 undefined
|
|
|
|
|
+ if (!is_platform_user.value) {
|
|
|
|
|
+ currentTenantId.value = undefined;
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await AccountAPI.statAmount(currentTenantId.value, currentEnterpriseId.value);
|
|
|
|
|
+ statAmount.value = res.data.data || {};
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error("获取统计金额失败:", error);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function fetchAllTenantData() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await TenantAPI.listTenant({
|
|
|
|
|
+ page_no: 1,
|
|
|
|
|
+ page_size: 100,
|
|
|
|
|
+ });
|
|
|
|
|
+ // 增加全部选项然后合并请求的数据
|
|
|
|
|
+ allTenantData.value = [{ id: undefined, name: "全部" }, ...(res.data.data?.items || [])];
|
|
|
|
|
+ console.log("所有租户数据:", allTenantData.value);
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error("获取所有租户数据失败:", error);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+onMounted(() => {
|
|
|
|
|
+ if (is_platform_user.value) {
|
|
|
|
|
+ fetchAllTenantData();
|
|
|
|
|
+ }
|
|
|
|
|
+ fetchStatAmount();
|
|
|
|
|
+});
|
|
|
|
|
|
|
|
-// 激活的引导标签
|
|
|
|
|
-const activeGuideTab = ref('account');
|
|
|
|
|
|
|
+// watch currentTenantId 变化,重新获取统计金额数据
|
|
|
|
|
+watch(currentTenantId, fetchStatAmount);
|
|
|
|
|
|
|
|
// 租户仪表盘组件
|
|
// 租户仪表盘组件
|
|
|
</script>
|
|
</script>
|