浏览代码

Merge branch 'TPE/develop' into TPE/feat/ServiceDriveAuth

Louise Lin 4 年之前
父节点
当前提交
394ec989ef

+ 8 - 2
TEAMModelOS/ClientApp/src/locale/lang/en-US/schoolBaseInfo.js

@@ -74,7 +74,13 @@ export default {
   csTips4: 'at least one item needs to be reserved! ',
   csTips5: 'upload succeeded! ',
   csTips6: 'this serial number has been bound to the classroom! ',
-  csTips7: 'Delete succese£¡',
+  csTips7: 'Delete succese��',
   presetClassroomName: 'preset classroom',
-  presetHeadmaster: 'no head teacher specified'
+  presetHeadmaster: 'no head teacher specified',
+  sokapp:'�格拉底议课',
+  remotcls:'远�教室�务',
+  sokdesk:'�格拉底桌�',
+  sokrpt:'�格拉底报告',
+  sokvdo:'�格拉底影片',
+  ezs:'录播系统'
 }

+ 7 - 2
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/schoolBaseInfo.js

@@ -72,6 +72,11 @@ export default {
   csTips6: '此序号已绑定到教室!',
   csTips7: '删除成功!',
   presetClassroomName: '教室',
-  presetHeadmaster: '未指定班主任'
-
+  presetHeadmaster: '未指定班主任',
+  sokapp:'苏格拉底议课',
+  remotcls:'远距教室服务',
+  sokdesk:'苏格拉底桌面',
+  sokrpt:'苏格拉底报告',
+  sokvdo:'苏格拉底影片',
+  ezs:'录播系统'
 }

+ 7 - 2
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/schoolBaseInfo.js

@@ -71,6 +71,11 @@ export default {
   csTips6: '此序號已綁定到教室!',
   csTips7: '刪除成功!',
   presetClassroomName: '教室',
-  presetHeadmaster: '未指定班主任'
-
+  presetHeadmaster: '未指定班主任',
+  sokapp:'蘇格拉底議課',
+  remotcls:'遠距教室服務',
+  sokdesk:'蘇格拉底桌面',
+  sokrpt:'蘇格拉底報告',
+  sokvdo:'蘇格拉底影片',
+  ezs:'錄播系統'
 }

+ 3 - 0
TEAMModelOS/ClientApp/src/store/module/schoolBaseInfo.js

@@ -3,6 +3,8 @@ import JSONPath from 'jsonpath'
 export default {
     namespaced: true,
     state: {
+        // "sokapp":"蘇格拉底議課APP" "remotcls":"遠距教室服務" "sokdesk":"蘇格拉底桌面" "sokrpt":"蘇格拉底報告" "sokvdo":"蘇格拉底影片" "ezs":"ezStation錄播系統"
+        aprules:["sokapp", "remotcls", "sokdesk", "sokrpt", "sokvdo", "ezs"],
         schoolBaseInfo: {
             period: []
         },
@@ -18,6 +20,7 @@ export default {
         getGrades: state => state.srvAdr,
         getStudent: state => state.students,
         getSchoolInfo: state => state.schoolBaseInfo,
+        getAprules: state=> state.aprules
     },
     mutations: {
         setSchoolInfo(state, data) {

+ 5 - 0
TEAMModelOS/ClientApp/src/store/module/user.js

@@ -548,6 +548,11 @@ export default {
             context.commit('setStudentProfile', data)
         },
         async checkSchoolProfile(context) {
+            let school_profile = localStorage.getItem('school_profile')
+            if(school_profile){
+                context.dispatch('setSchoolProfile', JSON.parse(decodeURIComponent(school_profile,"utf-8")))
+            }
+
             let login_schooCode = localStorage.getItem('login_schooCode')
             let id_token = localStorage.getItem('id_token')
 

+ 50 - 0
TEAMModelOS/ClientApp/src/view/schoolmgmt/ClassroomSetting/ClassroomSetting.less

@@ -386,10 +386,60 @@
     }
 }
 .hiteach-collapse{
+    border-bottom: 1px solid #424242;
+    position: relative;
+    cursor: pointer;
     &-main{
+        display: flex;
+        align-items: center;
+        padding: 20px 0 20px 20px;
         &:hover{
             background-image: linear-gradient(90deg, rgba(30,30,30,0) 0%, rgba(110,110,110,.2) 50%, rgba(110,110,110,.4) 100%);
         }
+        .arrowIcon{
+            position: absolute;
+            right: 5px;
+            top: 20px;
+        }
+        .proIcon{
+            width: 60px;
+            height: 60px;
+            margin-right: 30px;
+        }
+        .proCont{
+            font-size: 12px;
+            letter-spacing: 1px;
+            ul li{
+                .title{
+                    display: inline-block;
+                    margin-right: 12px;
+                    font-size: 16px;
+                    font-weight: 500;
+                    color: #bdbdbd;
+                    color:white;
+                }
+                .serialType{
+                    margin-right: 12px;
+                    padding: 2px 5px;
+                    background: #1cc0f3;
+                    border-radius: 3px;
+                    color: white;
+                }
+                .tag{
+                    display: inline-block;
+                    border: 1px solid #8d8d8d;
+                    padding: 3px 10px;
+                    color: #8d8d8d;
+                    margin-top: 5px;
+                    margin-right: 10px;
+                    border-radius: 5px;
+                    &.active{
+                        color: #1cc0f3!important;
+                        border-color: #1cc0f3!important;
+                    }
+                }
+            }
+        }
     }
     .hiteach-collapse-sub{
         &:hover{

+ 70 - 44
TEAMModelOS/ClientApp/src/view/schoolmgmt/ClassroomSetting/ClassroomSetting.vue

@@ -11,7 +11,7 @@
                         {{ '班级列表' }}
                         <Icon type="ios-arrow-down"></Icon>
                     </span>
-                    <DropdownMenu slot="list" v-for="(item,index) in this.$store.state.schoolBaseInfo.schoolBaseInfo.period" :value="item.id" :key="index">
+                    <DropdownMenu slot="list" v-for="(item,index) in periods" :value="item.id" :key="index">
                         <DropdownItem :name="item.id">{{ item.name }}</DropdownItem>
                     </DropdownMenu>
                 </Dropdown>
@@ -176,40 +176,40 @@
                             </p>
                             <div class="class-list-filter">
                                 <div class="class-list-filter-box">
-                                    <Dropdown class="sort-dropdown" trigger="click" placement="bottom-start">
+                                    <Dropdown class="sort-dropdown" trigger="click" placement="bottom-start" @on-click="function(e){ filterHiteachVer = e }" >
                                         <span style="cursor: pointer;color:white;">
                                             {{ '顯示所有版本的Hiteach' }}
                                             <Icon type="ios-arrow-down"></Icon>
                                         </span>
                                         <DropdownMenu slot="list">
-                                            <DropdownItem name="All">{{ '顯示所有版本的Hiteach' }}</DropdownItem>
-                                            <DropdownItem name="Standard">{{ '僅顯示Hiteach Standard版本' }}</DropdownItem>
-                                            <DropdownItem name="Pro">{{ '僅顯示Hiteach Pro版本' }}</DropdownItem>
+                                            <DropdownItem name="ALL">{{ '顯示所有版本的Hiteach' }}</DropdownItem>
+                                            <DropdownItem name="STD">{{ '僅顯示Hiteach Standard版本' }}</DropdownItem>
+                                            <DropdownItem name="PRO">{{ '僅顯示Hiteach Pro版本' }}</DropdownItem>
                                             <DropdownItem name="TBL">{{ '僅顯示Hiteach TBL版本' }}</DropdownItem>
                                         </DropdownMenu>
                                     </Dropdown>
                                     <div class="dark-iview-input" style="padding-right:10px;">
-                                        <Input clearable v-model="serchCode" size="small" suffix="ios-search" @on-change="filterCode"></Input>
+                                        <Input clearable v-model="serchCode" size="small" suffix="ios-search" ></Input>
                                     </div>
                                 </div>
                             </div>
                         </div>
                         <div class="hiteach-code-wrap-list">
                             <vuescroll>
-                                <div class="hiteach-collapse" style="border-bottom: 1px solid #424242;position: relative;cursor: pointer;" v-for="(item, index) in showhiteachData" :key="index">
-                                    <div @click="openHiSub(index)" class="hiteach-collapse-main" style="display: flex;align-items: center;padding: 20px 0 20px 20px;">
+                                <div class="hiteach-collapse" v-for="(item, index) in showhiteachData" :key="index">
+                                    <div @click="openHiSub(index)" class="hiteach-collapse-main">
 
-                                        <Icon v-if="item.deviceMax > 1" :type="item.subOpen ? 'ios-arrow-up' : 'ios-arrow-down'" size="30" color="white" style="position: absolute;right: 5px;top: 20px;"/>
+                                        <Icon class="arrowIcon" v-if="item.deviceMax > 1" :type="item.subOpen ? 'ios-arrow-up' : 'ios-arrow-down'" size="30" color="white" />
 
-                                        <v-icon style="width: 60px;height: 60px;margin-right: 30px;" :iconClass="item.prodName == 'STD' ? 'htc_std' : item.prodName == 'TBL' ? 'htc_tbl' : 'htc_pro'" />
+                                        <v-icon class="proIcon" :iconClass="item.prodName == 'STD' ? 'htc_std' : item.prodName == 'TBL' ? 'htc_tbl' : 'htc_pro'" />
 
-                                        <div style="font-size: 12px;letter-spacing: 1px;">
+                                        <div class="proCont">
                                             <ul>
                                                 <li>
-                                                    <h1 class="title" style="display: inline-block;margin-right: 12px;font-size: 16px;font-weight: 500;color: #bdbdbd;color:white;">
+                                                    <h1 class="title">
                                                         {{ item.prodGroup +' '+item.prodName}}
                                                     </h1>
-                                                    <span style="margin-right: 12px;padding: 2px 5px;background: #1cc0f3;border-radius: 3px;color: white;;">
+                                                    <span class="serialType">
                                                         {{ item.deviceMax == 1 ? $t('單一') : $t('大量')}}
                                                     </span>
                                                     <span style="color: #1cc0f3;font-size:12px">
@@ -218,15 +218,10 @@
                                                     </span>
                                                 </li>
                                                 <li><span style="color: #1cc0f3;">{{ item.serial }}</span></li>
-                                                <li>
-                                                    <Tag type="border" :color="item.aprule.sokapp ? '#1cc0f3' : '#8d8d8d'"> {{ $t('蘇格拉底議課')}}</Tag>
-                                                    <Tag type="border" :color="item.aprule.sokreport ? '#1cc0f3' : '#8d8d8d'"> {{ $t('蘇格拉底報告')}}</Tag>
-                                                    <Tag type="border" :color="item.aprule.sokDestop ? '#1cc0f3' : '#8d8d8d'"> {{ $t('蘇格拉底桌面')}}</Tag>
-                                                    <Tag type="border" :color="item.aprule.sokvdo ? '#1cc0f3' : '#8d8d8d'"> {{ $t('蘇格拉底影片')}}</Tag>
-                                                    <Tag type="border" :color="item.aprule.remoteSys ? '#1cc0f3' : '#8d8d8d'"> {{ $t('遠距教室服務')}}</Tag>
-                                                    <Tag type="border" :color="item.aprule.ezs ? '#1cc0f3' : '#8d8d8d'"> {{ $t('錄播系統')}}</Tag>
+                                                <li style="display: block;">
+                                                    <div v-for="(aprule, index) in aprules" :key="index" class="tag" :class="{active: item.aprule[aprule]}">{{ $t('schoolBaseInfo.'+ aprule)}}</div>
                                                 </li>
-                                                <li><span style="color: #8d8d8d;">序號到期日: </span>{{item.DateDate | timeFmt}}</li>
+                                                <li><span style="color: #8d8d8d;">{{$t('序號到期日')}}: </span>{{item.endDate | timeFmt}}</li>
                                             </ul>
                                         </div>
                                     </div>
@@ -239,13 +234,13 @@
                                                     <ul>
                                                         <!-- 被關聯要變色 #888888;-->
                                                         <li>
-                                                            <h3>{{ dbItem.uuid }}</h3>
+                                                            <h3>{{ dbItem.pcname }}</h3>
                                                         </li>
                                                         <li>
-                                                            <span>{{ dbItem.ip }} | {{ dbItem.deveiceId }} </span>
+                                                            <span>{{ dbItem.ip }} {{ dbItem.uuid ? ' | '+ dbItem.uuid : dbItem.uuid2 ? ' | ' + dbItem.uuid2 : ''}} </span>
                                                         </li>
                                                         <li>
-                                                            <span>{{ dbItem.computer }}</span>
+                                                            <span>{{ dbItem.os }}</span>
                                                         </li>
                                                     </ul>
                                                     <span v-if="false" style="color: #1cc0f3;padding: 0 15px;">
@@ -257,7 +252,7 @@
                                         <template v-else>
                                             <div class="hiteach-collapse-sub gradient" style="display: flex;align-items: center;border-top: 1px solid rgb(66, 66, 66);margin-left: 20px;letter-spacing: 1px;font-size: 12px;padding: 20px;">
                                                 <span style="margin-right: 70px;" ></span>
-                                                <div style="display: flex;justify-content: space-between;align-items: center;width: 100%;">
+                                                <div style="display: flex;justify-content: space-between;align-items: center;width: 100%;color: #8d8d8d">
                                                     {{ '此序號尚未啟用' }}
                                                 </div>
                                             </div>
@@ -336,13 +331,14 @@
                 }
             }
             return {
-                showhiteachData: [],
+                hiteachData: [],
                 tblFlag: false,
                 stdFlag: false,
                 proFlag: false,
                 test1: true,
 // 開發中
                 orderBy: 'id',
+                filterHiteachVer: 'ALL',
                 updateBefore:'',
                 filterPeriod: undefined,
                 editStatus: true,//可切换编辑状态
@@ -501,13 +497,14 @@
         computed: {
             ...mapGetters({
                 periods: 'user/getPeriods', // 學制s
-                classes: 'user/getClasses', // 教室ID
+                aprules: 'schoolBaseInfo/getAprules', // 學制s                
             }),
             filterPeriodName: function(){
+                let data = this.periods
                 let pId = this.filterPeriod
                 let name = ''
                 if(pId !== ''){
-                    let temp = this.$store.state.schoolBaseInfo.schoolBaseInfo.period.filter( item => {
+                    let temp = data.filter( item => {
                         return pId == item.id
                     })
                     if(temp.length >0 ) name = temp[0].name
@@ -526,6 +523,37 @@
                         return this.$t('依學生數排序')    
                     break;
                 }
+            },
+            showhiteachData: function(){
+                let data = this.hiteachData
+                let filterText = this.filterHiteachVer
+                if( Array.isArray(data) && data.length > 0 && filterText != 'ALL'){
+                    data = data.filter( item => {
+                        return item.prodName == filterText
+                    })
+                }
+
+                if(this.serchCode !=''){
+                    data = data.filter((item, index) => {
+                        let verName = item.prodGroup + item.prodName
+                        let pcNames = false;
+
+                        if(Array.isArray(item.deviceBound) && item.deviceBound.length > 0) {
+                            pcNames = item.deviceBound.some( db => {
+                                if(db.pcname) {
+                                    return db.pcname.indexOf(this.serchCode) != -1
+                                } else {
+                                    return false
+                                }
+                                
+                            })
+                        }
+
+                        return item.serial.indexOf(this.serchCode) != -1 || verName.indexOf(this.serchCode) != -1 || pcNames
+                    })
+                }
+
+                return data
             }
         },
         methods: {
@@ -619,7 +647,7 @@
             },
             confirmAdd() {
                 this.hiTeachs.push(this.hiTeachItem)
-                this.filterCode()
+                // this.filterCode()
                 this.hiTeachItem = {
                     code: '',
                     single: undefined,
@@ -699,13 +727,13 @@
                 this.drawSchoolPlan('imgUrl')
                 this.initIcon()
             },
-            filterCode() {
-                if (this.serchCode == '') {
-                    this.hiTeachsShow = [...this.hiTeachs]
-                } else {
-                    this.hiTeachsShow = this.hiTeachs.filter(item => item.code.indexOf(this.serchCode) != -1)
-                }
-            },
+            // filterCode() {
+            //     if (this.serchCode == '') {
+            //         this.hiTeachsShow = [...this.hiTeachs]
+            //     } else {
+            //         this.hiTeachsShow = this.hiTeachs.filter(item => item.code.indexOf(this.serchCode) != -1)
+            //     }
+            // },
             
             drawText(text, x, y) {
                 this.schoolPlan = document.getElementById('school-plan')
@@ -1107,7 +1135,7 @@
                         this.classroomListShow[this.curClassIndex].style = 'smart'
                         this.updated = true
                     }
-                    this.filterCode()
+                    // this.filterCode()
                 }
             },
             initData() {
@@ -1165,17 +1193,14 @@
                         if(item.deviceMax == 1) item.subOpen = true
                         return item        
                     })
-                    console.log(temp, '3333333333333333333333')
                 })
-                console.log(temp, 'temp')
-                this.showhiteachData = temp
-                console.log(this.showhiteachData, 'showhiteachData')
+                this.hiteachData = temp
             },
             getHiteachList: async function() {
                 let data = []
                 await this.$api.classroom.GetHiteachList(this.$store.state.user.schoolCode).then(
                     (res) => {
-                        data = res.data
+                        data = res.serial
                     },
                     (err) => {
                         this.$Message.error('API error!')
@@ -1184,14 +1209,14 @@
                 return data
             },
             openHiSub(index){
-                if(this.showhiteachData.length > 0){
+                if(this.showhiteachData.length > 0 && this.showhiteachData[index].deviceMax > 1){
                     this.showhiteachData[index].subOpen = !this.showhiteachData[index].subOpen
                 }
             }
         },
         mounted() {
             this.filterClassname()
-            this.filterCode()
+            // this.filterCode()
             this.initData()
             this.initHiteachData()
         },
@@ -1224,6 +1249,7 @@
         },
         created() {
             this.editStatus = this.noStatus
+            this.getClassroom()
             this.$store.dispatch('teachers/getTeacherList').then(res => { })
         }
     }