postCon.vue 8.76 KB
<template>
	<view class="page">
		<!-- 反馈内容 -->
		<view class="feedback-data">
			<view class="titleall-box">
				<view class="titleall-left">
					<view class="titleall-left-line"></view>填写党建信息
				</view>
			</view>
			<uni-forms ref="valiForm" :rules="rules" :modelValue="valiFormData" style="width: 96%;margin: 0 auto;">
				<uni-forms-item label="标题" required name="title">
					<uni-easyinput v-model="valiFormData.title" placeholder="请输入" />
				</uni-forms-item>
				<uni-forms-item label="摘要" required name="subTitle">
					<uni-easyinput v-model="valiFormData.subTitle" placeholder="请输入" />
				</uni-forms-item>
				<uni-forms-item label="详细内容">
					<uni-easyinput type="textarea" v-model="valiFormData.bodyContent" placeholder="请输入" />
				</uni-forms-item>
			</uni-forms>
			<view class="example-body">
				<uni-file-picker limit="9" @select="select" title="信息图片"></uni-file-picker>
			</view>
			<view class="isNotice" style="display: flex; align-items: center; margin-top: 20rpx;justify-content: space-between;" >
				<view class="lef" style="margin-left: 30rpx;">
					已选择<span>{{companysId.length}}</span>家企业
				</view>
				<view class="rig" @click="toTellInfo()" style="display: flex;align-items: center;">
					<text>选择企业</text>
					<view class="more-content">
						<view class="more-content-img">
							<image src="../../static/right2.png"></image>
						</view>
					</view>
				</view>
			</view>
		</view>

		<!-- 提交 -->
		<view v-if="have" class="submit-btn" @click="submitContent('valiForm')">
			<text>发布</text>
		</view>
		<view v-else class="submit-btn" @click="updateEvent('valiForm')">
			<text>保存</text>
		</view>
	</view>
</template>

<script>
	import {
		data
	} from '../../uview-ui/libs/mixin/mixin';
	import request from '@/utils/request.js'
	import utils from '../../service/utils';
	export default {
		data() {
			return {
				userCode: {},
				// 选择图片路径
				filePath: [],
				uploadPath: [],
				type: "",
				lastModifyUserId: '',
				// 校验表单数据
				valiFormData: {
					title: '',
					bodyContent: '',
					subTitle: '',
				},
				// 通知信息标题
				noticeTitle:'',
				// 通知详情
				noticeDesc:'',
				creater: '',
				rules: {
					title: {
						rules: [{
							required: true,
							errorMessage: '不能为空'
						}]
					},
					subTitle: {
						rules: [{
							required: true,
							errorMessage: '不能为空'
						}]
					},
				},
				baseUrl: "http://deyanggaoxin.fengshiyun.com",
				// 判断是否传了id
				isId: '',
				have: false,
				detailData: [],
				// 需要通知的公司的id
				companysId: [],
				tellInfo:[]
			};

		},
		// onShow() {
		// 	this.getType()
		// },
		onUnload() {
			uni.$off('idInfo')
			uni.$off('tellInfo')
		},
		onLoad(options) {
			console.log("options", options)
			uni.$on('idInfo', res => {
				console.log("选择公司页面返回的公司ID", res)
				if(res.length > 0)
				this.companysId = res
			})
			uni.$on('tellInfo', res => {
				console.log("tell信息", res)
				if(res.length > 0)
				this.tellInfo = res
			})
			if (JSON.stringify(options) == "{}") {
				this.have = true
			} else {
				this.isId = JSON.parse(options.data)
				console.log("Id", this.isId)
				this.getConDetail(this.isId)
			}
			this.getUser()
			let user = uni.getStorageSync('user')
			this.lastModifyUserId = user.userInfo.userId

		},
		methods: {
			// 获取上传状态
			select(e) {
				console.log('选择文件:', e)
				this.filePath = e.tempFilePaths
			},
			// 跳转到选择通知企业页面
			toTellInfo() {
				uni.navigateTo({
					url: '/pages/tellInfo/tellInfo'
				})
			},
			// 获取用户信息
			getUser() {
				if (uni.getStorageSync('user')) {
					this.userCode = uni.getStorageSync('user').userInfo
					// this.userInfo = this.userCode.userAccount
					// this.userInfo = '123456'
					console.log('用户已登录!', this.userCode)
				} else {
					uni.showToast({
						title: '请登录',
						icon: 'none'
					})
					setTimeout(() => {
						uni.reLaunch({
							url: '/pages/login/index'
						})
					})
				}
			},
			// 提交内容
			submitContent(ref) {
				let that = this
				this.$refs[ref].validate().then(res => {
					console.log('success', res);
					uni.showToast({
						title: `校验通过`
					})

					this.uploadPath = []
					for (let i = 0; i < this.filePath.length; i++) {
						uni.uploadFile({
							url: "http://deyanggaoxin.fengshiyun.com/api/file/Uploader/1",
							filePath: this.filePath[i],
							name: 'file',
							success: (res) => {
								console.log(JSON.parse(res.data))
								let data = JSON.parse(res.data).data
								console.log(data)
								this.uploadPath.push(data)
							}
						})
					}
					console.log('需要', this.uploadPath)
					setTimeout(function() {
						that.postAll()
					}, 1500)
				})
			},

			// 上传所有
			postAll() {
				console.log("进入POST")
				let that = this
				if (that.uploadPath) {
					console.log('jinru')
					// console.log(uni.getStorageSync('token'))
					var info = {
						tItle: that.valiFormData.title,
						content: that.valiFormData.bodyContent,
						creatorUserId: that.userCode.userId,
						summary: that.valiFormData.subTitle,
						image: that.uploadPath,
					}
					console.log(info)
					this.API.sc(info).then(res => {
						console.log("1111", res);
						console.log("res", res);
						if (res.code == 200) {
							console.log("上传后的值", res)
							if(this.companysId.length > 0){
								this.tellNotice(res.data.Id)
							}
							uni.showToast({
								icon: "success",
								title: "发布成功!"
							}).then(() => {
								uni.navigateTo({
									url: '/pages/construct/construct'
								})
							})
						}
					}).catch((err) => {
						console.log(err)
					})
				}
				
				
			},
			// /**
			//  * 反馈类型
			//  * @param {Object} 
			//  */
			// FeedbackTypeCh(val) {
			// 	console.log(val);
			// 	this.TypeIndex = val.detail.value;
			// }
			// 进行通知
			tellNotice(id){
				// 进行通知
				request({
					url:'/api/extend/demo/SendMessageByApp',
					method:'post',
					data:{
						title:this.tellInfo[0],
						companys:this.companysId,
						desc:this.tellInfo[1],
						reid:id,
						type:'党建通知',
						link:'/pages/conDetail/conDetail',
						fangshi:'通知'
					}
				}).then(res=>{
					console.log('通知结果',res)
				})
			},
			// 获取信息
			getConDetail(id) {
				let that = this
				let currentId = id
				console.log(currentId)
				that.API.getConstructDetail(currentId).then(res => {
					console.log(res)
					let createTime = utils.formatTime(res.data.creatorTime)
					res.data.creatorTime = createTime
					that.detailData = res.data
					console.log(that.detailData)
					this.valiFormData.title = that.detailData.tItle
					this.valiFormData.subTitle = that.detailData.summary
					this.valiFormData.bodyContent = that.detailData.content
				})
			},

			// 信息更新
			updateEvent(ref) {
				let that = this
				this.$refs[ref].validate().then(res => {
					console.log('success', res);
					uni.showToast({
						title: `校验通过`
					})

					this.uploadPath = []
					for (let i = 0; i < this.filePath.length; i++) {
						uni.uploadFile({
							url: "http://deyanggaoxin.fengshiyun.com/api/file/Uploader/1",
							filePath: this.filePath[i],
							name: 'file',
							success: (res) => {
								console.log(JSON.parse(res.data))
								let data = JSON.parse(res.data).data
								console.log(data)
								this.uploadPath.push(data)
							}
						})
					}
					console.log('需要', this.uploadPath)
					setTimeout(function() {
						that.updateData()
					}, 1500)
				})
			},
			// 更新接口
			updateData() {
				let that = this
				if (that.uploadPath) {
					console.log('jinru')
					// console.log(uni.getStorageSync('token'))
					var info = {
						tItle: that.valiFormData.title,
						content: that.valiFormData.bodyContent,
						creatorUserId: that.userCode.userId,
						summary: that.valiFormData.subTitle,
						image: that.uploadPath,
						id: this.isId
					}
					console.log(info)
					this.API.modifyCon(info).then(res => {
						console.log("1111", res);
						console.log("res", res);
						if (res.code == 200) {
							console.log("上传后的值", res)
							uni.showToast({
								icon: "success",
								title: "更新成功!"
							}).then(() => {
								uni.navigateTo({
									url: "/pages/construct/construct"
								})
							})
						}
					}).catch((err) => {
						console.log(err)
					})
				}
			}
		},
	}
</script>

<style scoped lang="scss">
	@import 'Feedback.scss';
	.more-content{
		display: flex;
		align-items: center;
		image{
			width: 100rpx;
			height: 100rpx;
			border-radius: 100%;
		}
		.more-content-img {
			image {
				width: 24rpx;
				height: 24rpx;
			}
		}
	}
</style>