305 lines
7.0 KiB
Vue
305 lines
7.0 KiB
Vue
<template>
|
||
<view class="list-body">
|
||
<uni-nav-bar @clickLeft="goBack()" class="nav-bar" height="110rpx" leftWidth="400rpx" leftText="资质列表"
|
||
leftIcon="left" border backgroundColor="#2cade8" color="#fff" fixed statusBar shadow></uni-nav-bar>
|
||
<view class="content">
|
||
<view class="item-wrap" v-for="(val,index) in rpjFileList" :key="val.id">
|
||
<view class="duty-item">
|
||
<view class="top-info">
|
||
<view class="info-title" v-if="val.file_cate_">{{val.file_cate_.name}}</view>
|
||
</view>
|
||
<view class="center-info" v-if="val.files_.length>0">
|
||
<view class="info-details">上传文件:</view>
|
||
<view class="info-details" v-for="val in val.files_">
|
||
<a :href="val.file">{{val.name}} </a>
|
||
</view>
|
||
</view>
|
||
<view class="center-info" v-else>
|
||
<view class="info-details">暂无上传文件</view>
|
||
</view>
|
||
<!-- <view class="bottom-btns">
|
||
<view class="uploadFile" @click="rpjHandle(val,'show')">
|
||
<image src="../../../static/common/addIcon.png" mode=""></image>
|
||
上传
|
||
</view>
|
||
</view> -->
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="btn" v-if="showBtns">
|
||
<button type="primary" class="save-btn" @click="nextStep">下一步</button>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
/* 这是条件编译,意思是:只在APP中出现如下的代码,小程序是不支持的 */
|
||
// #ifdef APP-PLUS
|
||
var file = uni.requireNativePlugin('TX-File');
|
||
const plug = uni.requireNativePlugin("Html5app-filePicker");
|
||
const plugin = uni.requireNativePlugin("K-ChooseFilesModule");
|
||
// #endif
|
||
|
||
export default {
|
||
name: "rpjFiles",
|
||
watch: {
|
||
/* 文件下载监听 */
|
||
lsDownLoadImg(newVal, oldVal) {
|
||
let val = newVal;
|
||
if (String(newVal).indexOf(",") > -1) {
|
||
val = String(newVal).split(",")[0] === "true";
|
||
}
|
||
this.$set(this.downFiles, 'downLoadImg' + this.lsFileId, val)
|
||
},
|
||
/* 文件下载监听 */
|
||
principal(newVal, oldVal) {
|
||
if (!this.itemId) {
|
||
if (oldVal.roleId === undefined && newVal.roleId !== undefined) {
|
||
this.formData.itemInfo.applicationDept = newVal.deptId
|
||
}
|
||
}
|
||
},
|
||
},
|
||
data() {
|
||
return {
|
||
formData: {
|
||
name: '',
|
||
},
|
||
head: {
|
||
Authorization: "Bearer " + this.vuex_token
|
||
},
|
||
showBtns: false,
|
||
rpjFileList: [],
|
||
result: [],
|
||
// 文件进度
|
||
imgFlag: false,
|
||
//文件下载
|
||
downFiles: {},
|
||
uploadImgsList: [],
|
||
fileList :[],
|
||
rpj:'',
|
||
rparty:'',
|
||
rpjName:''
|
||
|
||
}
|
||
},
|
||
|
||
onLoad(params) {
|
||
if (params.rpj) {
|
||
this.rpj = params.rpj;
|
||
this.rparty = params.rparty;
|
||
this.rpjName = params.rpjName;
|
||
}
|
||
this.showBtns = true;
|
||
},
|
||
onShow() {
|
||
this.getHeader();
|
||
this.getRpjLists();
|
||
},
|
||
methods: {
|
||
getHeader() {
|
||
this.header = {
|
||
Authorization: "Bearer " + this.vuex_token
|
||
}
|
||
},
|
||
//获取
|
||
getRpjLists() {
|
||
let that = this;
|
||
that.$u.api.rpjFileList({
|
||
rpj: that.rpj,
|
||
page: 0
|
||
}).then(res => {
|
||
that.rpjFileList = res;
|
||
debugger;
|
||
console.log(res)
|
||
|
||
})
|
||
},
|
||
/* 文件删除 */
|
||
delFile(index) {
|
||
this.formData.leaveApplicationFiles.splice(index, 1);
|
||
},
|
||
/* */
|
||
showValue(res, file) {
|
||
debugger;
|
||
console.log(res)
|
||
console.log(file)
|
||
console.log(this.uploadImgsList)
|
||
},
|
||
rpjHandle() {
|
||
let that = this;
|
||
debugger;
|
||
console.log(this.vuex_token)
|
||
uni.chooseImage({
|
||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||
sourceType: ['album', 'camera '], //从相册选择
|
||
success: function(res) {
|
||
|
||
console.log(JSON.stringify(res.tempFilePaths));
|
||
let tempFilePaths = res.tempFilePaths;
|
||
tempFilePaths.forEach((item) => {
|
||
uni.uploadFile({
|
||
url: 'http://1.203.161.103:2800/api/file/', //服务器地址
|
||
fileType: "image", //ZFB必填,不然报错
|
||
filePath: item, //这个就是我们上面拍照返回或者先中照片返回的数组
|
||
name: 'file',
|
||
// 请求头一定要加,否则 iOS 图片上传会失败
|
||
header: {
|
||
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundarymlJpQcllstnJXOES',
|
||
'Authorization': 'Bearer ' + that.vuex_token,
|
||
|
||
},
|
||
success: (uploadFileRes) => {
|
||
|
||
}
|
||
});
|
||
})
|
||
}
|
||
});
|
||
},
|
||
uploads() {
|
||
const _this = this;
|
||
return Promise.all(_this.uploadImgsList.map(item => _this.uploadImage(item.picturePath))).then(res => {
|
||
return res.map(item => ({
|
||
fileName: item.fileName,
|
||
filePath: item.url
|
||
}))
|
||
})
|
||
},
|
||
uploadImage(url) {
|
||
return new Promise(async (resolve, reject) => {
|
||
uni.uploadFile({
|
||
url: this.$u.api.uploadFile, //后台地址
|
||
filePath: url,
|
||
name: 'file',
|
||
success: (uploadFileRes) => {
|
||
resolve(JSON.parse(uploadFileRes.data));
|
||
}
|
||
})
|
||
})
|
||
},
|
||
//提交
|
||
async submitFlood() {
|
||
let photoList = await this.uploads();
|
||
},
|
||
|
||
nextStep() {
|
||
let that = this;
|
||
let params = `?rpj=${that.rpj}&rparty=${that.rparty}&rpjName=${that.rpjName}`;
|
||
uni.navigateTo({
|
||
url: '/pages/workSpace/rpj/rpjWorkers' + params
|
||
})
|
||
let files = this.$refs.uUpload.lists.filter(val => {
|
||
return val.progress == 100;
|
||
})
|
||
let sData = [];
|
||
// 如果您不需要进行太多的处理,直接如下即可
|
||
// files = this.$refs.uUpload.lists;
|
||
for (var i = 0; i < files.length; i++) {
|
||
if (files[i].response) {
|
||
sData.push(files[i].response.data.id)
|
||
} else {
|
||
for (var m = 0; m < this.fileList.length; m++) {
|
||
if (this.fileList[m].url == files[i].url) {
|
||
sData.push(this.fileList[m].id)
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
},
|
||
goBack() {
|
||
uni.navigateBack({
|
||
delta: 1
|
||
})
|
||
},
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style>
|
||
>>>.uni-navbar__header,
|
||
>>>.uni-status-bar {
|
||
background-image: linear-gradient(90deg, #164cc3 0%, #2c6fd9 100%), linear-gradient(#e60012, #e60012) !important;
|
||
}
|
||
|
||
.list-body {
|
||
background-color: #f3fbff;
|
||
padding-bottom: 113px;
|
||
}
|
||
|
||
.content {
|
||
padding: 14rpx;
|
||
}
|
||
|
||
.item-wrap {
|
||
margin-bottom: 14rpx;
|
||
}
|
||
|
||
.duty-item {
|
||
width: 720rpx;
|
||
background-color: #ffffff;
|
||
border-radius: 10rpx;
|
||
margin: 0 auto;
|
||
padding: 24rpx 21rpx;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.info-title {
|
||
font-family: PingFang-SC-Medium;
|
||
font-size: 30rpx;
|
||
line-height: 72rpx;
|
||
color: #3d3d3d;
|
||
flex: 1;
|
||
}
|
||
|
||
.right-time {
|
||
font-size: 24rpx;
|
||
line-height: 72rpx;
|
||
color: #ababab;
|
||
}
|
||
|
||
.center-info {
|
||
padding-bottom: 30rpx;
|
||
border-bottom: 1rpx solid #eeeeee;
|
||
}
|
||
|
||
.info-details {
|
||
font-size: 28rpx;
|
||
line-height: 40rpx;
|
||
color: #5b5b5b;
|
||
}
|
||
|
||
.bottom-btns {
|
||
text-align: center;
|
||
font-family: PingFang-SC-Medium;
|
||
font-size: 28rpx;
|
||
line-height: 83rpx;
|
||
}
|
||
|
||
.uploadFile {
|
||
color: #2c6fd9;
|
||
}
|
||
|
||
.uploadFile image {
|
||
width: 26rpx;
|
||
height: 26rpx;
|
||
margin-right: 10rpx;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.btn {
|
||
margin: auto;
|
||
box-shadow: 0upx 5upx 10upx rgba(0, 0, 0, 0.4);
|
||
width: 70%;
|
||
}
|
||
|
||
.save-btn {
|
||
height: 80rpx;
|
||
color: #fff;
|
||
font-size: 30upx;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
</style>
|