Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
campSite
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨梦雪
campSite
Commits
7ac47adc
Commit
7ac47adc
authored
Dec 17, 2021
by
杨梦雪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
11
parent
a3ca3264
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
555 additions
and
372 deletions
+555
-372
src/assets/scss/homework/refer.scss
src/assets/scss/homework/refer.scss
+49
-8
src/main.js
src/main.js
+4
-1
src/request/index/certificate.js
src/request/index/certificate.js
+26
-0
src/request/index/homework.js
src/request/index/homework.js
+12
-2
src/request/index/network.js
src/request/index/network.js
+38
-8
src/router/index/camp.js
src/router/index/camp.js
+8
-8
src/store/common.js
src/store/common.js
+10
-0
src/views/index/camp/Certificate.vue
src/views/index/camp/Certificate.vue
+1
-0
src/views/index/camp/Homework.vue
src/views/index/camp/Homework.vue
+48
-29
src/views/index/camp/Index.vue
src/views/index/camp/Index.vue
+11
-11
src/views/index/camp/homework/refer.vue
src/views/index/camp/homework/refer.vue
+348
-305
No files found.
src/assets/scss/homework/refer.scss
View file @
7ac47adc
...
@@ -3,14 +3,8 @@
...
@@ -3,14 +3,8 @@
display
:
flex
;
display
:
flex
;
}
}
.referHome
{
.referHome
{
padding
:
20px
;
.lf
{
float
:
left
;
}
.rt
{
float
:
right
;
}
::v-deep
.readForm
{
::v-deep
.readForm
{
flex
:
1
;
flex
:
1
;
...
@@ -119,7 +113,54 @@
...
@@ -119,7 +113,54 @@
}
}
}
}
}
}
.image_add
{
position
:
relative
;
margin-top
:
24px
;
.image_in
{
.limit_10
{
display
:
none
;
}
.el-upload-list--picture-card
{
.item_img
{
width
:
100%
;
}
}
}
//去除upload组件过渡效果 css
.el-upload-list__item
{
transition
:
none
!
important
;
.is-ready
{
display
:
none
;
}
div
{
height
:
100%
;
}
}
.el-upload--picture-card
{
display
:
inline-block
;
}
.el-upload
{
position
:
relative
;
.el-icon-circle-plus
{
font-size
:
52px
;
color
:
var
(
--
color
);
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
}
}
i
{
font-size
:
22px
;
color
:
#ffffff
;
}
.text
{
font-size
:
14px
;
color
:
#a7a2a6
;
text-align
:
center
;
}
}
.upload_box
{
.upload_box
{
.img_list
{
.img_list
{
position
:
relative
;
position
:
relative
;
...
...
src/main.js
View file @
7ac47adc
...
@@ -7,12 +7,15 @@ import store from './store'
...
@@ -7,12 +7,15 @@ import store from './store'
import
ElementUI
from
'
element-ui
'
import
ElementUI
from
'
element-ui
'
import
'
element-ui/lib/theme-chalk/index.css
'
import
'
element-ui/lib/theme-chalk/index.css
'
import
'
@/assets/scss/index.scss
'
import
'
@/assets/scss/index.scss
'
import
{
download
,
upload
}
from
"
r/index/network.js
"
;
Vue
.
config
.
productionTip
=
false
Vue
.
config
.
productionTip
=
false
Vue
.
use
(
ElementUI
)
Vue
.
use
(
ElementUI
)
Vue
.
prototype
.
download
=
download
Vue
.
prototype
.
upload
=
upload
Vue
.
prototype
.
$errorScroll
=
function
errorScroll
(
callback
)
{
Vue
.
prototype
.
$errorScroll
=
function
errorScroll
(
callback
)
{
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
...
...
src/request/index/certificate.js
0 → 100644
View file @
7ac47adc
/* eslint-disable */
import
{
request
}
from
'
./network
'
import
store
from
'
@/store
'
// 添加地址
export
function
setAddress
(
data
)
{
data
[
'
identity
'
]
=
store
.
state
.
indexIdentity
;
return
request
({
method
:
'
post
'
,
url
:
'
/web/download/setAddress
'
,
params
:
data
})
}
// 获取地址
export
function
getAddress
(
data
)
{
data
[
'
identity
'
]
=
store
.
state
.
indexIdentity
;
return
request
({
method
:
'
post
'
,
url
:
'
/web/download/getAddress
'
,
params
:
data
})
}
src/request/index/homework.js
View file @
7ac47adc
...
@@ -24,14 +24,24 @@ export function downloadTeacherWork(data) {
...
@@ -24,14 +24,24 @@ export function downloadTeacherWork(data) {
})
})
}
}
// 获取学生上传作业的oss
// 获取学生上传作业的oss
export
function
getPostWorkStudent
(
data
)
{
export
function
PostWorkStudentOss
(
data
)
{
data
[
'
identity
'
]
=
store
.
state
.
indexIdentity
;
data
[
'
identity
'
]
=
store
.
state
.
indexIdentity
;
return
request
({
return
request
({
method
:
'
post
'
,
method
:
'
post
'
,
url
:
'
/web/download/getPostWorkStudent
'
,
url
:
'
/web/download/getPostWorkStudent
'
,
params
:
data
data
})
})
}
}
//删除图片
export
function
delPic
(
data
)
{
data
[
'
identity
'
]
=
store
.
state
.
indexIdentity
;
return
request
({
method
:
'
post
'
,
url
:
'
/web/download/delPic
'
,
params
:
data
})
}
// 获取学生提交营地作业
// 获取学生提交营地作业
export
function
getStudentWork
(
data
)
{
export
function
getStudentWork
(
data
)
{
data
[
'
identity
'
]
=
store
.
state
.
indexIdentity
;
data
[
'
identity
'
]
=
store
.
state
.
indexIdentity
;
...
...
src/request/index/network.js
View file @
7ac47adc
/* eslint-disable */
/* eslint-disable */
import
axios
from
'
axios
'
import
axios
from
'
axios
'
import
store
from
'
@/store
'
import
store
from
'
@/store
'
import
qs
from
'
qs
'
import
{
tansParams
}
from
'
@/store/common.js
'
import
{
import
{
SERVER_URL
,
SERVER_URL
,
DEVELOPMENT_SERVER_URL
DEVELOPMENT_SERVER_URL
...
@@ -28,6 +30,7 @@ const instance = axios.create({
...
@@ -28,6 +30,7 @@ const instance = axios.create({
instance
.
interceptors
.
request
.
use
(
instance
.
interceptors
.
request
.
use
(
(
config
)
=>
{
(
config
)
=>
{
if
(
config
.
method
===
"
post
"
&&
!
config
.
notQs
)
{
if
(
config
.
method
===
"
post
"
&&
!
config
.
notQs
)
{
console
.
log
(
config
)
config
.
data
=
qs
.
stringify
(
config
.
data
);
config
.
data
=
qs
.
stringify
(
config
.
data
);
}
}
if
(
config
.
url
.
indexOf
(
SERVER_URL
)
===
-
1
)
{
if
(
config
.
url
.
indexOf
(
SERVER_URL
)
===
-
1
)
{
...
@@ -50,14 +53,6 @@ instance.interceptors.request.use(
...
@@ -50,14 +53,6 @@ instance.interceptors.request.use(
return
Promise
.
reject
(
error
);
return
Promise
.
reject
(
error
);
}
}
);
);
// instance.interceptors.response.use(
// (response) => {
// return response.data;
// },
// (error) => {
// return Promise.reject(error);
// }
// );
export
default
instance
;
export
default
instance
;
...
@@ -338,6 +333,41 @@ export function upload(url, data = {}) {
...
@@ -338,6 +333,41 @@ export function upload(url, data = {}) {
);
);
});
});
}
}
// 通用下载方法
export
function
download
(
url
,
params
,
filename
)
{
console
.
log
(
url
,
params
,
filename
)
return
instance
.
post
(
url
,
params
,
{
transformRequest
:
[
params
=>
{
return
tansParams
(
params
);
}
],
headers
:
{
"
Content-Type
"
:
"
application/x-www-form-urlencoded
"
},
responseType
:
"
blob
"
})
.
then
(
data
=>
{
const
content
=
data
;
console
.
log
(
content
)
const
blob
=
new
Blob
([
content
]);
if
(
"
download
"
in
document
.
createElement
(
"
a
"
))
{
const
elink
=
document
.
createElement
(
"
a
"
);
elink
.
download
=
filename
;
elink
.
style
.
display
=
"
none
"
;
elink
.
href
=
URL
.
createObjectURL
(
blob
);
document
.
body
.
appendChild
(
elink
);
elink
.
click
();
URL
.
revokeObjectURL
(
elink
.
href
);
document
.
body
.
removeChild
(
elink
);
}
else
{
navigator
.
msSaveBlob
(
blob
,
filename
);
}
})
.
catch
(
r
=>
{
console
.
error
(
r
);
});
}
// 合并多个请求
// 合并多个请求
export
function
allRequest
(
arrRequest
)
{
export
function
allRequest
(
arrRequest
)
{
return
axios
.
all
(
arrRequest
)
return
axios
.
all
(
arrRequest
)
...
...
src/router/index/camp.js
View file @
7ac47adc
...
@@ -15,14 +15,14 @@ export default [{
...
@@ -15,14 +15,14 @@ export default [{
}
}
},
},
{
//
{
path
:
'
/homework/refer
'
,
//
path: '/homework/refer',
name
:
'
homework-refer
'
,
//
name: 'homework-refer',
component
:
()
=>
import
(
'
v/index/camp/homework/refer.vue
'
),
//
component: () => import('v/index/camp/homework/refer.vue'),
meta
:
{
//
meta: {
title
:
'
提交作业
'
//
title: '提交作业'
},
//
},
},
//
},
{
{
path
:
'
/certificate
'
,
path
:
'
/certificate
'
,
name
:
'
index-certificate
'
,
name
:
'
index-certificate
'
,
...
...
src/store/common.js
0 → 100644
View file @
7ac47adc
export
function
tansParams
(
params
)
{
let
result
=
''
Object
.
keys
(
params
).
forEach
((
key
)
=>
{
if
(
!
Object
.
is
(
params
[
key
],
undefined
)
&&
!
Object
.
is
(
params
[
key
],
null
)
&&
!
Object
.
is
(
JSON
.
stringify
(
params
[
key
]),
'
{}
'
))
{
result
+=
encodeURIComponent
(
key
)
+
'
=
'
+
encodeURIComponent
(
params
[
key
])
+
'
&
'
}
})
return
result
}
\ No newline at end of file
src/views/index/camp/Certificate.vue
View file @
7ac47adc
...
@@ -132,6 +132,7 @@
...
@@ -132,6 +132,7 @@
<
script
>
<
script
>
/* eslint-disable */
/* eslint-disable */
import
{
getProAndCity
,
getSchool
}
from
"
r/index/signUp
"
;
import
{
getProAndCity
,
getSchool
}
from
"
r/index/signUp
"
;
import
{
setAddress
}
from
"
r/index/certificate
"
;
import
validator
from
"
common/validator
"
;
import
validator
from
"
common/validator
"
;
export
default
{
export
default
{
...
...
src/views/index/camp/Homework.vue
View file @
7ac47adc
...
@@ -3,14 +3,14 @@
...
@@ -3,14 +3,14 @@
<div
class=
"title"
>
<div
class=
"title"
>
<div
class=
"homework_titile"
>
营地作业
</div>
<div
class=
"homework_titile"
>
营地作业
</div>
</div>
</div>
<
!--
<div
class=
"empty_conten
t"
>
<
div
class=
"empty_content"
v-if=
"!this.homeworkLis
t"
>
<div>
<div>
<img
src=
"@/assets/img/homework/homework.png"
alt=
""
/>
<img
src=
"@/assets/img/homework/homework.png"
alt=
""
/>
</div>
</div>
<p>
同学你好,老师暂未发布作业
</p>
<p>
同学你好,老师暂未发布作业
</p>
<p>
请于2021年XX年XX月XX日 前往网站查看作业
</p>
<p>
请于2021年XX年XX月XX日 前往网站查看作业
</p>
</div>
-->
</div>
<div
class=
"home_content"
>
<div
class=
"home_content"
>
<div
class=
"each_content"
v-for=
"item in homeworkList"
:key=
"item.id"
>
<div
class=
"each_content"
v-for=
"item in homeworkList"
:key=
"item.id"
>
<div
class=
"top flex"
>
<div
class=
"top flex"
>
...
@@ -36,18 +36,33 @@
...
@@ -36,18 +36,33 @@
<div>
<div>
<el-pagination
layout=
"prev, pager, next"
:total=
"50"
>
</el-pagination>
<el-pagination
layout=
"prev, pager, next"
:total=
"50"
>
</el-pagination>
</div>
</div>
<!-- 下载作业 -->
<refer
:dialogVisibleFu=
"dialogVisibleFu"
:work_contexts=
"work_context"
:enclosure_urls=
"enclosure_url"
:work_nums=
"work_num"
@
closeDialog=
"closeDialog"
></refer>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
/* eslint-disable */
/* eslint-disable */
import
refer
from
"
v/index/camp/homework/refer
"
;
import
{
getTeacherWork
}
from
"
r/index/homework
"
;
import
{
getTeacherWork
}
from
"
r/index/homework
"
;
import
Bus
from
"
config/bus.js
"
;
import
Bus
from
"
config/bus.js
"
;
export
default
{
export
default
{
name
:
"
homework
"
,
name
:
"
homework
"
,
components
:
{
refer
,
},
data
()
{
data
()
{
return
{
return
{
homeworkList
:
{},
homeworkList
:
{},
dialogVisibleFu
:
false
,
work_context
:
""
,
enclosure_url
:
""
,
work_num
:
0
,
};
};
},
},
created
()
{
created
()
{
...
@@ -55,15 +70,19 @@ export default {
...
@@ -55,15 +70,19 @@ export default {
},
},
watch
:
{},
watch
:
{},
methods
:
{
methods
:
{
// 子组件触发,关闭确认报名弹框
closeDialog
(
val
,
type
)
{
this
.
dialogVisibleFu
=
val
;
// if (type) {
// clearInterval(this.timer);
// }
},
toRefer
(
item
)
{
toRefer
(
item
)
{
// console.log(val,'val')
this
.
dialogVisibleFu
=
true
;
let
code
=
this
.
$store
.
state
.
indexIdentity
;
// console.log(item.work_num,'val')
this
.
$router
.
push
(
"
/homework/refer?code=
"
+
code
);
this
.
work_context
=
item
.
work_context
;
this
.
$emit
(
"
torefer
"
,
3
);
this
.
enclosure_url
=
item
.
enclosure_url
;
window
.
localStorage
.
setItem
(
"
work_context
"
+
code
,
item
.
work_context
);
this
.
work_num
=
item
.
work_num
;
window
.
localStorage
.
setItem
(
"
enclosure_url
"
+
code
,
item
.
enclosure_url
);
// Bus.$emit("work_context", item.work_context);
// Bus.$emit("enclosure_url", item.enclosure_url);
},
},
getTeacherWork
()
{
getTeacherWork
()
{
getTeacherWork
({
page
:
1
}).
then
((
res
)
=>
{
getTeacherWork
({
page
:
1
}).
then
((
res
)
=>
{
...
@@ -90,25 +109,25 @@ export default {
...
@@ -90,25 +109,25 @@ export default {
// width: 856px;
// width: 856px;
// 空状态
// 空状态
//
.title {
.title
{
//
padding: 50px;
padding
:
50px
;
//
.homework_titile {
.homework_titile
{
//
font-size: 24px;
font-size
:
24px
;
//
font-weight: 500;
font-weight
:
500
;
//
color: #1b1419;
color
:
#1b1419
;
//
line-height: 24px;
line-height
:
24px
;
//
margin-bottom: 40px;
margin-bottom
:
40px
;
//
text-align: center;
text-align
:
center
;
//
}
}
//
}
}
//
.content_empty {
.content_empty
{
//
padding-bottom: 200px;
padding-bottom
:
200px
;
//
p,
p
,
//
div {
div
{
//
text-align: center;
text-align
:
center
;
//
}
}
//
}
}
// 有作业时候F
// 有作业时候F
.title
{
.title
{
...
...
src/views/index/camp/Index.vue
View file @
7ac47adc
...
@@ -32,12 +32,12 @@
...
@@ -32,12 +32,12 @@
<SignUp
@
getStatus=
"getStatus"
v-if=
"this.campindex_type == 0"
>
<SignUp
@
getStatus=
"getStatus"
v-if=
"this.campindex_type == 0"
>
</SignUp>
</SignUp>
<Homework
<Homework
v-if=
"this.campindex_type == 1
&& this.homework_val == null
"
v-if=
"this.campindex_type == 1"
@
torefer=
"torefer"
>
>
</Homework>
</Homework>
<Certificate
v-if=
"this.campindex_type == 2"
>
</Certificate>
<Certificate
v-if=
"this.campindex_type == 2"
>
</Certificate>
<
homeRefer
v-if=
"this.homework_val == 3"
>
</homeRefer
>
<
!--
<homeRefer
v-if=
"this.homework_val == 3"
>
</homeRefer>
--
>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -56,7 +56,7 @@ import svg3 from "@/assets/img/signUp/icon-2.svg";
...
@@ -56,7 +56,7 @@ import svg3 from "@/assets/img/signUp/icon-2.svg";
import
SignUp
from
"
v/index/camp/SignUp
"
;
import
SignUp
from
"
v/index/camp/SignUp
"
;
import
Homework
from
"
v/index/camp/Homework
"
;
import
Homework
from
"
v/index/camp/Homework
"
;
import
Certificate
from
"
v/index/camp/Certificate
"
;
import
Certificate
from
"
v/index/camp/Certificate
"
;
import
homeRefer
from
"
v/index/camp/homework/refer
"
;
//
import homeRefer from "v/index/camp/homework/refer";
export
default
{
export
default
{
name
:
"
campIndex
"
,
name
:
"
campIndex
"
,
...
@@ -66,7 +66,7 @@ export default {
...
@@ -66,7 +66,7 @@ export default {
SignUp
,
SignUp
,
Homework
,
Homework
,
Certificate
,
Certificate
,
homeRefer
,
//
homeRefer,
},
},
// props:{}
// props:{}
data
()
{
data
()
{
...
@@ -98,13 +98,13 @@ export default {
...
@@ -98,13 +98,13 @@ export default {
campindex_type
:
0
,
campindex_type
:
0
,
index_status
:
""
,
index_status
:
""
,
homework_val
:
""
,
//
homework_val: "",
};
};
},
},
watch
:
{},
watch
:
{},
created
()
{
created
()
{
this
.
getStatus
();
this
.
getStatus
();
this
.
torefer
();
//
this.torefer();
},
},
mounted
()
{
mounted
()
{
window
.
addEventListener
(
"
scroll
"
,
this
.
handleScrollX
,
true
);
window
.
addEventListener
(
"
scroll
"
,
this
.
handleScrollX
,
true
);
...
@@ -115,10 +115,10 @@ export default {
...
@@ -115,10 +115,10 @@ export default {
window
.
removeEventListener
(
"
resize
"
,
this
.
onResize
,
true
);
window
.
removeEventListener
(
"
resize
"
,
this
.
onResize
,
true
);
},
},
methods
:
{
methods
:
{
torefer
(
val
)
{
//
torefer(val) {
console
.
log
(
val
,
"
val
"
);
//
console.log(val, "val");
this
.
homework_val
=
val
;
//
this.homework_val = val;
},
//
},
getStatus
(
val
)
{
getStatus
(
val
)
{
// console.log(val, "index_type");
// console.log(val, "index_type");
this
.
index_status
=
val
;
this
.
index_status
=
val
;
...
...
src/views/index/camp/homework/refer.vue
View file @
7ac47adc
<
template
>
<
template
>
<el-dialog
:title=
"'第' + titleName + '次课程论文'"
:visible.sync=
"dialogVisible"
width=
"650px"
top=
"0"
:before-close=
"cancelBtn"
:close-on-click-modal=
"false"
@
open=
"open"
>
<div
class=
"referHome"
>
<div
class=
"referHome"
>
<div
class=
"rh_top flex"
>
<i
class=
"el-icon-arrow-left"
></i>
<div>
第三次课程论文
</div>
</div>
<el-form
<el-form
v-loading=
"loading"
v-loading=
"loading"
ref=
"formRef"
ref=
"formRef"
:model=
"formData"
:model=
"formData"
:rules=
"rules"
label-position=
"top"
label-position=
"top"
class=
"readForm"
class=
"readForm"
>
>
<div
class=
"cont_title"
>
<div
class=
"cont_title"
>
<div
class=
"line"
></div>
<div
class=
"line"
></div>
<div
class=
"lf"
>
<div
class=
"lf"
>
<span>
<span>
作业要求
</span>
{{
stuWork
.
jiguanProvince
}}{{
stuWork
.
jiguanProvince
==
stuWork
.
jiguanCity
?
""
:
stuWork
.
jiguanCity
}}{{
stuWork
.
school
}}
</span
>
<span>
{{
stuWork
.
name
}}
</span>
<span>
提交的作业
</span>
</div>
</div>
<div
class=
"rt"
v-if=
"type == 1"
>
编号:
{{
stuInfo
.
workNum
}}
</div>
</div>
</div>
<div
class=
"cont_title_2"
>
文字描述
</div>
<div
class=
"cont_title_2"
>
作业内容
</div>
<div
class=
"cont_info"
>
{{
$store
.
state
.
work_context
}
}
</div>
<div
v-html=
"this.work_contexts"
class=
"cont_info"
>
}
</div>
<div
class=
"cont_title_2"
>
相关附件
</div>
<div
class=
"cont_title_2"
>
相关附件
</div>
<div
class=
"upload_box"
>
<div
class=
"upload_box"
>
<div
<div
...
@@ -59,34 +52,29 @@
...
@@ -59,34 +52,29 @@
<div
class=
"line"
></div>
<div
class=
"line"
></div>
评阅结果
评阅结果
</div>
</div>
<el-form-item
label=
"导师评分"
prop=
"score"
>
<el-form-item
<el-input
label=
"文字描述(如超过300字,建议以附件形式上传)"
v-model=
"formData.score"
prop=
"stu_answer"
size=
"small"
>
placeholder=
"请评分(输入0-100之内的整数)"
@
input=
"inputValue"
/>
</el-form-item>
<el-form-item
label=
"导师评语"
prop=
"teaCommment"
>
<el-input
<el-input
type=
"textarea"
type=
"textarea"
v-model=
"formData.teaCommment
"
v-model=
"formData.stu_answer
"
placeholder=
"请输入300字以内的评语
"
placeholder=
"请输入300字以内的描述
"
size=
"small"
size=
"small"
:maxlength=
"300"
:maxlength=
"300"
show-word-limit
show-word-limit
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"相关附件"
prop=
"teacherUrl"
>
<el-form-item
label=
"相关附件"
prop=
"teacherUrl"
>
<div
class=
"fj_info"
>
1、请上传1-10份相关附件;
</div>
<div
class=
"fj_info"
>
1、请上传1-10份相关附件;
</div>
<div
class=
"fj_info"
>
<div
class=
"fj_info"
>
2、单个附件大小不超过100M,支持JPG、JPEG、PNG、docx、doc、pdf、mp4等格式;
2、单个附件大小不超过100M,支持JPG、JPEG、PNG、docx、doc、pdf、mp4等格式;
</div>
</div>
<div
class=
"upload_box"
>
<div
class=
"upload_box"
>
<div
<div
class=
"img_list"
class=
"img_list"
v-for=
"(item, index) in teaF
ileList"
v-for=
"(item, index) in f
ileList"
:key=
"index"
:key=
"index"
>
>
<div>
<div>
...
@@ -97,37 +85,48 @@
...
@@ -97,37 +85,48 @@
</div>
</div>
<el-upload
<el-upload
v-if=
"teaF
ileList.length
<
10
"
v-if=
"f
ileList.length
<
10
"
ref=
"systemLogo"
ref=
"systemLogo"
name=
"multipartFile"
name=
"multipartFile"
:action=
"imgAction"
action=
"#"
:file-list=
"teaFileList"
:file-list=
"fileList"
:disabled=
"upLoading"
:disabled=
"isUploading || fileList.length >= 10"
:limit=
"10"
list-type=
"picture-card"
list-type=
"picture-card"
:show-file-list=
"false"
:show-file-list=
"false"
:before-upload=
"beforeUpload"
:before-upload=
"beforeAvatarUpload"
:on-progress=
"handleProgress"
:on-progress=
"handleUploadProgress"
:on-success=
"handleSuccess"
:on-success=
"uploadSuccess"
:http-request=
"uploadPicture"
>
>
<i
v-if=
"!upLoading"
class=
"el-icon-plus avatar-uploader-icon"
></i>
<i
v-if=
"!upLoading"
class=
"el-icon-plus avatar-uploader-icon"
></i>
<i
<i
v-if=
"upLoading"
v-if=
"upLoading"
class=
"el-icon-loading avatar-uploader-icon"
class=
"el-icon-loading avatar-uploader-icon"
></i>
></i>
</el-upload>
</el-upload>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
class=
"btn"
>
<el-form-item
class=
"btn"
>
<el-button
type=
"primary"
@
click=
"confirm"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"confirm"
>
保存
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
</div>
</div>
</el-dialog>
</
template
>
</
template
>
<
script
>
<
script
>
// import {getToken} from "@/utils/auth";
import
Bus
from
"
config/bus.js
"
;
import
Bus
from
"
config/bus.js
"
;
import
{
import
{
downloadTeacherWork
,
PostWorkStudentOss
,
delPic
,
subStudentWork
,
GetStuWork
,
GetStuWork
,
SaveTheRead
,
SaveTheRead
,
GetAllReadInfo
,
GetAllReadInfo
,
...
@@ -135,110 +134,59 @@ import {
...
@@ -135,110 +134,59 @@ import {
}
from
"
r/index/homework
"
;
}
from
"
r/index/homework
"
;
import
fileImg
from
"
@/assets/img/homework/file_img.png
"
;
import
fileImg
from
"
@/assets/img/homework/file_img.png
"
;
export
default
{
export
default
{
name
:
"
ReadForm
"
,
name
:
"
ReadForm
"
,
props
:
{
props
:
{
//
dialogVisibleFu: Boolean,
dialogVisibleFu
:
Boolean
,
campIdFu
:
[
Number
,
String
],
work_contexts
:
[
Number
,
String
],
//作业内容
stuInfoFu
:
[
Object
,
String
],
enclosure_urls
:
[
Object
,
String
],
//老师作业地址
typeFu
:
[
Number
,
String
],
work_nums
:
[
Number
],
},
},
data
()
{
data
()
{
return
{
return
{
titleName
:
""
,
isUploading
:
false
,
// 图片上传蒙层
work_context
:
""
,
//简介
work_context
:
""
,
//简介
fileImg
:
fileImg
,
fileImg
:
fileImg
,
loading
:
false
,
loading
:
false
,
dialogVisible
:
this
.
dialogVisibleFu
,
dialogVisible
:
this
.
dialogVisibleFu
,
type
:
this
.
typeFu
,
// 来源(1-未评阅 2-已评阅)
dialogVisibleimage
:
false
,
campId
:
this
.
campIdFu
,
stuInfo
:
this
.
stuInfoFu
,
// 学生-信息
stuWork
:
{},
// 学生-作业
stuWork
:
{},
// 学生-作业
stuFileList
:
[],
// 学生-相关附件
stuFileList
:
[],
// 学生-相关附件
teaFileList
:
[],
// 老师-相关附件
teaFileList
:
[],
// 老师-相关附件
formData
:
{
formData
:
{
campId
:
null
,
stu_work_num
:
""
,
stuWorkNum
:
null
,
stu_answer
:
""
,
uuid
:
null
,
stu_enclosure_url
:
""
,
score
:
null
,
teaCommment
:
null
,
teacherUrl
:
null
,
},
// 老师-评阅结果
},
// 老师-评阅结果
rules
:
{
score
:
[
{
required
:
true
,
message
:
"
请评分(输入0-100之内的整数)
"
,
trigger
:
"
blur
"
,
},
],
},
upLoading
:
false
,
// 老师-上传loading
upLoading
:
false
,
// 老师-上传loading
// 上传图片请求头
fileList
:
[],
// headers: {
stu_fileList
:
""
,
// Authorization: "Bearer " + getToken()
// },
disabled
:
false
,
//限制输入框
imgAction
:
process
.
env
.
VUE_APP_BASE_API
+
"
/modules-campsite/ld/UploadWorkForStudent
"
,
};
};
},
},
created
()
{
created
()
{
console
.
log
(
this
.
$store
.
state
.
work_context
)
console
.
log
(
this
.
enclosure_urls
);
// this.work_context = this.$store.state.work_context;
let
code
=
this
.
$store
.
state
.
indexIdentity
;
let
studentFile
=
window
.
localStorage
.
getItem
(
"
student_file_
"
+
window
.
localStorage
.
getItem
(
"
phone
"
+
code
)
+
code
);
if
(
studentFile
&&
JSON
.
parse
(
studentFile
).
length
>
0
)
{
this
.
fileList
=
JSON
.
parse
(
studentFile
);
}
},
},
methods
:
{
methods
:
{
open
()
{
open
()
{
if
(
this
.
type
==
1
)
{
console
.
log
(
this
.
stu_work_nums
);
this
.
getStuWork
();
this
.
titleName
=
this
.
work_nums
;
}
else
if
(
this
.
type
==
2
)
{
this
.
getTeachList
();
this
.
getYiStuWork
();
}
},
// 保存按钮
confirm
()
{
this
.
$refs
[
"
formRef
"
].
validate
((
valid
)
=>
{
if
(
!
valid
)
return
;
if
(
this
.
type
==
1
)
{
this
.
notReadHandle
();
}
else
if
(
this
.
type
==
2
)
{
this
.
yiReadHandle
();
}
});
},
},
// 下载学生附件
//老师作业展示
downloadStuFile
(
url
)
{
getTeachList
()
{
window
.
location
.
href
=
url
;
let
url
=
this
.
enclosure_urls
;
},
console
.
log
(
this
.
enclosure_urls
);
// 导师评分0-100限制
if
(
this
.
enclosure_urls
)
{
inputValue
(
value
)
{
if
(
value
.
length
>
1
&&
value
.
slice
(
0
,
1
)
==
0
)
{
return
(
this
.
formData
.
score
=
0
);
}
else
if
(
value
.
length
>=
3
&&
value
>
100
)
{
return
(
this
.
formData
.
score
=
100
);
}
this
.
formData
.
score
=
value
.
replace
(
/
[^\d]
/g
,
""
);
},
// 已评阅-获取学生答案
getYiStuWork
()
{
GetAllReadInfo
({
campId
:
this
.
campId
,
stuWorkNum
:
this
.
stuInfo
.
stuWorkNum
,
uuid
:
this
.
stuInfo
.
uuid
,
})
.
then
((
response
)
=>
{
console
.
log
(
response
);
if
(
response
.
code
!=
200
)
{
return
this
.
msgError
(
response
.
msg
);
}
this
.
stuWork
=
response
.
data
;
this
.
formData
.
score
=
this
.
stuWork
[
"
score
"
];
this
.
formData
.
teaCommment
=
this
.
stuWork
[
"
teacherCommment
"
];
this
.
formData
.
teacherUrl
=
this
.
stuWork
[
"
teacherUrl
"
];
let
url
=
this
.
stuWork
.
stuEnclosureUrl
;
if
(
this
.
stuWork
.
stuEnclosureUrl
)
{
let
arr
=
url
.
split
(
"
,
"
);
let
arr
=
url
.
split
(
"
,
"
);
arr
.
forEach
((
item
)
=>
{
arr
.
forEach
((
item
)
=>
{
this
.
stuFileList
.
push
({
this
.
stuFileList
.
push
({
...
@@ -250,85 +198,52 @@ export default {
...
@@ -250,85 +198,52 @@ export default {
}
else
{
}
else
{
this
.
stuFileList
=
[];
this
.
stuFileList
=
[];
}
}
let
urlT
=
this
.
stuWork
.
teacherUrl
;
if
(
this
.
stuWork
.
teacherUrl
)
{
let
arr
=
urlT
.
split
(
"
,
"
);
arr
.
forEach
((
item
)
=>
{
this
.
teaFileList
.
push
({
url
:
item
,
name
:
item
.
split
(
"
/workforstudent/
"
)[
1
],
status
:
"
success
"
,
});
});
}
else
{
this
.
teaFileList
=
[];
}
})
.
catch
((
error
)
=>
{
console
.
log
(
error
);
});
},
},
// 已评阅-评阅
// 下载老师附件
// yiReadHandle(){
downloadStuFile
(
url
)
{
// this.formData.campId = this.campId;
this
.
download
(
// this.formData.stuWorkNum = this.stuInfo.stuWorkNum;
'
http://api.campcenter.cn/web/download/downloadTeacherWork
'
,
// this.formData.uuid = this.stuInfo.uuid;
{
// SaveYiRead(this.formData)
enclosure_url
:
url
,
// .then(response => {
identity
:
this
.
$store
.
state
.
indexIdentity
// console.log(response);
},
// if (response.code != 200) {
''
// return this.msgError(response.msg);
)
// downloadTeacherWork({ enclosure_url:url }).then((res) => {
// console.log(res, "res");
// if (res.code != 200) {
// return this.$message.error(res.data.message);
// }
// }
// this.msgSuccess(response.msg);
// this.$message.success(res.data.message);
// this.cancelBtnTrue();
// })
// .catch(error => {
// console.log(error);
// });
// });
// },
// window.location.href = url;
// 未评阅-获取学生答案
},
getStuWork
()
{
GetStuWork
({
// 保存按钮
campId
:
this
.
campId
,
confirm
()
{
stuWorkNum
:
this
.
stuInfo
.
stuWorkNum
,
this
.
$refs
[
"
formRef
"
].
validate
((
valid
)
=>
{
uuid
:
this
.
stuInfo
.
uuid
,
if
(
!
valid
)
return
;
})
// if (this.type == 1) {
.
then
((
response
)
=>
{
// 未完成
console
.
log
(
response
);
this
.
notReadHandle
();
if
(
response
.
code
!=
200
)
{
// } else if (this.type == 2) {
return
this
.
msgError
(
response
.
msg
);
// 已完成
}
// this.yiReadHandle();
this
.
stuWork
=
response
.
data
;
// }
let
url
=
this
.
stuWork
.
stuEnclosureUrl
;
if
(
this
.
stuWork
.
stuEnclosureUrl
)
{
let
arr
=
url
.
split
(
"
,
"
);
arr
.
forEach
((
item
)
=>
{
this
.
stuFileList
.
push
({
url
:
item
,
name
:
item
.
split
(
"
/work/
"
)[
1
],
status
:
"
success
"
,
});
});
}
else
{
this
.
stuFileList
=
[];
}
})
.
catch
((
error
)
=>
{
console
.
log
(
error
);
});
});
},
},
// 未评阅-评阅
// 未完成
notReadHandle
()
{
notReadHandle
()
{
this
.
formData
.
campId
=
this
.
campId
;
this
.
formData
.
stu_work_num
=
this
.
work_nums
;
this
.
formData
.
stuWorkNum
=
this
.
stuInfo
.
stuWorkNum
;
this
.
formData
.
stu_enclosure_url
=
this
.
stu_fileList
;
this
.
formData
.
uuid
=
this
.
stuInfo
.
uuid
;
subStudentWork
(
this
.
formData
)
SaveTheRead
(
this
.
formData
)
.
then
((
response
)
=>
{
.
then
((
response
)
=>
{
console
.
log
(
response
);
console
.
log
(
response
);
if
(
response
.
code
!=
200
)
{
if
(
response
.
code
!=
200
)
{
return
this
.
msgError
(
response
.
msg
);
return
this
.
$message
.
error
(
response
.
message
);
}
}
this
.
msgSuccess
(
response
.
msg
);
this
.
$message
.
success
(
response
.
message
);
this
.
cancelBtnTrue
();
this
.
cancelBtnTrue
();
})
})
.
catch
((
error
)
=>
{
.
catch
((
error
)
=>
{
...
@@ -352,53 +267,181 @@ export default {
...
@@ -352,53 +267,181 @@ export default {
this
.
dialogVisible
=
false
;
this
.
dialogVisible
=
false
;
this
.
$emit
(
"
closeDialog
"
,
this
.
dialogVisible
,
false
);
this
.
$emit
(
"
closeDialog
"
,
this
.
dialogVisible
,
false
);
},
},
// 删除文件
//上传前
handleRemove
(
data
)
{
beforeAvatarUpload
(
file
)
{
this
.
teaFileList
=
this
.
teaFileList
.
filter
((
item
)
=>
{
const
isLt10M
=
file
.
size
/
1024
/
1024
<
10
;
return
item
!=
data
;
if
(
!
isLt10M
)
{
});
this
.
$message
.
info
(
"
上传图片大小不能超过 10MB!
"
);
this
.
formData
.
teacherUrl
=
this
.
teaFileList
}
.
map
((
item
)
=>
{
return
isLt10M
;
return
item
.
url
;
})
.
join
(
"
,
"
);
console
.
log
(
this
.
teaFileList
);
console
.
log
(
this
.
formData
.
teacherUrl
);
},
},
// 文件上传成功时的钩子
handleSuccess
(
res
,
file
,
fileList
)
{
// handlePictureCardPreview(file) {
if
(
res
.
code
!=
200
)
{
// console.log(file, "11111111");
this
.
upLoading
=
false
;
// this.resultPicture = file.url;
return
this
.
msgError
(
res
.
msg
);
// this.dialogVisibleimage = true;
// },
// 文件上传中处理
handleUploadProgress
(
event
,
file
,
fileList
)
{
// console.log(fileList);
this
.
isUploading
=
true
;
if
(
this
.
fileList
.
lenge
<
10
)
{
return
this
.
$message
.
info
(
"
chaochushuliamng
"
);
}
}
let
length
=
this
.
teaFileList
.
length
;
},
this
.
teaFileList
[
length
]
=
{
uploadSuccess
(
res
,
file
,
fileList
)
{
status
:
"
success
"
,
// console.log(res, "res");
name
:
res
.
msg
.
split
(
"
/workforstudent/
"
)[
1
],
console
.
log
(
file
,
"
file
"
);
url
:
res
.
msg
,
// console.log(fileList, "fileList");
this
.
referForm
.
achievementPath
=
res
;
this
.
fileList
=
{
name
:
file
.
name
,
url
:
res
,
};
this
.
$refs
[
"
imgUrl
"
].
clearFiles
();
//上传成功之后清除历史记录
},
uploadPicture
(
params
)
{
console
.
log
(
"
已经准备好上传图片
"
,
params
);
this
.
file
=
params
.
file
;
console
.
log
(
this
.
file
,
"
1111
"
);
let
raw
=
params
.
file
;
let
image
=
{
name
:
raw
.
name
,
size
:
raw
.
size
,
type
:
raw
.
type
,
};
this
.
getOssConfigs
(
image
,
params
.
file
);
},
async
getOssConfigs
(
image
,
file
)
{
// let code = this.$store.state.indexIdentity;
// let stu_work_num = window.localStorage.getItem("stu_work_num" + code);
// console.log(
// window.localStorage.getItem("stu_work_num" + code),
// "stu_work_num"
// );
let
obj
=
{
url
:
""
,
savefile
:
""
,
};
};
this
.
formData
.
teacherUrl
=
this
.
teaFileList
await
PostWorkStudentOss
({
image
:
image
,
stu_work_num
:
this
.
stu_work_nums
,
})
.
then
((
res
)
=>
{
console
.
log
(
res
,
"
开始上传图片
"
);
if
(
res
.
data
.
code
===
200
)
{
let
oss_url
=
res
.
data
.
config
.
host
;
let
filename
=
res
.
data
.
config
.
file
;
let
formData
=
new
FormData
();
formData
.
append
(
"
OSSAccessKeyId
"
,
res
.
data
.
config
.
accessid
);
formData
.
append
(
"
policy
"
,
res
.
data
.
config
.
policy
);
formData
.
append
(
"
signature
"
,
res
.
data
.
config
.
signature
);
formData
.
append
(
"
filename
"
,
res
.
data
.
config
.
file
);
formData
.
append
(
"
key
"
,
res
.
data
.
config
.
savefile
);
formData
.
append
(
"
callback
"
,
res
.
data
.
config
.
callback
);
formData
.
append
(
"
success_action_status
"
,
200
);
formData
.
append
(
"
file
"
,
file
);
// console.log(formData);
this
.
upload
(
oss_url
,
formData
)
.
then
((
ress
)
=>
{
console
.
log
(
ress
,
"
ress
"
);
if
(
ress
.
data
.
code
!=
200
)
{
console
.
log
(
ress
,
"
ress
"
);
return
this
.
$message
.
error
(
ress
.
data
.
message
);
}
this
.
resultPicture
=
filename
+
"
?t=
"
+
Date
.
parse
(
new
Date
());
this
.
$forceUpdate
();
this
.
$message
.
success
(
"
上传成功
"
);
obj
=
{
url
:
ress
.
data
.
picture_path
,
savefile
:
res
.
data
.
config
.
savefile
,
};
this
.
fileList
.
push
(
obj
);
// let stu_obj={
// url: ress.data.picture_path,
// }
// this.stu_fileList.push(stu_obj);
// let arrNew = [];
this
.
stu_fileList
=
this
.
fileList
.
map
((
item
)
=>
{
.
map
((
item
)
=>
{
return
item
.
url
;
return
item
.
url
;
})
})
.
join
(
"
,
"
);
.
join
(
"
,
"
);
this
.
upLoading
=
false
;
// console.log(this.stu_fileList)
this
.
msgSuccess
(
"
上传成功
"
);
let
code
=
this
.
$store
.
state
.
indexIdentity
;
window
.
localStorage
.
setItem
(
"
student_file_
"
+
+
window
.
localStorage
.
getItem
(
"
phone
"
+
code
)
+
code
,
JSON
.
stringify
(
this
.
fileList
)
);
})
.
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
);
});
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
})
.
catch
((
err
)
=>
{
// console.log(err);
});
},
},
handleProgress
(
event
,
file
,
fileList
)
{
// 下载证明资料图片
this
.
upLoading
=
true
;
handleDownload
(
file
)
{
// console.log(file,'file22');
window
.
location
.
href
=
file
.
url
;
},
},
// 上传文件之前的钩子
//删除图片
beforeUpload
(
file
)
{
handleRemove
(
file
)
{
const
isLt10M
=
file
.
size
/
1024
/
1024
<=
100
;
console
.
log
(
file
,
"
file
"
);
this
.
$confirm
(
"
此操作将永久删除该文件, 是否继续?
"
,
"
提示
"
,
{
if
(
!
isLt10M
)
{
confirmButtonText
:
"
确定
"
,
this
.
$message
.
error
(
"
上传的附件大小不能超过 100M!
"
);
cancelButtonText
:
"
取消
"
,
return
false
;
type
:
"
warning
"
,
})
.
then
(()
=>
{
let
getfile
=
file
.
url
;
// console.log(savefile.match(/^(?:[^\/]|\/\/)*/),'222222');//获取域名
let
str
=
getfile
.
split
(
"
https://campiste.oss-cn-beijing.aliyuncs.com/
"
);
//https://yingdi-achievement.oss-cn-beijing.aliyuncs.com/进行分割,
console
.
log
(
str
,
"
str
"
);
let
savefile
=
str
[
1
];
// console.log(savefile, "savefile");
delPic
({
object
:
savefile
}).
then
((
res
)
=>
{
// console.log(res, "delpic");
if
(
res
.
data
.
code
!=
200
)
{
return
this
.
$message
.
error
(
res
.
data
.
message
);
}
}
return
isLt10M
;
this
.
fileList
.
forEach
((
item
,
idx
)
=>
{
// console.log(item.url == file.url);
if
(
item
.
url
==
file
.
url
)
{
this
.
fileList
.
splice
(
idx
,
1
);
let
code
=
this
.
$store
.
state
.
indexIdentity
;
window
.
localStorage
.
setItem
(
"
student_file_
"
+
window
.
localStorage
.
getItem
(
"
phone
"
+
code
)
+
code
,
JSON
.
stringify
(
this
.
fileList
)
);
}
});
// console.log(this.fileList);
this
.
$message
.
success
(
res
.
data
.
message
);
});
})
.
catch
((
err
)
=>
{
this
.
$message
({
type
:
"
info
"
,
message
:
"
取消删除
"
,
});
});
},
},
},
},
watch
:
{
watch
:
{
dialogVisibleFu
()
{
dialogVisibleFu
()
{
this
.
dialogVisible
=
this
.
dialogVisibleFu
;
this
.
dialogVisible
=
this
.
dialogVisibleFu
;
...
...
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