src/views/basicData/customerFile/index.vue
@@ -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="`代储金额合计已超出该客户信托基金(信托基金:${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">代储金额(元):</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>
      <!-- 洽谈进度记录 -->
@@ -675,6 +723,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 +743,9 @@
    contactPhone: "",
    maintainer: "",
    maintenanceTime: "",
    trustFund: "",
    depositTotalAmount: "",
    exceedsTrustFund: false,
  });
  const negotiationRecords = ref([]);
@@ -759,6 +815,22 @@
      label: "银行账号",
      prop: "bankAccount",
      width: 220,
    },
    {
      label: "信托基金(元)",
      prop: "trustFund",
      width: 140,
      formatData: value =>
        value === null || value === undefined || value === ""
          ? "-"
          : Number(value).toFixed(2),
    },
    {
      label: "代储金额(元)",
      prop: "depositTotalAmount",
      dataType: "slot",
      slot: "depositAmountSlot",
      width: 150,
    },
    {
      label: "开户行号",
@@ -877,6 +949,8 @@
      bankAccount: "",
      bankCode: "",
      customerType: "",
      // 金额字段给 null 而非 "",避免 el-input-number 把空串折算成 0
      trustFund: null,
      type: 0
    },
    rules: {
@@ -1576,6 +1650,11 @@
    word-break: break-word;
  }
  .text-danger {
    color: var(--el-color-danger);
    font-weight: 600;
  }
  .no-records {
    text-align: center;
    padding: 30px;