Prechádzať zdrojové kódy

feat(采购): 增加动物分笼采购渠道并调整经费显示

- 在采购渠道枚举中新增“动物分笼”选项
- 移除原有的“是否分笼”单选组件,将分笼功能整合为独立采购渠道
- 调整用户页面经费统计显示,将“可用余额”改为“余额”并修正计算公式
- 在经费卡片中新增“余额”和“未出账单”字段展示
张旭伟 3 dní pred
rodič
commit
cb5d9e9015

+ 1 - 0
src/constants/pageConstants.ts

@@ -48,6 +48,7 @@ export const ApproveStatusList = [
 export enum ProcurementChannels {
   PURCHASED_BY_OTHERS = '10',
   PURCHASED_BY_MYSELF = '20',
+  PURCHASED_BY_SPLIT_CAGE = '30',
 }
 
 export enum UploadFileType {

+ 2 - 9
src/view/animal/application/components/Application.vue

@@ -81,19 +81,12 @@
 
             <h4 class="mb8 mt20">采购渠道</h4>
             <van-cell-group>
-               <van-field label="是否分笼">
-                <template #input>
-                  <van-radio-group v-model="state.form.animalPurpose" direction="horizontal">
-                    <van-radio :name="AnimalPurpose.NEED_SPLIT_CAGE">有</van-radio>
-                    <van-radio :name="AnimalPurpose.NO_NEED_SPLIT_CAGE">无</van-radio>
-                  </van-radio-group>
-                </template>
-              </van-field>
               <van-field label="采购渠道" required :rules="rules.buyFrom">
                 <template #input>
                   <van-radio-group v-model="state.form.buyFrom" direction="horizontal">
                     <van-radio style="margin-bottom: 10px" :name="ProcurementChannels.PURCHASED_BY_OTHERS">动物房代购</van-radio>
-                    <van-radio :name="ProcurementChannels.PURCHASED_BY_MYSELF">自行购买</van-radio>
+                    <van-radio style="margin-bottom: 10px" :name="ProcurementChannels.PURCHASED_BY_MYSELF">自行购买</van-radio>
+                    <van-radio style="margin-bottom: 10px" :name="ProcurementChannels.PURCHASED_BY_SPLIT_CAGE">动物分笼</van-radio>
                   </van-radio-group>
                 </template>
               </van-field>

+ 3 - 10
src/view/animal/application/components/Detail.vue

@@ -32,19 +32,12 @@
 
           <h4 class="section-title">采购渠道</h4>
           <van-cell-group inset>
-            <van-cell title="是否分笼">
-              <template #value>
-                <van-radio-group v-model="state.form.animalPurpose" direction="horizontal" disabled>
-                  <van-radio :name="AnimalPurpose.NEED_SPLIT_CAGE">需要分笼</van-radio>
-                  <van-radio :name="AnimalPurpose.NO_NEED_SPLIT_CAGE">不需要分笼</van-radio>
-                </van-radio-group>
-              </template>
-            </van-cell>
             <van-cell title="采购渠道">
               <template #value>
                 <van-radio-group v-model="state.form.buyFrom" direction="horizontal" disabled>
-                  <van-radio :name="ProcurementChannels.PURCHASED_BY_OTHERS">动物房代购</van-radio>
-                  <van-radio :name="ProcurementChannels.PURCHASED_BY_MYSELF">自行购买</van-radio>
+                  <van-radio style="margin-bottom: 10px" :name="ProcurementChannels.PURCHASED_BY_OTHERS">动物房代购</van-radio>
+                  <van-radio style="margin-bottom: 10px" :name="ProcurementChannels.PURCHASED_BY_MYSELF">自行购买</van-radio>
+                  <van-radio style="margin-bottom: 10px" :name="ProcurementChannels.PURCHASED_BY_SPLIT_CAGE">动物分笼</van-radio>
                 </van-radio-group>
               </template>
             </van-cell>

+ 33 - 2
src/view/user/index.vue

@@ -52,7 +52,7 @@
         <h4>课题组经费统计</h4>
         <div class="balance-display">
           <span class="amount">{{ financeStats.calculatedBalance.toFixed(2) }}</span>
-          <p class="label">可用余额(¥)</p>
+          <p class="label">余额(¥)</p>
           <van-icon name="arrow" class="arrow-icon" />
         </div>
       </div>
@@ -138,6 +138,10 @@
             <div class="card-details">
               <div class="grid">
                 <div class="grid-item">
+                  <p class="label">余额</p>
+                  <p class="value">¥{{ (item.finAvailBalance-item.finLockAmount|| 0).toFixed(2) }}</p>
+                </div>
+                <div class="grid-item" >
                   <p class="label">可用余额</p>
                   <p class="value">¥{{ (item.finAvailBalance || 0).toFixed(2) }}</p>
                 </div>
@@ -153,6 +157,10 @@
                   <p class="label">已出账单</p>
                   <p class="value">¥{{ (item.finIssuedBill || 0).toFixed(2) }}</p>
                 </div>
+                <div class="grid-item">
+                  <p class="label">未出账单</p>
+                  <p class="value">¥{{ (item.finUnpaidBill || 0).toFixed(2) }}</p>
+                </div>
               </div>
             </div>
           </div>
@@ -371,7 +379,7 @@ const getFinanceStats = async () => {
     totalLocked,
     totalIssued,
     totalUnpaid,
-    calculatedBalance: totalCredit + totalBalance - totalLocked,
+    calculatedBalance: totalBalance - totalLocked,
   }
 }
 
@@ -703,6 +711,29 @@ onMounted(() => {
           gap: 12px;
 
           .grid-item {
+            &.full-width {
+              grid-column: span 2;
+              display: flex;
+              justify-content: space-between;
+              align-items: center;
+              border-bottom: 1px solid #eee;
+              padding-bottom: 10px;
+              margin-bottom: 4px;
+
+              .label {
+                margin-bottom: 0;
+                font-size: 13px;
+                color: #333;
+                font-weight: 500;
+              }
+
+              .value {
+                font-size: 16px;
+                font-weight: bold;
+                color: #1c9bfd;
+              }
+            }
+
             .label {
               font-size: 12px;
               color: #999;