OfficeApp/subpkg/otherTask/otherTask.vue

177 lines
4.7 KiB
Vue
Raw Normal View History

2023-08-28 18:24:47 +08:00
<template>
2023-08-29 16:02:08 +08:00
<view style="padding-top: 28rpx;padding-bottom: 160rpx;">
2023-08-28 18:24:47 +08:00
<view class="card">
<view class="title">任务名称: 入股任务</view>
<u-line style="margin: 14rpx 0;"></u-line>
<view class="text">阶段类型: 单次</view>
<view class="text" style="color: #FF7C32;">任务金额: 3000</view>
</view>
<view class="card">
<view class="title">任务描述</view>
<u-line style="margin: 14rpx 0;"></u-line>
<view class="text">完成公司分配入股任务时限30日内完成公司分配入股任务时限30日内完成公司分配入股任务时限30日内</view>
</view>
<view class="card">
2023-08-28 19:36:09 +08:00
<view class="title">详情描述</view>
2023-08-28 18:24:47 +08:00
<u-line style="margin: 14rpx 0;"></u-line>
2023-08-29 16:02:08 +08:00
<u--textarea v-model="formData.text" placeholder="请输入内容" placeholderStyle="font-size: 22rpx;" style="font-size: 28rpx;background-color: #eee;min-height: 100px;" autoHeight maxlength="-1"></u--textarea>
<view class="title" style="margin: 16rpx 0;">添加附件</view>
<view class="file">
<view class="file_item" v-for="(item, index) in formData.fileList" :key="'file'+index">
<image class="image" :src="item" @click="priview(index)"></image>
<image class="del" src="/static/icons/delete.png" @click.stop="deleteFile(index)"></image>
</view>
<view class="file_btn" @click="chooseFile"><image src="/static/icons/plus.png"></image></view>
<view class="file_empty" v-for="k in placeholderLength" :key="'empty'+k"></view>
</view>
2023-08-28 18:24:47 +08:00
</view>
2023-08-28 19:36:09 +08:00
<mybtn text="确认提交"></mybtn>
2023-08-28 18:24:47 +08:00
</view>
</template>
<script>
2023-08-29 16:02:08 +08:00
import {
upLoadImage
} from "@/api/file.js"
2023-08-28 18:24:47 +08:00
export default {
data() {
return {
task_id: -1,
formData: {
2023-08-29 16:02:08 +08:00
text: '',
fileList: []
2023-08-28 18:24:47 +08:00
}
};
},
onLoad(options) {
this.task_id = options.task_id;
},
2023-08-29 16:02:08 +08:00
computed:{
// 占位长度
placeholderLength(){
return (this.formData.fileList.length+1)%3==0? 0 : 3-(this.formData.fileList.length+1)%3;
}
},
2023-08-28 18:24:47 +08:00
methods:{
2023-08-29 16:02:08 +08:00
chooseFile(){
uni.chooseImage({
sizeType: ['compressed'],
success: async (res) => {
for (let item of res.tempFiles) {
let res = await upLoadImage({
filePath: item.path,
name: 'file'
});
this.formData.fileList.push(res.data.uri);
}
// this.formData.fileList = [...this.formData.fileList, res.tempFiles]
}
})
},
priview(index){
uni.previewImage({
urls: this.formData.fileList,
current: index,
longPressActions: {
itemList: ['删除'],
itemColor: '#ff0000',
success(e) {
if(e.tapIndex==0)this.deleteFile(e.index);
}
},
})
},
deleteFile(index){
this.formData.fileList.splice(index, 1);
},
2023-08-28 18:24:47 +08:00
navTo (url) {
if(url){
uni.showLoading({
title: '加载中',
mask: true
});
uni.navigateTo({
url: url,
success() {
uni.hideLoading()
}
})
}else Toast('暂未开放')
},
}
}
</script>
<style lang="scss">
.card {
margin: 0 auto;
margin-bottom: 28rpx;
width: 694rpx;
background: #FFFFFF;
border-radius: 14rpx;
padding: 28rpx;
.title {
font-size: 32rpx;
font-weight: bold;
color: #333333;
}
.text {
line-height: 50rpx;
}
2023-08-29 16:02:08 +08:00
.file{
display: flex;
justify-content: left;
flex-wrap: wrap;
&_item{
flex-shrink: 0;
width: 200rpx;
height: 200rpx;
margin: 0 auto;
margin-bottom: 16rpx;
border: 2px solid #ccc;
border-radius: 10rpx;
overflow: hidden;
position: relative;
.image{
width: 100%;
height: 100%;
}
.del{
position: absolute;
height: 40rpx;
width: 40rpx;
top: 10rpx;
right: 10rpx;
}
}
&_btn{
flex-shrink: 0;
width: 200rpx;
height: 200rpx;
margin: 0 auto;
margin-bottom: 16rpx;
border: 2px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
border-radius: 10rpx;
image{
width: 100rpx;
height: 100rpx;
}
}
&_empty{
flex-shrink: 0;
width: 200rpx;
height: 200rpx;
margin: 0 auto;
margin-bottom: 16rpx;
border: 2px solid transparent;
}
}
2023-08-28 18:24:47 +08:00
}
</style>