Browse Source

#261 修改智慧教室授權清單數據區,讀取aprules、schoolCode與Osbert 一致

Louise Lin 4 năm trước cách đây
mục cha
commit
6a2d16fd10

+ 45 - 30
TEAMModelOS/ClientApp/src/store/module/serviceDriveAuth.js

@@ -18,11 +18,13 @@ export default {
 
     //接實際api使用,一開始序號為空
     serial: [],
-    serialInfo:{
-      totalNum:0,
-      couldActiveNum:0, //可啟用數:所有未啟用的序號總和 expireStatus=''
-      activeNum:0, //已啟用序號數:目前啟用的序號總和  Jeff=> expireStatus='A',目前改為已啟用Hiteach數 James 所有啟用且綁定的機台數
-    }
+    serialInfo: {
+      totalNum: 0,
+      multiAuthNum: 0, //大量授權
+      singleAuthNum: 0, //單一授權
+      couldActiveNum: 0, //可啟用裝置數
+      activeNum: 0, //已啟用裝置數
+    },
   },
   getters: {
     getServiceIntroIsOpen: (state) => {
@@ -38,8 +40,8 @@ export default {
         return {};
       }
     },
-    getHiteachAuthListInfo:(state)=>{
-      return state.serialInfo
+    getHiteachAuthListInfo: (state) => {
+      return state.serialInfo;
     },
     getHiteachAuthList: (state) => {
       /*if (state.hiteachAuthList !== undefined) {
@@ -62,7 +64,6 @@ export default {
     },
   },
   mutations: {
-    
     setServiceIntroIsOpen(state, data) {
       state.serviceIntroIsOpen = data;
     },
@@ -75,29 +76,43 @@ export default {
     setHiteachAuthList(state, data) {
       //state.hiteachAuthList = data;  //接mock
       state.serial = data;
-      state.serialInfo.totalNum=data.length
+      state.serialInfo.totalNum = data.length;
 
-      //計算可啟用
-      let couldActiveNum=0
-      data.forEach(item => {
-          if(item.expireStatus==''){
-            couldActiveNum++
-          }
+      //計算大量授權
+      let multiAuthNum = 0;
+      data.forEach((item) => {
+        if (item.deviceMax > 1) {
+          multiAuthNum += 1;
+        }
       });
-      state.serialInfo.couldActiveNum=couldActiveNum
-       //計算已啟用數
-       let activeNum=0
-       data.forEach(item => {
-        
-        if(item.expireStatus=='A'){
-          //console.log(item.deviceBound.length)
-          activeNum+=item.deviceBound.length
+      state.serialInfo.multiAuthNum = multiAuthNum;
+
+      //計算單一授權數
+      let singleAuthNum = 0;
+      data.forEach((item) => {
+        if (item.deviceMax == 1) {
+          singleAuthNum += 1;
         }
-        
-       
+      });
+      state.serialInfo.singleAuthNum = singleAuthNum
 
-    });
-    state.serialInfo.activeNum=activeNum
+      //計算可啟用裝置數
+      let couldActiveNum = 0;
+      data.forEach((item) => {
+        if (item.expireStatus != "F") {
+          couldActiveNum += item.deviceMax;
+        }
+      });
+      state.serialInfo.couldActiveNum = couldActiveNum;
+      //計算已啟用裝置數
+      let activeNum = 0;
+      data.forEach((item) => {
+        if (item.expireStatus == "A" || item.expireStatus == "S") {
+          //console.log(item.deviceBound.length)
+          activeNum += item.deviceBound.length;
+        }
+      });
+      state.serialInfo.activeNum = activeNum;
     },
     setSpaceStatus(state, data) {
       state.spaceStatus = data;
@@ -143,11 +158,11 @@ export default {
     },
 
     //
-    getHiteachAuthList(context) {
+    getHiteachAuthList(context, schoolCode) {
       return new Promise((resolve, reject) => {
-        apiTools.serviceDriveAuth.GetHiteachList(context.state.schoolCode).then(
+        apiTools.serviceDriveAuth.GetHiteachList(schoolCode).then(
           (res) => {
-            let temp=[];
+            let temp = [];
             for (let i = 0; i < res.serial.length; i++) {
               temp.push({
                 index: i,

+ 4 - 3
TEAMModelOS/ClientApp/src/view/serviceDriveAuth/Index.vue

@@ -53,8 +53,8 @@ export default {
   },
 
   methods: {
-    getHiteachAuthList(){
-      this.$store.dispatch("serviceDriveAuth/getHiteachAuthList").then(
+    getHiteachAuthList(schoolCode){
+      this.$store.dispatch("serviceDriveAuth/getHiteachAuthList",schoolCode).then(
         (res) => {
           this.$Message.success("智慧教室授權管理 取得 HiteachList API資料");
         },
@@ -79,7 +79,8 @@ export default {
     },
   },
   mounted() {
-    this.getHiteachAuthList();
+    //console.log(this.$store.state.user.schoolCode)
+    this.getHiteachAuthList(this.$store.state.user.schoolCode);
     this.getDataAsyc();
      this.$nextTick(() => {
       window.addEventListener("resize", this.onResize);

+ 21 - 0
TEAMModelOS/ClientApp/src/view/serviceDriveAuth/SubComponents/HiteachAuthList.less

@@ -50,6 +50,18 @@
     padding: 20px;
     padding-bottom: 10px;
     padding-left: 30px;
+    .device-max {
+      position: relative;
+      top: 0px;
+      left: 0px;
+      margin-right:4px;
+      display: inline-block;
+      font-size: 8px !important;
+      font-weight: bolder;
+      padding: 2px 5px;
+      background-color: #1cc0f3;
+      border-radius: 3px;
+    }
     .nomal-text {
       font-size: 10px;
       color: #8d8d8d;
@@ -59,6 +71,15 @@
       margin-top: -5px;
       font-weight: 500;
     }
+    .info-num-small{
+      font-size: 30px;
+      display: inline-block;
+      font-weight: 500;
+      position: relative;
+      line-height: 25px;
+      left:15px;
+      top: 6px;
+    }
   }
 
   .action-btn {

+ 62 - 74
TEAMModelOS/ClientApp/src/view/serviceDriveAuth/SubComponents/HiteachAuthList.vue

@@ -21,33 +21,46 @@
     <div class="service-list">
       <div class="service-listTitle">智慧教室授權管理</div>
       <Row>
-        <i-col :xs="24" :sm="24" :md="24" :lg="16">
+        <i-col :xs="24" :sm="24" :md="24" :lg="19">
           <Row>
-            <i-col :xs="24" :sm="24" :md="24" :lg="8">
+            <i-col :xs="24" :sm="24" :md="24" :lg="13">
               <div class="hiteach-info">
                 <p class="nomal-text">Hiteach序號數</p>
-                <p class="info-num">{{ serialInfo.totalNum }}</p>
+                <Row>
+                  <i-col :xs="24" :sm="24" :md="24" :lg="12">
+                    <p class="device-max">大量</p>
+                    &nbsp;<span class="nomal-text">授權</span>
+                    <p class="info-num-small">{{ serialInfo.multiAuthNum }}</p>
+                  </i-col>
+                  <i-col :xs="24" :sm="24" :md="24" :lg="12">
+                    <p class="device-max">單一</p>
+                    &nbsp;<span class="nomal-text">授權</span>
+                    <p class="info-num-small">{{ serialInfo.singleAuthNum }}</p>
+                  </i-col>
+                </Row>
+
+                <!--p class="info-num">{{ serialInfo.totalNum }}</p-->
               </div>
             </i-col>
-            <i-col :xs="24" :sm="24" :md="24" :lg="8">
+            <i-col :xs="24" :sm="24" :md="24" :lg="5">
               <div class="hiteach-info">
-                <p class="nomal-text">可啟用Hiteach序號數</p>
+                <p class="nomal-text">可啟用裝置數</p>
                 <p class="info-num">
                   {{ serialInfo.couldActiveNum }}
                 </p>
               </div>
             </i-col>
-            <i-col :xs="24" :sm="24" :md="24" :lg="8">
+            <i-col :xs="24" :sm="24" :md="24" :lg="6">
               <div class="hiteach-info">
-                <p class="nomal-text">已啟用Hiteach數</p>
+                <p class="nomal-text">已啟用裝置數</p>
                 <p class="info-num">
-                 {{ serialInfo.activeNum }}
+                  {{ serialInfo.activeNum }}
                 </p>
               </div>
             </i-col>
           </Row></i-col
         >
-        <i-col :xs="24" :sm="24" :md="24" :lg="8">
+        <i-col :xs="24" :sm="24" :md="24" :lg="5">
           <div class="action-btn" @click="gotoHiteachMgmt()">
             管理Hiteach教室
           </div>
@@ -77,8 +90,12 @@
       </Dropdown>
     </div>
     <div class="hiteach-list" :style="{ height: windowHeight - 250 + 'px' }">
-      <div class="hiteach-item" v-for="(i,index) in hiteachAuthList" :key="i.id" v-show='filterCondition(i)'>
-       
+      <div
+        class="hiteach-item"
+        v-for="(i, index) in hiteachAuthList"
+        :key="i.id"
+        v-show="filterCondition(i)"
+      >
         <div
           class="detail-btn"
           @click="setIntroOpen(index)"
@@ -86,11 +103,11 @@
         >
           <!--只要是單一就直接展開無需開關控件-->
           <Icon
-           v-show="hiteachListItemIsOpen[index].isOpen == false"
+            v-show="hiteachListItemIsOpen[index].isOpen == false"
             type="ios-arrow-down"
           />
           <Icon
-           v-show="hiteachListItemIsOpen[index].isOpen == true"
+            v-show="hiteachListItemIsOpen[index].isOpen == true"
             type="ios-arrow-up"
           />
         </div>
@@ -119,48 +136,16 @@
             >
               {{ i.serial }}
             </p>
+            
             <p class="app-group">
               <span
+                v-for="(item, index) in aprules"
+                :key="index"
                 class="more-app"
                 :class="{
-                  'bought-app': i.aprule.hasOwnProperty('sokapp') == true,
-                }"
-                >蘇格拉底議課</span
-              >
-              <span
-                class="more-app"
-                :class="{
-                  'bought-app': i.aprule.hasOwnProperty('sokrpt') == true,
-                }"
-                >蘇格拉底報告</span
-              >
-              <span
-                class="more-app"
-                :class="{
-                  'bought-app': i.aprule.hasOwnProperty('sokdesk') == true,
+                  'bought-app': i.aprule.hasOwnProperty(item) == true,
                 }"
-                >蘇格拉底桌面</span
-              >
-              <span
-                class="more-app"
-                :class="{
-                  'bought-app': i.aprule.hasOwnProperty('sokvdo') == true,
-                }"
-                >蘇格拉底影片</span
-              >
-              <span
-                class="more-app"
-                :class="{
-                  'bought-app': i.aprule.hasOwnProperty('remotcls') == true,
-                }"
-                >遠距教室服務</span
-              >
-              <span
-                class="more-app"
-                :class="{
-                  'bought-app': i.aprule.hasOwnProperty('ezs') == true,
-                }"
-                >錄播系統</span
+                >{{ $t("schoolBaseInfo." + item) }}</span
               >
             </p>
             <Row>
@@ -168,7 +153,7 @@
                 <p class="nomal-text">
                   序號到期日:<span
                     class="strong-text"
-                    v-if="i.expireStatus == 'A'||i.expireStatus === ''"
+                    v-if="i.expireStatus == 'A' || i.expireStatus === ''"
                     >{{ i.endDate == 0 ? "無到期日" : converTime(i.endDate) }}
                   </span>
                   <!--span  class="strong-text" v-if="i.expireStatus === ''">(未啟用)</span-->
@@ -179,51 +164,54 @@
               </i-col>
               <i-col :xs="24" :sm="24" :md="24" :lg="17"
                 ><p class="nomal-text" style="margin-left: 4%">
-                  序號使用狀況:<span
-                    class="strong-text"
-                    
-                    >{{i.deviceBound.length
-                    }}
-                    / {{ i.deviceMax }} ({{
+                  序號使用狀況:<span class="strong-text"
+                    >{{ i.deviceBound.length }} / {{ i.deviceMax }} ({{
                       (i.deviceBound.length > i.deviceMax
                         ? 100
                         : (i.deviceBound.length / i.deviceMax) * 100
                       ).toFixed(0) + "%"
                     }})</span
                   >
-                  
                 </p></i-col
               >
             </Row>
           </i-col>
         </Row>
-          <!--只要是單一就直接展開無需開關控件-->
+        <!--只要是單一就直接展開無需開關控件-->
         <ul
           class="pclist"
           v-if="
-            i.endDate != 1 &&
-            hiteachListItemIsOpen[index].isOpen == true ||
+            (i.endDate != 1 && hiteachListItemIsOpen[index].isOpen == true) ||
             i.deviceMax == 1
           "
         >
           <li
-            :id="`PC${pc.uuid!=null?pc.uuid:pc.uuid2}`"
+            :id="`PC${pc.uuid != null ? pc.uuid : pc.uuid2}`"
             v-for="(pc, index) in i.deviceBound"
             :key="index + 'pc'"
             v-show="i.deviceMax != 1 ? index < i.deviceMax : index < 1"
             class="pclist-item"
           >
-            <p class="pc-title">{{ pc.pcname==null ?'未命名機台':pc.pcname  }}</p>
-            <p class="nomal-text">{{ pc.ip }} | {{ pc.uuid!=null?pc.uuid:pc.uuid2 }}</p>
-            <p class="nomal-text">{{ pc.os }}&nbsp;{{ pc.cpu }}&nbsp;{{(pc.ram/1000).toFixed(1) }}G RAM</p>
-            <div class="action-btn" @click="comfirmRemovePC(pc.uuid!=null?pc.uuid:pc.uuid2)">
+            <p class="pc-title">
+              {{ pc.pcname == null ? "未命名機台" : pc.pcname }}
+            </p>
+            <p class="nomal-text">
+              {{ pc.ip }} | {{ pc.uuid != null ? pc.uuid : pc.uuid2 }}
+            </p>
+            <p class="nomal-text">
+              {{ pc.os }}&nbsp;{{ pc.cpu }}&nbsp;{{
+                (pc.ram / 1000).toFixed(1)
+              }}G RAM
+            </p>
+            <div
+              class="action-btn"
+              @click="comfirmRemovePC(pc.uuid != null ? pc.uuid : pc.uuid2)"
+            >
               <Icon type="md-close" /> 解除授權
             </div>
           </li>
           <!--div v-if="i.deviceBound==0" class='pclist-empty' >尚未綁定任何機台</div-->
         </ul>
-
-
       </div>
     </div>
   </div>
@@ -256,8 +244,8 @@ export default {
   },
   computed: {
     ...mapGetters({
-      serialInfo:"serviceDriveAuth/getHiteachAuthListInfo",
-      
+      serialInfo: "serviceDriveAuth/getHiteachAuthListInfo",
+      aprules: "schoolBaseInfo/getAprules", //讀取周邊產品列表
       hiteachListItemIsOpenVuex: "serviceDriveAuth/getHiteachListItemIsOpen",
     }),
   },
@@ -265,14 +253,14 @@ export default {
     hiteachAuthList: function (value) {
       //根據服務的長度生出開關,只要服務數量變動就必須重置
       let temp = [];
-    
+
       for (let i = 0; i < value.length; i++) {
         temp.push({
           index: i,
           isOpen: false,
         });
       }
-      console.log(value, temp );
+      console.log(value, temp);
       this.hiteachListItemIsOpen = temp;
     },
   },
@@ -326,9 +314,9 @@ export default {
         case "4":
           return item.prodName === "TBL";
         case "5":
-          return item.deviceBound.length != 0 ;
+          return item.deviceBound.length != 0;
         case "6":
-          return item.expireStatus ==='F';
+          return item.expireStatus === "F";
 
         default:
           return true;