Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tea-resources-web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张伯涛
tea-resources-web
Commits
d631fbe4
Commit
d631fbe4
authored
Apr 26, 2024
by
张伯涛
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
课程资料下载加密解密以及传参更改
parent
b19542ad
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
15 deletions
+39
-15
indexApi.js
src/api/courseManagement/indexApi.js
+0
-1
jsencrypt.js
src/utils/jsencrypt.js
+11
-0
index.vue
src/views/courseInformation/courseManagement/index.vue
+28
-14
No files found.
src/api/courseManagement/indexApi.js
View file @
d631fbe4
...
@@ -262,7 +262,6 @@ export function downloadZip(params) {
...
@@ -262,7 +262,6 @@ export function downloadZip(params) {
return
request
({
return
request
({
url
:
'/bfile/download/'
,
url
:
'/bfile/download/'
,
method
:
'post'
,
method
:
'post'
,
responseType
:
'blob'
,
params
params
})
})
}
}
...
...
src/utils/jsencrypt.js
View file @
d631fbe4
...
@@ -50,6 +50,17 @@ export function passwordDecrypt(txt) {
...
@@ -50,6 +50,17 @@ export function passwordDecrypt(txt) {
}
}
const
urlPrivateKey
=
'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCstNcEy/A6v3BddApjjCN8VESMSh95q3TeFd//1E+36CA1WMIshzP1sL0L9wTHfVjUK/Ii6agsVXkstMMC1+HqavoSz42krvrgadfzEJIepOK4Z2E25YTcyIZ1dt7HgKxz+xhXZWRvbEYdLZrVMVJtjltagFB80RjKStv85U94Z6DMXBF8bZA8DMYGv7+p2Sszl3BUk79X2XLBoF+h2d9Jn0Rl0xKfxPS1k7tSfEVGk0VJArEUZJNAzrr/zCMhH+CN8LISQ/8sI1VYHTx2E85/KhcnewtHjb2P6h5q0fnZ5ELgsf1Bxj/dl2GxW+ybeW1Ir+tyNJWbMz/N7XTZUaLHAgMBAAECggEALCFBV/5scfZ81cRS60DhyGEX6uj9xe8ju6PHSu2LOSjdIgR+CTa69iqlA6uo0viafAyGoJkn2bw1bFD8C3vyRB31rFzQiqYTgMhK39b6H05uiEQSOR7Ipkmu4dDv9/ZPGousmphT44y9FbOTfqpNr6TSfvuOlXYwaXBbafGGLvOQRKqeP0mVq6xmiQOKg9yBAwN1dcoGx77OsvMEV2o0JR0+/0BMd3qRZQLAYH03zv3LE8xkI0zta9Gmmbh44YPwWGW/mMY24Iae1/pKnZxWTGty+X/pLGqHQdtxz6qQr/pCSA9lESNkkocHzVI9D6SxX5+bHWc0AX17EHomB2HawQKBgQDZYIAagH0tRR1XtIsexv1OpAOoHbXnpNmMPkAurpGlIzBlZlQYevPg0gcs7GBA90ZAyt68bkq4ABZ1CYPMEMazcMa2TOMaf9yw5bxnD8Ek2KWOnR4juQqKOyL8/2ddLPBV0J2Boo2D9MFSucyHB3lvRZF/DlYuLbj+GNdt9IZjFwKBgQDLZHosddeLo9Ux4mTChveMdo9nFzrXZZ83mbMPETTJ3EygQGqWmMUUQx9iWkiHWUYyyel/jafdIxOnaZfTEvcYcMDOsj3kDNZ5a1v+ZswqwT5fzQBv4huO3X8CrN7hnNsv9HIVrbT2ZlHhSI0g4Q0nfzSjxo7rYF50vJ6Qk+VL0QKBgQCtGadpc0A7OHpxSRgv3g4A/aLb0Sz11dRXVYsOoXzhn+/+D0qQY/io4xdLsr/DfCW5mtNcAggGFivL71PAwOs6IWhb60Y95+v6AjfRaj5H9S2BL6S8lbHK+eSWy1uoWwzXiVSj0qoWlmUMV2CDdnRBI4kFQIloJIjX7zg+GyaY6QKBgFCyUs7lCln67JFYM4YCqqDuQUMzskLXrO4QazylJP6aC0ThieiqQDcj0oXhMDmTMAjil2PmPh281wVrHbO/KI5n3fekPG4IseeGsv8ipgqolSjJW00ItspeExBqqht1cnl6UPFM9Cl2uzHY6TWMVP3AuI/qLbYxjAhg9cCDDUyhAoGBAI9h0SJjnSivVWl9OCQ8HT17Erl5lPpoI9GA+BjnuHnpWhKu4mxjPKzDMUxF1jmENLpvmGzK6KoeiRSLik2DOosQ1ip4U8N1IlSqJDkwzAVAHpDErwIiIox4bMpnD3vt/MgE1OIkK4PvjYyKfxngygof3gaHaEULTJFFIZVV1KM7'
const
urlPrivateKey
=
'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCstNcEy/A6v3BddApjjCN8VESMSh95q3TeFd//1E+36CA1WMIshzP1sL0L9wTHfVjUK/Ii6agsVXkstMMC1+HqavoSz42krvrgadfzEJIepOK4Z2E25YTcyIZ1dt7HgKxz+xhXZWRvbEYdLZrVMVJtjltagFB80RjKStv85U94Z6DMXBF8bZA8DMYGv7+p2Sszl3BUk79X2XLBoF+h2d9Jn0Rl0xKfxPS1k7tSfEVGk0VJArEUZJNAzrr/zCMhH+CN8LISQ/8sI1VYHTx2E85/KhcnewtHjb2P6h5q0fnZ5ELgsf1Bxj/dl2GxW+ybeW1Ir+tyNJWbMz/N7XTZUaLHAgMBAAECggEALCFBV/5scfZ81cRS60DhyGEX6uj9xe8ju6PHSu2LOSjdIgR+CTa69iqlA6uo0viafAyGoJkn2bw1bFD8C3vyRB31rFzQiqYTgMhK39b6H05uiEQSOR7Ipkmu4dDv9/ZPGousmphT44y9FbOTfqpNr6TSfvuOlXYwaXBbafGGLvOQRKqeP0mVq6xmiQOKg9yBAwN1dcoGx77OsvMEV2o0JR0+/0BMd3qRZQLAYH03zv3LE8xkI0zta9Gmmbh44YPwWGW/mMY24Iae1/pKnZxWTGty+X/pLGqHQdtxz6qQr/pCSA9lESNkkocHzVI9D6SxX5+bHWc0AX17EHomB2HawQKBgQDZYIAagH0tRR1XtIsexv1OpAOoHbXnpNmMPkAurpGlIzBlZlQYevPg0gcs7GBA90ZAyt68bkq4ABZ1CYPMEMazcMa2TOMaf9yw5bxnD8Ek2KWOnR4juQqKOyL8/2ddLPBV0J2Boo2D9MFSucyHB3lvRZF/DlYuLbj+GNdt9IZjFwKBgQDLZHosddeLo9Ux4mTChveMdo9nFzrXZZ83mbMPETTJ3EygQGqWmMUUQx9iWkiHWUYyyel/jafdIxOnaZfTEvcYcMDOsj3kDNZ5a1v+ZswqwT5fzQBv4huO3X8CrN7hnNsv9HIVrbT2ZlHhSI0g4Q0nfzSjxo7rYF50vJ6Qk+VL0QKBgQCtGadpc0A7OHpxSRgv3g4A/aLb0Sz11dRXVYsOoXzhn+/+D0qQY/io4xdLsr/DfCW5mtNcAggGFivL71PAwOs6IWhb60Y95+v6AjfRaj5H9S2BL6S8lbHK+eSWy1uoWwzXiVSj0qoWlmUMV2CDdnRBI4kFQIloJIjX7zg+GyaY6QKBgFCyUs7lCln67JFYM4YCqqDuQUMzskLXrO4QazylJP6aC0ThieiqQDcj0oXhMDmTMAjil2PmPh281wVrHbO/KI5n3fekPG4IseeGsv8ipgqolSjJW00ItspeExBqqht1cnl6UPFM9Cl2uzHY6TWMVP3AuI/qLbYxjAhg9cCDDUyhAoGBAI9h0SJjnSivVWl9OCQ8HT17Erl5lPpoI9GA+BjnuHnpWhKu4mxjPKzDMUxF1jmENLpvmGzK6KoeiRSLik2DOosQ1ip4U8N1IlSqJDkwzAVAHpDErwIiIox4bMpnD3vt/MgE1OIkK4PvjYyKfxngygof3gaHaEULTJFFIZVV1KM7'
const
urlPublicKey
=
'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArLTXBMvwOr9wX
\
n'
+
'XQKY4wjfFREjEofeat03hXf/9RPt+ggNVjCLIcz9bC9C/cEx31Y1CvyIumoLFV5LLTDAtfh6mr6Es+NpK764GnX8x
\
n'
+
'CSHqTiuGdhNuWE3MiGdXbex4Csc/sYV2Vkb2xGHS2a1TFSbY5bWoBQfNEYykrb/OVPeGegzFwRfG2QPAzGBr+/qdk
\
n'
+
'rM5dwVJO/V9lywaBfodnfSZ9EZdMSn8T0tZO7UnxFRpNFSQKxFGSTQM66/8wjIR/gjfCyEkP/LCNVWB08dhPOfyoX
\
n'
+
'J3sLR429j+oeatH52eRC4LH9QcY/3ZdhsVvsm3ltSK/rcjSVmzM/ze102VGixwIDAQAB'
// 视频,pdf加密
export
function
urlEncrypt
(
txt
)
{
const
encryptor
=
new
JSEncrypt
()
encryptor
.
setPublicKey
(
urlPublicKey
)
// 设置公钥
return
encryptor
.
encrypt
(
txt
)
// 对需要加密的数据进行加密
}
// 视频,pdf解密
// 视频,pdf解密
export
function
urlDecrypt
(
txt
)
{
export
function
urlDecrypt
(
txt
)
{
...
...
src/views/courseInformation/courseManagement/index.vue
View file @
d631fbe4
...
@@ -150,7 +150,7 @@
...
@@ -150,7 +150,7 @@
<el-input
v-model=
"form.name"
auto-complete=
"off"
placeholder=
"课时数"
:maxlength=
"15"
/>
<el-input
v-model=
"form.name"
auto-complete=
"off"
placeholder=
"课时数"
:maxlength=
"15"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"课程类型"
>
<el-form-item
label=
"课程类型"
>
<el-select
v-model=
"form.lessonType"
placeholder=
"课程类型"
clearable
>
<el-select
v-model=
"form.lessonType"
placeholder=
"课程类型"
clearable
>
<el-option
<el-option
v-for=
"item in lessonTypeOptions"
v-for=
"item in lessonTypeOptions"
...
@@ -640,7 +640,7 @@ import {
...
@@ -640,7 +640,7 @@ import {
import
commonField
from
'@/utils/commonField'
import
commonField
from
'@/utils/commonField'
import
{
getDict
}
from
'@/api/system/dict/data'
import
{
getDict
}
from
'@/api/system/dict/data'
import
{
listAllCmsLecturer
}
from
'@/api/courseManagement/cmsLecturer'
import
{
listAllCmsLecturer
}
from
'@/api/courseManagement/cmsLecturer'
import
{
urlDecrypt
,
urlEncrypt
}
from
'@/utils/jsencrypt'
export
default
{
export
default
{
name
:
'Index'
,
name
:
'Index'
,
components
:
{
components
:
{
...
@@ -696,6 +696,8 @@ export default {
...
@@ -696,6 +696,8 @@ export default {
}
}
}
}
return
{
return
{
randomFiveDigitNumber
:
''
,
// 随机5位数字
zipUrl
:
''
,
// 评分列表
// 评分列表
// 平均分
// 平均分
scoreAvg
:
0
,
scoreAvg
:
0
,
...
@@ -780,6 +782,7 @@ export default {
...
@@ -780,6 +782,7 @@ export default {
formLabelWidth
:
'90px'
,
formLabelWidth
:
'90px'
,
// 表格
// 表格
tableData
:
[],
tableData
:
[],
zipLessonId
:
''
,
zipList
:
[],
zipList
:
[],
lineindex
:
0
,
lineindex
:
0
,
teacode
:
''
,
teacode
:
''
,
...
@@ -899,6 +902,10 @@ export default {
...
@@ -899,6 +902,10 @@ export default {
this
.
loadData
()
this
.
loadData
()
},
},
methods
:
{
methods
:
{
/** 生成随机数*/
generateRandomNumber
()
{
this
.
randomFiveDigitNumber
=
Math
.
floor
(
10000
+
Math
.
random
()
*
90000
)
},
/**
/**
* 点击分数
* 点击分数
***/
***/
...
@@ -1725,6 +1732,7 @@ export default {
...
@@ -1725,6 +1732,7 @@ export default {
findZIpInfo
(
params
).
then
(
res
=>
{
findZIpInfo
(
params
).
then
(
res
=>
{
console
.
log
(
'res'
,
res
)
console
.
log
(
'res'
,
res
)
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
_this
.
zipLessonId
=
res
.
data
.
lessonId
_this
.
zipList
=
res
.
data
.
ossInfoList
_this
.
zipList
=
res
.
data
.
ossInfoList
}
}
}).
catch
((
err
)
=>
{
}).
catch
((
err
)
=>
{
...
@@ -1763,23 +1771,29 @@ export default {
...
@@ -1763,23 +1771,29 @@ export default {
})
})
},
},
downloadFile
(
data
)
{
downloadFile
(
data
)
{
this
.
generateRandomNumber
()
console
.
log
(
'randomFiveDigitNumber'
,
this
.
randomFiveDigitNumber
)
const
_this
=
this
const
_this
=
this
console
.
log
(
'data'
,
data
)
console
.
log
(
'data'
,
data
)
const
originalName
=
data
.
originalName
//
const originalName = data.originalName
cons
ole
.
log
(
'originalName'
,
originalName
)
cons
t
fileUrl
=
urlEncrypt
(
_this
.
randomFiveDigitNumber
+
data
.
businessId
)
const
params
=
{
const
params
=
{
businessId
:
data
.
businessId
lessonId
:
_this
.
zipLessonId
,
fileUrl
:
fileUrl
}
}
downloadZip
(
params
).
then
(
res
=>
{
downloadZip
(
params
).
then
(
res
=>
{
const
blob
=
new
Blob
([
res
])
_this
.
zipUrl
=
urlDecrypt
(
res
.
data
)
const
downloadElement
=
document
.
createElement
(
'a'
)
console
.
log
(
'_this.zipUrl'
,
_this
.
zipUrl
)
const
href
=
window
.
URL
.
createObjectURL
(
blob
)
// 创建下载的链接
window
.
open
(
_this
.
zipUrl
,
'_blank'
)
downloadElement
.
href
=
href
// const blob = new Blob([res])
downloadElement
.
download
=
originalName
// 下载后文件名
// const downloadElement = document.createElement('a')
document
.
body
.
appendChild
(
downloadElement
)
// const href = window.URL.createObjectURL(blob)// 创建下载的链接
downloadElement
.
click
()
// 点击下载
// downloadElement.href = href
document
.
body
.
removeChild
(
downloadElement
)
// 下载完成移除元素
// downloadElement.download = originalName // 下载后文件名
window
.
URL
.
revokeObjectURL
(
href
)
// 释放掉blob对象
// document.body.appendChild(downloadElement)
// downloadElement.click()// 点击下载
// document.body.removeChild(downloadElement)// 下载完成移除元素
// window.URL.revokeObjectURL(href)// 释放掉blob对象
}).
catch
((
err
)
=>
{
}).
catch
((
err
)
=>
{
_this
.
error
(
err
)
_this
.
error
(
err
)
})
})
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment