387 lines
8.7 KiB
Vue
387 lines
8.7 KiB
Vue
|
|
<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>
|