Prechádzať zdrojové kódy

活动的blob授权

XW 3 rokov pred
rodič
commit
48cfed0bd7

+ 11 - 18
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/QuesNaire.vue

@@ -290,22 +290,18 @@
 			// 获取blob里的问卷内容
 			// 获取blob里的问卷内容
 			getBlobItems(qnItem) {
 			getBlobItems(qnItem) {
 				return new Promise(async (resolve, reject) => {
 				return new Promise(async (resolve, reject) => {
-					let profile = localStorage.student_profile || localStorage.user_profile
-					let curBlobHost = JSON.parse(decodeURIComponent(profile, "utf-8")).blob_uri
-					let schoolBlobHost = curBlobHost.slice(0, curBlobHost.lastIndexOf('/')) + '/' +  localStorage.getItem('login_schoolCode')
-					let privateBlobHost = curBlobHost.slice(0, curBlobHost.lastIndexOf('/')) + '/' +  qnItem.creatorId
-					let cntr = qnItem.scope === 'school' ? this.$store.state.userInfo.azp : qnItem.creatorId
-					let blobHost = qnItem.scope === 'school' ?  schoolBlobHost : privateBlobHost
+					console.log(qnItem);
+					let blobHost = this.$tools.getBlobHost()
 					// 根据试卷的Blob地址 去读取JSON文件
 					// 根据试卷的Blob地址 去读取JSON文件
-					let sasString = qnItem.scope === 'private' ? await this.$tools.getPrivateSas(cntr) : await this.$tools.getSchoolSas(cntr)
 					let promiseArr = []
 					let promiseArr = []
-					let indexJson = await this.getBlobJsonFile(qnItem.scope, qnItem.blob, cntr)
+					let indexJson = await this.getBlobJsonFile(qnItem)
 					if(indexJson.slides.length) {
 					if(indexJson.slides.length) {
 						for (let item of indexJson.slides) {
 						for (let item of indexJson.slides) {
 							promiseArr.push(new Promise(async (r, j) => {
 							promiseArr.push(new Promise(async (r, j) => {
 								try {
 								try {
-									let itemJson = JSON.parse(await this.$tools.getFile(blobHost +
-										item + sasString.sas))
+									let cntr = qnItem.scope === 'school' ? qnItem.school : qnItem.code.replace('Survey-','')
+									let itemFullPath = await this.$tools.getFileSas(blobHost + '/' +  cntr + item)
+									let itemJson = JSON.parse(await this.$tools.getFile(itemFullPath.url))
 									r(itemJson)
 									r(itemJson)
 								} catch (e) {
 								} catch (e) {
 									j(e)
 									j(e)
@@ -325,16 +321,13 @@
 			},
 			},
 			
 			
 			// 获取blob里的问卷信息
 			// 获取blob里的问卷信息
-			getBlobJsonFile(scope, url, container) {
+			getBlobJsonFile(qnItem) {
 				return new Promise(async (resolve, reject) => {
 				return new Promise(async (resolve, reject) => {
-					console.log(...arguments)
-					let profile = localStorage.student_profile || localStorage.user_profile
-					let blobUrl = JSON.parse(decodeURIComponent(profile, "utf-8")).blob_uri
-					let blobHost = blobUrl.slice(0, blobUrl.lastIndexOf('/')) + '/' +  container
-					// 根据试卷的Blob地址 去读取JSON文件
-					let sasString = scope === 'private' ? await this.$tools.getPrivateSas(container) : await this.$tools.getSchoolSas(container)
+					let blobHost = this.$tools.getBlobHost()
+					let cntr = qnItem.scope === 'school' ? qnItem.school : qnItem.code.replace('Survey-','')
+					let fullPath = await this.$tools.getFileSas(blobHost + '/' + cntr  + qnItem.blob)
 					try {
 					try {
-						let itemJson = JSON.parse(await this.$tools.getFile(blobHost + url + sasString.sas))
+						let itemJson = JSON.parse(await this.$tools.getFile(fullPath.url))
 						resolve(itemJson)
 						resolve(itemJson)
 					} catch(e) {
 					} catch(e) {
                         this.$Message.error(this.$t('studentWeb.queNaire.fileErr'))
                         this.$Message.error(this.$t('studentWeb.queNaire.fileErr'))

+ 7 - 5
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/Vote.vue

@@ -267,10 +267,10 @@
                 }
                 }
             },
             },
             async getVoteRes() {
             async getVoteRes() {
-                if (this.voteInfo.recordUrl !== "") {
-                    let data = await this.getBlobItems(this.voteInfo)
-                    this.setData(data[0])
-                }
+                // if (this.voteInfo.recordUrl !== "") {
+                //     let data = await this.getBlobItems(this.voteInfo)
+                //     this.setData(data[0])
+                // }
             },
             },
             // 删除不存在的投票
             // 删除不存在的投票
             delActivity() {
             delActivity() {
@@ -301,14 +301,16 @@
             getBlobItems(qnItem) {
             getBlobItems(qnItem) {
                 let key = this.voteInfo.code.split('-')
                 let key = this.voteInfo.code.split('-')
                 let code = key[key.length - 1]
                 let code = key[key.length - 1]
+                console.log(qnItem)
                 return new Promise(async (resolve, reject) => {
                 return new Promise(async (resolve, reject) => {
                     let blobHost = 'https://teammodelstorage.blob.core.chinacloudapi.cn/' + code
                     let blobHost = 'https://teammodelstorage.blob.core.chinacloudapi.cn/' + code
                     // 根据试卷的Blob地址 去读取JSON文件
                     // 根据试卷的Blob地址 去读取JSON文件
                     let sasString = qnItem.scope === 'private' ? await this.$tools.getPrivateSas(code) : await this.$tools.getSchoolSas(code)
                     let sasString = qnItem.scope === 'private' ? await this.$tools.getPrivateSas(code) : await this.$tools.getSchoolSas(code)
+                    let fullPath = await this.$tools.getFileSas(blobHost + qnItem.recordUrl)
                     let promiseArr = []
                     let promiseArr = []
                         promiseArr.push(new Promise(async (r, j) => {
                         promiseArr.push(new Promise(async (r, j) => {
                             try {
                             try {
-                                let itemJson = JSON.parse(await this.$tools.getFile(blobHost + qnItem.recordUrl + sasString.sas))
+                                let itemJson = JSON.parse(await this.$tools.getFile(fullPath.url))
                                 r(itemJson)
                                 r(itemJson)
                             } catch (e) {
                             } catch (e) {
                                 j(e)
                                 j(e)

+ 11 - 8
TEAMModelOS/ClientApp/src/utils/evTools.js

@@ -496,14 +496,15 @@ export default {
 	/* 获取完整的试卷数据 */
 	/* 获取完整的试卷数据 */
 	getStuPaper(paper, examScope) {
 	getStuPaper(paper, examScope) {
 		let curScope = examScope || paper.scope
 		let curScope = examScope || paper.scope
+		console.log(...arguments);
 		return new Promise(async (r, j) => {
 		return new Promise(async (r, j) => {
-			let profile = localStorage.student_profile || localStorage.user_profile
-			let blobHost = JSON.parse(decodeURIComponent(profile, "utf-8")).blob_uri
-			let splitHost = blobHost.split('/')
+			let blobHost = this.getBlobHost()
 			// 根据试卷的Blob地址 去读取JSON文件
 			// 根据试卷的Blob地址 去读取JSON文件
-			let sasString = curScope === 'school' ? await $tools.getSchoolSas(paper.code) : await $tools.getPrivateSas(paper.code)
+			let paperBlobPath = blobHost + '/' + paper.code + paper.blob
+			let fullPath = await $tools.getFileSas( paperBlobPath + '/index.json')
+			console.log(fullPath);
 			try {
 			try {
-				let jsonInfo = await $tools.getFile(sasString.url + '/' + paper.code + paper.blob + '/index.json' + sasString.sas)
+				let jsonInfo = await $tools.getFile(fullPath.url)
 				let jsonData = JSON.parse(jsonInfo)
 				let jsonData = JSON.parse(jsonInfo)
 				jsonData.scope = curScope
 				jsonData.scope = curScope
 				jsonData.code = paper.code
 				jsonData.code = paper.code
@@ -511,12 +512,12 @@ export default {
 				// 获取试卷包含的试题数据并包装好
 				// 获取试卷包含的试题数据并包装好
 				if (jsonData.slides && jsonData.slides.length) {
 				if (jsonData.slides && jsonData.slides.length) {
 					jsonData.item = []
 					jsonData.item = []
-					const path = sasString.url + '/' + paper.code + paper.blob
 					let promiseArr = []
 					let promiseArr = []
 					jsonData.slides.forEach((item, index) => {
 					jsonData.slides.forEach((item, index) => {
 						promiseArr.push(new Promise(async (resolve, reject) => {
 						promiseArr.push(new Promise(async (resolve, reject) => {
 							// 获取题目JSON并且包装成完整试题对象
 							// 获取题目JSON并且包装成完整试题对象
-							let itemJson = JSON.parse(await $tools.getFile(path + '/' + item.url + sasString.sas))
+							let itemFullPath = await $tools.getFileSas( paperBlobPath + '/' + item.url)
+							let itemJson = JSON.parse(await $tools.getFile(itemFullPath.url))
 							itemJson.exercise.question = itemJson.item[0].question
 							itemJson.exercise.question = itemJson.item[0].question
 							itemJson.exercise.option = itemJson.item[0].option
 							itemJson.exercise.option = itemJson.item[0].option
 							itemJson.exercise.id = itemJson.id 
 							itemJson.exercise.id = itemJson.id 
@@ -555,10 +556,12 @@ export default {
 	/* 获取完整的试卷数据 */
 	/* 获取完整的试卷数据 */
 	getComposeItem(paper) {
 	getComposeItem(paper) {
 		return new Promise(async (r, j) => {
 		return new Promise(async (r, j) => {
+			console.log(paper);
 			// 根据试卷的Blob地址 去读取JSON文件
 			// 根据试卷的Blob地址 去读取JSON文件
 			let sasString = paper.scope === 'school' ? await $tools.getSchoolSas(paper.code) : await $tools.getPrivateSas(paper.code)
 			let sasString = paper.scope === 'school' ? await $tools.getSchoolSas(paper.code) : await $tools.getPrivateSas(paper.code)
+			let fullPath = await $tools.getFileSas(paper.blob)
 			try {
 			try {
-				let jsonInfo = await $tools.getFile(paper.blob + sasString.sas)
+				let jsonInfo = await $tools.getFile(fullPath.url)
 				let jsonData = JSON.parse(jsonInfo)
 				let jsonData = JSON.parse(jsonInfo)
 				// 获取试卷包含的试题数据并包装好
 				// 获取试卷包含的试题数据并包装好
 				if (jsonData.length) {
 				if (jsonData.length) {