- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
<template>+ T- S4 B* r1 e5 N
<el-dialog( y C" n1 ~0 A, T1 e2 n2 [* |
title="上传"
1 Z2 _. T- T+ ^7 F- s0 _3 F' J :visible.sync="dialogVisible"
9 E. \1 w( X& d# S width="40%"
7 a( C; R' y# a :before-close="handleClose"3 t% I9 \$ x- L9 G X7 {. g9 W
>
- U1 G8 f, K5 a, u5 F <el-form ref="form" :model="form" size="small" label-width="80px">; v9 Z0 s& _4 I! i
<el-form-item label="文件名称:">/ g% ^& t; i+ w/ R4 X9 G
<el-input v-model="form.contitle" disabled></el-input>
3 m" q& U' b* y </el-form-item>* U9 U+ ?2 \9 @5 H4 O% Y
<el-form-item label="文件上传:">
; n5 N. X2 D8 G V# T( m <div class="uppicture">7 I( V# v# }/ o7 [ n
<input type="file" class="upinput" ref="file" @change="showimg" />
) X _, n$ X1 y( \8 Q0 S( f4 |( Z <i class="el-icon-plus" id="changes" @click="changeimg"></i>
2 F0 G7 M! T4 V& t# p <p>上传文件图片附件</p>+ f! w6 a! v! {: f$ o$ B
</div>
" o3 |0 P2 O* V# b1 n; H3 A' V <el-button type="primary" class="uploadbutton" @click="addupload">
, U/ f I: o+ a 上传附件, s, T' n! F9 J
</el-button>
3 ?2 N! k* K& j) \: u. ?" y' A* E </el-form-item>: g0 p; D+ a' B/ o' z
</el-form>
2 v3 Z0 ?6 w1 n1 s, _) q; m <span slot="footer" class="dialog-footer">
( S4 I. P6 r9 |" i+ g, ~ <el-button @click="handleClose"$ a% d& e4 j: n ^3 Z) h2 |+ h
style="background: #f7f7f7"8 X5 Z" Y7 ~( _+ p/ V
size="small">取消</el-button>
1 S2 y, {" F* ?: ~! w </span>9 V5 V5 p+ x* U2 [, w) x
</el-dialog>! P% ~2 b, T' l
</template>
5 ~: l2 t. }! V
& M' }% C H5 Y<script>. J% p4 H3 ]$ W; \; }
// 从API中引入uploadvideo组件" C$ \, N; f. H6 P$ p. q$ | p$ |
import { uploadvideo } from '@/utils/apis'6 L7 d, R% W! v3 a# k
// 引入遮罩层组件; w) m* d5 U7 R, l: \5 P
import { Loading } from 'element-ui'
' h3 o% j+ v: r4 \$ `' W4 hexport default {5 n7 t1 W4 b5 i
name: 'fileUpload',! l7 @+ m$ j7 v p' f+ ?) j* N% h
data () {) a# P" ^! _$ p- Q
return {
$ Q0 t" p& f! X form: {8 ~$ a3 p/ F Z b g9 R1 _, q
// 文件名称
t3 E( \; g1 Y7 F% K contitle: ''
9 u" z9 v- E9 D) ~/ C },5 _8 \3 S: J" W! R: e5 D7 [
formdata: {}
6 o) O/ K# }1 d! C% L$ W0 f }
! y, Q0 z# ]8 u$ C) T4 N8 f },
; ?0 ?, V7 C' G- @ props: {
' n3 u. E9 |. L // 显示隐藏8 Y* ~, f; c, J0 K4 O. l
dialogVisible: {
4 p8 @5 E( g* y4 n1 z' C9 G3 x& S% X type: Boolean,
4 b* t9 q' Z+ K5 E1 I! E l5 W // 必传
+ b$ L* q, M" t required: true
5 h( ?0 z# I* z: k }
! z- G5 I9 |' j: m( n( G5 C' A },& K; z" k1 a+ _5 d
methods: {
6 H, X/ @3 z# @! ~) q // 关闭之前
1 V9 f- ?# A* G' R handleClose () {
8 c' n5 g, L3 T% H, L console.log('关闭之前')3 G+ {. ]& {: ^" u
// .sync语法糖,单向数据流问题,
2 ?) @0 j5 D! I v // 父组件传递给子组件的数据,子组件直接修改会报错,需要传递给父组件修改
* F2 ^) R. L5 Q" o: c1 I this.$emit('update:dialogVisible', false)- r; T0 c( q* A8 S& ^
},
+ `/ t6 d# u S0 z$ y% e6 Y6 P // 输入获取事件4 k/ r! Q& s3 ]) F: g$ k8 `% v" |. c
showimg () {
6 s X1 _" ?/ G const that = this1 H7 M5 A% u L: b9 a
console.log(that.$refs.file)
' a) _ W# V& {, c7 K console.log(that.$refs.file.files[0])
% B' |, k* w' n$ ^9 b2 u // 文件名复制
# L! ^: W3 c1 p% c9 {+ m that.form.contitle = that.$refs.file.files[0].name7 k' u/ s$ P; ] _0 s6 K
// 声明一个formdata对象8 z, d- X1 N- J6 G
this.formdata = new FormData()
1 ?- A$ v( ?) g% y# ~1 W5 x% ]4 u* k7 { // 赋值需要传递的文件
6 D# A4 y2 M( R$ L9 L/ n" w9 j this.formdata.append('multipartFile', that.$refs.file.files[0])
7 }; R# k7 C" m% ^' \1 O },5 n* [1 @! I: K% u' r! i8 p
changeimg () {
3 @2 ]/ W S$ Q4 ?" W; f, d% L // 点击图标时候,触发input选择文件按钮
( X' s9 x; E8 `9 C+ _; I7 E this.$refs.file.dispatchEvent(new MouseEvent('click')): k+ n8 y: P9 x
},
6 D4 ^5 y# D, x _ // 上传附件( x% k7 E% j9 H, x6 v6 f _! F
async addupload () {/ e, w6 T, U) z
// 上传文件提示,未选择文件提示用户% |8 h. o# [; y" Z: a5 H
if (!this.form.contitle) {
2 T" |8 |( c$ U4 s return this.$message.warning('请先在左侧上传文件')
4 [) S# Y' W9 S* y: t }9 ^# B& z* K: \2 J1 B
// 开启遮罩层8 f2 L! R5 J: S' U# Y
let loadingInstance = Loading.service({
o' O: m9 m% _0 [! W% T/ H lock: true, // lockde 修改符---默认是false
8 L8 l M0 A+ ^% i- p text: '正在上传文件,请耐心等待', // 显示在加载图标下方的加载文件+ a& h, b$ k8 L0 ]! ^! F
spinner: 'el-icon-loading', // 自定义加载图标类名
0 O" D' y1 @2 Q background: 'rgba(0, 0, 0, 0.7)', // 遮罩层的颜色0 `, m: S" H% z3 b; D; q
target: document.querySelector('#futureTransferDialog') // loading覆盖的dom元素节点& U6 Y+ O7 W- `( e4 p( k
})
" Q; C0 d8 F2 M( x* t9 x' |. ^ const res = await uploadvideo(this.formdata)- F P1 ?0 O, S# M+ r2 F$ ]) o2 e5 ^
console.log('文档服务器上传文件', res)% t+ I; v6 C* n; y' D& I
// 传递文件存储id, ~8 B: k q3 G+ a$ ? d, M
this.$emit('updataurl', res.data.url)
8 A! V& e8 m, T // 回显文件名称给父组件的form 表单2 r/ K. b+ {# a. Z5 k' z8 M; w
this.$emit('updata', this.form.contitle)% J( _4 M7 \) h8 X7 ~$ x8 m) l
// 清空表单% U( ^% g* k& S7 r c1 b
this.form.contitle = ''
5 r' A% m7 n/ f3 r4 e% z this.formdata = {}
9 Y) w" J. }+ p // 关闭弹框0 }- g9 F) J. r/ x- |# m
this.handleClose()% {0 m- K- r4 T6 ?
// 关闭遮罩层- P3 G* b" j2 i8 q) j/ n
loadingInstance.close()
& E" p! ?6 U" G1 s5 S }
9 ^- D, D! {% {2 \: A, Y }- H/ O+ v; o O, S2 g- [
}+ `6 \9 g8 V* p" x- z1 Z9 |" ]( S
</script>* t: x7 s- Y! W8 C9 v
<style lang="less" scoped>
& _) x# C. B+ n.v-deep .el-dialog {- U8 W K' ~* ^1 I% U8 p1 ^
border-radius: 10px;
2 n, ?7 U6 R# s .el-dialog__header {+ }5 Z& i; Y6 m5 \, K* |9 ~) u
border-radius: 9px 9px 0 0;
+ F G! G2 @7 o ^. } background-color: #1488c6;
1 _& _ H3 c; Q4 U4 K padding: 8px 20px;
" e/ b1 K6 k% g. ?# r .el-dialog__title {. u5 E7 n! J4 u t Q1 i
color: white;
3 F; Q8 {/ q. U font-size: 16px;
. Y5 N: v5 a9 v, Y9 v1 H }
" L% c% _/ _: v
- B8 h. M) s% m- i/ @' }( M& c3 H& F .el-dialog__headerbtn {; e) n+ K- ^( `0 m7 n: E( M
top: 12px;" `# j1 M) A2 l
i {' S& G7 |: r/ A3 V
color: white;
& ~" Q3 d7 Y9 I8 j. ?1 V8 Y$ q: v+ z* E }
$ {' V9 C2 t- I9 s) ? }
7 j; j2 [! s* ^5 T# k4 d' D }
m h3 d( ]( V+ R! F$ f' J* u .el-dialog__footer {3 q7 ~& x/ h) B1 t' k( x
text-align: center;8 H& B6 M( R5 k. R
}- M5 l; @/ B: [# R4 s
.el-dialog__body {
% r: T* I# }5 a, Q% ` padding: 12px;
0 x! h1 u* S1 ? }5 X) v1 m2 R I
.uppicture {1 A; U8 m- ^$ \1 g- P/ W+ ^# ~
width: 120px;' w& O! C' e% r" ?( T' M' E: A
height: 120px;7 n: f' f. V- k( ~8 X. j
border: 1px solid #717376;
3 K6 b' I' y3 f1 k* P5 M; O( i7 z position: relative;1 ]: o$ o& h4 s& d9 Z7 c
cursor: pointer;3 }2 T/ q0 ?) o4 L" h$ G' I! g _; ^" E
input {9 r$ ?7 A4 J" \0 ~6 V0 c, j
width: 100%;# S. e1 O3 ]# W
height: 100%;. [' g& j6 Z! B5 f. Z' R0 A
vertical-align: middle;5 m* l1 s+ K& X3 K
opacity: 0;
$ s5 X4 T/ S9 G. ]- b5 u) o4 q }
8 R9 o: l0 S* u, T# m7 { i {
* m( L) B, W$ F' f& Z9 } position: absolute;2 J8 f8 `8 C" a6 u8 W2 Y
top: 50%;/ q4 H; t, b; A
left: 50%;9 {# `3 P, ]9 m
transform: translate(-50%, -50%);
6 Z! L& p* R8 T& }* p4 { font-size: 30px;
7 e8 K1 w6 Q* p // background-color: skyblue;$ E1 L+ _, N8 f: f
} y- G' {- i! ?1 M2 {
p {
; T7 b: W" {! {( s" D( q* o5 J position: absolute;
# E# D5 I0 f6 t; o9 f5 x bottom: -2px;
. @$ Z! n+ j5 p, `' L0 F left: 50%;
# c# ?- j/ x- l! P+ X word-break: keep-all;
' |$ ?8 o6 o( A M transform: translate(-50%);
! p4 O7 e4 x: n7 y* d. E( v: x }5 X0 n+ w, b+ s, ]8 Z6 `
.uploadbutton {" \, _* B* Q8 s/ [% U6 r2 ]9 l
position: absolute;
; b. {- F6 C/ W, P bottom: 0;
/ N3 h& n, n4 ] margin-left: 20px;
- `$ P6 `" T. r+ P2 v position: relative;: P* @) c4 B& ~4 T( ~
}
n- @" h3 f) Y& [% ]- \, ]; Z# k3 F &:hover {$ {! G# ]2 e; K1 U2 V
color: #2da9fa;
. J2 ~1 m, y; k border: 1px solid #2da9fa;
- z7 s! e7 Y/ a% Q0 B l3 B0 | p {& m9 M/ {4 r) J( ^8 P
color: #2da9fa;
* n8 h, A/ H2 g* _ }
5 |" o' }/ I7 u N8 z# z2 O }- Z2 Y; ^3 Z3 a
}
( b. Z7 W9 v8 J. w& w9 m- J, _ .uploadbutton {4 P4 P6 g% O- o+ m
position: absolute;
& S4 n; }. p" X; ?& O top: 70%;% A- j7 u2 _1 I& w; v. P8 b' A H
left: 150px;+ l9 @. D- _! D# L# E7 J
}' V9 O* H5 m- w* ]5 d6 Z9 I. v
}
& K5 \& X4 P. T2 ^) }</style>
0 @6 q# {/ T4 p# C) V |
|