Commit 2585ba06 authored by 小费同学阿's avatar 小费同学阿 💬

添加lint代码校验

parent 491b91e8
#!/usr/bin/env sh #!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh" . "$(dirname -- "$0")/_/husky.sh"
npm run lint
<template>
<div class="component-upload-image">
<el-upload
ref="imageUpload"
multiple
:action="uploadImgUrl"
list-type="picture-card"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
:on-remove="handleDelete"
:show-file-list="true"
:headers="headers"
:file-list="fileList"
:on-preview="handlePictureCardPreview"
:class="{hide: fileList.length >= limit}"
>
<i class="el-icon-plus" />
</el-upload>
<!-- 上传提示 -->
<div v-if="showTip" slot="tip" class="el-upload__tip">
请上传
<template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
<template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
的文件
</div>
<el-dialog
:visible.sync="dialogVisible"
title="预览"
width="800"
append-to-body
>
<img
:src="dialogImageUrl"
style="display: block; max-width: 100%; margin: 0 auto"
>
</el-dialog>
</div>
</template>
<script>
import { getToken } from '@/utils/auth'
export default {
props: {
value: [String, Object, Array],
// 图片数量限制
limit: {
type: Number,
default: 5
},
// 大小限制(MB)
fileSize: {
type: Number,
default: 5
},
// 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: {
type: Array,
default: () => ['png', 'jpg', 'jpeg']
},
// 是否显示提示
isShowTip: {
type: Boolean,
default: true
}
},
data() {
return {
number: 0,
uploadList: [],
dialogImageUrl: '',
dialogVisible: false,
hideUpload: false,
baseUrl: process.env.VUE_APP_TEST_API,
uploadImgUrl: process.env.VUE_APP_BASE_API + '/common/upload', // 上传的图片服务器地址
headers: {
Authorization: 'Bearer ' + getToken()
},
fileList: []
}
},
computed: {
// 是否显示提示
showTip() {
return this.isShowTip && (this.fileType || this.fileSize)
}
},
watch: {
value: {
handler(val) {
if (val) {
console.log('kkkkkkkkkkkkkkkkkk', this.baseUrl)
// 首先将值转为数组
const list = Array.isArray(val) ? val : this.value.split(',')
// 然后将数组转为对象数组
this.fileList = list.map(item => {
if (typeof item === 'string') {
if (item.indexOf(this.baseUrl) === -1) {
item = { name: this.baseUrl + item, url: this.baseUrl + item }
} else {
item = { name: item, url: item }
}
}
return item
})
} else {
this.fileList = []
return []
}
},
deep: true,
immediate: true
}
},
methods: {
// 上传前loading加载
handleBeforeUpload(file) {
let isImg = false
if (this.fileType.length) {
let fileExtension = ''
if (file.name.lastIndexOf('.') > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf('.') + 1)
}
isImg = this.fileType.some(type => {
if (file.type.indexOf(type) > -1) return true
if (fileExtension && fileExtension.indexOf(type) > -1) return true
return false
})
} else {
isImg = file.type.indexOf('image') > -1
}
if (!isImg) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join('/')}图片格式文件!`)
return false
}
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize
if (!isLt) {
this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`)
return false
}
}
this.$modal.loading('正在上传图片,请稍候...')
this.number++
},
// 文件个数超出
handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`)
},
// 上传成功回调
handleUploadSuccess(res, file) {
if (res.code === 200) {
this.uploadList.push({ name: res.fileName, url: res.fileName })
this.uploadedSuccessfully()
} else {
this.number--
this.$modal.closeLoading()
this.$modal.msgError(res.msg)
this.$refs.imageUpload.handleRemove(file)
this.uploadedSuccessfully()
}
},
// 删除图片
handleDelete(file) {
const findex = this.fileList.map(f => f.name).indexOf(file.name)
if (findex > -1) {
this.fileList.splice(findex, 1)
this.$emit('input', this.listToString(this.fileList))
}
},
// 上传失败
handleUploadError() {
this.$modal.msgError('上传图片失败,请重试')
this.$modal.closeLoading()
},
// 上传结束处理
uploadedSuccessfully() {
if (this.number > 0 && this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList)
this.uploadList = []
this.number = 0
this.$emit('input', this.listToString(this.fileList))
this.$modal.closeLoading()
}
},
// 预览
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
},
// 对象转成指定字符串分隔
listToString(list, separator) {
let strs = ''
separator = separator || ','
for (const i in list) {
if (list[i].url) {
strs += list[i].url.replace(this.baseUrl, '') + separator
}
}
return strs !== '' ? strs.substr(0, strs.length - 1) : ''
}
}
}
</script>
<style scoped lang="scss">
// .el-upload--picture-card 控制加号部分
::v-deep.hide .el-upload--picture-card {
display: none;
}
// 去掉动画效果
::v-deep .el-list-enter-active,
::v-deep .el-list-leave-active {
transition: all 0s;
}
::v-deep .el-list-enter, .el-list-leave-active {
opacity: 0;
transform: translateY(0);
}
</style>
...@@ -29,7 +29,7 @@ import Editor from '@/components/Editor' ...@@ -29,7 +29,7 @@ import Editor from '@/components/Editor'
// 文件上传组件 // 文件上传组件
import FileUpload from '@/components/FileUpload' import FileUpload from '@/components/FileUpload'
// 图片上传组件 // 图片上传组件
// import ImageUpload from '@/components/ImageUpload' import ImageUpload from '@/components/ImageUpload'
// 图片预览组件 // 图片预览组件
import ImagePreview from '@/components/ImagePreview' import ImagePreview from '@/components/ImagePreview'
// 字典标签组件 // 字典标签组件
...@@ -59,7 +59,7 @@ Vue.component('Pagination', Pagination) ...@@ -59,7 +59,7 @@ Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar) Vue.component('RightToolbar', RightToolbar)
Vue.component('Editor', Editor) Vue.component('Editor', Editor)
Vue.component('FileUpload', FileUpload) Vue.component('FileUpload', FileUpload)
// Vue.component('ImageUpload', ImageUpload) Vue.component('ImageUpload', ImageUpload)
Vue.component('ImagePreview', ImagePreview) Vue.component('ImagePreview', ImagePreview)
Vue.use(directive) Vue.use(directive)
......
...@@ -272,7 +272,7 @@ export const dynamicRoutes = [ ...@@ -272,7 +272,7 @@ export const dynamicRoutes = [
meta: { title: '修改生成配置', activeMenu: '/tool/gen' } meta: { title: '修改生成配置', activeMenu: '/tool/gen' }
} }
] ]
}, }
] ]
......
...@@ -34,7 +34,7 @@ color: #333333;" ...@@ -34,7 +34,7 @@ color: #333333;"
/> />
</el-form-item> </el-form-item>
<el-form-item label="文章封面" prop="articleCover"> <el-form-item label="文章封面" prop="articleCover">
<image-upload v-model="form.articleCover" limit="1" /> <image-upload v-model="form.articleCover" limit="1" />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="articleStatus"> <el-form-item label="状态" prop="articleStatus">
<div style="display: flex;"> <div style="display: flex;">
......
...@@ -263,7 +263,7 @@ ...@@ -263,7 +263,7 @@
<li>用户访问控制时校验数据权限,防止越权</li> <li>用户访问控制时校验数据权限,防止越权</li>
<li>导出Excel时屏蔽公式,防止CSV注入风险</li> <li>导出Excel时屏蔽公式,防止CSV注入风险</li>
<li>组件ImagePreview支持多图预览显示</li> <li>组件ImagePreview支持多图预览显示</li>
<!-- <li>组件ImageUpload支持多图同时选择上传</li>--> <li>组件ImageUpload支持多图同时选择上传</li>
<li>组件FileUpload支持多文件同时选择上传</li> <li>组件FileUpload支持多文件同时选择上传</li>
<li>服务监控新增运行参数信息显示</li> <li>服务监控新增运行参数信息显示</li>
<li>定时任务目标字符串过滤特殊字符</li> <li>定时任务目标字符串过滤特殊字符</li>
......
...@@ -255,12 +255,12 @@ export default { ...@@ -255,12 +255,12 @@ export default {
} }
}) })
}, },
// 获取医院列表下拉框 // // 获取医院列表下拉框
getHospital() { // getHospital() {
listHospitalInVet().then(res => { // listHospitalInVet().then(res => {
this.hospitalNameForm = res.rows // this.hospitalNameForm = res.rows
}) // })
}, // },
/** 查询病例管理列表 */ /** 查询病例管理列表 */
getList() { getList() {
this.loading = true this.loading = true
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<div> <div>
<div class="text-center"> <div class="text-center">
<userAvatar v-if="isShow" :user="user" /> <userAvatar v-if="isShow" :user="user" />
<!-- <ImageUpload v-else v-model="hospital.businessLicense" :limit="1" :is-show-tip="false" />--> <!-- <ImageUpload v-else v-model="hospital.businessLicense" :limit="1" :is-show-tip="false" />-->
</div> </div>
<ul class="list-group list-group-striped"> <ul class="list-group list-group-striped">
<li v-if="isShow" class="list-group-item"> <li v-if="isShow" class="list-group-item">
......
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<el-option label="单选框" value="radio" /> <el-option label="单选框" value="radio" />
<el-option label="复选框" value="checkbox" /> <el-option label="复选框" value="checkbox" />
<el-option label="日期控件" value="datetime" /> <el-option label="日期控件" value="datetime" />
<!-- <el-option label="图片上传" value="imageUpload" />--> <el-option label="图片上传" value="imageUpload" />
<el-option label="文件上传" value="fileUpload" /> <el-option label="文件上传" value="fileUpload" />
<el-option label="富文本控件" value="editor" /> <el-option label="富文本控件" value="editor" />
</el-select> </el-select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment