Przeglądaj źródła

Merge branch 'develop5.0-tmd' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop5.0-tmd

CrazyIter_Bin 3 lat temu
rodzic
commit
d5638d3ae5
27 zmienionych plików z 137 dodań i 2304 usunięć
  1. 1 1
      TEAMModeBI/ClientApp/src/api/index.js
  2. 74 15
      TEAMModeBI/ClientApp/src/components/AbilityTree.vue
  3. 2 3
      TEAMModeBI/ClientApp/src/view/created/created.vue
  4. 4 1
      TEAMModeBI/ClientApp/src/view/teachermanage/areamanage.vue
  5. 3 0
      TEAMModeBI/ClientApp/src/view/teachermanage/manage.vue
  6. 4 1
      TEAMModeBI/ClientApp/src/view/teachermanage/school.vue
  7. 3 0
      TEAMModeBI/ClientApp/src/view/teachermanage/traitmanage.vue
  8. 4 0
      TEAMModeBI/Controllers/LoginController.cs
  9. 3 3
      TEAMModelOS/ClientApp/src/common/UploadModal.vue
  10. 1 1
      TEAMModelOS/ClientApp/src/locale/lang/en-US/settings.js
  11. 1 1
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/settings.js
  12. 1 1
      TEAMModelOS/ClientApp/src/locale/lang/zh-TW/settings.js
  13. 0 86
      TEAMModelOS/ClientApp/src/static/course.json
  14. 0 22
      TEAMModelOS/ClientApp/src/static/diagnosis.json
  15. 0 443
      TEAMModelOS/ClientApp/src/static/policy.json
  16. 0 410
      TEAMModelOS/ClientApp/src/static/video.json
  17. 3 1
      TEAMModelOS/ClientApp/src/utils/blobTool.js
  18. 30 27
      TEAMModelOS/ClientApp/src/view/Home.vue
  19. 3 1
      TEAMModelOS/ClientApp/src/view/homepage/NewHomePage.vue
  20. 0 147
      TEAMModelOS/ClientApp/src/view/resource/DiagDetail.vue
  21. 0 143
      TEAMModelOS/ClientApp/src/view/resource/Diagnosis.vue
  22. 0 256
      TEAMModelOS/ClientApp/src/view/resource/Leadership.vue
  23. 0 229
      TEAMModelOS/ClientApp/src/view/resource/LeadershipDetail.vue
  24. 0 172
      TEAMModelOS/ClientApp/src/view/resource/Literacy.vue
  25. 0 162
      TEAMModelOS/ClientApp/src/view/resource/LiteracyDetail.vue
  26. 0 1
      TEAMModelOS/ClientApp/src/view/resource/Policy.vue
  27. 0 177
      TEAMModelOS/ClientApp/src/view/resource/Probation.vue

+ 1 - 1
TEAMModeBI/ClientApp/src/api/index.js

@@ -149,7 +149,7 @@ export default {
     addChild(data) {
         return post('/biabilitytask/upd-abilitytask', data)
     },
-    //tree删除子节点
+    //tree删除父节点(一级@章节)
     removeChildnodes(data) {
         return post('/biabilitytask/del-abilitytask', data)
     },

+ 74 - 15
TEAMModeBI/ClientApp/src/components/AbilityTree.vue

@@ -173,6 +173,7 @@ export default {
             resourceData = resourceData.push(...props.tree)
             console.log(props.tree, '树状')
         })
+        //添加子节点
         function append(data) {
             console.log(data, '传进方法的内容')
             console.log(props, '获取到的')
@@ -236,33 +237,72 @@ export default {
                 })
                 .catch(() => {})
         }
+        //删除子节点
         function remove(node, data) {
+            console.log(props, '获取现在的树状')
+            console.log(nowPitchCb.value, '当前的数据')
             let user = JSON.parse(localStorage.getItem('userData'))
             console.log(props.stand, '删除查看当前的')
             console.log(node, data)
-            ElMessageBox.confirm('确定要删除节点吗?', '注意', {
+            ElMessageBox.confirm('确定要删除节点吗?', '温馨提示', {
                 confirmButtonText: '确认',
                 cancelButtonText: '取消',
                 type: 'warning',
-            })
-                .then(() => {
-                    let datai = { tmdId: user.tmdId, tmdName: user.tmdName, standard: props.stand, id: data.id }
-                    proxy.$api.removeChildnodes(datai).then((res) => {
-                        console.log(res, '删除返回')
+            }).then(() => {
+                let receiveData = data
+                const result = props.tree.every((item) => {
+                    return item.pid === receiveData.pid
+                })
+                console.log(result, '得到的结果')
+                if (result) {
+                    deleteChapter(props.stand, receiveData.id, node)
+                } else {
+                    let dataEvalue = nowPitchCb.value
+                    let user = JSON.parse(localStorage.getItem('userData'))
+                    let chidData = []
+                    //寻找最上级
+                    for (let i in props.tree) {
+                        let dataOne = props.tree[i]
+                        if (dataEvalue.id === dataOne.id) {
+                            chidData.push(dataOne)
+                        } else if (dataEvalue.id !== dataOne.id && dataOne.children.length !== 0) {
+                            for (let y in dataOne.children) {
+                                if (dataEvalue.id === dataOne.children[y].id) {
+                                    chidData.push(dataOne)
+                                } else if (dataEvalue.id !== dataOne.children[y].id && dataOne.children[y].children.length !== 0) {
+                                    for (let u in dataOne.children[y].children) {
+                                        dataEvalue.id === dataOne.children[y].children[u].id ? chidData.push(dataOne) : ''
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    //准备API参数
+                    let codeVals = ''
+                    let abilityIds = ''
+                    let scopes = ''
+                    let idInfo = ''
+                    for (let x in props.datas) {
+                        if (chidData[0].id === props.datas[x].id) {
+                            codeVals = props.datas[x].codeval
+                            abilityIds = props.datas[x].abilityId
+                            scopes = props.datas[x].scope
+                            idInfo = props.datas[x].id
+                        }
+                    }
+                    let dataInfo = { abilityId: abilityIds, auth: [], codeval: codeVals, scope: scopes, id: idInfo, trees: chidData }
+                    let datas = { tmdId: user.tmdId, tmdName: user.tmdName, standard: props.stand, abilityTask: [dataInfo] }
+                    proxy.$api.addChild(datas).then((res) => {
+                        console.log(res, '删除子节点的返回')
+                        res.state === 200 ? ElMessage.success('节点删除成功') : ElMessage.error('节点删除失败')
                     })
                     const parent = node.parent
                     const children = parent.data.children || parent.data
                     const index = children.findIndex((d) => d.id === data.id)
                     children.splice(index, 1)
-                })
-                .catch(() => {
-                    ElMessage({
-                        type: 'info',
-                        message: 'Delete canceled',
-                    })
-                })
+                }
+            })
         }
-        //
         function handleNodeClick(data) {
             console.log(data, '当前点击的元素')
             curNode.value = data.rnodes
@@ -273,6 +313,7 @@ export default {
             data.rnodes.length ? (datais.value = true) : (datais.value = false)
             // console.log(curNode.value.title)
         }
+        //渲染tree
         function renderContent(h, { node, data }) {
             return h(
                 'span',
@@ -482,7 +523,7 @@ export default {
                 })
                 .catch(() => {})
         }
-        //添加当前父节点
+        //添加当前父节点(tree一级@章节)
         function addFirstnode() {
             let user = JSON.parse(localStorage.getItem('userData'))
             ElMessageBox.prompt('输入新的章节节点名称', '新增节点', {
@@ -504,6 +545,23 @@ export default {
                 console.log(datas, '参数')
             })
         }
+        //删除父节点(tree一级@章节)
+        function deleteChapter(standard, chapterId, node) {
+            let user = JSON.parse(localStorage.getItem('userData'))
+            let data = { standard: standard, id: chapterId, tmdId: user.tmdId, tmdName: user.tmdName }
+            proxy.$api.removeChildnodes(data).then((res) => {
+                console.log(res, '删除父节点的返回')
+                if (res.state === 200) {
+                    ElMessage.success('节点删除成功')
+                    const parent = node.parent
+                    const children = parent.data.children || parent.data
+                    const index = children.findIndex((d) => d.id === data.id)
+                    children.splice(index, 1)
+                } else {
+                    ElMessage.error('节点删除失败')
+                }
+            })
+        }
         //处理HOST返回截取
         function getBlobHost(url) {
             let s = url || store.state.user.userProfile.blob_uri || store.state.user.studentProfile.blob_uri
@@ -564,6 +622,7 @@ export default {
             nowPitchCb,
             changes,
             deleteResource,
+            deleteChapter,
         }
     },
 }

+ 2 - 3
TEAMModeBI/ClientApp/src/view/created/created.vue

@@ -139,9 +139,9 @@
                     <el-form-item label="学校名称:" class="school-name">
                         <el-input v-model="item.name" placeholder="学校名称"></el-input>
                     </el-form-item>
-                    <el-form-item label="学校编码:" class="school-code">
+                    <!-- <el-form-item label="学校编码:" class="school-code">
                         <el-input v-model="item.code" maxlength="6" placeholder='6位字符简码'></el-input>
-                    </el-form-item>
+                    </el-form-item> -->
                     <el-form-item label="学段选择:">
                         <el-checkbox-group v-model="item.radio1">
                             <el-checkbox label="小学" border></el-checkbox>
@@ -460,7 +460,6 @@ export default {
             let users = JSON.parse(localStorage.getItem('userData'))
             for (let i in schoolForm.value) {
                 datas.push({
-                    id: schoolForm.value[i].code,
                     name: schoolForm.value[i].name,
                     admin: schoolForm.value[i].presupposeAdmin,
                     period: schoolForm.value[i].radio1,

+ 4 - 1
TEAMModeBI/ClientApp/src/view/teachermanage/areamanage.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div class="areamanabox">
         <div class="nowtitle">
             <div class="boxselect" @click="createArea" v-if="PowerShow">
                 <a href="#">
@@ -592,6 +592,9 @@ export default {
 .details-list-school .el-image {
     margin-top: 25%;
 }
+.areamanabox .el-table__header-wrapper {
+    line-height: 60px;
+}
 </style>
 
 

+ 3 - 0
TEAMModeBI/ClientApp/src/view/teachermanage/manage.vue

@@ -350,4 +350,7 @@ export default {
     padding: 8px 12px;
     line-height: 20px;
 }
+.manage-table .el-table__header-wrapper {
+    line-height: 60px;
+}
 </style>

+ 4 - 1
TEAMModeBI/ClientApp/src/view/teachermanage/school.vue

@@ -66,7 +66,7 @@
                     </template>
                 </el-table-column>
                 <!-- <el-table-column prop="state" label="状态" width="110" align="center" /> -->
-                <el-table-column fixed="right" label="操作" width="120" align="center" v-if="PowerShow">
+                <el-table-column label="操作" width="200" align="center" v-if="PowerShow">
                     <template #default="scope">
                         <el-button type="text" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">编辑</el-button>
                     </template>
@@ -761,4 +761,7 @@ export default {
 .school-form-area .el-select {
     width: 100%;
 }
+.school-list .el-table__header-wrapper {
+    line-height: 60px;
+}
 </style>

+ 3 - 0
TEAMModeBI/ClientApp/src/view/teachermanage/traitmanage.vue

@@ -1252,4 +1252,7 @@ export default {
 .redactTask .el-form-item {
     margin-bottom: 10px;
 }
+.allbox .el-table__header-wrapper {
+    line-height: 60px;
+}
 </style>

+ 4 - 0
TEAMModeBI/Controllers/LoginController.cs

@@ -961,6 +961,8 @@ namespace TEAMModeBI.Controllers
                                 itemUser.picture = item.GetProperty("picture").ToString();
                                 itemUser.mail = item.GetProperty("mail").ToString();
 
+                                operateLog.operateType = "修改";
+                                operateLog.funModule = "钉钉绑定";
                                 operateLog.tmdId = item.GetProperty("id").ToString();
                                 operateLog.tmdName = item.GetProperty("name").ToString();
                                 operateLog.operateDescribe = $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功";
@@ -1050,6 +1052,8 @@ namespace TEAMModeBI.Controllers
                                     roles = !string.IsNullOrEmpty($"{itemUser.roles}") ? new List<string>(itemUser.roles.Split(",")) : new List<string>();
                                     permissions = !string.IsNullOrEmpty($"{itemUser.permissions}") ? new List<string>(itemUser.permissions.Split(",")) : new List<string>();
 
+                                    operateLog.operateType = "修改";
+                                    operateLog.funModule = "钉钉绑定";
                                     operateLog.tmdId = item.GetProperty("id").ToString();
                                     operateLog.tmdName = item.GetProperty("name").ToString();
                                     operateLog.operateDescribe = $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功";

+ 3 - 3
TEAMModelOS/ClientApp/src/common/UploadModal.vue

@@ -52,10 +52,10 @@
                             <Icon class="is-parse-htex" size="12" custom="iconfont icon-convert" />
                             {{$t('updModal.resolve')}}
                         </span> -->
-                        <!-- pptx是否转换 -->
-                        <Checkbox class="upload-info-wrap parse-label" v-if="item.extension == 'PPTX'" v-model="item.isParse">
+                        <!-- pptx是否转换 暂时隐藏此功能-->
+                        <!-- <Checkbox class="upload-info-wrap parse-label" v-if="item.extension == 'PPTX'" v-model="item.isParse">
                             {{$t('updModal.resolve')}}
-                        </Checkbox>
+                        </Checkbox> -->
                         <Progress style="top:-10px;" v-if="item.status == 0" :percent="item.progress" status="active" stroke-color="#1CC0F3" :stroke-width="2" hide-info />
                     </div>
                     <div class="upload-item-right" v-show="!textLoading">

+ 1 - 1
TEAMModelOS/ClientApp/src/locale/lang/en-US/settings.js

@@ -55,7 +55,7 @@ export default {
 	status3: 'Applying',
 	searchTip: 'Please enter <span>school name</span> or <span>school code</span> to search',
 	searchNone: '* If you do not find the school you are looking for, you can click below to request to create your school',
-	searchPoper: 'If your school has a human icon, your application will be reviewed and approved by an administrator to become a member of the school. If your school does not have an administrator, your school and the "applying" status will be displayed after you apply and re-login.',
+	searchPoper: 'If your school has an administrator, your application will be reviewed and approved by an administrator to become a member of the school. If your school does not have an administrator, your school and the "applying" status will be displayed after you apply and re-login.',
 	applyBtn: 'Apply to create a school',
 	openList: 'Open Platform List',
 	openInfo: 'Platform Information',

+ 1 - 1
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/settings.js

@@ -55,7 +55,7 @@ export default {
 	status3:'申请中',
 	searchTip:'请输入<span>学校名称</span>或者<span>关键词</span>进行搜索',
 	searchNone:'* 如未搜索到您想要的学校,可点击下方申请建立您的学校',
-	searchPoper: '若您的学校名称有人型符号,申请后将由管理员为您审核通过,正式成为学校成员。 若尚未有管理员,您申请后并重新登录,将会显示您所属学校及”申请中”状态。',
+	searchPoper: '若您的学校有管理员,申请后将由管理员为您审核通过,正式成为学校成员。 若尚未有管理员,您申请后并重新登录,将会显示您所属学校及”申请中”状态。',
 	applyBtn:'申请建立学校',
 	openList: '开放平台应用列表',
 	openInfo: '应用信息',

+ 1 - 1
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/settings.js

@@ -55,7 +55,7 @@ export default {
     status3: '申請中',
     searchTip: '請輸入<span>學校名稱</span>或者<span>關鍵詞</span>進行搜尋',
     searchNone: '*如未搜尋到您想要的學校,可點擊下方申請建立 您的學校',
-    searchPoper: '若您的學校名稱有人型符號,申請後將由管理員為您審核通過,正式成為學校成員。 若尚未有管理員,您申請後並重新登入,將會顯示您所屬學校及”申請中”之狀態。',
+    searchPoper: '若您的學校有管理員,申請後將由管理員為您審核通過,正式成為學校成員。 若尚未有管理員,您申請後並重新登入,將會顯示您所屬學校及”申請中”之狀態。',
     applyBtn: '申請建立學校',
     openList: '開放平臺清單',
     openInfo: '平臺資訊',

+ 0 - 86
TEAMModelOS/ClientApp/src/static/course.json

@@ -1,86 +0,0 @@
-[
-  {
-    "link": "/jyzx/a5125c2d-3131-9514-7b29-b50066959a91/1.1案例导入.mp4",
-    "title": "1.1案例导入",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/1.jpg"
-  },
-  {
-    "link": "/jyzx/d1f8519f-dd44-3604-4962-8730a351e151/1.2 关键词“以校为本”.mp4",
-    "title": "1.2 关键词“以校为本”",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/2.jpg"
-  },
-  {
-    "link": "/jyzx/9612794f-599c-088b-bdf6-27b812221a1e/1.3 关键词“基于课堂”.mp4",
-    "title": "1.3 关键词“基于课堂”",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/3.jpg"
-  },
-  {
-    "link": "/jyzx/246b745e-9cb6-141a-611b-518c4b1b6fcd/1.4 关键词“应用驱动”.mp4",
-    "title": "1.4 关键词“应用驱动”",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/4.jpg"
-  },
-  {
-    "link": "/jyzx/35d4b310-05c5-ef88-d6e8-4d9eac44ec25/1.5 关键词“精准测评”(上).mp4",
-    "title": "1.5 关键词“精准测评”(上)",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/5.jpg"
-  },
-  {
-    "link": "/jyzx/b5b7461f-25d2-a49a-8e60-0894b066576f/1.6 关键词“精准测评”(下).mp4",
-    "title": "1.6 关键词“精准测评”(下)",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/6.jpg"
-  },
-  {
-    "link": "/jyzx/328be38b-cd85-aed6-aa20-83142b94d75f/2.1 认识测评体系 1.mp4",
-    "title": "2.1 认识测评体系 1",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/7.jpg"
-  },
-  {
-    "link": "/jyzx/328be38b-cd85-aed6-aa20-83142b94d75f/2.1 认识测评体系 2.mp4",
-    "title": "2.1 认识测评体系 2",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/8.jpg"
-  },
-  {
-    "link": "/jyzx/328be38b-cd85-aed6-aa20-83142b94d75f/2.1.1多媒体教学环境(上.mp4",
-    "title": "2.1.1多媒体教学环境(上)",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/9.jpg"
-  },
-  {
-    "link": "/jyzx/328be38b-cd85-aed6-aa20-83142b94d75f/2.1.2多媒体教学环境(下).mp4",
-    "title": "2.1.2多媒体教学环境(下)",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/10.jpg"
-  },
-  {
-    "link": "/jyzx/c687e4df-b74b-882d-4bd1-7f7342625987/2.2.1混合学习环境(上).mp4",
-    "title": "2.2.1混合学习环境(上",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/11.jpg"
-  },
-  {
-    "link": "/jyzx/c687e4df-b74b-882d-4bd1-7f7342625987/2.2.2混合学习环境(下).mp4",
-    "title": "2.2.2混合学习环境(下)",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/12.jpg"
-  },
-  {
-    "link": "/jyzx/c687e4df-b74b-882d-4bd1-7f7342625987/2.3智慧学习环境.mp4",
-    "title": "2.3智慧学习环境",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/13.jpg"
-  },
-  {
-    "link": "/jyzx/d7766778-67bd-5544-2402-35fedf21f0d7/2.4测评参与建议.mp4",
-    "title": "2.4测评参与建议",
-    "time": "2021-01-22",
-    "poster":"https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/14.jpg"
-  }
-]

+ 0 - 22
TEAMModelOS/ClientApp/src/static/diagnosis.json

@@ -1,22 +0,0 @@
-[
-  {
-    "link": "https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/video/%E8%AF%8A%E6%96%AD/%E3%80%8A%E5%AD%A6%E6%A0%A1%E4%BF%A1%E6%81%AF%E5%8C%96%E8%AF%8A%E6%96%AD%E4%B8%8E%E8%A7%84%E5%88%92%E5%88%B6%E5%AE%9A%E3%80%8B%E8%AF%BE%E7%A8%8B%E4%B8%80%EF%BC%88%E7%8E%AF%E5%A2%83%E4%B8%8E%E6%94%BF%E7%AD%96%E7%AF%87%EF%BC%89.mp4",
-    "poster": "https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/video/%E8%AF%8A%E6%96%AD/%E5%9B%BE1%EF%BC%9A%E7%8E%AF%E5%A2%83%E4%B8%8E%E6%94%BF%E7%AD%96%E7%AF%87%E5%B0%81%E9%9D%A2.png",
-    "title": "《学校信息化诊断与规划制定》课程一(环境与政策篇)"
-  },
-  {
-    "link": "https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/video/%E8%AF%8A%E6%96%AD/%E3%80%8A%E5%AD%A6%E6%A0%A1%E4%BF%A1%E6%81%AF%E5%8C%96%E8%AF%8A%E6%96%AD%E4%B8%8E%E8%A7%84%E5%88%92%E5%88%B6%E5%AE%9A%E3%80%8B%E8%AF%BE%E7%A8%8B%E4%BA%8C%EF%BC%88%E5%9B%A2%E9%98%9F%E4%BA%BA%E5%91%98%E7%AF%87%EF%BC%89.mp4",
-    "poster": "https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/video/%E8%AF%8A%E6%96%AD/%E5%9B%BE2%EF%BC%9A%E5%9B%A2%E9%98%9F%E4%BA%BA%E5%91%98%E7%AF%87%E5%B0%81%E9%9D%A2.png",
-    "title": "《学校信息化诊断与规划制定》课程二(团队人员篇)"
-  },
-  {
-    "link": "https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/video/%E8%AF%8A%E6%96%AD/%E3%80%8A%E5%AD%A6%E6%A0%A1%E4%BF%A1%E6%81%AF%E5%8C%96%E8%AF%8A%E6%96%AD%E4%B8%8E%E8%A7%84%E5%88%92%E5%88%B6%E5%AE%9A%E3%80%8B%E8%AF%BE%E7%A8%8B%E4%B8%89%EF%BC%88%E5%8F%91%E5%B1%95%E8%A7%84%E5%88%92%E7%AF%87%EF%BC%89.mp4",
-    "poster": "https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/video/%E8%AF%8A%E6%96%AD/%E5%9B%BE3%EF%BC%9A%E5%8F%91%E5%B1%95%E8%A7%84%E5%88%92%E7%AF%87%E5%B0%81%E9%9D%A2.png",
-    "title": "《学校信息化诊断与规划制定》课程三(发展规划篇)"
-  },
-  {
-    "link": "https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/video/%E8%AF%8A%E6%96%AD/%E3%80%8A%E5%AD%A6%E6%A0%A1%E4%BF%A1%E6%81%AF%E5%8C%96%E8%AF%8A%E6%96%AD%E4%B8%8E%E8%A7%84%E5%88%92%E5%88%B6%E5%AE%9A%E3%80%8B%E8%AF%BE%E7%A8%8B%E5%9B%9B%EF%BC%88%E2%80%9D%E6%A0%A1%E6%9C%AC%E7%A0%94%E4%BF%AE%E4%B8%8E%E8%80%83%E6%A0%B8%E2%80%9C%E4%B8%A4%E6%A1%88%E7%AF%87%EF%BC%89.mp4",
-    "poster": "https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/video/%E8%AF%8A%E6%96%AD/%E5%9B%BE4%EF%BC%9A%E4%B8%A4%E6%A1%88%E7%AF%87%E5%B0%81%E9%9D%A2.png",
-    "title": "《学校信息化诊断与规划制定》课程四(”校本研修与考核“两案篇)"
-  }
-]

Plik diff jest za duży
+ 0 - 443
TEAMModelOS/ClientApp/src/static/policy.json


Plik diff jest za duży
+ 0 - 410
TEAMModelOS/ClientApp/src/static/video.json


+ 3 - 1
TEAMModelOS/ClientApp/src/utils/blobTool.js

@@ -19,7 +19,9 @@ function getExAndType(fileName) {
         ex, type
     }
 }
-
+/**
+ * 授权信息可以内部处理,不用每次调用都需要处理好授权信息
+ */
 export default class BlobTool {
     /**
      * 初始化Blob,需要先调用授权API

+ 30 - 27
TEAMModelOS/ClientApp/src/view/Home.vue

@@ -4,8 +4,8 @@
         <BaseLayout>
             <!-- 头部右侧个人中心部分 -->
             <div class="header-right-box fl-around" slot="header-content">
-				<Icon style="display:block" custom="iconfont icon-home" :color="routerName == 'homePage' ? '#1CC0F3':'#d0d0d0'" @click="toHome" :title="$t('system.goHome')" />
-                <Icon type="md-open" @click="changePlatform" :title="$t('system.changePlat')" v-if="hasArea"/>
+                <Icon style="display:block" custom="iconfont icon-home" :color="isHomeLight ? '#1CC0F3':'#d0d0d0'" @click="toHome" :title="$t('system.goHome')" />
+                <Icon type="md-open" @click="changePlatform" :title="$t('system.changePlat')" v-if="hasArea" />
                 <BaseNotification :msgs="msgs"></BaseNotification>
                 <span class="header-split"></span>
                 <BaseUserPoptip @logout="basicMenu('quit')"></BaseUserPoptip>
@@ -43,10 +43,10 @@ export default {
         }
     },
     created() {
-		this.$Message.config({
-		    duration: 3
-		});
-        console.log('config',this.$store.state.config)
+        this.$Message.config({
+            duration: 3
+        });
+        console.log('config', this.$store.state.config)
         // 检查超时操作页面,清空缓存数据
         let webEndTime = localStorage.getItem('webEndTime')
         let time_now = new Date().getTime()
@@ -57,7 +57,7 @@ export default {
         this.$store.dispatch('user/checkSchoolCode');// 設定登入成功的學校簡碼
         this.$store.dispatch('user/checkUserProfile');// 檢查使用者個人詳細資訊
         this.$store.dispatch('user/checkStudentProfile');// 檢查學生的詳細資訊
-        
+
         // this.$store.dispatch('user/checkSchoolProfile').then(res => {
         //     if (res) {
         //         this.$User.freshLogin()
@@ -122,25 +122,25 @@ export default {
             let schoolNotice = await this.getSchoolNotice(user_profile, userId)
             let privateNotice = await this.getPrivateNotice(userId)
             this.msgs = schoolNotice.concat(privateNotice)
-			if(this.msgs.length){
-				this.msgs.forEach(i => {
-					i.body = JSON.parse(this.getBodyJson(i.body))
-				})
-			}
-			let localMsgs = JSON.parse(localStorage.getItem('msgs'))
-			if(localMsgs){
-				localStorage.setItem('msgs',JSON.stringify([...this.msgs,...localMsgs]))
-			}else{
-				localStorage.setItem('msgs',JSON.stringify(this.msgs))
-			}
+            if (this.msgs.length) {
+                this.msgs.forEach(i => {
+                    i.body = JSON.parse(this.getBodyJson(i.body))
+                })
+            }
+            let localMsgs = JSON.parse(localStorage.getItem('msgs'))
+            if (localMsgs) {
+                localStorage.setItem('msgs', JSON.stringify([...this.msgs, ...localMsgs]))
+            } else {
+                localStorage.setItem('msgs', JSON.stringify(this.msgs))
+            }
             console.log('端外通知', this.msgs)
         },
-		getBodyJson(str) {
-			let reg = /\\/g;
-			//使用replace方法将全部匹配正则表达式的转义符替换为空
-			let replaceAfter = str.replace(reg, '').replace(/=/g, ':');
-			return replaceAfter
-		},
+        getBodyJson(str) {
+            let reg = /\\/g;
+            //使用replace方法将全部匹配正则表达式的转义符替换为空
+            let replaceAfter = str.replace(reg, '').replace(/=/g, ':');
+            return replaceAfter
+        },
         getSchoolNotice(user_profile, userId) {
             return new Promise((r, j) => {
                 if (this.hasSchool) {
@@ -216,6 +216,9 @@ export default {
         },
         hasArea() {
             return this.$store.state.user.userProfile.areas.length > 0
+        },
+        isHomeLight() {
+           return this.routerName == 'homePage' || (this.$store.state.config.srvAdr == 'Global' && this.routerName == 'myCourse')
         }
     },
     watch: {
@@ -238,19 +241,19 @@ export default {
     width: 0;
     background: #636363;
     height: 25px;
-	margin: 0 15px;
+    margin: 0 15px;
 }
 .header-right-box {
     margin: 12px 0;
     line-height: 1.5;
     float: right;
     height: 25px;
-	padding-right: 20px;
+    padding-right: 20px;
 }
 
 .header-right-box .ivu-icon {
     font-size: 20px;
-	margin-right: 20px;
+    margin-right: 20px;
     color: #d0d0d0;
     cursor: pointer;
 }

+ 3 - 1
TEAMModelOS/ClientApp/src/view/homepage/NewHomePage.vue

@@ -518,7 +518,9 @@ export default {
         this.getTeacherRecordData()
         if (this.$store.state.userInfo.hasSchool) {
             this.findNotice()
-            this.getStudyTime()
+            if(this.$store.state.config.srvAdr == 'China'){
+                this.getStudyTime()
+            }
         }
     },
     mounted() {

+ 0 - 147
TEAMModelOS/ClientApp/src/view/resource/DiagDetail.vue

@@ -1,147 +0,0 @@
-<template>
-    <div class="literacy-detail-container">
-        <div class="literacy-mgt-top" @click="backList">
-            <Icon type="md-arrow-round-back" size="20" />
-            <span style="margin-left:10px">返回规划诊断课程</span>
-        </div>
-        <vuescroll>
-            <div class="literacy-block-box">
-                <div class="video-info-wrap">
-                    <h1 class="video-title">{{videoInfo.title}}</h1>
-                    <video :src="videoInfo.link" class="video-box" controls="controls" autoplay="autoplay"></video>
-                </div>
-                <div class="more-link-wrap">
-                    <p class="more-title">
-                        更多课程
-                        <Icon custom="iconfont icon-handle-down" size="20" />
-                    </p>
-                    <div class="video-list-box">
-                        <vuescroll>
-                            <div class="video-item" v-for="(item,index) in videoList" :key="index" @click="chooseCus(index)">
-                                <img :src="item.poster" class="video-poster">
-                                <div style="margin-left:15px">
-                                    <p class="video-attr-item">
-                                        <span>{{item.title}}</span>
-                                    </p>
-                                </div>
-                            </div>
-                        </vuescroll>
-                    </div>
-                </div>
-            </div>
-        </vuescroll>
-    </div>
-</template>
-<script>
-const courseData = require('@/static/course.json')
-export default {
-    data() {
-        return {
-            keyword: '',
-            videoInfo: {},
-            videoList: []
-        }
-    },
-    methods: {
-        search() {
-
-        },
-        backList() {
-            this.$router.push({
-                name: 'diagnosis'
-            })
-        },
-        chooseCus(index){
-            this.videoInfo = this.videoList[index]
-        }
-    },
-    created() {
-        this.videoList = require('@/static/diagnosis.json')
-        this.videoInfo = this.$route.params.videoInfo || this.videoList[0]
-        this.course = []
-        this.course = this._.cloneDeep(courseData)
-        let sas = this.$store.state.user.schoolProfile.blob_sas
-        let blobUrl = JSON.parse(decodeURIComponent(localStorage.school_profile, "utf-8")).blob_uri
-        this.course.forEach(item => {
-            let url = `${blobUrl}${item.link}?${sas}`
-            item.link = url
-        })
-        this.videoList.push(...this.course)
-    }
-}
-</script>
-<style lang="less" scoped>
-.info-label{
-    color: #808695;
-    display: block;
-}
-.video-list-box {
-    height: 620px;
-}
-.video-attr-item {
-    font-size: 12px;
-}
-.video-item {
-    padding: 10px;
-    border-bottom: 1px solid #eee;
-    display: flex;
-    cursor: pointer;
-    &:hover{
-        background: #f0f0f0;
-    }
-}
-.video-poster {
-    width: 120px;
-}
-.more-title {
-    height: 35px;
-    line-height: 35px;
-    font-size: 12px;
-    border-bottom: 1px solid #eee;
-    padding-left: 10px;
-}
-.video-title {
-    margin-bottom: 15px;
-}
-.info-item {
-    margin: 10px 0px;
-    font-size: 16px;
-}
-.video-box {
-    // height: 600px;
-    width: 66%;
-}
-.literacy-detail-container {
-    width: 100%;
-    height: 100%;
-    padding: 15px;
-}
-.literacy-block-box {
-    width: 100%;
-    display: flex;
-    justify-content: space-between;
-}
-.video-info-wrap {
-    width: 80%;
-    min-height: 600px;
-    background: white;
-    padding: 15px;
-}
-.more-link-wrap {
-    width: 20%;
-    min-height: 600px;
-    background: white;
-}
-.literacy-mgt-top {
-    width: 100%;
-    height: 40px;
-    background: white;
-    box-shadow: 0px 2px 5px #e9e9e9;
-    padding-left: 10px;
-    padding-right: 20px;
-    padding-bottom: 10px;
-    line-height: 40px;
-    cursor: pointer;
-    color: #40A8F0;
-}
-</style>

+ 0 - 143
TEAMModelOS/ClientApp/src/view/resource/Diagnosis.vue

@@ -1,143 +0,0 @@
-<template>
-    <div class="literacy-container">
-        <div class="literacy-search light-iview-input">
-            <Input v-special-char v-model="keyword" suffix="ios-search" placeholder="搜索" style="width: 200px;margin-top:0px" @on-change="search" />
-        </div>
-        <!-- <div class="literacy-mgt-top">
-            <Input v-model="keyword" suffix="ios-search" placeholder="搜索" style="width: 200px;margin-top:0px" @on-change="search" />
-        </div> -->
-        <vuescroll>
-            <div class="literacy-block-box">
-                <div class="literacy-item" v-for="(item,index) in videoListShow" :key="index" @click="toDetailPage(index)">
-                    <div class="literacy-img" :style="{backgroundImage: `url(${item.poster})`}"></div>
-                    <p class="img-text">{{item.title}}<p/>
-                </div>
-                <div class="literacy-item" v-for="(item,index) in course" :key="index" @click="toDetailPage(index)">
-                    <div class="literacy-img" :style="{backgroundImage: `url(${item.poster})`}"></div>
-                    <p class="img-text">{{item.title}}<p/>
-                </div>
-            </div>
-            <EmptyData textContent="未搜到相关课程" v-show="!videoListShow.length" :top="100"></EmptyData>
-        </vuescroll>
-    </div>
-</template>
-<script>
-const courseData = require('@/static/course.json')
-export default {
-    data() {
-        return {
-            keyword: '',
-            videoList: [],
-            videoListShow: [],
-            course:[]
-        }
-    },
-    methods: {
-        search() {
-            if (this.keyword) {
-                this.videoListShow = this.videoList.filter(item => {
-                    return JSON.stringify(item).includes(this.keyword)
-                })
-            }else{
-                this.videoListShow = this.videoList
-            }
-
-        },
-        toDetailPage(index) {
-            this.$router.push({
-                name: 'diagDetail',
-                params: {
-                    videoInfo: this.videoList[index]
-                }
-            })
-        }
-    },
-    created() {
-        this.videoList = require('@/static/diagnosis.json')
-        this.videoListShow = this.videoList
-        this.course = []
-        this.course = this._.cloneDeep(courseData)
-        let sas = this.$store.state.user.schoolProfile.blob_sas
-        let blobUrl = JSON.parse(decodeURIComponent(localStorage.school_profile, "utf-8")).blob_uri
-        this.course.forEach(item => {
-            let url = `${blobUrl}${item.link}?${sas}`
-            item.link = url
-        })
-    }
-}
-</script>
-<style lang="less" scoped>
-.literacy-container {
-    width: 100%;
-    height: 100%;
-    background: white;
-    padding: 15px;
-}
-.literacy-block-box {
-    width: 100%;
-    // padding: 10px;
-    display: flex;
-    flex-wrap: wrap;
-}
-.literacy-item {
-    width: 300px;
-    background: #fcfcfc;
-    border: 1px solid #f0f0f0;
-    border-radius: 5px;
-    overflow: hidden;
-    margin-bottom: 30px;
-    margin-right: 30px;
-    cursor: pointer;
-    height: 180px;
-    position: relative;
-    transition: all 0.2s ease 0s;
-    &:hover {
-        box-shadow: 0 26px 40px -24px #aaa;
-        transform: translateY(-4px);
-    }
-    &:hover .literacy-img {
-        transform: scale(1.1);
-    }
-    .literacy-img-box {
-        width: 300px;
-        height: 150px;
-        overflow: hidden;
-    }
-    .literacy-img {
-        transition: all 0.3s;
-        width: 300px;
-        height: 180px;
-        background-size: cover;
-        background-repeat: no-repeat;
-    }
-    .img-text{
-        width: 300px;
-        height: 180px;
-        position: absolute;
-        left: 0px;
-        top: 0px;
-        background: rgba(20, 20, 20, .1);
-        color: white;
-        font-size: 14px;
-        padding: 5px;
-        &:hover{
-            background: rgba(20, 20, 20, .2);
-        }
-    }
-}
-.literacy-mgt-top {
-    width: ~"calc(100% - 20px)";
-    height: 40px;
-    box-shadow: 0px 2px 5px #e9e9e9;
-    margin-left: 10px;
-    padding-left: 10px;
-    padding-right: 20px;
-    padding-bottom: 10px;
-    line-height: 40px;
-}
-.literacy-search{
-    float: right;
-    margin-top: -52px;
-    margin-right: 20px;
-}
-</style>

Plik diff jest za duży
+ 0 - 256
TEAMModelOS/ClientApp/src/view/resource/Leadership.vue


Plik diff jest za duży
+ 0 - 229
TEAMModelOS/ClientApp/src/view/resource/LeadershipDetail.vue


+ 0 - 172
TEAMModelOS/ClientApp/src/view/resource/Literacy.vue

@@ -1,172 +0,0 @@
-<template>
-    <div class="literacy-container">
-        <div class="literacy-search light-iview-input">
-            <Input v-special-char v-model="keyword" suffix="ios-search" placeholder="搜索" style="width: 200px;margin-top:0px" @on-change="search" />
-        </div>
-        <!-- <div class="literacy-mgt-top">
-            <Input v-model="keyword" suffix="ios-search" placeholder="搜索" style="width: 200px;margin-top:0px" @on-change="search" />
-        </div> -->
-        <vuescroll>
-            <div class="literacy-block-box">
-                <div class="literacy-item" v-for="(item,index) in videoListShow" :key="item.title" @click="toDetailPage(index)">
-                    <div class="literacy-img-box">
-                        <div class="literacy-img" :style="{backgroundImage: `url(${item.poster})`}"></div>
-                    </div>
-                    <div class="info-item" v-show="!item.type">
-                        <span class="info-label">报告人:</span>
-                        <span>{{item.reporter}}</span>
-                    </div>
-                    <div class="info-item">
-                        <span class="info-label">主题:</span>
-                        <span>{{item.title}}</span>
-                    </div>
-                </div>
-                <!-- <div class="literacy-item" v-for="(item,index) in course" :key="index" @click="toDetailPage1(index)">
-                    <div class="literacy-img-box">
-                        <div class="literacy-img" :style="{backgroundImage: `url(${item.poster})`}"></div>
-                    </div>
-                    <div class="info-item">
-                        <span class="info-label">主题:</span>
-                        <span>{{item.title}}</span>
-                    </div>
-                </div> -->
-            </div>
-            <EmptyData textContent="未搜到相关课程" v-show="!videoListShow.length" :top="100"></EmptyData>
-        </vuescroll>
-    </div>
-</template>
-<script>
-const courseData = require('@/static/course.json')
-export default {
-    data() {
-        return {
-            keyword: '',
-            videoList: [],
-            videoListShow: [],
-            course: []
-        }
-    },
-    methods: {
-        search() {
-            if (this.keyword) {
-                this.videoListShow = this.videoList.filter(item => {
-                    return JSON.stringify(item).includes(this.keyword)
-                })
-            } else {
-                this.videoListShow = this.videoList
-            }
-
-        },
-        toDetailPage(index) {
-            this.$router.push({
-                name: 'literacyDetail',
-                params: {
-                    videoInfo: this.videoList[index]
-                }
-            })
-        },
-        toDetailPage1(index) {
-            this.$router.push({
-                name: 'literacyDetail',
-                params: {
-                    videoInfo: this.course[index]
-                }
-            })
-        }
-    },
-    created() {
-        this.videoList = require('@/static/video.json')
-        this.course = []
-        this.course = this._.cloneDeep(courseData)
-        let sas = this.$store.state.user.schoolProfile.blob_sas
-        let blobUrl = JSON.parse(decodeURIComponent(localStorage.school_profile, "utf-8")).blob_uri
-        this.course.forEach(item => {
-            let url = `${blobUrl}${item.link}?${sas}`
-            item.link = url
-            item.type = 'policy'
-        })
-        this.videoList.push(...this.course)
-        //如果后面数据量更多需要做分页或者懒加载
-        this.videoListShow = this.videoList
-
-    }
-}
-</script>
-<style lang="less" scoped>
-
-.literacy-container {
-    width: 100%;
-    height: 100%;
-    background: #f7f7f7;
-    padding: 15px;
-}
-.literacy-block-box {
-    // background: white;
-    width: 100%;
-    // min-height: 800px;
-    // padding: 10px;
-    display: flex;
-    flex-wrap: wrap;
-}
-.literacy-item {
-    width: 300px;
-    background: white;
-    border: 1px solid #f0f0f0;
-    padding-bottom: 10px;
-    border-radius: 5px;
-    overflow: hidden;
-    margin-bottom: 30px;
-    margin-right: 30px;
-    cursor: pointer;
-    height: fit-content;
-    transition: all 0.2s ease 0s;
-    .info-label {
-        color: #a5a5a5;
-    }
-    &:hover {
-        box-shadow: 0 26px 40px -24px #aaa;
-        transform: translateY(-4px);
-    }
-    &:hover .literacy-img {
-        transform: scale(1.1);
-    }
-    .literacy-img-box {
-        width: 300px;
-        height: 150px;
-        overflow: hidden;
-    }
-    .literacy-img {
-        transition: all 0.3s;
-        width: 300px;
-        height: 150px;
-        background-size: cover;
-        background-repeat: no-repeat;
-    }
-    .info-item {
-        margin-top: 10px;
-        width: 100%;
-        padding-left: 5px;
-        font-size: 16px;
-        text-overflow: ellipsis;
-        overflow: hidden;
-        white-space: nowrap;
-    }
-}
-.literacy-mgt-top {
-    width: ~"calc(100% - 20px)";
-    height: 40px;
-    box-shadow: 0px 2px 5px #e9e9e9;
-    margin-left: 10px;
-    padding-left: 10px;
-    padding-right: 20px;
-    padding-bottom: 10px;
-    line-height: 40px;
-}
-.literacy-search{
-    float: right;
-    margin-top: -52px;
-    margin-right: 20px;
-}
-</style>
-<style lang="less">
-</style>

+ 0 - 162
TEAMModelOS/ClientApp/src/view/resource/LiteracyDetail.vue

@@ -1,162 +0,0 @@
-<template>
-    <div class="literacy-detail-container">
-        <div class="literacy-mgt-top" @click="backList">
-            <Icon type="md-arrow-round-back" size="20" />
-            <span style="margin-left:10px">返回素养课程</span>
-        </div>
-        <vuescroll>
-            <div class="literacy-block-box">
-                <div class="video-info-wrap">
-                    <h1 class="video-title">{{videoInfo.title}}</h1>
-                    <video :src="videoInfo.link" class="video-box" controls="controls"  autoplay="autoplay"></video>
-                    <p class="info-item" v-show="videoInfo.reporter">
-                        <span class="info-label">报告人:</span>
-                        <span>{{videoInfo.reporter}}</span>
-                    </p>
-                    <p class="info-item" v-show="videoInfo.unit">
-                        <span class="info-label">单位:</span>
-                        <span>{{videoInfo.unit}}</span>
-                    </p>
-                    <p class="info-item"  v-show="videoInfo.content">
-                        <span class="info-label">简介:</span>
-                        <span>{{videoInfo.content}}</span>
-                    </p>
-                </div>
-                <div class="more-link-wrap">
-                    <p class="more-title">
-                        更多课程
-                        <Icon custom="iconfont icon-handle-down" size="20" />
-                    </p>
-                    <div class="video-list-box">
-                        <vuescroll>
-                            <div class="video-item" v-for="(item,index) in videoList" :key="index" @click="chooseCus(index)">
-                                <img :src="item.poster" class="video-poster">
-                                <div style="margin-left:15px">
-                                    <p class="video-attr-item">
-                                        <span class="info-label">报告人:</span>
-                                        <span>{{item.reporter}}</span>
-                                    </p>
-                                    <p class="video-attr-item">
-                                        <span class="info-label">单位:</span>
-                                        <span>{{item.unit}}</span>
-                                    </p>
-                                    <p class="video-attr-item">
-                                        <span class="info-label">主题:</span>
-                                        <span>{{item.title}}</span>
-                                    </p>
-                                </div>
-                            </div>
-                        </vuescroll>
-                    </div>
-
-                </div>
-            </div>
-        </vuescroll>
-    </div>
-</template>
-<script>
-export default {
-    data() {
-        return {
-            keyword: '',
-            videoInfo: {},
-            videoList: []
-        }
-    },
-    methods: {
-        search() {
-
-        },
-        backList() {
-            this.$router.push({
-                name: 'literacy'
-            })
-        },
-        chooseCus(index){
-            this.videoInfo = this.videoList[index]
-        }
-    },
-    created() {
-        this.videoList = require('@/static/video.json')
-        this.videoInfo = this.$route.params.videoInfo || this.videoList[0]
-    }
-}
-</script>
-<style lang="less" scoped>
-.info-label{
-    color: #808695;
-}
-.video-list-box {
-    height: 620px;
-}
-.video-attr-item {
-    font-size: 12px;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    width: 180px;
-    white-space: nowrap;
-}
-.video-item {
-    padding: 10px;
-    border-bottom: 1px solid #eee;
-    display: flex;
-    cursor: pointer;
-    &:hover{
-        background: #f0f0f0;
-    }
-}
-.video-poster {
-    width: 120px;
-}
-.more-title {
-    height: 35px;
-    line-height: 35px;
-    font-size: 12px;
-    border-bottom: 1px solid #eee;
-    padding-left: 10px;
-}
-.video-title {
-    margin-bottom: 15px;
-}
-.info-item {
-    margin: 10px 0px;
-    font-size: 16px;
-}
-.video-box {
-    // height: 600px;
-    width: 60%;
-}
-.literacy-detail-container {
-    width: 100%;
-    height: 100%;
-    padding: 15px;
-}
-.literacy-block-box {
-    width: 100%;
-    display: flex;
-    justify-content: space-between;
-}
-.video-info-wrap {
-    width: 80%;
-    min-height: 600px;
-    background: white;
-    padding: 15px;
-}
-.more-link-wrap {
-    width: 20%;
-    min-height: 600px;
-    background: white;
-}
-.literacy-mgt-top {
-    width: 100%;
-    height: 40px;
-    background: white;
-    box-shadow: 0px 2px 5px #e9e9e9;
-    padding-left: 10px;
-    padding-right: 20px;
-    padding-bottom: 10px;
-    line-height: 40px;
-    cursor: pointer;
-    color: #40A8F0;
-}
-</style>

+ 0 - 1
TEAMModelOS/ClientApp/src/view/resource/Policy.vue

@@ -112,7 +112,6 @@
 </template>
 <script>
 import BlobTool from '@/utils/blobTool.js'
-const courseData = require('@/static/course.json')
 export default {
     data() {
         const validateUrl = (rule, value, callback) => {

+ 0 - 177
TEAMModelOS/ClientApp/src/view/resource/Probation.vue

@@ -1,177 +0,0 @@
-<template>
-    <div class="literacy-container">
-        <div class="literacy-search light-iview-input">
-            <Input v-model="keyword" suffix="ios-search" placeholder="搜索" style="width: 200px;margin-top:0px" @on-change="search" />
-        </div>
-        <!-- <div class="literacy-mgt-top">
-            <Input v-model="keyword" suffix="ios-search" placeholder="搜索" style="width: 200px;margin-top:0px" @on-change="search" />
-        </div> -->
-        <vuescroll>
-            <div class="literacy-block-box">
-                <div class="literacy-item" v-for="(item,index) in videoListShow" :key="index" @click="toDetailPage(index)">
-                    <template v-if="item.isShow">
-                        <div :class="['literacy-img',index == 5 || index == 6 ? 'last-img' : '']" :style="{backgroundImage: `url(${item.img})`}"></div>
-                        <div class="info-item">
-                            <!-- <span class="info-label">报告人:</span> -->
-                            <span>{{item.name}}</span>
-                        </div>
-                    </template>
-                </div>
-            </div>
-            <EmptyData textContent="未搜到相关课程" v-show="!videoListShow.length" :top="100"></EmptyData>
-        </vuescroll>
-    </div>
-</template>
-<script>
-export default {
-    data() {
-        return {
-            keyword: '',
-            videoList: [],
-            videoListShow: []
-        }
-    },
-    methods: {
-        search() {
-            if (this.keyword) {
-                this.videoListShow = this.videoList.filter(item => {
-                    return JSON.stringify(item).includes(this.keyword)
-                })
-            } else {
-                this.videoListShow = this.videoList
-            }
-
-        },
-        toDetailPage(index) {
-            window.open(this.videoListShow[index].link)
-        }
-    },
-    created() {
-        let host = window.location.host
-        console.log(host)
-        this.videoList = [
-            {
-                name: '《中国教育学刊》课堂变革于教学领导力提升专题培训',
-                img: 'https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/%E4%B8%AD%E5%9B%BD%E6%95%99%E8%82%B2%E5%AD%A6%E5%88%8A.PNG',
-                link: 'https://sokrates.teammodel.cn/exhibition/tbavideo#/myChannel/858',
-                isShow: true
-            },
-            {
-                name: '《中国教育学刊》基础教育国家级教学成果推广会',
-                img: 'https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/%E4%B8%AD%E5%9B%BD%E6%95%99%E8%82%B2%E5%AD%A6%E5%88%8A1.PNG',
-                link: 'https://sokrates.teammodel.cn/exhibition/tbavideo#/myChannel/837',
-                isShow: true
-            },
-            {
-                name: '智慧教学实验学校联盟(西南大学)',
-                img: 'https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/%E8%A5%BF%E5%8D%97%E5%A4%A7%E5%AD%A6.PNG',
-                link: 'https://sokrates.teammodel.cn/district/JXLMPT#/',
-                isShow: host != 'jinniu.teammodel.cn'
-            },
-            {
-                name: '全球醍摩豆AI智慧学校联盟',
-                img: 'https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/%E6%99%BA%E6%85%A7%E5%AD%A6%E6%A0%A1%E8%81%94%E7%9B%9F.PNG',
-                link: 'https://sokrates.teammodel.cn/exhibition/tbavideo#/myChannel/82',
-                isShow: host != 'jinniu.teammodel.cn'
-            },
-            {
-                name: '苏格拉底平台',
-                img: 'https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/team-model.jpg',
-                link: 'https://sokrates.teammodel.cn/exhibition/tbavideo#/',
-                isShow: host != 'jinniu.teammodel.cn'
-            },
-            {
-                name: '国家公共资源教育平台',
-                img: 'https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/%E5%85%AC%E5%85%B1%E6%9C%8D%E5%8A%A1%E5%B9%B3%E5%8F%B0.png',
-                link: 'https://www.eduyun.cn/',
-                isShow: true
-            },
-            {
-                name: '中国大学慕课MOOC',
-                img: 'https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/MOOC.png',
-                link: 'https://www.icourse163.org/',
-                isShow: true
-            },
-            {
-                name: '政策解读',
-                img: 'https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/image/%E6%94%BF%E7%AD%96%E8%A7%A3%E8%AF%BB1.jpg',
-                link: '/home/policy',
-                isShow: true
-            }
-        ]
-        this.videoListShow = this.videoList
-    }
-}
-</script>
-<style lang="less" scoped>
-.last-img {
-    background-size: contain !important;
-    background-position: center;
-}
-.literacy-container {
-    width: 100%;
-    height: 100%;
-    background: white;
-    padding: 15px;
-}
-.literacy-block-box {
-    // background: white;
-    width: 100%;
-    // min-height: 800px;
-    // padding: 10px;
-    display: flex;
-    flex-wrap: wrap;
-}
-.literacy-item {
-    width: 200px;
-    height: 200px;
-    background: #fcfcfc;
-    border: 1px solid #f0f0f0;
-    padding-bottom: 10px;
-    border-radius: 5px;
-    overflow: hidden;
-    margin-bottom: 30px;
-    margin-right: 30px;
-    cursor: pointer;
-    height: fit-content;
-    padding: 10px;
-    box-sizing: content-box;
-    transition: all 0.2s ease 0s;
-    .info-label {
-        color: #a5a5a5;
-    }
-    &:hover {
-        box-shadow: 0 26px 40px -24px #aaa;
-        transform: translateY(-4px);
-    }
-    .literacy-img {
-        width: 200px;
-        height: 200px;
-        background-size: cover;
-        background-repeat: no-repeat;
-        border-radius: 50%;
-    }
-    .info-item {
-        margin-top: 10px;
-        width: 100%;
-        padding-left: 5px;
-        font-size: 16px;
-        text-align: center;
-    }
-}
-.literacy-mgt-top {
-    width: ~"calc(100% - 20px)";
-    height: 40px;
-    box-shadow: 0px 2px 5px #e9e9e9;
-    margin-left: 10px;
-    padding-left: 10px;
-    padding-right: 20px;
-    padding-bottom: 10px;
-    line-height: 40px;
-}
-.literacy-search {
-    float: right;
-    margin-top: -52px;
-    margin-right: 20px;
-}
-</style>