Browse Source

Merge branch 'develop3.0' of http://106.12.23.251:10080/TEAMMODEL/TEAMModelOS into develop3.0

OnePsycho 5 years ago
parent
commit
d0f51916a2

+ 7 - 0
TEAMModelOS.Service/Models/Syllabus/SyllabusResource.cs

@@ -77,5 +77,12 @@ namespace TEAMModelOS.Service.Models.Syllabus
         /// </summary>
         [Required(ErrorMessage = "{0} 必须填写")]
         public string sha1Code { get; set; }
+
+        /// <summary>
+        /// 学校编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string schoolCode { get; set; }
+        
     }
 }

+ 1 - 3
TEAMModelOS/ClientApp/src/view/Home.vue

@@ -48,11 +48,9 @@
             <Submenu name="2">
                 <template slot="title">
                     <Icon type="ios-people" size="18" />
-                    <span class="first-menu">课程\班级管理</span>
+                    <span class="first-menu">课程管理</span>
                 </template>
-                <MenuItem name="2-2" to="/home/createCourse">新增课程</MenuItem>
                 <MenuItem name="2-2" to="/home/courseManage">课程管理</MenuItem>
-                <MenuItem name="2-1" to="/home/ClassStudent">学生信息</MenuItem>
 
             </Submenu>
             <Submenu name="3">

+ 3 - 55
TEAMModelOS/ClientApp/src/view/coursemgmt/CourseManage.less

@@ -7,64 +7,12 @@
 @primary-fontSize: 14px;
 @second-fontSize: 16px;
 
-.course-stu {
+
+
+.course-mgmt-content {
     width: 100%;
     height: 100%;
     background-color: @first-bgColor;
-
-    &-menu {
-        width: 100%;
-        height: 45px;
-        border-bottom: 1px solid @borderColor;
-        padding: 0px 35px 0px 15px;
-        box-sizing: border-box;
-        background-color: @second-bgColor;
-    }
-
-    .course-stu-content {
-        width: 100%;
-        padding-top:15px;
-        height: 100%;
-        display:flex;
-        flex-direction:row;
-        align-content:center;
-        justify-content:center;
-    }
-}
-.course-stu-menu {
-    &-left {
-        float: left;
-        line-height: 45px;
-        height: 45px;
-        width: 49%;
-    }
-
-    &-right {
-        float: right;
-        line-height: 45px;
-        height: 45px;
-        width: 50%;
-
-        ul {
-            list-style: none;
-            color: @second-textColor;
-            width: 100%;
-
-            li {
-                height: 45px;
-                line-height: 45px;
-                display: inline-block;
-                margin-right: 30px;
-                float: right;
-                cursor: pointer;
-            }
-
-            span {
-                margin-left: 8px;
-                display: inline-block;
-            }
-        }
-    }
 }
 .select-class-label {
     color: white;

+ 31 - 62
TEAMModelOS/ClientApp/src/view/coursemgmt/CourseManage.vue

@@ -1,70 +1,38 @@
 <template>
-    <div class="course-stu">
-        <div class="course-stu-menu" style="display:none;">
-            <div class="course-stu-menu-left">
-                <span class="select-class-label">选择班级:</span>
-                <Select v-model="searchPeriod" style="width:20%;" :placeholder="$t('stuAccount.periodHolder')" clearable>
-                    <Option v-for="(item,index) in schoolData.period" :value="item.periodCode" :key="index" @click.native="getGradeList(index)">{{ item.periodName }}</Option>
-                </Select>
-                <Select v-model="searchGrade" style="width:20%;margin-left:1%;" :placeholder="$t('stuAccount.gradeHolder')" clearable>
-                    <Option v-for="(item,index) in gradeList" :value="item.gradeCode" :key="index" @click.native="getClassroomList(index)">{{ item.gradeName }}</Option>
-                </Select>
-                <Select v-model="searchClassroom" ref="classroom" style="width:20%;margin-left:1%;" :placeholder="$t('stuAccount.classroomHolder')" clearable>
-                    <Option v-for="(item,index) in classroomShowList" :value="item.classroomCode" :key="index">{{ item.classroomName }}</Option>
-                </Select>
+    <div class="course-mgmt-content">
+        <div class="course-list">
+            <div class="course-box">
+                <span class="list-label">课程列表</span>
+                <Icon type="md-add" color="white" size="18" class="add-icon" title="新建课程" @click="addCourse" />
             </div>
-            <div class="course-stu-menu-right sc-text-no-select">
-                <ul>
-                    <li>
-                        <Icon type="md-trash" color="white" size="18" />
-                        <span>导出学生名单</span>
-                    </li>
-                    <li>
-                        <Icon type="md-create" color="white" size="18" />
-                        <span>修改反馈器编号</span>
-                    </li>
-                    <li @click="showAuthorization()">
-                        <Icon type="ios-cog-outline" color="white" size="18" />
-                        <span>设置组别</span>
-                    </li>
-                </ul>
+            <div class="class-box">
+                <span class="list-label">班级列表</span>
             </div>
         </div>
-        <div class="course-stu-content">
-            <div class="course-list">
-                <div class="course-box">
-                    <span class="list-label">课程列表</span>
-                    <Icon type="md-add" color="white" size="18" class="add-icon" title="新建课程" @click="addCourse"/>
-                </div>
-                <div class="class-box">
-                    <span class="list-label">班级列表</span>
-                </div>
-            </div>
-            <div class="resource-list">
-                <span class="list-label">课程资源</span>
-                <Icon type="md-add" color="white" size="18" class="add-icon" title="添加课程资源" />
-                <Tabs value="name1">
-                    <TabPane label="多媒体" name="name1">多媒体</TabPane>
-                    <TabPane label="课纲" name="name2">课纲</TabPane>
-                </Tabs>
+        <div class="resource-list">
+            <span class="list-label">课程资源</span>
+            <Icon type="md-add" color="white" size="18" class="add-icon" title="添加课程资源" />
+            <Tabs value="name1">
+                <TabPane label="多媒体" name="name1">多媒体</TabPane>
+                <TabPane label="课纲" name="name2">课纲</TabPane>
+            </Tabs>
 
-            </div>
-            <div class="group-list">
-                <span class="list-label">课程学生</span>
-                <Tabs value="name1">
-                    <TabPane label="学生名单" name="name1">
-                        <Table ref="selection" :columns="tableColumns" :data="tablePageData" height="750" :loading="tableLoading">
-                            <template slot-scope="{ row,index }" slot="action">
-                                <div class="item-tools">
-                                    <Icon type="md-create" size="18" color="white" @click="editStudent(index)" />
-                                    <Icon type="md-trash" size="18" color="white" @click="delStudent(index)" />
-                                </div>
-                            </template>
-                        </Table>
-                    </TabPane>
-                    <TabPane label="分组设置" name="name2">分组设置</TabPane>
-                </Tabs>
-            </div>
+        </div>
+        <div class="group-list">
+            <span class="list-label">课程学生</span>
+            <Tabs value="name1">
+                <TabPane label="学生名单" name="name1">
+                    <Table ref="selection" :columns="tableColumns" :data="tablePageData" height="750" :loading="tableLoading">
+                        <template slot-scope="{ row,index }" slot="action">
+                            <div class="item-tools">
+                                <Icon type="md-create" size="18" color="white" @click="editStudent(index)" />
+                                <Icon type="md-trash" size="18" color="white" @click="delStudent(index)" />
+                            </div>
+                        </template>
+                    </Table>
+                </TabPane>
+                <TabPane label="分组设置" name="name2">分组设置</TabPane>
+            </Tabs>
         </div>
         <Modal v-model="addCourseStatus" width="500" footer-hide mask-closable="false" class="add-course-modal">
             <div slot="header">
@@ -91,6 +59,7 @@
             <div slot="footer"></div>
         </Modal>
     </div>
+        
 </template>
 <script>
     export default {

+ 1 - 1
TEAMModelOS/ClientApp/src/view/teachcontent/index.less

@@ -258,7 +258,7 @@
         transform: translateY(-6px);
         transition: all .2s ease 0s;
         background: #606060;
-        z-index:9999;
+        z-index:999;
     }
 
     &:hover .file-info p {

+ 150 - 72
TEAMModelOS/ClientApp/src/view/teachcontent/index.vue

@@ -17,9 +17,9 @@
                     <span class="content-type-label">{{item.label}}</span>
                 </div>
                 <div :class="rangeType === 1 ? 'space-box animated fadeIn fast' : 'space-box animated fadeOut fast'">
-                    <Progress hide-info :percent="48" :stroke-width="15" style="width:100%;" />
+                    <Progress hide-info :percent="storageSpace/1204/1204/1204/2*100" :stroke-width="15" style="width:100%;" />
                     <p>
-                        <span>空间:1020M/2G</span>
+                        <span>空间:{{storageSpace/1204 < 1024 ? (storageSpace/1204).toFixed(1) + 'KB' : storageSpace/1204/1204 < 1204 ?  (storageSpace/1204/1204).toFixed(1) + 'M': (storageSpace/1204/1204/1204).toFixed(1) + 'G'}}/2G</span>
                         <span>扩容</span>
                     </p>
                 </div>
@@ -37,11 +37,12 @@
                     <div v-if="activeTypeIndex === 0 || activeTypeIndex === 3 || activeTypeIndex === 4 ">
                         <div class="list-item" v-for="(item,index) in fileListShow" :key="index">
                             <div class="file-icon">
-                                <img v-if="item.extention === 'ppt'" src="../../assets/icon/ppt50.png" width="70" />
-                                <img v-else-if="item.extention === 'doc'" src="../../assets/icon/word50.png" width="70" />
-                                <img v-else-if="item.extention === 'xls'" src="../../assets/icon/xls50.png" width="70" />
-                                <img v-else-if="item.type === 'picture'" src="../../assets/icon/icon_img.png" width="70" />
-                                <img v-else-if="item.type === 'video4'" src="../../assets/icon/icon_video.png" width="70" />
+                                <img v-if="item.extension == 'ppt' || item.extension == 'pptx'" src="../../assets/icon/ppt50.png" width="70" />
+                                <img v-else-if="item.extension == 'doc' || item.extension == 'docx'" src="../../assets/icon/word50.png" width="70" />
+                                <img v-else-if="item.extension == 'xls' || item.extension == 'xlsx'" src="../../assets/icon/xls50.png" width="70" />
+                                <img v-else-if="item.extension == 'pdf'" src="../../assets/icon/pdf50.png" width="70" />
+                                <img v-else-if="item.type == 'picture'" src="../../assets/icon/icon_img.png" width="70" />
+                                <img v-else-if="item.type == 'video'" src="../../assets/icon/icon_video.png" width="70" />
                                 <img v-else src="../../assets/icon/prelearn50.png" width="70" />
                             </div>
                             <div class="file-info">
@@ -56,7 +57,7 @@
                                 </div>
                             </div>
                             <div class="file-action">
-                                <Button type="primary" size="large" icon="md-open" @click="downloadFile">
+                                <Button type="primary" size="large" icon="md-open" @click="previewOrDownloadFile(index)">
                                     <span>预览/下载</span>
                                     <div class="btn-dropdown-menu" @click.stop>
                                         <Dropdown>
@@ -70,7 +71,7 @@
                                             </DropdownMenu>
                                         </Dropdown>
                                     </div>
-                                    
+
                                 </Button>
                             </div>
                         </div>
@@ -79,15 +80,18 @@
                         <div :style="{width: boxWidth+'px',margin:'auto'}">
                             <div class="card-item" v-for="(item,index) in fileListShow" :key="index">
                                 <div class="file-icon">
-                                    <img v-if="item.extention == 'ppt'" src="../../assets/icon/ppt50.png" width="80" />
-                                    <img v-else-if="item.extention == 'doc'" src="../../assets/icon/word50.png" width="80" />
-                                    <img v-else-if="item.extention == 'xls'" src="../../assets/icon/xls50.png" width="80" />
+                                    <img v-if="item.extension == 'ppt' || item.extension == 'pptx'" src="../../assets/icon/ppt50.png" width="80" />
+                                    <img v-else-if="item.extension == 'doc'" src="../../assets/icon/word50.png" width="80" />
+                                    <img v-else-if="item.extension == 'xls'" src="../../assets/icon/xls50.png" width="80" />
                                     <img v-else-if="item.type == 'picture'" src="../../assets/icon/icon_img.png" width="80" />
                                     <img v-else-if="item.type == 'video'" src="../../assets/icon/icon_video.png" width="80" />
                                     <img v-else src="../../assets/icon/prelearn50.png" width="80" />
                                 </div>
                                 <div class="file-info">
-                                    <p>{{item.fileName}}</p>
+                                    <p>
+                                        <EditableLabel ref="fileNameLabel" class="school-name" :content="item.fileName" @editComplete="handleEditFileName($event,index)">
+                                        </EditableLabel>
+                                    </p>
                                     <div class="file-detail-info">
                                         <span>上传时间:{{formatDate(item.createTime)}}</span>
                                         <span>文件大小:{{item.size/1204 > 1024 ? (item.size/1204/1204).toFixed(1) + 'M': (item.size/1204).toFixed(1) + 'KB'}}</span>
@@ -95,7 +99,7 @@
                                     </div>
                                 </div>
                                 <div class="file-action">
-                                    <Button type="primary" size="large" icon="md-open" @click="downloadFile">
+                                    <Button type="primary" size="large" icon="md-open" @click="previewOrDownloadFile(index)">
                                         <span>预览/下载</span>
                                         <div class="btn-dropdown-menu" @click.stop>
                                             <Dropdown placement="top-end">
@@ -119,11 +123,20 @@
         </div>
         <Modal v-model="uploadStatus"
                title="上传教学资源" class="upload-modal" @on-ok="confirmUpload">
-            <Upload type="drag" :action="uploadUrl" multiple :on-success="getFileUrl">
+            <Upload type="drag" :action="uploadUrl" multiple :on-success="getFileUrl" :before-upload="checkSize">
                 <p style="margin:20px 0px;font-size:20px;">点击或者拖拽上传</p>
-                <Icon type="ios-cloud-upload" size="50" style="margin-bottom:30px;"/>
+                <Icon type="ios-cloud-upload" size="50" style="margin-bottom:30px;" />
             </Upload>
         </Modal>
+        <Modal v-model="previewStatus"
+               :title="previewFile.fileName" width="800px">
+            <video v-if="previewFile.type == 'video'" :src="previewFile.blobUrl" width="780">
+                您的浏览器不支持 video 标签。
+            </video>
+            <img v-if="previewFile.type == 'picture'" :src="previewFile.blobUrl" width="780"/>
+            <embed v-if="previewFile.type == 'document'" :src="previewFile.blobUrl" width="780" height="600"/>
+            <div slot="footer"></div>
+        </Modal>
     </div>
 </template>
 <script>
@@ -134,6 +147,22 @@
         },
         data() {
             return {
+                previewFile: {
+                    id: 'sha1Code+contentType+size',
+                    teamModelId: 'habook#0001',
+                    fileName: '测试文件类型列表PPT01',
+                    extension: 'ppt',
+                    contentType: 'image/jpeg',
+                    type: 'document',
+                    size: 19344,
+                    createTime: '2019/01/02',
+                    relationNum: 0,
+                    blobUrl: "XXXXXXXXXX",
+                    range: 'private',
+                    sha1Code: ''
+                },
+                previewStatus: false,
+                storageSpace:0,
                 uploadStatus: false,
                 uploadFileList:[],
                 uploadUrl:'',
@@ -183,7 +212,7 @@
                     },
                     {
                         fileName: '测试文件类型列表表格文件01',
-                        extention: 'xls',
+                        extension: 'xls',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -191,7 +220,7 @@
                     },
                     {
                         fileName: '测试文件类型列表防守打法',
-                        extention: 'pdf',
+                        extension: 'pdf',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -199,7 +228,7 @@
                     },
                     {
                         fileName: '测试文件类型列表订单',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum: 2,
@@ -207,7 +236,7 @@
                     },
                     {
                         fileName: '测试文件类型列表的订单',
-                        extention: 'doc',
+                        extension: 'doc',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -215,7 +244,7 @@
                     },
                     {
                         fileName: '测试文件类型列表发发发',
-                        extention: 'pdf',
+                        extension: 'pdf',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -223,7 +252,7 @@
                     },
                     {
                         fileName: '测试文件类型列表发的',
-                        extention: 'mp4',
+                        extension: 'mp4',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -231,7 +260,7 @@
                     },
                     {
                         fileName: '测试文件类型列表他一般',
-                        extention: 'mp4',
+                        extension: 'mp4',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -239,7 +268,7 @@
                     },
                     {
                         fileName: '测试文件类型列表好友推荐',
-                        extention: 'mp4',
+                        extension: 'mp4',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -247,7 +276,7 @@
                     },
                     {
                         fileName: '测试文件类型列表换个话题',
-                        extention: 'jpg',
+                        extension: 'jpg',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -255,7 +284,7 @@
                     },
                     {
                         fileName: '测试文件类型列表个人化谈好',
-                        extention: 'doc',
+                        extension: 'doc',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -263,7 +292,7 @@
                     },
                     {
                         fileName: '测试文件类型列表过-分的话',
-                        extention: 'jpg',
+                        extension: 'jpg',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -271,7 +300,7 @@
                     },
                     {
                         fileName: '测试文件类型列表阿市规划局',
-                        extention: 'jpg',
+                        extension: 'jpg',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -279,7 +308,7 @@
                     },
                     {
                         fileName: '测试文件类型列表特意',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -287,7 +316,7 @@
                     },
                     {
                         fileName: '测试文件类型列表第一次见',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -295,7 +324,7 @@
                     },
                     {
                         fileName: '测试文件类型列表检验检疫局',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -303,7 +332,7 @@
                     },
                     {
                         fileName: '测试文件类型列表发货站小学部',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -311,7 +340,7 @@
                     },
                     {
                         fileName: '测试文件类型列表fsagfhut757',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -319,7 +348,7 @@
                     },
                     {
                         fileName: '测试文件类型列表飞洒打道回府原图',
-                        extention: 'doc',
+                        extension: 'doc',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -327,7 +356,7 @@
                     },
                     {
                         fileName: '测试文件类型列表分涣发大号',
-                        extention: 'doc',
+                        extension: 'doc',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -335,7 +364,7 @@
                     },
                     {
                         fileName: '测试文件类型列表个多月',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -343,7 +372,7 @@
                     },
                     {
                         fileName: '测试文件类型列表grey',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum: 2,
@@ -351,7 +380,7 @@
                     },
                     {
                         fileName: '测试文件类型列表任天野上',
-                        extention: 'xls',
+                        extension: 'xls',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -359,7 +388,7 @@
                     },
                     {
                         fileName: '测试文件类型列表负责',
-                        extention: 'pdf',
+                        extension: 'pdf',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -367,7 +396,7 @@
                     },
                     {
                         fileName: '测试文件类型列表残疾人非',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum: 2,
@@ -375,7 +404,7 @@
                     },
                     {
                         fileName: '测试文件类型列表公司地址',
-                        extention: 'doc',
+                        extension: 'doc',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -383,7 +412,7 @@
                     },
                     {
                         fileName: '测试文件类型列表广东省',
-                        extention: 'pdf',
+                        extension: 'pdf',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -391,7 +420,7 @@
                     },
                     {
                         fileName: '测试文件类型列表感受到发发发',
-                        extention: 'mp4',
+                        extension: 'mp4',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -399,7 +428,7 @@
                     },
                     {
                         fileName: '测试文件类型列表感受到',
-                        extention: 'mp4',
+                        extension: 'mp4',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -407,7 +436,7 @@
                     },
                     {
                         fileName: '测试文件类型列表未成年结局v',
-                        extention: 'mp4',
+                        extension: 'mp4',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -415,7 +444,7 @@
                     },
                     {
                         fileName: '测试文件类型列表回复大学城',
-                        extention: 'jpg',
+                        extension: 'jpg',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -423,7 +452,7 @@
                     },
                     {
                         fileName: '测试文件类型列表可开放性',
-                        extention: 'doc',
+                        extension: 'doc',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -431,7 +460,7 @@
                     },
                     {
                         fileName: '测试文件类型列表回复道工序',
-                        extention: 'jpg',
+                        extension: 'jpg',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -439,7 +468,7 @@
                     },
                     {
                         fileName: '测试文件类型列表回复股东会',
-                        extention: 'jpg',
+                        extension: 'jpg',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -447,7 +476,7 @@
                     },
                     {
                         fileName: '测试文件类型列表回复道工序',
-                        extention: 'jpg',
+                        extension: 'jpg',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -455,7 +484,7 @@
                     },
                     {
                         fileName: '测试文件类型列表回复股东会',
-                        extention: 'jpg',
+                        extension: 'jpg',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -463,7 +492,7 @@
                     },
                     {
                         fileName: '测试文件类型列表kg发放的',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -471,7 +500,7 @@
                     },
                     {
                         fileName: '测试文件类型列表恢复供电局',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -479,7 +508,7 @@
                     },
                     {
                         fileName: '测试文件类型列表发送短信',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -487,7 +516,7 @@
                     },
                     {
                         fileName: '测试文件类型列表发顺丰撒',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -495,7 +524,7 @@
                     },
                     {
                         fileName: '测试文件类型列表回复手动阀',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -503,7 +532,7 @@
                     },
                     {
                         fileName: '测试文件类型列表发高回报',
-                        extention: 'doc',
+                        extension: 'doc',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -511,7 +540,7 @@
                     },
                     {
                         fileName: '测试文件类型列表发现',
-                        extention: 'doc',
+                        extension: 'doc',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -519,7 +548,7 @@
                     },
                     {
                         fileName: '测试文件类型列表业人员未有',
-                        extention: 'ppt',
+                        extension: 'ppt',
                         size: '2.6M',
                         createTime: '2019/01/02',
                         relationNum:2,
@@ -562,6 +591,12 @@
             }
         },
         methods: {
+            checkSize(file) {
+                if (this.storageSpace + file.size > 2 * 1204 * 1204 * 1204) {
+                    this.$Message.error('存储空间不足')
+                    return false
+                }
+            },
             delFile(index) {
                 this.$api.teachContent.deleteResource(
                     {
@@ -569,7 +604,16 @@
                     }
                 ).then(
                     (res) => {
-                        this.$Message.success('文件删除成功!');
+                        if (res.error == null) {
+                            let originalIndex = this.fileList.indexOf(this.fileListShow[index])
+                            this.fileList.splice(originalIndex,1)
+                            this.fileListShow.splice(index,1)
+                            this.$Message.success('文件删除成功!');
+                            this
+                        } else {
+                            this.$Message.error('文件删除失败!');
+                        }
+                        
                     },
                     (err) => {
 
@@ -596,18 +640,17 @@
             setFileNameEdit(index) {
                 this.$refs.fileNameLabel[index].handleEdit()
             },
-            downloadFile() {
-                alert('测试事件冒泡');
+            previewOrDownloadFile(index) {
+                if (this.fileListShow[index].type == 'video' || this.fileListShow[index].type == 'picture' || this.fileListShow[index].extension == 'pdf') {
+                    this.previewFile = this.fileListShow[index]
+                    this.previewStatus = true
+                } else {
+                    window.location.href = this.fileListShow[index].blobUrl
+                    this.$Message.warning('抱歉,此文件不支持预览')
+                }
             },
             formatDate(timestamp) {
                 let date = new Date(timestamp/10000)
-                //var year = date.getFullYear()  //取得4位数的年份
-                //var month = date.getMonth() + 1  //取得日期中的月份,其中0表示1月,11表示12月
-                //var day = date.getDate()      //返回日期月份中的天数(1到31)
-                //var hour = date.getHours()     //返回日期中的小时数(0到23)
-                //var minute = date.getMinutes() //返回日期中的分钟数(0到59)
-                //var second = date.getSeconds() //返回日期中的秒数(0到59)
-                //return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second
                 return date.toLocaleString()
             }, 
             findFileList() {
@@ -618,11 +661,16 @@
                 ).then(
                     (res) => {
                         if (res.error == null) {
-                            this.fileList = res.result.data;
-                            this.fileListShow = this.fileList;
+                            this.fileList = res.result.data
+                            this.fileListShow = this.fileList
                             this.searchBefore = this.fileList
+                            this.storageSpace = this.fileList.reduce(
+                                (total, item) => {
+                                    return total + item.size
+                                },0
+                            )
                         } else {
-                            alert('暂无文件!')
+                            aler('API error!')
                         }
                     },
                     (err) => {
@@ -694,6 +742,17 @@
                     alert('API error!')
                 }
             },
+            groupByKey(array, key) {
+                const groups = {}
+                array.forEach((item) => {
+                    const group = JSON.stringify(item[key])
+                    groups[group] = groups[group] || []
+                    groups[group].push(item)
+                })
+                return Object.keys(groups).map((group) =>{
+                    return groups[group]
+                })
+            },
             setOrderWay(value) {
                 this.orderWay = value
                 switch (value) {
@@ -718,6 +777,7 @@
                         )
                         break
                     case 'type':
+                        
                         if (this.rangeType == 1) {
                             this.fileList.sort(
                                 (a, b) => {
@@ -738,6 +798,24 @@
                         )
                         break
                     case 'relation':
+                        if (this.rangeType == 1) {
+                            this.fileList.sort(
+                                (a, b) => {
+                                    return b.relationNum - a.relationNum
+                                }
+                            )
+                        } else {
+                            this.fileList.sort(
+                                (a, b) => {
+                                    return b.relationNum - a.relationNum
+                                }
+                            )
+                        }
+                        this.fileListShow.sort(
+                            (a, b) => {
+                                return b.relationNum - a.relationNum
+                            }
+                        )
                         break
                     default:
                         break

+ 2 - 2
TEAMModelOS/Controllers/Core/FileController.cs

@@ -36,7 +36,7 @@ namespace TEAMModelOS.Controllers.Syllabus
 
 
         [HttpPost("uploadFiles")]
-        [RequestSizeLimit(204_800_000_00)] //最大10000m左右
+        [RequestSizeLimit(204_800_000_00)] //最大20000m左右
         public async Task<BaseJosnRPCResponse> BlobSaveFile([FromForm] IFormFile[] files)
         {
             JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
@@ -53,7 +53,7 @@ namespace TEAMModelOS.Controllers.Syllabus
             return responseBuilder.Data(list).build();
         }
         [HttpPost("uploadFile")]
-        [RequestSizeLimit(102_400_000_00)] //最大10000m左右
+        [RequestSizeLimit(204_800_000_00)] //最大20000m左右
         public async Task<BaseJosnRPCResponse> BlobSaveFile([FromForm] IFormFile file)
         {
             //IFormFileCollection s =  Request.Form.Files;

+ 1 - 1
TEAMModelOS/TEAMModelOS.csproj

@@ -66,6 +66,6 @@
     </ItemGroup>
   </Target>
 
-  <ProjectExtensions><VisualStudio><UserProperties jsonfile_4core_4lang_1json__JsonSchema="http://json.schemastore.org/2.0.0-csd.2.beta.2018-10-10.json" /></VisualStudio></ProjectExtensions>
+  <ProjectExtensions><VisualStudio><UserProperties jsonfile_4core_4lang_1json__JsonSchema="http://json.schemastore.org/2.0.0-csd.2.beta.2018-10-10.json" clientapp_4package_1json__JsonSchema="" /></VisualStudio></ProjectExtensions>
 
 </Project>