319 lines
9.3 KiB
Vue
319 lines
9.3 KiB
Vue
<template>
|
||
<view class="full-upload" v-if="isShowBtn">
|
||
<view class="upload-plugin" v-if="isShowBlueButton">
|
||
<lsj-upload ref="fullUpload" childId="upload1" :option="option" :instantly="true" height="30px"
|
||
@change="change" @uploadEnd="onuploadEnd" :multiple="false"> <!-- @progress="onprogre" -->
|
||
<view class="row">
|
||
<view class="btn" @click="handleTap">
|
||
<u-button :loading="isLoading" :disabled="isLoading" type="primary" size="small" text="附件">
|
||
</u-button>
|
||
</view>
|
||
</view>
|
||
</lsj-upload>
|
||
</view>
|
||
<!-- 上传的另一种形式 isShowBlueButton为false-->
|
||
<view class="upload-plugin-info" v-else>
|
||
<lsj-upload ref="fullUpload" childId="upload1" :option="option" :instantly="true" height="82px"
|
||
@change="change" @uploadEnd="onuploadEnd" :multiple="false"> <!-- @progress="onprogre" -->
|
||
<view>
|
||
<view @click="handleTap">
|
||
<!-- <u-button :loading="isLoading" :disabled="isLoading" type="primary" size="small" text="附件">
|
||
</u-button> -->
|
||
<view class="plus-info">
|
||
<u-icon name="plus" color="#c8c7cc" size="20" v-if="!isLoading"></u-icon>
|
||
<u-loading-icon :show="isLoading" mode="circle" size="20"></u-loading-icon>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</lsj-upload>
|
||
</view>
|
||
<view class="list">
|
||
<u-cell-group :border="false">
|
||
<u-cell title="" v-for="(value, key) in uFiles.filter(i => !i.IS_DELETED)" :key="key">
|
||
<view slot="icon" style="font-size: 16px;color: #2797ff;" @click="preview(value)"
|
||
v-if="value.name.indexOf('png') > -1 || value.name.indexOf('jpg') > -1 || value.name.indexOf('jpeg') > -1|| value.name.indexOf('gif') > -1">
|
||
{{value.name}}
|
||
</view>
|
||
<u-link slot="icon" :href="baseUrl + ':7199' + value.remotePath" :text="value.name" color="#2797ff"
|
||
v-else></u-link>
|
||
<u-icon slot="right-icon" size="16" name="trash" @click="delFile(value, key)"></u-icon>
|
||
</u-cell>
|
||
</u-cell-group>
|
||
</view>
|
||
</view>
|
||
|
||
<view v-else>
|
||
<view class="list">
|
||
<u-cell-group>
|
||
<u-cell title="" v-for="(value, key) in uFiles" :key="key">
|
||
<view slot="icon" style="font-size: 16px;color: #2797ff;" @click="preview(value)"
|
||
v-if="value.name.indexOf('png') > -1 || value.name.indexOf('jpg') > -1 || value.name.indexOf('jpeg') > -1|| value.name.indexOf('gif') > -1">
|
||
{{value.name}}
|
||
</view>
|
||
<u-link slot="icon" :href="baseUrl + ':7199' + value.remotePath" :text="value.name" color="#2797ff"
|
||
v-else></u-link>
|
||
<!--wyw 兼顾图片和文件 -->
|
||
<!-- <u-link v-if="value.remotePath!=undefined&&value.remotePath.indexOf('.png')>-1" slot="icon"
|
||
:href="baseUrl + ':7199' + value.remotePath" :text="value.name"></u-link>
|
||
<image v-else slot="icon" style="width: 120px; height: 80px; background-color: #eeeeee;"
|
||
:src="'http://localhost:7199' + value.remotePath" ></image> -->
|
||
</u-cell>
|
||
</u-cell-group>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<script>
|
||
import UButton from '../../uni_modules/uview-ui/components/u-button/u-button.vue'
|
||
import config from '../../config/common'
|
||
|
||
import {
|
||
guid
|
||
} from '../../utils/common'
|
||
|
||
export default {
|
||
components: {
|
||
UButton
|
||
},
|
||
model: {
|
||
event: 'upload',
|
||
prop: 'value'
|
||
},
|
||
props: {
|
||
upload: {
|
||
type: Function,
|
||
default () {
|
||
return undefined
|
||
}
|
||
},
|
||
value: {
|
||
type: Array,
|
||
default () {
|
||
return undefined
|
||
}
|
||
},
|
||
isShowBtn: { //是否显示 控件
|
||
type: Boolean,
|
||
default () {
|
||
return true
|
||
}
|
||
},
|
||
listProp: { //附件model 需要添加的属性
|
||
type: Array,
|
||
default () {
|
||
return undefined
|
||
}
|
||
},
|
||
listPropVal: { //附件model 需要添加的属性的定值
|
||
type: Array,
|
||
default () {
|
||
return undefined
|
||
}
|
||
},
|
||
isShowBlueButton: {
|
||
type: Boolean,
|
||
default () {
|
||
return true
|
||
}
|
||
}
|
||
// IMG_FILE_ID: {
|
||
// type: String,
|
||
// default () {
|
||
// return guid()
|
||
// }
|
||
// },
|
||
},
|
||
data() {
|
||
return {
|
||
baseUrl: config.uni_app_web_api_url,
|
||
// 上传接口参数
|
||
option: {
|
||
url: config.serviceHost('/PF/File/UploadFile'),
|
||
name: 'file',
|
||
header: {
|
||
Tenant: uni.getStorageSync('Tenant') || '',
|
||
userid: uni.getStorageSync('appInfo')?.User?.ID || ''
|
||
},
|
||
formData: {
|
||
OrgId: uni.getStorageSync('orgId'),
|
||
imgFileID: guid()
|
||
}
|
||
},
|
||
uFiles: [],
|
||
isLoading: false
|
||
}
|
||
},
|
||
beforeMount() {
|
||
//wyw 数据初始化加载
|
||
if (this.value && this.value.length > 0) {
|
||
this.uFiles = this.value
|
||
for (let i = 0; i < this.uFiles.length; i++) {
|
||
if (this.uFiles[i].Nav_ImgFile != undefined) {
|
||
this.uFiles[i].remotePath = this.uFiles[i].Nav_ImgFile.Nav_File.FILE_PATH
|
||
// this.uFiles[i].name = this.uFiles[i].Nav_ImgFile.Nav_File.FILE_NAME
|
||
this.uFiles[i].name = this.uFiles[i].Nav_ImgFile.FILE_NAME //显示名称修改 wyw 2024-04-17
|
||
}
|
||
}
|
||
}
|
||
},
|
||
watch: {
|
||
value() {
|
||
if (this.value == null)
|
||
this.value = []
|
||
this.uFiles = this.value
|
||
if (this.uFiles && this.uFiles.length > 0) {
|
||
for (let i = 0; i < this.uFiles.length; i++) {
|
||
if (this.uFiles[i].Nav_ImgFile != undefined) {
|
||
this.uFiles[i].remotePath = this.uFiles[i].Nav_ImgFile.Nav_File.FILE_PATH
|
||
// this.uFiles[i].name = this.uFiles[i].Nav_ImgFile.Nav_File.FILE_NAME
|
||
this.uFiles[i].name = this.uFiles[i].Nav_ImgFile.FILE_NAME //显示名称修改 wyw 2024-04-17
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
methods: {
|
||
preview(value) {
|
||
let urlshref = this.baseUrl + ':7199' + value.remotePath
|
||
uni.previewImage({
|
||
urls: [urlshref]
|
||
})
|
||
},
|
||
handleTap() {
|
||
this.$nextTick(() => {
|
||
this.$refs['fullUpload'].show()
|
||
})
|
||
},
|
||
onuploadEnd(item) {
|
||
// 更新当前窗口状态变化的文件
|
||
this.$forceUpdate()
|
||
this.isLoading = false
|
||
// this.dataUpdate() //数据处理
|
||
if (item.responseText) {
|
||
item.responseText = JSON.parse(item.responseText).Data
|
||
item.remotePath = item.responseText.imgFilePath
|
||
// item.remoteId = item.responseText.imgFileID
|
||
// item.IMG_FILE_ID = item.responseText.imgFileID
|
||
item.remoteId = this.option.formData.imgFileID
|
||
item.IMG_FILE_ID = this.option.formData.imgFileID
|
||
item.ORG_ID = uni.getStorageSync('orgId')
|
||
item.ID = guid()
|
||
if (this.listProp != undefined && this.listProp.length > 0) {
|
||
for (let i = 0; i < this.listProp.length; i++) {
|
||
item[this.listProp[i]] = this.listPropVal[i]
|
||
}
|
||
}
|
||
if (!this.uFiles) {
|
||
this.uFiles = []
|
||
}
|
||
this.uFiles.push(item)
|
||
}
|
||
// this.option.formData.imgFileID = guid() //ykx 重新赋值,否则guid只执行一次,解决上传imgfileid相同报错问题
|
||
this.$refs.fullUpload.setData('formData.imgFileID', guid())
|
||
},
|
||
change(files) {
|
||
// const allFiles = [...files.values()]
|
||
this.isLoading = true
|
||
// this.option.formData.imgFileID = guid()
|
||
// allFiles.forEach(e => {
|
||
// //如果 IMG_FILE_ID null 往里加
|
||
// // debugger
|
||
// if (!e.IMG_FILE_ID) {
|
||
// e.IMG_FILE_ID = this.option.formData.imgFileID
|
||
// e.ORG_ID = uni.getStorageSync('orgId')
|
||
// e.ID = guid()
|
||
// if (this.listProp != undefined && this.listProp.length > 0) {
|
||
// for (let i = 0; i < this.listProp.length; i++) {
|
||
// e[this.listProp[i]] = this.listPropVal[i]
|
||
// }
|
||
// }
|
||
// if (!this.uFiles)
|
||
// this.uFiles = []
|
||
// this.uFiles.push(e)
|
||
// }
|
||
// })
|
||
|
||
// this.dataUpdate() //数据处理
|
||
|
||
// this.$emit('upload', allFiles)
|
||
this.$emit('upload', this.uFiles) //wyw
|
||
|
||
// 强制更新视图
|
||
// this.$forceUpdate();
|
||
|
||
},
|
||
|
||
//数据赋值 方法可对外
|
||
dataUpdate() {
|
||
this.uFiles.forEach(e => {
|
||
if (e.responseText && (!e.IMG_FILE_ID || !e.ORG_ID)) {
|
||
e.responseText = JSON.parse(e.responseText).Data
|
||
e.remotePath = e.responseText.imgFilePath
|
||
e.remoteId = e.responseText.imgFileID
|
||
// e.IMG_FILE_ID = e.responseText.imgFileID
|
||
// debugger
|
||
// e.ORG_ID = uni.getStorageSync('orgId')
|
||
// e.ID = guid()
|
||
// if (this.listProp != undefined && this.listProp.length > 0) {
|
||
// for (let i = 0; i < this.listProp.length; i++) {
|
||
// e[this.listProp[i]] = this.listPropVal[i]
|
||
// }
|
||
// }
|
||
}
|
||
// else {
|
||
// if (isReturn && !e.IMG_FILE_ID) {
|
||
// return false
|
||
// }
|
||
// }
|
||
})
|
||
|
||
},
|
||
delFile(val, key) {
|
||
// //附件删除 (有bug)
|
||
// this.uFiles.splice(key, 1)
|
||
// this.$refs['fullUpload'].clear(val.name)
|
||
// this.isLoading = false
|
||
|
||
|
||
//wyw 2024-04-17
|
||
// 修改原因 :之前直接把数据删除了,原始数据不能传到后台,这样【删除】无实际效果,只能是数据添加
|
||
//通过判断 CREATER_ID 或 CREATE_TIME 是否有值来判断是否数据库数据
|
||
//显示的时候 判断 IS_DELETED
|
||
if (val.CREATER_ID || val.CREATE_TIME) {
|
||
val.IS_DELETED = true
|
||
this.$refs['fullUpload'].clear(val.name)
|
||
this.isLoading = false
|
||
//下划线 怎么判断删除
|
||
|
||
} else {
|
||
this.uFiles.splice(key, 1)
|
||
this.$refs['fullUpload'].clear(val.name)
|
||
this.isLoading = false
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
<style scoped>
|
||
.upload-plugin {
|
||
width: 100px;
|
||
}
|
||
|
||
.upload-plugin-info {
|
||
width: 82px;
|
||
}
|
||
|
||
.plus-info {
|
||
border: 1px solid #c8c7cc;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding: 30px 0px;
|
||
border-radius: 4px;
|
||
}
|
||
</style>
|
||
<style>
|
||
.list>>>.u-cell__left-icon-wrap {
|
||
width: 100%;
|
||
word-break: break-all;
|
||
}
|
||
</style> |