387 lines
8.7 KiB
Vue
Raw Normal View History

<template>
<view class="fullHeight addNoticePage">
<!-- <view class="add-header">
<view class="backBtn" @click="back">
<uni-icons2 type="back" color="#fff" size="26"/>
</view>
新建通知
</view> -->
<view class="fixedheader">
<headers :themeType="true" :showBack="true">
<view class="headerName">
新建通知
</view>
</headers>
</view>
<scroll-view class="smallHeight" :style="{ 'padding-top': statusBarHeight + 44 + 'px' }" scroll-y>
<view class="add-from">
<view class="add-item">
<view class="input-box">
<input type="text" placeholder="请输入标题" v-model="noticeTitle"/>
</view>
</view>
<view class="content">
<span class="content-lable">内容</span>
<!-- <view class="textarea-box">
<textarea :value="noticeContent"/>
</view> -->
<view class="textarea-box">
<input type="text" placeholder="请输入内容" v-model="noticeContent"/>
</view>
</view>
<view class="add-item">
<view class="add-item">
<view class="project-select">
<view class="icon-image">
<image src="/static/workstation/icon_allot_bg.png"></image>
发送给
</view>
<view class="project-picker">
<view class="people-text">{{allotPeople}}</view>
<view class="uni-input" @click="toPeopleList">
<uni-icons2 type="arrowright" color="#6C7178" size="20"/>
</view>
<!-- {{sendPeople}} -->
<!-- <view class="uni-list-cell-db">
<picker :range="peopleList" range-key="name" :value="sendPeople" @change="bindPeopleChange">
<view class="uni-input">
<uni-icons2 type="arrowright" color="#6C7178" size="20"/>
</view>
</picker>
</view> -->
</view>
</view>
</view>
</view>
<view class="add-item">
<view class="project-select" @click="selectFile">
<view class="icon-image">
<image src="/static/workstation/icon_file_address_bg.png"></image>
添加附件
</view>
<!-- <view class="input project-upload" @click="selectFile2(index)">
</view> -->
</view>
</view>
<view class="project-filelist" v-if="fileList.length > 0">
<ul>
<li v-for="(item,index) in fileList" :key="index">
{{item.name}}
<icon type="cancel" size="16" @click="removeFive(index)"/>
<!-- <image :src="item.url" @click="previewImage(item.url)"/></image> -->
<!-- <uni-icons2 class="icon-close" type="close" color="#6C7178" size="12"></uni-icons2> -->
</li>
</ul>
</view>
</view>
<view class="submit-btn" @click="submitForm">提交通知</view>
</scroll-view>
<levitatedsphere :x="100" :y="80"></levitatedsphere>
</view>
</template>
<script>
import levitatedsphere from "@/components/levitatedsphere/levitatedsphere.vue"
import headers from '../../../components/headers/headers.vue'
export default {
data(){
return{
noticeTitle: '',
noticeContent: '',
fileList: [],
allotPeople: "",
checkPeopleList: [],
noticePeopleId: [],
fileUrl: '',
statusBarHeight: 0
}
},
components:{
headers
},
onShow(){
this.projectSn = JSON.parse(uni.getStorageSync('userInfo')).sn;
this.statusBarHeight=uni.getStorageSync('systemInfo').statusBarHeight;
this.userId = JSON.parse(uni.getStorageSync('userInfo')).userId
if(uni.getStorageSync('attendee')){
this.checkPeopleList = JSON.parse(uni.getStorageSync('attendee'))
let arr = []
this.noticePeopleId = []
this.checkPeopleList.forEach(item=>{
arr.push(item.workerName)
this.noticePeopleId.push({
noticeUser: item.userId
})
})
this.allotPeople = arr.join('')
}
},
methods:{
back(){
uni.navigateBack({
url: ''
})
},
selectFile(){
var that = this
uni.chooseImage({
count: 5 - that.fileList.length,
success(res) {
const tempFilePaths = res.tempFilePaths;
console.log(res)
let data = {
name: res.tempFiles[0].name,
url: tempFilePaths[0]
};
// that.fileList.push(data)
// console.log(that.fileList)
uni.uploadFile({
url: that.url_config + 'upload/image', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'files',
success: (uploadFileRes) => {
console.log(uploadFileRes)
let data = {
name: JSON.parse(uploadFileRes.data).data[0].filename,
url: JSON.parse(uploadFileRes.data).data[0].imageUrl
};
that.fileList.push(data)
}
});
}
})
},
previewImage(url){
let imgArr = [];
imgArr.push(url);
//预览图片
uni.previewImage({
urls: imgArr,
current: imgArr[0]
});
},
removeFive(index){
this.fileList.splice(index, 1)
},
toPeopleList(){
uni.navigateTo({
url: '../workstationIndex/peopleList'
})
},
submitForm(){
// console.log(1)
let data = {}
if(!this.noticeTitle){
uni.showToast({
title: '标题名称不能为空!',
icon: "none",
duration: 2000
});
return;
} else {
data.noticeTitle = this.noticeTitle
}
if(!this.noticeContent){
uni.showToast({
title: '内容不能为空!',
icon: "none",
duration: 2000
});
return;
} else {
data.noticeContent = this.noticeContent
}
if(this.noticePeopleId.length > 0){
data.userList = this.noticePeopleId
} else {
uni.showToast({
title: '请选择通知人!',
icon: "none",
duration: 2000
});
return;
}
let fileArr = []
for(let i = 0; i<this.fileList.length; i++){
fileArr.push(this.fileList[i].url)
}
data.projectSn = this.projectSn
data.fileUrl = fileArr.length > 0 ? fileArr.join(',') : ''
data.createUser = this.userId
// console.log(data)
this.sendRequest({
url: "xmgl/workstationNotice/add",
data: data,
method: "POST",
success(res){
console.log(res)
if(res.code){
uni.navigateTo({
url: './worfStationNotice'
})
}
}
})
}
}
}
</script>
<style lang="scss" scoped>
.fixedheader{
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 2;
}
.smallHeight{
height: 100%;
box-sizing: border-box;
}
.addNoticePage{
position: relative;
background: #f6f6f6;
box-sizing: border-box;
.add-header{
height: 92rpx;
width: 100%;
background: #127FEC;
color: #fff;
display: flex;
align-items: center;
.backBtn{
width: 60rpx;
text-align: right;
}
}
}
.add-item{
background-color: #fff;
border-bottom: 1px solid rgba(246, 246, 246, 1);
height: 100rpx;
display: flex;
align-items: center;
width: 100%;
}
.input-box{
width: 100%;
padding: 0 30rpx;
box-sizing: border-box;
}
.content{
background-color: #fff;
border-bottom: 1px solid rgba(246, 246, 246, 1);
align-items: center;
width: 100%;
padding: 30rpx;
box-sizing: border-box;
}
.content-lable{
margin-bottom: 32rpx;
display: block;
}
.textarea-box{
border: 1px solid #E1E1E4;
width: 692rpx;
height: 100rpx;
border-radius: 16rpx;
// :deep( uni-textarea){
// width: 100%;
// height: 100%;
// padding: 20rpx;
// box-sizing: border-box;
// }
:deep( uni-input){
height: 100rpx;
line-height: 100rpx;
padding: 0 20rpx;
box-sizing: border-box;
}
}
.project-select{
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 100%;
padding: 0 30rpx;
box-sizing: border-box;
.icon-image{
display: flex;
align-items: center;
color: #979797;
font-size: 28rpx;
white-space: nowrap;
image{
width: 36rpx;
height: 36rpx;
margin-right: 30rpx;
}
}
.project-picker{
display: flex;
width: 100%;
align-items: center;
justify-content: flex-end;
.uni-list-cell-db{
margin-left: 20rpx;
}
}
}
.project-filelist{
background-color: #fff;
border-bottom: 1px solid rgba(246, 246, 246, 1);
width: 100%;
padding: 0 20rpx;
box-sizing: border-box;
ul{
// display: flex;
// align-items: center;
list-style: none;
padding: 20rpx;
// flex-wrap: wrap;
li{
display: flex;
align-items: center;
height: 48rpx;
justify-content: space-between;
// position: relative;
// image{
// width: 100rpx;
// height: 100rpx;
// margin: 0 10rpx;
// }
// .icon-close{
// position: absolute;
// right: 8rpx;
// top: -8rpx;
// }
}
}
}
.submit-btn{
width: 100%;
height: 94rpx;
background: #127FEC;
color: #fff;
text-align: center;
line-height: 94rpx;
position: absolute;
bottom: 0;
left: 0;
}
.people-text{
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
width: 400rpx;
text-align: right;
}
</style>