Explorar o código

BI統購後台 匯入學校流程優化、追加驗證縣市總名額數及各學校名額總和

jeff hai 8 meses
pai
achega
996d93f9c7
Modificáronse 1 ficheiros con 34 adicións e 7 borrados
  1. 34 7
      TEAMModelBI/ClientApp/src/view/htcommunity/adminpanel.vue

+ 34 - 7
TEAMModelBI/ClientApp/src/view/htcommunity/adminpanel.vue

@@ -44,6 +44,8 @@
                 </el-form-item>
                 <el-form-item :label="$t('purchase.quota')" :label-width="formLabelWidth" prop="qwen">
                     <el-input v-model.number="form.qwen" style="width: 240px" :placeholder="$t('purchase.inputQuota')" />
+                    <span class="span-red" style="margin-left: 10px" v-if="ifSchSeatsOverGeoSeats">學校名額合計:{{seatSumOfSch}}</span>
+                    <span style="margin-left: 10px" v-else>學校名額合計:{{seatSumOfSch}}</span>
                 </el-form-item>
                 <el-form-item :label="$t('purchase.school')" :label-width="formLabelWidth">
                     <el-table :data="form.schools" style="width: 100%">
@@ -76,7 +78,7 @@
             </el-form>
             <template #footer>
                 <div class="dialog-footer">
-                    <el-button type="primary" @click="saveData">{{$t('purchase.confirmOk')}}</el-button>
+                    <el-button type="primary" @click="saveData" :disabled="ifSchSeatsOverGeoSeats" :loading="delaySaveData">{{$t('purchase.confirmOk')}}</el-button>
                     <el-button @click="clearform">{{$t('purchase.cancel')}}</el-button>
                 </div>
             </template>
@@ -259,6 +261,7 @@ EEEE    120
   const formLabelWidth = '140px'
   const delayAddSchool = ref(false)
   const delayImportSchool = ref(false)
+  const delaySaveData = ref(false)
 
   // 檢查數字不可為零
   const validateNum = (rule, value, callback) => {
@@ -610,7 +613,24 @@ EEEE    120
           form.schools.splice(index, 1);
       }
   }
-
+  //學校名額總計
+  const seatSumOfSch = computed(() => {
+      if (form.schools.length > 0) {
+          return form.schools.map(item => item.seats).reduce((prev, next) => prev + next);
+      }
+      else {
+          return 0;
+      }
+  })
+  //是否各學校名額總合超過縣市總名額
+  const ifSchSeatsOverGeoSeats = computed(() => {
+      if (seatSumOfSch.value > form.qwen) {
+          return true;
+      }
+      else {
+          return false;
+      }
+  })
   onMounted(() => {    
     //routers.push({ name: 'adminpanel'})  
     //routers.forward()  
@@ -663,6 +683,7 @@ EEEE    120
   }
   function saveData() {        
     if (!ruleFormRef) return;
+    delaySaveData.value = true;
     ruleFormRef.value.validate((valid) => {
       if (valid) {
         // 表单验证通过,可以提交表单数据
@@ -692,13 +713,16 @@ EEEE    120
         proxy.$api.setPurchaseSeats(data, isTest).then((res) => {
           if (res.err === '') {
             clearform();
-            getList();
+              getList();
+            delaySaveData.value = false;
           }
           else {
             ElMessage.error(res.err)
+            delaySaveData.value = false;
           }
         }).catch((error) => {
           ElMessage.error('API异常')
+          delaySaveData.value = false;
         })
 
         // 在这里进行提交表单的操作
@@ -707,9 +731,6 @@ EEEE    120
         return false;
       }
     });
-
-    
-
   }
   // 產品表單切換
   function handleChange() {    
@@ -809,6 +830,10 @@ EEEE    120
     }
     });
     dialogImportSchVisible.value = false;
+    //學校總名額是否超過縣市名額驗證
+    if (ifSchSeatsOverGeoSeats.value) {
+        alert("學校的名額總合已超過縣市名額!")
+    }
   }
   //[舊代碼不使用]匯入學校
   //function importData() {
@@ -890,7 +915,9 @@ EEEE    120
     display: flex;
     justify-content: center;
   }
-
+  .span-red {
+    color: red;
+  }
   </style>
 <style scoped>