OnePsycho 5 år sedan
förälder
incheckning
6d697d7e83

+ 35 - 15
TEAMModelOS/ClientApp/src/common/BasePackage.vue

@@ -1,35 +1,57 @@
 <template>
     <div>
-        <Button type="success" :loading="isLoading" :disabled="urlList.length < 2" @click="downloadFile(urlList)">{{ text }}</Button>
+        <Button type="success" :loading="isLoading" :disabled="urlList.length < 2" @click="getSasStr(urlList)">{{ text }}</Button>
     </div>
 </template>
 
 <script>
     import FileSaver from "file-saver";
     import JSZip from "jszip";
-    import { fetch } from '@/filters/http'
+    import axios from 'axios'
     export default {
         name: "BasePackage",
         props: ['urlList','text','student'],
         data() {
             return {
-                isLoading:false
+                isLoading: false,
+                sasString:''
             };
         },
         created() { },
         methods: {
+
+            /**
+             * 获取blob授权信息
+             * */
+            getSasStr(list) {
+                this.$api.uploadFile.getContainerSAS().then(
+                    (res) => {
+                        if (res.error == null) {
+                            this.sasString = res.result.data.SAS
+                            this.downloadFile(list)
+                        } else {
+                            alert('API error!')
+                        }
+                    },
+                    (err) => {
+                        alert('API error!')
+                    }
+                )
+            },
+
             downloadFile(data) {
                 this.isLoading = true
                 const selectList = [];
                 const downloadname = data[0];
                 for (let index = 0; index < data.length; index++) {
-                    selectList.push(data[index]);
+                    selectList.push(data[index] + this.sasString);
                 }
                 if (selectList.length == data.length) {
                     this.handleBatchDownload(selectList, downloadname); //存储待打包的URI数组和包的名称
                 }
             },
             async handleBatchDownload(selectList, name) {
+                console.log(selectList)
                 const self = this;
                 const data = selectList;
                 const zip = new JSZip();
@@ -64,18 +86,16 @@
             //获取文件的arraybuffer格式并传入进行打包准备
             getFile(url) {
                 return new Promise((resolve, reject) => {
-                    fetch({
-                        method: "get",
-                        url,
-                        responseType: "arraybuffer"
+                    axios({
+                       method: 'get',
+                       url:'https://wx.qlogo.cn/mmopen/vi_32/rI3KE5H6Buu7RWmPK5rWyKYmMJRtOV5aGlqiahbTdhmxsicibOdAZVwRMWHdKZUf1icvvt40YV2vd5ibzLFZvwgNNDw/132',
+                       responseType: 'arraybuffer'
+                    }).then(res => {
+                       resolve(res.data)
+                    }).catch(error => {
+                       reject(error.toString())
                     })
-                        .then(res => {
-                            resolve(res.data);
-                        })
-                        .catch(error => {
-                            reject(error.toString());
-                        });
-                });
+                  })
             }
         },
         mounted() { }

+ 1 - 0
TEAMModelOS/ClientApp/src/components/learnactivity/BaseHwForm.vue

@@ -64,6 +64,7 @@
                     <span><Icon type="md-checkmark" color="#1BC6B0" size="20" /></span>
                     <span style="margin-left:10px">{{ item.fileName }}</span>
                 </div>
+                <span v-show="!defaultFileList.length" style="margin-left:10px">暂无数据</span>
             </FormItem>
 
             <FormItem label="作业记录" prop="isReset" v-show="editable && isEdit">

+ 25 - 2
TEAMModelOS/ClientApp/src/components/learnactivity/BaseHwTable.vue

@@ -104,6 +104,7 @@
             return {
                 setScoreModal: false,
                 downloadModal: false,
+                sasString:'',
                 mutualEvaluationModal: false,
                 isSaveComment: false,
                 currentUsedComment:null,
@@ -316,6 +317,9 @@
                 commentList: []
             }
         },
+        created() {
+            this.getSasStr()
+        },
         methods: {
 
             /**
@@ -331,6 +335,7 @@
              * @param list
              */
             onFileSelectChange(list) {
+                console.log(list)
                 this.downloadList = list.map(item => item.blobUrl)
             },
 
@@ -356,7 +361,7 @@
              * @param val
              */
             onUsedCommentChange(val) {
-                this.currentComment = this.usedCommentList[val].comment
+                this.currentComment = this.usedCommentList.length ? this.usedCommentList[val].comment : ''
             },
 
             /**
@@ -450,10 +455,28 @@
              */
             onDownloadFile(downloadList) {
                 downloadList.forEach(item => {
-                    window.location.href = item
+                    window.location.href = item + this.sasString
                 })
             },
 
+            /**
+             * 获取blob授权信息
+             * */
+            getSasStr() {
+                this.$api.uploadFile.getContainerSAS().then(
+                    (res) => {
+                        if (res.error == null) {
+                            this.sasString = res.result.data.SAS
+                        } else {
+                            alert('API error!')
+                        }
+                    },
+                    (err) => {
+                        alert('API error!')
+                    }
+                )
+            },
+
         },
 
         mounted() {

+ 1 - 1
TEAMModelOS/ClientApp/src/components/learnactivity/BaseVoteSsTable.vue

@@ -45,7 +45,7 @@
                     {
                         title: '选项',
                         render: (h, params) => {
-                            return h('span', params.row.option === '' ? '未投票' : params.row.option)
+                            return h('span', !params.row.option ? '未投票' : params.row.option)
                         },
                     },
                     

+ 1 - 1
TEAMModelOS/ClientApp/src/components/learnactivity/BaseVoteTable.vue

@@ -63,7 +63,7 @@
                         render: (h, params) => {
                             return h('Progress', {
                                 props: {
-                                    percent: (params.row.result.length / this.studentsNum).toFixed(2) * 100,
+                                    percent: parseInt(((params.row.result.length / this.studentsNum) * 100).toFixed(2)),
                                     strokeWidth: 18,
                                     textInside:true
                                 }

+ 1 - 1
TEAMModelOS/ClientApp/src/store/module/totalAnalysis.js

@@ -98,7 +98,7 @@ export default {
                 for (let i = 0; i < data[0].classList.length; i++) {
                     item[data[0].classList[i]] = data[0].datas[i][index]
                 }
-                item.knowledge = mapJson.filter(i => i.code === item.knowledge)[0].name // 可删除 替换使用
+                item.knowledge = mapJson.filter(i => i.code === item.knowledge).length ? mapJson.filter(i => i.code === item.knowledge)[0].name : '' // 可删除 替换使用
             })
             state.exerciseData = jsonData
         },

+ 4 - 1
TEAMModelOS/ClientApp/src/view/selflearning/ManageHomeWork.vue

@@ -60,7 +60,10 @@
             </div>
             <vuescroll>
                 <div class="hw-data-wrap">
-                    <BaseHwTable :studentsList="studentsList"></BaseHwTable>
+                    <div v-if="hwList.length === 0 || currentHw.state === 100">
+                        <EmptyBox :top="50"></EmptyBox>
+                    </div>
+                    <BaseHwTable :studentsList="studentsList" v-else></BaseHwTable>
                 </div>
             </vuescroll>
         </div>

+ 1 - 1
TEAMModelOS/ClientApp/src/view/selflearning/ManageVote.vue

@@ -225,7 +225,7 @@
                         res.result.data.forEach(item => {
                             arr.push({
                                 option: this.getSimpleText(item.optionValue),
-                                key: item.optionKey,
+                                key: item.optionKey || '',
                                 result: item.students
                             })
 

+ 1 - 1
TEAMModelOS/Controllers/Analysis/AchievementController.cs

@@ -1141,7 +1141,7 @@ namespace TEAMModelOS.Controllers.Analysis
                     int n = 0;
                     p.item.ForEach(i =>
                     {
-                        if (i.field.Contains(areaName[a]))
+                        if (i.field != null && i.field.Contains(areaName[a]))
                         {
                             fieldPoint += point[n];
                         }