Bläddra i källkod

Merge branch 'cmy/develop-bi' into develop

chenmy 1 år sedan
förälder
incheckning
2cf1a0c0d2

+ 1 - 1
TEAMModelBI/ClientApp/public/index.html

@@ -12,7 +12,7 @@
     </title>
 </head>
 <script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script>
-<script src="https://at.alicdn.com/t/c/font_2934132_y5pxh3gyde.js"></script>
+<script src="https://at.alicdn.com/t/c/font_2934132_fnonom4jyg.js"></script>
 <script src="../src/access/iconfont.js"></script>
 
 <body>

+ 1 - 0
TEAMModelBI/ClientApp/src/components/echarts/commonBar.vue

@@ -59,6 +59,7 @@ class InitChart {
     this.state.chart && this.destory()
     this.state.chart = echarts.init(this.myEcharts.value)
     this.state.chart.setOption({
+      backgroundColor:datas.backgroundColor ?datas.backgroundColor:'',
       color: datas.color ? datas.color : '',
       title: datas.title ? datas.title : '',
       tooltip: datas.tooltip ? datas.tooltip : '',

+ 160 - 99
TEAMModelBI/ClientApp/src/view/userInquire/details.vue

@@ -11,62 +11,58 @@
                   <use :xlink:href="item.icon"></use>
                 </svg>
                 <span class="information-text">{{item.value}}</span>
+                <div :title="[item.correlation ? '已关联':'弱关联,可进行手动修改']" v-show="item.key ==='school'">
+                    <svg class="hint-icon" aria-hidden="true"  >
+                        <use :xlink:href="[item.correlation ? '#icon-zhengque3':'#icon-tishi2']"></use>
+                    </svg>
+                </div>
+                <el-button type="" size="small" v-show="item.key ==='school'&& !item.correlation" class="changebtn">更改</el-button>
+                <el-button type="" size="small" v-show="item.key ==='local'">更改</el-button>
             </div>
            </div>
         </div>
         <el-divider />
-        <el-tabs :tab-position="tabPosition" style="height: 85%" class="demo-tabs" v-model="activeName">
-            <el-tab-pane label="基础信息" name="basics">
-                <div class="product-list">
-            <p class="product-title">产品列表:</p>
-            <div class="listbox">
-                <div :class="[item.state ? item.key:'notenabled','listbox-item']" v-for="item in productdata" :key="item.id">
-                    <p class="item-title">{{item.title}}</p>
-                    <div class="item-content" v-show="item.state">
-                        <div class="content-left">
-                            <p>{{item.subhead1}}</p>
-                            <span>{{item.subhead1Value}}</span>
-                        </div>
-                        <div class="content-left">
-                            <p>{{item.subhead2}}</p>
-                            <span>{{item.subhead2Value}}</span>
+        <div class="product-list">
+                    <!-- <p class="product-title">产品列表:</p> -->
+                    <div class="listbox">
+                        <div :class="[item.state ? item.key:'notenabled','listbox-item']" v-for="item in productdata" :key="item.id">
+                            <p class="item-title">{{item.title}}</p>
+                            <div class="item-content" v-show="item.state">
+                                <div class="content-left">
+                                    <p>{{item.subhead1}}</p>
+                                    <span>{{item.subhead1Value}}</span>
+                                </div>
+                                <div class="content-left">
+                                    <p>{{item.subhead2}}</p>
+                                    <span>{{item.subhead2Value}}</span>
+                                </div>
+                            </div>
+                            <div class="notenabled-title" v-show="!item.state">未使用</div>
                         </div>
                     </div>
-                    <div class="notenabled-title" v-show="!item.state">未使用</div>
-                </div>
-            </div>
         </div>
-            <el-divider />
-            <div class="product-details">
-               <div class="user-ip">
-                <p class="user-ip-title">用户登录</p>
-                <el-divider />
-                <el-table :data="tableData" height="330" style="width: 100%" size="small">
-                    <el-table-column prop="time" label="时间" align="center"/>
-                    <el-table-column prop="ip" label="ip地址" align="center"/>
-                    <el-table-column prop="location" label="位置"  align="center"/>
-                    <el-table-column prop="platform" label="平台"  align="center"/>
-                </el-table>
-               </div>
-               <div class="user-login">
-                <p  class="user-ip-title">用户活跃</p>
-                <el-divider />
-                <div class="login-echart">
-                    <commonHeatmapVue :mapData="heatMapdata"></commonHeatmapVue>
+        <el-divider />
+        <div class="product-details">
+            <div class="hiteachboxdiv">
+                <div  class="common-header-title">
+                    <div>HiTeach</div>
+                    <div class="expire">到期日:2023-11-22</div>
                 </div>
                 <el-divider />
-                <div class="heartmap-label">
-                    <div class="heatmap-item" v-for="item in maplabels" :key="item.id">
-                        <div class="colorbox" :style="{'background-color':item.color}"></div>
-                        <div class="valuebox">{{item.value}}</div>
-                    </div>
+                <Hiteach></Hiteach>
+            </div>
+            <div class="hitadiv">
+                <div  class="common-header-title">
+                    <div>HiTA</div>
+                    <div class="expire">到期日:2023-11-22</div>
                 </div>
-               </div>
-               <div class="user-size">
-                <p  class="user-ip-title">空间情况</p>
                 <el-divider />
-                <div class="login-echart">
-                    <commonGaugeVue :gaugeData="gaugedata"></commonGaugeVue>
+                <HiTA></HiTA>
+            </div>
+            <div class="user-size">
+                <div  class="common-header-title">
+                    <div>空间情况</div>
+                    <div class="expire">到期日:2023-11-22</div>
                 </div>
                 <el-divider />
                 <div class="size-label">
@@ -75,16 +71,31 @@
                         <div class="size-title">{{item.title}}</div>
                     </div>
                 </div>
-               </div>
+                <el-divider />
+                <div class="login-echart">
+                    <commonGaugeVue :gaugeData="gaugedata"></commonGaugeVue>
+                </div>
+            </div>
+            <div class="iesdiv">
+                <div  class="common-header-title">
+                    <div>IES</div>
+                    <div class="expire">到期日:2023-11-22</div>
+                </div>
+                <el-divider />
+                <IES></IES>
+            </div>
+            <div class="socratesdiv">
+                <div  class="common-header-title">
+                    <div>苏格拉底</div>
+                    <div class="expire">到期日:2023-11-22</div>
+                </div>
+                <el-divider />
+                <Socrates></Socrates>
             </div>
-            </el-tab-pane>
-            <el-tab-pane label="HiTeach" name="hiteach">
+        </div>
+            <!-- <el-tab-pane label="HiTeach" name="hiteach">
                 <Hiteach v-if="activeName ==='hiteach'"></Hiteach>
-            </el-tab-pane>
-            <el-tab-pane label="HiTA" name="hita">Role</el-tab-pane>
-            <el-tab-pane label="IES" name="ies">Task</el-tab-pane>
-            <el-tab-pane label="苏格拉底" name="socrates">Task</el-tab-pane>
-        </el-tabs>
+            </el-tab-pane> -->
     </div>
 </template>
 <script setup>
@@ -93,13 +104,17 @@ import { Iphone } from '@element-plus/icons'
 import commonHeatmapVue from '../../components/echarts/commonHeatmap.vue'
 import commonGaugeVue from '../../components/echarts/commonGauge.vue'
 import Hiteach from './hiteach.vue'
+import HiTA from './hita.vue'
+import IES from './ies.vue'
+import Socrates from './socrates.vue' 
 let activeName=ref('basics')
 let tabPosition=ref('left')
 let userdata = ref([
-    { id: 1, icon: '#icon-shouji', value: '1234567890', title: '' },
-    { id: 2, icon: '#icon-dibudaohanglan-', value: '四川省成都市锦江区外国语小学', title: '' },
-    { id: 3, icon: '#icon-youxiang', value: '123456789@qq.com', title: '' },
-    { id: 4, icon: '#icon-shijian2', value: '2023-04-23', title: '' },
+    { id: 1, icon: '#icon-shouji', value: '1234567890', title: '',key:'phone',check:true},
+    { id: 2, icon: '#icon-dibudaohanglan-', value: '四川省成都市锦江区外国语小学', title: '',key:'school',correlation:false,check:true},
+    { id: 3, icon: '#icon-youxiang', value: '123456789@qq.com', title: '',key:'email',check:true },
+    { id: 4, icon: '#icon-shijian2', value: '2023-04-23', title: '', key: 'time', check: false },
+    { id: 5, icon: '#icon-yuyan-shi', value: '中文(简体)', title: '',key:'local',check:false },
 ])
 let productdata = ref([
     { id: 1, title: 'HiTeach', subhead1: '课堂总时长', subhead1Value: '13H', subhead2: '课堂数量', subhead2Value: 25,key:'HiTeach',state: true },
@@ -259,8 +274,8 @@ let gaugedata = ref({
     series: [
         {
         type: 'gauge',
-        radius: '130%',
-        center: ['50%', '75%'],
+        radius: '100%',
+        center: ['50%', '90%'],
         startAngle: 180,
         endAngle: 0,
         min: 0,
@@ -340,11 +355,12 @@ let gaugedata = ref({
     }]
 })
 let gaugelabels = ref([
-    { id: 1, value: 15, title: '文档', color:'#58D9F9' },
-    { id: 2, value: 10, title: '视频', color:'#58D9F9' },
-    { id: 3, value: 8, title: '试卷', color:'#58D9F9' },
-    { id: 4, value: 5, title: 'Hiteach上传', color:'#58D9F9' },
-    {id:5,value:2,title:'其他',color:'#58D9F9'},
+    { id: 1, value: 15, title: '文档', color: '#58D9F9' },
+    {id:2,value:10,title:'学校分配空间',color:'#58D9F9'},
+    { id: 3, value: 10, title: '视频', color:'#58D9F9' },
+    { id: 4, value: 8, title: '试卷', color:'#58D9F9' },
+    { id: 5, value: 5, title: 'Hiteach上传', color: '#58D9F9' },
+    {id:6,value:2,title:'其他',color:'#58D9F9'},
 ])
 
 </script>
@@ -353,20 +369,23 @@ let gaugelabels = ref([
     line-height: 60px;
     padding: 1%;
     width:100%;
-    height:100%;
+    /* height:100%; */
     background-color:rgba(255,255,255,.9);
     border-radius: 5px;
+    /* overflow: hidden;
+    overflow-y: auto; */
 }
 .topbox{
     width:100%;
-    height:10vh;
     display: flex;
     flex-wrap: wrap;
+    line-height: 40px;
 }
 .img-name{
-    width:30%;
+    width:20%;
     display: flex;
     align-items: center;
+    padding-left:2%;
 }
 .topbox-images{
     width:70px;
@@ -384,7 +403,7 @@ let gaugelabels = ref([
     line-height: 70px;
 }
 .information{
-    width:70%;
+    width:75%;
     display: flex;
     flex-wrap: wrap;
     align-items: center;
@@ -404,27 +423,30 @@ let gaugelabels = ref([
     color:#7889a0;
 }
 .information-item{
-    width:50%;
+    width:32%;
     text-align:left;
     padding-left:1%;
+    display: flex;
+    align-items: center;
 }
 .product-list{
     width:100%;
-    padding: 1%;
+    padding: 0%;
+    line-height: 20px;
 }
 .product-title{
     width:100%;
     text-align: left;
     font-size:16px;
     font-weight: bold;
+    margin-bottom: 5px;
 }
 .listbox{
     display: flex;
-    padding: 1%;
 }
 .listbox-item{
     width:18%;
-    line-height: 40px;
+    line-height: 30px;
     padding: 0% 2%;
     border-radius: 5px;
     margin:0% 4%;
@@ -475,36 +497,17 @@ let gaugelabels = ref([
    font-weight: bold;
 }
 .product-details{
-    padding: 1%;
+    padding: 0% 1% 1% 1%;
     display: flex;
     flex-wrap: wrap;
     line-height: 60px;
+    justify-content: space-between;
 }
-.user-ip{
-    width:25%;
-    background-color: #fff;
-    padding: 0.5% 1%;
-    border-radius: 5px;
-    box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
-}
-.user-ip-title{
-    font-size:14px;
-    text-align: left;
-    line-height: 14px;
-    margin-bottom: 5px;
-    color:#8a90a8;
-}
-.user-login{
-    width:40%;
-    padding: 0.5% 1%;
-    margin:0% 1%;
-    background-color: #fff;
+.hiteachboxdiv{
+    width:45%;
     border-radius: 5px;
     box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
-}
-.login-echart{
-    width:100%;
-    height:65%;
+    padding: 1%;
 }
 .heartmap-label{
     display: flex;
@@ -528,24 +531,31 @@ let gaugelabels = ref([
     color:#c1c5d1;
 }
 .user-size{
-    width:30%;
+    width:23%;
     padding: 0.5% 1%;
-    margin:0% 1%;
     background-color: #fff;
     border-radius: 5px;
     box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
 }
 .size-label{
+    width:100%;
     display: flex;
     padding: 1% 0%;
+    /* flex-wrap: wrap; */
+    overflow: hidden;
+    overflow-x: auto;
 }
 .size-item{
     display: flex;
+    flex-wrap: wrap;
     margin:0% 2%;
-    width:20%;
+    width:25%;
     line-height: 20px;
+    align-items: center;
+    justify-content: center;
 }
 .size-value{
+    width:100%;
     font-size:16px;
     margin-right:1%;
 }
@@ -553,6 +563,57 @@ let gaugelabels = ref([
     font-size:14px;
     color:#313b5e;
 }
+.hint-icon{
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+  margin-left: 5px;
+}
+.changebtn{
+    margin-left:2px;
+}
+.common-header-title{
+    font-size:20px;
+    font-weight: bold;
+    text-align: left;
+    line-height: 20px;
+    margin-bottom: 10px;
+    display: flex;
+    justify-content: space-between;
+}
+.expire{
+    font-size:14px;
+    color: #bbbecd;
+}
+.hitadiv{
+    width:30%;
+    border-radius: 5px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
+    padding: 1%;
+    /* height:50%; */
+}
+.login-echart{
+    width:100%;
+    height:30vh;
+    display: flex;
+    align-items: center;
+}
+.iesdiv{
+    width:48%;
+    border-radius: 5px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
+    padding: 1%;
+    margin-top:1%;
+}
+.socratesdiv{
+    width:49%;
+    border-radius: 5px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
+    padding: 1%;
+    margin-top:1%;
+}
 </style>
 <style>
 .inquirebox-details .el-divider{

+ 153 - 0
TEAMModelBI/ClientApp/src/view/userInquire/hita.vue

@@ -0,0 +1,153 @@
+<template>
+    <div class="hita-content">
+        <div class="hita-header">
+            <div class="content-item" v-for="item in basicsdata" :key="item.key">
+                <div class="contents-item-title">{{item.title}}</div>
+                <div class="contents-item-nums">{{item.value}}</div>
+            </div>
+        </div>
+        <el-divider />
+        <div class="hita-echarts">
+            <bars :barData="echartsBar"></bars>
+        </div>
+    </div>
+ </template>
+ <script setup>
+ import { ref, getCurrentInstance, watch, h, nextTick, onMounted } from 'vue'
+ import bars from '@/components/echarts/commonBar.vue'
+ import * as echarts from 'echarts'
+ let basicsdata = ref([
+      { title: '使用次数', value: 58, key: 'frequency' },
+      { title: '使用时长', value: 584, key: 'time' },
+      { title: '协助课堂', value: 55, key: 'assist' },
+ ])
+ let echartsBar = ref({
+    backgroundColor: 'rgba(255,255,255,.3)',
+    tooltip: {
+        trigger: 'axis',
+        axisPointer: {
+            type: 'shadow'
+        }
+    },
+    grid: {
+        // top: '15%',
+        // right: '3%',
+        // left: '5%',
+        bottom: '12%'
+    },
+    xAxis: [{
+        data: ['即问即答','抢权','翻牌','统计图'],
+        axisLine: {
+            lineStyle: {
+                color: '#333'
+            }
+        },
+        axisLabel: {
+            margin: 10,
+            color: '#333',
+            textStyle: {
+                fontSize: 14
+            },
+        },
+    }],
+    yAxis: [{
+        name: "(次)",
+        nameTextStyle: {
+            color: '#0177d4',
+            fontSize: 16
+        },
+        axisLine: {
+            show:true,
+            lineStyle: {
+                color: '#0177d4',
+                width:'1'
+            }
+        },
+        axisLabel: {
+            color: '#0177d4',
+            fontSize: 16
+        },
+        splitLine: {
+            show:false,
+            lineStyle: {
+                color: '#0177d4'
+            }
+        },
+    }],
+    series: [{
+        type: 'bar',
+        data: [300, 450, 770, 203],
+        barWidth: '20px',
+        itemStyle:{
+            normal:{
+                color:new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                    offset: 0,
+                    color: '#00b0ff'
+                }, {
+                    offset: 0.8,
+                    color: '#7052f4'
+                }], false)
+            }
+        },
+        label: {
+            normal: {
+                show: true,
+                lineHeight: 30,
+                width: 80,
+                height: 30,
+                backgroundColor: 'rgba(0,160,221,0.1)',
+                borderRadius: 200,
+                position: ['-8', '-60'],
+                distance: 1,
+                formatter: [
+                    '    {d|●}',
+                    ' {a|{c}}     \n',
+                    '    {b|}'
+                ].join(''),
+                rich: {
+                    d: {
+                        color: '#3CDDCF',
+                    },
+                    a: {
+                        color: '#00b0ff',
+                        align: 'center',
+                    },
+                    b: {
+                        width: 1,
+                        height: 30,
+                        borderWidth: 1,
+                        borderColor: '#234e6c',
+                        align: 'left'
+                    },
+                }
+            }
+        }
+    }]
+ })
+ </script>
+ <style scoped>
+ .hita-header{
+    padding: 1%;
+    display: flex;
+    justify-content: space-between;
+    line-height: 40px;
+ }
+ .content-item{
+    width:25%;
+    border-radius: 5px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 5px
+ }
+.contents-item-title{
+    font-size: 16px;
+    color:#303133;
+ }
+ .contents-item-nums{
+    font-size: 22px;
+    font-weight: bold;
+    color:#303133;
+ }
+ .hita-echarts{
+    width:100%;
+    height:40vh;
+ }
+ </style>

+ 25 - 30
TEAMModelBI/ClientApp/src/view/userInquire/hiteach.vue

@@ -23,10 +23,11 @@
             <el-divider />
             <div class="tnum-content">
                 <div class="selectbox">
-                    <el-button v-for="item in buttonSelect" :key="item.value" :type="item.click ? 'primary':''" size="small" class="clickbox" @click="selectTime(item.value)">{{item.name}}</el-button>
+                    <div><el-button v-for="item in buttonSelect" :key="item.value" :type="item.click ? 'primary':''" size="small" class="clickbox" @click="selectTime(item.value)">{{item.name}}</el-button></div>
+                    <div class="nowaday-time">时间:2023/07/05-2023/07/11</div>
                 </div>
                 <div class="contentbox">
-                    <div class="nowaday-time">时间:2023/07/05-2023/07/11</div>
+                    <!-- <div class="nowaday-time">时间:2023/07/05-2023/07/11</div> -->
                     <div class="nowaday">
                         <div class="nowaday-now">
                             <div class="nows-box">课堂数:<span class="now-value">9</span></div>
@@ -50,13 +51,6 @@
                 </div>
             </div>
         </div>
-        <div class="operatebox">
-            <p class="common-title">教学方法统计</p>
-            <el-divider />
-            <div class="operate-ecahrt">
-                <Splashes :splashesData=splashesdata></Splashes>
-            </div>
-        </div>
         <div class="class-record">
             <p class="common-title">课堂记录</p>
             <el-divider />
@@ -113,10 +107,10 @@ import * as echarts from 'echarts'
 import Pies from './echarts/pie.vue'
 import Splashes from './echarts/splashes.vue'
 let basicsdata = ref([
-    { title: '课堂数量', value: 159, subhead: '近7天未开课', key: 'classnum' },
-    { title: '课堂总时长', value: 345, subhead: '上次课堂43Min', key: 'classtime' },
+    { title: 'T数据', value: 54, subhead: '近7天未开课', key: 'classnum' },
+    { title: '总时长', value: 345, subhead: '上次课堂43Min', key: 'classtime' },
     { title: '学生人次', value: 720, subhead: '上次学生人次34', key: 'students' },
-    { title: 'T绿灯', value: 13, subhead: '占总课堂记录的30%', key: 'tnum' },
+    { title: '互动次数', value: 1130, subhead: '占总课堂记录的30%', key: 'tnum' },
 ])
 let buttonSelect = ref([
     { name: '周', value: 'week', click: true },
@@ -247,28 +241,27 @@ onMounted(() => {
 <style scoped>
 .hiteachbox{
     width:100%;
-    padding: 1%;
     line-height: 60px;
 }
 .hiteachbox-top{
     padding: 1%;
     display: flex;
     justify-content: space-between;
+    line-height: 20px;
 }
 .top-item{
     display: flex;
     flex-wrap: wrap;
     text-align: left;
-    line-height: 40px;
+    line-height: 30px;
     padding-left:1%;
     width:18%;
     border-radius: 5px;
-    box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 5px;
 }
 .topitem-title,.topitem-content{
     width:100%;
     font-size:16px;
-    font-weight: bold;
 }
 .topitem-value{
     font-size:22px;
@@ -280,11 +273,11 @@ onMounted(() => {
     color:#bbbecd;
 }
 .tnumbox{
-    width:25%;
+    width:50%;
     padding: 1%;
     line-height: 40px;
     border-radius: 5px;
-    box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 5px;
 }
 .common-title{
     font-size: 14px;
@@ -296,6 +289,8 @@ onMounted(() => {
 .selectbox{
     display: flex;
     flex-direction: row-reverse;
+    align-items: center;
+    justify-content: space-between;
 }
 .clickbox{
     margin:0px 2px;
@@ -347,11 +342,11 @@ onMounted(() => {
     line-height: 40px;
 }
 .left-content{
-    font-size:16px;
+    font-size:14px;
     color:#bbbecd;
 }
 .left-content span{
-    font-size:18px;
+    font-size:16px;
     color: #8a90a8;
     font-weight: bold;
 }
@@ -371,15 +366,15 @@ onMounted(() => {
     height:100%;
 }
 .class-record{
-    width:40%;
+    width:50%;
     padding: 1%;
     line-height: 40px;
     border-radius: 5px;
-    box-shadow: rgba(0, 0, 0, 0.3) 0px 3px 8px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 5px;
     margin-left:3%;
 }
 .recorelist{
-    height:37vh;
+    height:33vh;
     overflow: hidden;
     overflow-y: auto;
 }
@@ -398,13 +393,13 @@ onMounted(() => {
     width:15%;
 }
 .item-equipment{
-    width:50%;
+    width:40%;
     display: flex;
     flex-direction: column;
-    line-height: 40px;
+    line-height: 30px;
 }
 .class-name{
-    font-size:16px;
+    font-size:14px;
     font-weight: bold;
 }
 .equipment-id{
@@ -432,7 +427,7 @@ onMounted(() => {
     margin:0% 5px;
     font-size:14px;
     color:#bcc0cc;
-    line-height: 40px;
+    line-height: 20px;
 }
 .images-icon{
   width: 26px;
@@ -444,9 +439,9 @@ onMounted(() => {
   margin-left: 0px;
 }
 .information-icon{
-  width: 1.1em;
-  height: 1.1em;
-  vertical-align: -0.2em;
+  width: 0.9em;
+  height: 0.9em;
+  vertical-align: -0.1em;
   fill: currentColor;
   overflow: hidden;
   margin-right: 2px;

+ 130 - 0
TEAMModelBI/ClientApp/src/view/userInquire/ies.vue

@@ -0,0 +1,130 @@
+<template>
+    <div class="ies-content">
+        <div class="ies-header">
+            <div class="iesheader-item" v-for="item in relevancedata" :key="item.key">
+                <div class="iesheader-item-icon">
+                    <svg class="titles-icon" aria-hidden="true">
+                        <use :xlink:href="item.icon"></use>
+                    </svg>
+                </div>
+                <div class="iesheader-item-title">{{item.title}}</div>
+                <div class="iesheader-item-value">{{item.value}}</div>
+            </div>
+        </div>
+        <el-divider />
+            <div class="ies-flex">
+                <div class="schools-item" v-for="item in schooldata" :key="item.code">
+                <div class="schools-item-name">{{item.name}}<span class="school-item-edition">专业版</span></div>
+                <p class="schools-item-location">{{item.code}} | {{item.location}}</p>
+                <div class="schools-item-charge">负责课程数<span class="schools-item-charge-num">{{item.class}}</span></div>
+                <div class="schools-item-size">
+                    <p class="schools-item-size-title">学校空间状态</p>
+                    <span class="schools-item-size-text">{{item.totalsize}}GB 中的 {{item.occupy}}GB (20%)</span>
+                </div>
+            </div>
+            </div>
+    </div>
+ </template>
+ <script setup>
+ import { ref, getCurrentInstance, watch, h, nextTick, onMounted } from 'vue'
+ import * as echarts from 'echarts'
+ let relevancedata = ref([
+      { title: '我的教材', icon: '#icon-anli', value: 38, key: 'material' },
+      { title: '我的题库', icon: '#icon-tiku', value: 58, key: 'question' },
+      { title: '我的试卷', icon: '#icon-shijuan', value: 88, key: 'examination' },
+      { title: '作业评量', icon: '#icon-zuoyepigai', value: 18, key: 'work' },
+ ])
+ let schooldata = ref([
+      { name: '研发学校', code: 'habook', location: '中国', class: 15, totalsize: 300, occupy: 75 },
+      { name: '醍摩豆学校', code: 'hbcn', location: '中国', class: 15, totalsize: 300, occupy: 75 },
+      { name: '商务智能学校(BI)', code: 'cswznb', location: '中国', class: 15, totalsize: 300, occupy: 75 },
+      {name:'南京特殊教育师范学院',code:'ntsjsy',location:'中国',class:15,totalsize:300,occupy:75}
+ ])
+ </script>
+ <style scoped>
+ .ies-content{
+    padding: 1%;
+ }
+ .ies-header{
+    display: flex;
+    justify-content: space-around;
+ }
+ .iesheader-item{
+    width:20%;
+    display: flex;
+    flex-direction: column;
+    line-height: 30px;
+    padding: 1%;
+    border-radius: 5px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 5px
+ }
+ .titles-icon{
+    width: 1.5em;
+    height: 1.5em;
+    vertical-align: -0.5em;
+    fill: currentColor;
+ }
+ .iesheader-item-title{
+    font-size:16px;
+    color: #303133;
+ }
+ .iesheader-item-value{
+    font-size: 22px;
+    font-weight: bold;
+    color: #303133;
+ }
+ .ies-flex{
+    width:100%;
+    display: flex;
+    flex-wrap: nowrap; 
+    flex-direction: row;
+    justify-content: space-between;
+    overflow: hidden;
+    overflow-x: auto;
+ }
+ .schools-item{
+    flex: 0 0 40%;
+    padding: 1% 1%;
+    border-radius: 5px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 5px;
+    line-height: 20px;
+    margin:1%;
+    text-align: left;
+ }
+ .schools-item-name{
+    font-size:22px;
+    font-weight: bold;
+ }
+ .schools-item-location{
+    font-size:14px;
+    color:#bbbecd;
+ }
+ .schools-item-charge{
+    font-size:16px;
+    color:#bbbecd;
+ }
+ .schools-item-charge span{
+    font-size:18px;
+    margin-left:5px;
+    color:#303133;
+ }
+ .schools-item-size-title{
+    font-size:16px;
+    color:#bbbecd;
+    margin-bottom: 5px;
+    line-height: 20px;
+ }
+ .schools-item-size-text{
+    font-size:16px;
+    margin-left:10px;
+ }
+ .school-item-edition{
+    font-size:12px;
+    border:1px solid #ccc;
+    margin-left:20px;
+    color: #592e02;
+    background: linear-gradient(90deg,#734311,#ffc78c,#734311);
+    text-align: center;
+    padding: 2px 7px;
+ }
+ </style>

+ 10 - 4
TEAMModelBI/ClientApp/src/view/userInquire/index.vue

@@ -9,9 +9,9 @@
             </div>
             <el-divider border-style="dashed" />
             <div class="searchbox-item">
-                <el-input v-model="input3" placeholder="输入手机号码/醍摩豆账号 进行搜索" class="input-with-select" size="large">
+                <el-input v-model="searchvalue" placeholder="输入手机号码/醍摩豆账号 进行搜索" class="input-with-select" size="large">
                 <template #append>
-                    <el-button :icon="Search" />
+                    <el-button :icon="Search" @click="pageShow='details'"/>
                 </template>
                 </el-input>
             </div>
@@ -40,7 +40,8 @@ let tags = ref([
   { name: 'Tag 4', type: 'warning' },
   { name: 'Tag 5', type: 'danger' },
 ])
-let pageShow=ref('details')
+let pageShow = ref('default')
+let searchvalue=ref('')
 </script>
 <style scoped>
 .inquirebox{
@@ -95,9 +96,14 @@ let pageShow=ref('details')
 }
 .inquirebox-details{
     width: 100%;
-    height:100%;
+    /* height:100%; */
     padding: 1%;
     /* background-color: #f5f5f5; */
     background-image: url('../../assets/img/details-bg.jpg');
+    background-repeat: no-repeat;
+    background-size: cover;
+    background-position: center;
+    overflow: hidden;
+    overflow-y: auto;
 }
 </style>

+ 61 - 0
TEAMModelBI/ClientApp/src/view/userInquire/socrates.vue

@@ -0,0 +1,61 @@
+<template>
+    <div class="socrates-content">
+        <div class="socrates-header">
+            <div class="socrates-item" v-for="item in basicsdata.primary" :key="item.title">
+                <div class="socrates-item-title">{{item.title}}</div>
+                <div class="socrates-item-value">{{item.value}}</div>
+            </div>
+        </div>
+        <div class="socrates-auxiliary">
+            <div class="auxiliary-item" v-for="item in basicsdata.auxiliary" :key="item.title">
+                <div class="socrates-item-title">{{item.title}}</div>
+                <div class="socrates-item-value">{{item.value}}</div>
+            </div>
+        </div>
+    </div>
+ </template>
+ <script setup>
+ import { ref, getCurrentInstance, watch, h, nextTick, onMounted } from 'vue'
+ let basicsdata = ref({
+    primary: [
+        { title: 'T(数据)', value: 64 },
+        { title: 'T(绿灯)', value: 3 },
+        { title: '录课数', value: 86 },
+        {title:'观课数',value:61},
+      ],
+      auxiliary: [
+           { title: '议课数', value: 15, },
+           { title: '公开课', value: 0, },
+           { title: '被点阅数', value: 25, },
+           {title:'被标记数',value:110,},
+    ]
+ })
+ </script>
+ <style scoped>
+ .socrates-content{
+    padding: 1%;
+ }
+ .socrates-header,.socrates-auxiliary{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+ }
+ .socrates-item,.auxiliary-item{
+    width:20%;
+    border-radius: 5px;
+    box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 5px
+ }
+ .socrates-item-title{
+    font-size: 16px;
+    color: #303133;
+ }
+ .socrates-item-value{
+    font-size: 22px;
+    font-weight: bold;
+    color: #303133;
+ }
+.socrates-auxiliary{
+    margin-top:4%;
+}
+
+ </style>