From 5956b34b1bd9198a787a1e0ea290b2cd99d898f2 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 22 九月 2026 09:47:52 +0800
Subject: [PATCH] 新疆-融邦环保 1.大屏展示数据修改 2.销售台账展示字段修改
---
src/views/basicData/customerFile/index.vue | 160 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 144 insertions(+), 16 deletions(-)
diff --git a/src/views/basicData/customerFile/index.vue b/src/views/basicData/customerFile/index.vue
index d300494..2773c55 100644
--- a/src/views/basicData/customerFile/index.vue
+++ b/src/views/basicData/customerFile/index.vue
@@ -9,17 +9,6 @@
@change="handleQuery"
clearable
:prefix-icon="Search" />
- <span class="search_title">瀹㈡埛鍒嗙被锛�</span>
- <el-select v-model="searchForm.customerType"
- placeholder="璇烽�夋嫨"
- style="width: 240px"
- clearable
- @change="handleQuery">
- <el-option v-for="dict in customer_type"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value" />
- </el-select>
<el-button type="primary"
@click="handleQuery"
style="margin-left: 10px">鎼滅储</el-button>
@@ -40,6 +29,17 @@
@click="handleDelete">鍒犻櫎</el-button>
</div>
</div>
+ <!-- 鎸夈�屽鎴峰垎绫汇�嶆媶椤电锛涖�屽叏閮ㄣ�嶄笉甯﹀垎绫绘煡璇紝淇濊瘉杩樻病琛ュ垎绫荤殑鑰佹暟鎹篃鑳界湅鍒� -->
+ <el-tabs v-model="activeTab"
+ @tab-change="handleTabChange"
+ class="customer-tabs">
+ <el-tab-pane label="鍏ㄩ儴"
+ name="鍏ㄩ儴" />
+ <el-tab-pane label="閿�鍞鎴�"
+ name="閿�鍞鎴�" />
+ <el-tab-pane label="浠e偍瀹㈡埛"
+ name="浠e偍瀹㈡埛" />
+ </el-tabs>
<div class="table_list">
<PIMTable rowKey="id"
:column="tableColumn"
@@ -48,7 +48,16 @@
:isSelection="true"
@selection-change="handleSelectionChange"
:tableLoading="tableLoading"
- @pagination="pagination"></PIMTable>
+ @pagination="pagination">
+ <template #depositAmountSlot="{ row }">
+ <el-tooltip v-if="row.exceedsTrustFund"
+ :content="`浠e偍閲戦鍚堣宸茶秴鍑鸿瀹㈡埛淇℃墭鍩洪噾锛堜俊鎵樺熀閲戯細${row.trustFund}锛塦"
+ placement="top">
+ <el-text type="danger">{{ formatAmount(row.depositTotalAmount) }}</el-text>
+ </el-tooltip>
+ <span v-else>{{ formatAmount(row.depositTotalAmount) }}</span>
+ </template>
+ </PIMTable>
</div>
<el-dialog v-model="dialogFormVisible"
:title="operationType === 'add' ? '鏂板瀹㈡埛淇℃伅' : '缂栬緫瀹㈡埛淇℃伅'"
@@ -133,6 +142,19 @@
:label="dict.label"
:value="dict.value" />
</el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="淇℃墭鍩洪噾(鍏�)锛�"
+ prop="trustFund">
+ <el-input-number v-model="form.trustFund"
+ :min="0"
+ :precision="2"
+ :controls="false"
+ placeholder="璇疯緭鍏ワ紝鍙负绌�"
+ style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
@@ -461,6 +483,32 @@
</div>
</el-col>
</el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <div class="info-item">
+ <span class="info-label">淇℃墭鍩洪噾(鍏�)锛�</span>
+ <span class="info-value">{{ formatAmount(detailForm.trustFund) }}</span>
+ </div>
+ </el-col>
+ <el-col :span="12">
+ <div class="info-item">
+ <span class="info-label">浠e偍閲戦(鍏�)锛�</span>
+ <span class="info-value"
+ :class="{ 'text-danger': detailForm.exceedsTrustFund }">
+ {{ formatAmount(detailForm.depositTotalAmount) }}
+ </span>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row v-if="detailForm.exceedsTrustFund"
+ :gutter="20">
+ <el-col :span="24">
+ <el-alert type="warning"
+ show-icon
+ :closable="false"
+ :title="`璇ュ鎴蜂唬鍌ㄩ噾棰濆悎璁� ${formatAmount(detailForm.depositTotalAmount)} 鍏冿紝宸茶秴鍑轰俊鎵樺熀閲� ${formatAmount(detailForm.trustFund)} 鍏僠" />
+ </el-col>
+ </el-row>
</div>
</div>
<!-- 娲借皥杩涘害璁板綍 -->
@@ -613,7 +661,14 @@
</template>
<script setup>
- import { onMounted, ref, reactive, getCurrentInstance, toRefs } from "vue";
+ import {
+ onMounted,
+ ref,
+ reactive,
+ getCurrentInstance,
+ toRefs,
+ watch,
+ } from "vue";
import { Search, Paperclip, Upload } from "@element-plus/icons-vue";
import {
addCustomerFollow,
@@ -675,6 +730,11 @@
content: [{ required: true, message: "璇疯緭鍏ュ唴瀹�", trigger: "blur" }],
};
+ const formatAmount = value => {
+ return value === null || value === undefined || value === ""
+ ? "-"
+ : Number(value).toFixed(2);
+ };
// 璇︽儏鐩稿叧
const detailDialogVisible = ref(false);
const detailForm = reactive({
@@ -690,6 +750,9 @@
contactPhone: "",
maintainer: "",
maintenanceTime: "",
+ trustFund: "",
+ depositTotalAmount: "",
+ exceedsTrustFund: false,
});
const negotiationRecords = ref([]);
@@ -759,6 +822,22 @@
label: "閾惰璐﹀彿",
prop: "bankAccount",
width: 220,
+ },
+ {
+ label: "淇℃墭鍩洪噾(鍏�)",
+ prop: "trustFund",
+ width: 140,
+ formatData: value =>
+ value === null || value === undefined || value === ""
+ ? "-"
+ : Number(value).toFixed(2),
+ },
+ {
+ label: "浠e偍閲戦(鍏�)",
+ prop: "depositTotalAmount",
+ dataType: "slot",
+ slot: "depositAmountSlot",
+ width: 150,
},
{
label: "寮�鎴疯鍙�",
@@ -861,7 +940,6 @@
const data = reactive({
searchForm: {
customerName: "",
- customerType: "",
type: 0
},
form: {
@@ -877,6 +955,8 @@
bankAccount: "",
bankCode: "",
customerType: "",
+ // 閲戦瀛楁缁� null 鑰岄潪 ""锛岄伩鍏� el-input-number 鎶婄┖涓叉姌绠楁垚 0
+ trustFund: null,
type: 0
},
rules: {
@@ -980,14 +1060,37 @@
page.size = obj.limit;
getList();
};
+ // 鍏ㄩ儴 / 閿�鍞鎴� / 浠e偍瀹㈡埛涓変釜椤电锛屽悇鑷甫瀹㈡埛鍒嗙被鏌ュ悓涓�涓垪琛ㄦ帴鍙�
+ const activeTab = ref("鍏ㄩ儴");
+ // 銆屽叏閮ㄣ�嶄笉浼犲垎绫伙紙undefined 浼氳 axios 涓㈡帀锛夛紝閿�鍞�/浠e偍鎸夊瓧鍏稿�肩瓫锛�
+ // 瀛楀吀鐨� value 鏈繀灏辨槸涓枃鏍囩锛屾寜 label 鍙嶆煡鐪熷疄鍙栧�煎啀浼犳帴鍙�
+ const activeCustomerType = () => {
+ if (activeTab.value === "鍏ㄩ儴") {
+ return undefined;
+ }
+ const list = customer_type.value || [];
+ const hit = list.find(item => item.label === activeTab.value);
+ return hit ? hit.value : activeTab.value;
+ };
+ // 椤电鍒囨崲锛氭崲瀹㈡埛鍒嗙被閲嶆柊鏌ュ垪琛�
+ const handleTabChange = () => {
+ page.current = 1;
+ getList();
+ };
const getList = () => {
tableLoading.value = true;
- listCustomer({ ...searchForm.value, ...page }).then(res => {
+ listCustomer({
+ ...searchForm.value,
+ ...page,
+ customerType: activeCustomerType(),
+ }).then(res => {
tableLoading.value = false;
tableData.value = res.data.records;
page.total = res.data.total;
});
};
+ // 瀛楀吀鏄紓姝ユ媺鐨勶紝鍒拌揪鍚庢寜鐪熷疄瀛楀吀鍊奸噸鏌ヤ竴娆★紝閬垮厤棣栧睆鐢ㄤ腑鏂囨爣绛剧瓫涓嶅埌鏁版嵁
+ watch(customer_type, () => getList());
// 琛ㄦ牸閫夋嫨鏁版嵁
const handleSelectionChange = selection => {
selectedRows.value = selection;
@@ -1022,6 +1125,8 @@
},
];
form.value.type = 0;
+ // 瀹㈡埛鍒嗙被榛樿璺熼殢褰撳墠椤电
+ form.value.customerType = activeCustomerType();
form.value.maintenanceTime = getCurrentDate();
userListNoPage().then(res => {
userList.value = res.data;
@@ -1103,7 +1208,12 @@
type: "warning",
})
.then(() => {
- proxy.download("/basic/customer/export", {type: 0}, "瀹㈡埛妗f.xlsx");
+ // 瀵煎嚭璺熼殢褰撳墠椤电鐨勫鎴峰垎绫�
+ proxy.download(
+ "/basic/customer/export",
+ { type: 0, customerType: activeCustomerType() },
+ "瀹㈡埛妗f.xlsx"
+ );
})
.catch(() => {
proxy.$modal.msg("宸插彇娑�");
@@ -1530,6 +1640,19 @@
</script>
<style scoped lang="scss">
+ /* 閿�鍞鎴� / 浠e偍瀹㈡埛椤电锛氬彧瑕佹爣绛炬爮锛屽唴瀹圭敱涓嬫柟鍒楄〃灞曠ず */
+ .customer-tabs {
+ margin-bottom: 8px;
+
+ :deep(.el-tabs__header) {
+ margin-bottom: 0;
+ }
+
+ :deep(.el-tabs__content) {
+ display: none;
+ }
+ }
+
.detail-section {
margin-bottom: 20px;
padding: 15px;
@@ -1576,6 +1699,11 @@
word-break: break-word;
}
+ .text-danger {
+ color: var(--el-color-danger);
+ font-weight: 600;
+ }
+
.no-records {
text-align: center;
padding: 30px;
--
Gitblit v1.9.3