You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

445 lines
13 KiB

<template>
<cu-custom bgColor="bg-white">
<template #backText>
<uni-icons type="left" size="22" @click="BackPage"></uni-icons>
</template>
<template #right>
<!-- disabled="true" -->
<view class="right_view"><button class="mini-btn" type="primary" size="mini" style="padding: 0px 10px;" @click="publish">发表</button></view>
</template>
</cu-custom>
<view style="padding: 10px 15px;">
<view>
<uni-easyinput type="textarea" :inputBorder="false" v-model="params.content" placeholder="这一刻的想法...."></uni-easyinput>
</view>
<view style="height: 600rpx;">
<sendtoImg @send="params.img_arr = $event" @videourl="video_file1 = $event" :img_arr1="img_arr1" :video_file1="video_file1"></sendtoImg>
</view>
<view>
<view class="icons_view" @click="chooseLocation">
<view style="display: flex;align-items: center;">
<uni-icons type="location" size="30"></uni-icons>
<view style="font-size: 18px;margin-left: 10px;">{{positioningList.content?positioningList.content:'所在位置'}}</view>
</view>
<view><uni-icons type="right" size="20"></uni-icons></view>
</view>
<!-- <view style="display: flex;align-items: center;justify-content: space-between;border-top: 1px solid #e5e5e5;padding: 10px 0px;">
<view style="display: flex;align-items: center;">
<uni-icons type="person" size="30"></uni-icons> <view style="font-size: 18px;"></view>
</view>
<view><uni-icons type="right" size="18"></uni-icons></view>
</view> -->
<view class="icons_view" style="border-bottom: 2px solid #e5e5e5;" @click="toggle">
<view style="display: flex;align-items: center;">
<uni-icons type="person" size="30"></uni-icons> <view style="font-size: 18px;margin-left: 10px;"></view>
</view>
<view style="display: flex;align-items: center;">
<view style="font-size: 18px;color: #a3a3a3;">{{params.privacy==1?'公开':params.privacy==2?'部分可见':params.privacy==3?'私密':'不给谁看'}}</view>
<uni-icons type="right" size="20"></uni-icons>
</view>
</view>
</view>
</view>
<uni-popup ref="popup" background-color="#fff" style="z-index: 999999;">
<view class="popup-content">
<cu-custom bgColor="bg-white">
<template #backText>
<uni-icons type="left" size="22" @click="BackPage1"></uni-icons>
</template>
<template #content>
<view>谁可以看</view>
</template>
<template #right>
<!-- disabled="true" -->
<view class="right_view"><button class="mini-btn" type="primary" size="mini" style="padding: 0px 10px;" @click="complete">完成</button></view>
</template>
</cu-custom>
<view>
<view style="padding: 30rpx 60rpx;">
<radio-group @change="radioChange">
<label>
<view style="display: flex;align-items: center;margin-bottom: 30px;">
<radio value="1" :checked="params.privacy==1" style="transform:scale(0.7)"/>
<view>
<view style="font-size: 30rpx;">公开</view>
<view style="font-size: 22rpx;color: #a3a3a3;">所有朋友可见</view>
</view>
</view>
</label>
<label>
<view style="display: flex;align-items: center;margin-bottom: 30px;">
<radio value="3" :checked="params.privacy==3" style="transform:scale(0.7)" />
<view>
<view style="font-size: 30rpx;">私密</view>
<view style="font-size: 22rpx;color: #a3a3a3;">仅自己可见</view>
</view>
</view>
</label>
<label>
<view style="margin-bottom: 30px;">
<view style="display: flex;align-items: center;">
<radio value="2" :checked="params.privacy==2" style="transform:scale(0.7)" />
<view>
<view style="font-size: 30rpx;">部分可见</view>
</view>
</view>
<view style="padding: 40rpx 60rpx;" v-if="params.privacy==2">
<view @click="editUser">
<view style="color: #004f9f;font-size: 30rpx;">选择朋友</view>
<block v-for="(item,index) in user1" :key="index" v-if="user1.length!==0" style="display: flex;">
<text style="font-size: 22rpx;margin-right: 5px;">{{item.displayName?item.displayName:item.nickname}}</text>
</block>
<view v-else style="font-size: 22rpx;">选中的朋友可见</view>
</view>
</view>
</view>
</label>
<label>
<view>
<view style="display: flex;align-items: center;">
<radio value="4" :checked="params.privacy==4" style="transform:scale(0.7)" />
<view>
<view style="font-size: 30rpx;">不给谁看</view>
</view>
</view>
<view style="padding: 40rpx 60rpx;" v-if="params.privacy==4">
<view @click="editUser1">
<view style="color: #004f9f;font-size: 30rpx;">选择朋友</view>
<block v-for="(item,index) in user2" :key="index" v-if="user2.length!==0" style="display: flex;">
<text style="font-size: 22rpx;margin-right: 5px;">{{item.displayName?item.displayName:item.nickname}}</text>
</block>
<view v-else style="font-size: 22rpx;">选中的朋友不可见</view>
</view>
</view>
</view>
</label>
</radio-group>
</view>
</view>
</view>
</uni-popup>
</template>
<script>
import sendtoImg from '@/components/sendtoImg.vue'
export default {
components: {
sendtoImg
},
data() {
return {
params:{
content:"",
privacy:1,
location:'',
status:1,
img_arr:[],
file_id:"",
user_ids:[],
posts_id:0,
video_file:""
},
video_file1:{},
video_file2:{},
positioningList:{},
user1:[],
user2:[],
img_arr1:[],
bols:false
}
},
created() {
// console.log(this.params.privacy);
this.getLastPosts()
},
onShow() {
if(uni.getStorageSync('selectUser')){
this.user1 = uni.getStorageSync('selectUser')
}
if(uni.getStorageSync('selectUser1')){
this.user2 = uni.getStorageSync('selectUser1')
}
},
methods: {
radioChange(e){
this.params.privacy = +e.detail.value
// console.log(this.params.privacy);
},
toggle() {
this.$refs.popup.open('bottom')
},
complete(){
this.$refs.popup.close()
if(this.params.privacy==2){
this.user2 = [];
uni.removeStorageSync('selectUser');
}else if(this.params.privacy==4){
this.user1 = [];
uni.removeStorageSync('selectUser1');
}else{
this.user1 = [];
this.user2 = [];
uni.removeStorageSync('selectUser');
uni.removeStorageSync('selectUser1');
}
},
BackPage1(){
if(this.bols==false){
this.params.privacy = 1;
this.user1 = [];
this.user2 = [];
uni.removeStorageSync('selectUser');
uni.removeStorageSync('selectUser1');
}
this.$refs.popup.close();
},
editUser(){
if(uni.getStorageSync('selectUser')){
this.user1 = uni.getStorageSync('selectUser')
const list = []
this.user1.forEach((res)=>{
list.push(res.user_id)
})
uni.navigateTo({
url: `/pages/index/userSelection?type=${5}&user_ids=${JSON.stringify(list)}&num=${1}`
})
}else{
uni.navigateTo({
url: `/pages/index/userSelection?type=${5}&num=${1}`
// url: '/pages/index/userSelection?type='+type+'&contact_id=' + this.contact.id
})
}
},
editUser1(){
if(uni.getStorageSync('selectUser1')){
this.user2 = uni.getStorageSync('selectUser1')
const list1 = []
this.user2.forEach((res)=>{
list1.push(res.user_id)
})
uni.navigateTo({
url: `/pages/index/userSelection?type=${6}&user_ids=${JSON.stringify(list1)}&num=${1}`
})
}else{
uni.navigateTo({
url: `/pages/index/userSelection?type=${6}&num=${1}`
// url: '/pages/index/userSelection?type='+type+'&contact_id=' + this.contact.id
})
}
},
transformToArrayObject(arr) {
// 创建空对象
const resultObj = {};
// 遍历数组,用索引作为键
arr.forEach((value, index) => {
resultObj[index] = value;
});
// 将对象包裹在数组中
return [resultObj];
},
BackPage(){
const _this = this
console.log(this.video_file1.url);
if(this.params.content!==''||this.params.img_arr.length!=0||this.video_file1.url){
uni.showModal({
content: '保留此次编辑',
cancelText: '不保留',
confirmText: '保留',
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
_this.params.status = 2;
_this.publish()
} else if (res.cancel) {
_this.user1 = [];
_this.user2 = [];
uni.removeStorageSync('selectUser');
uni.removeStorageSync('selectUser1');
if(_this.params.posts_id){
_this.Delete(_this.params.posts_id)
}else{
uni.navigateBack({
delta: 1
});
}
}
}
});
}else{
uni.showModal({
content: '退出此次编辑?',
cancelText: '取消',
confirmText: '退出',
confirmColor: "red",
success: function (res) {
if (res.confirm) {
_this.user1 = [];
_this.user2 = [];
uni.removeStorageSync('selectUser');
uni.removeStorageSync('selectUser1');
uni.navigateBack({
delta: 1
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
},
Delete(id){
console.log(id);
this.$api.compaApi.Deleteapost({posts_id:id}).then(res => {
uni.navigateBack({
delta: 1
});
})
},
chooseLocation(){
uni.chooseLocation({
success: (res) => {
// console.log('位置名称:' + res.name);
// console.log('详细地址:' + res.address);
// console.log('纬度:' + res.latitude);
// console.log('经度:' + res.longitude);
let message={
type:'location',
status:'going',
content:'[位置] '+res.name,
name:res.name,
latitud: res.latitude+ '+' +res.longitude,
extends:res
};
this.positioningList = message
// this.$emit('send',Object.assign(this.msgItem(), message),false);
}
})
},
getLastPosts(){
this.$api.compaApi.getLastPosts().then(res => {
if(res.code==0&&res.data!==null){
console.log(res);
this.params.content = res.data.content
// this.params.img_arr = res.data.files
this.positioningList.latitud = res.data.location
this.positioningList.content = res.data.location_address
this.params.posts_id = res.data.posts_id
this.params.privacy = res.data.privacy
if(res.data.files[0]&&res.data.files[0].type==1){
this.img_arr1 = res.data.files
}else{
this.img_arr1 = res.data.files
res.data.files.forEach((res1)=>{
this.video_file1 = {url:res1.src,poster:res1.privacy,type:res1.type}
})
}
this.bols = true
if(res.data.privacy==2){
this.user1 = res.data.privacy_user
uni.setStorageSync('selectUser', this.user1);
}else if(res.data.privacy==4){
this.user2 = res.data.privacy_user
uni.setStorageSync('selectUser1', this.user2);
}
console.log(res.data.privacy);
// this.list = res.data
}
})
},
publish(){
let list1 = []
let list2 = []
let listUrl = []
if(this.params.privacy == 2){
this.user1.forEach((res)=>{
list1.push(res.user_id)
})
} else if(this.params.privacy == 4){
this.user2.forEach((res)=>{
list2.push(res.user_id)
})
}
if(this.img_arr1&&this.img_arr1[0]?.type==1){
this.img_arr1.forEach(res=>{
listUrl.push(res.src)
})
}
if(this.params.content==''&&this.params.img_arr.length==0&&this.video_file1.url==undefined){
uni.showToast({title: '文字或图片、视频必须上传一个,并且文字不能是空格',icon:'none'});
return
}
const data = {
privacy: this.params.privacy,
content: this.params.content||'',
status: this.params.status,
location: this.positioningList.latitud || '',
address: this.positioningList.content || '',
img_arr: this.params.img_arr.length==0?listUrl:this.params.img_arr||'',
video_file: this.video_file1.url || '',
poster_file: this.video_file1.poster || '',
user_ids: this.params.privacy == 2 ? list1 : this.params.privacy == 4 ? list2 : [],
posts_id: this.params.posts_id||''
}
// console.log('传值',data);
this.$api.compaApi.wechatMomentsadd(data).then(res => {
// this.list = res.data
// console.log(res);
if(res.code==0){
list1 = []
list2 = []
if(this.params.status==2){
uni.showToast({title: '保存成功'});
}else{
uni.showToast({title: '添加成功'});
}
uni.navigateBack({
delta: 1
});
}
})
}
}
}
</script>
<style scoped lang="scss">
.right_view{
height: 30px;
margin-right: 10px;
}
uni-button[disabled][type='primary']{
background-color:#e7e7e7;
color: #c6c6c6;
}
uni-button:after{
border: 0px;
}
::v-deep .bg-white{
background-color: #f1f1f1 !important;
}
::v-deep .uni-easyinput__content{
background-color: #f1f1f1 !important;
}
.icons_view{
display: flex;
padding: 10px 10px;
align-items: center;
border-top: 2px solid #e5e5e5;
justify-content: space-between;
}
::v-deep .uni-modal__bd{
color: #000;
}
.popup-content {
height: 100vh;
align-items: center;
background-color: #fff;
justify-content: center;
}
</style>