创新实训——飞讯(十)

目录

工作日志与问卷

一、工作日志

1.1工作日志

1.2创建/修改工作日志

1.3删除日志

二、问卷

2.1设计问卷

 2.2填写问卷


 工作日志与问卷

我负责工作日志和问卷相关的样式设计,与后端数据库的交互交由队长负责。

一、工作日志

1.1工作日志

左边包括时间、编辑与删除按钮,右部分包括标题和详细内容。

部分样式如下,及效果图。

<view class="main">
	<view class="log" v-for="(item,index) in userList" :key="index">
		<view>
			<view class="time">{{item.time}}</view>
			<view class="btn">
				<view class="edit-btn" @tap="editlog(item.id,item.title,item.details)">编辑</view>
				<view class="delete-btn" @tap="deletelog(item.id)">删除</view>
			</view>
			
		</view>
		

		<view class="log-content">
			<view class="title">{{item.title}}</view>
			<view class="details">{{item.details}}</view>
		</view>
	</view>
</view>


.log-content{
	margin-top: 20rpx;
	
	.title{
		padding-left: 10rpx;
		border-left: 3px solid $uni-color-success;
		font-size: 40rpx;
		font-weight: 600;
		
	}
	.details{
		margin-top:10rpx;
		padding-left: 10rpx;
		border-left: 3px dotted $uni-color-success;
		display: flex;
		align-items: center;
		padding-bottom: 20rpx;
		
		font-size: 34rpx;
		margin-right: 20rpx;
		text-indent:2em;
		border-bottom: 1px solid $uni-border-color;
	}
}

1.2创建/修改工作日志

通过右上角添加日志的按钮和每个日志左边的的编辑按钮,会向创建/修改日志传递不同参数,加载时据此展示不同界面:

onLoad:function(e){
	console.log(e);
	this.logid=e.logid;
	this.userid = e.userid;
	if(this.logid > 0){
		this.logTitle=e.logTitle;
		this.logContent=e.logContent;
	}
},

 主界面用uni组件简单布置了标题和内容:

<view class="main" >
	<uni-forms labelPosition="top">
		<uni-forms-item label="标题">
			<uni-easyinput v-model="logTitle" placeholder="请输入标题" />
		</uni-forms-item>
		<uni-forms-item label="内容" >
			<uni-easyinput type="textarea" v-model="logContent" placeholder="请输入内容" />
		</uni-forms-item>
	</uni-forms>
	
	<view class="logconfirm">
		<view class="confirm-btn" @tap="logconfirm">确 定</view>
	</view>
</view>



.main{
	padding-top: 88rpx;
	padding-left: 20rpx;
	padding-right: 20rpx;
	
	
	.logconfirm{
		display: flex;
		justify-content: center;
		width: 100%;
		font-size: 40rpx;
		color:white;
		.confirm-btn{
			padding: 10rpx 20rpx 10rpx 20rpx;
			background-color: $uni-color-success;
			border-radius: 30rpx;
		}
		
	}
}

1.3删除日志

点击删除按钮弹出提示框,点击确认后调用相应函数进行删除。

<view>
	<uni-popup ref="deleteConfirmAsk" type="dialog">
		<uni-popup-dialog type="error" cancelText="取消" confirmText="确认" content="确认删除?" @confirm="deleteConfirm"></uni-popup-dialog>
	</uni-popup>
</view>


deletelog:function(id){
				this.$refs.deleteConfirmAsk.open();
				this.logidToDel=id;
			},

二、问卷

2.1设计问卷

根据项目内对问卷数据的设计,在首行放置了三个按钮点击添加相应题型,并可以增加、删除题目和选项,其中选择题选项至少要有两个,故当选项数量不大于2时,选项的“删除”按钮不出现。

<view class="choose" v-if="item.type!='Input'">
	<view class="title">
		<view class="questionid" v-if="item.type=='Radio'">{{index+1}}(单选)</view>
		<view class="questionid" v-if="item.type=='Checkbox'">{{index+1}}(多选)</view>
		<input placeholder="请输入题目" class="quextiontext"  v-model="item.text"></input>
		<view class="deletequestion" @tap="deletequestion(index)">删除</view>
	</view>
	<view class="options" v-for="(optionitem,optionindex) in item.optionList" :key="optionindex">
		<input :placeholder="'请输入选项'+(optionindex+1)+'描述'" class="optiontext" v-model="optionitem.text"></input>
		<view class="addoption" v-if="optionindex==item.optionList.length-1" @tap="addoption(index)">新增</view>
		<view class="deleteoption" v-if="item.optionList.length>2" @tap="deleteoption(index,optionindex)">删除</view>
	</view>
</view>

 2.2填写问卷

考虑到问卷填写者的便利性,新建一个网页项目用以填写问卷。调用了uniapp的radio、checkbox和textarea组件。

	<view class="content">
		<view class="box-bg">
			<uni-nav-bar shadow left-icon="left" title="问卷填写" />
		</view>
		
		<view class="questionnaireName">
			{{name}}
		</view>
		
		<view v-for="(item,index) in questions" :key="index">
			<view class="choose" v-if="item.type=='Radio'">
				<view class="title">
					<view class="questionid" >{{index+1}}(单选)</view>
					<view class="quextiontext">
						<view>{{item.text}}</view>
					</view>
				</view>
				
				<radio-group @change="radioChange($event,index)">
					<label class="uni-list-cell" v-for="(optionitem,optionindex) in item.options" :key="optionindex" >
						<view>
							<radio :value="optionitem.text"/>
						</view>
						<view>{{optionitem.text}}</view>
					</label>
				</radio-group>
			</view>
			
			<view class="choose" v-if="item.type=='Checkbox'">
				<view class="title">
					<view class="questionid">{{index+1}}(多选)</view>
					<view class="quextiontext">
						<view>{{item.text}}</view>
					</view>
				</view>
				<view class="uni-list">
					<checkbox-group @change="checkboxChange($event,index)">
						<label class="uni-list-cell" v-for="(optionitem,optionindex) in item.options" :key="optionindex">
							<view>
								<checkbox :value="optionitem.text"/>
							</view>
							<view>{{optionitem.text}}</view>
						</label>
					</checkbox-group>
				</view>
			</view>
			
			
			<view class="input" v-if="item.type=='Input'">
				<view class="title">
					<view class="questionid">{{index+1}}(主观)</view>
					<view class="quextiontext">{{item.text}}</view>
				</view>
				<view class="textarea">
					<textarea placeholder="请输入答案" @input="inputChange($event,index)"/>
				</view>
			</view>
			
		</view>
		
		<view class="submit-btn" @tap="confirmQ">
			<view class="text">提交</view>
		</view>
	</view>
radioChange: function(e,index) {
	this.questions[index].answer=[];
	let ans = {
		content:e.detail.value,
	}
	this.questions[index].answer.push(ans);
},
checkboxChange: function(e,index) {
	this.questions[index].answer=[];
	for(let i=0;i<e.detail.value.length;i++){
		let ans = {
			content:e.detail.value[i],
		}
		this.questions[index].answer.push(ans);
	}
},
inputChange:function(e,index){
	this.questions[index].answer=[];
	let ans = {
		content:e.detail.value,
	}
	this.questions[index].answer.push(ans);
},
.questionnaireName{
	font-size: 50rpx;
	padding:10rpx 40rpx 10rpx 40rpx;
	text-align: center;
}

.choose{
	padding: 10rpx 10rpx 20rpx 10rpx;
	border: 2px solid $uni-border-color;
	margin:20rpx 20rpx 10rpx 20rpx;
	.title{
		.questionid{
			text-align: center;
			width:120rpx;
		}
		.quextiontext{
			text-indent:2em;
			margin-left: 20rpx;
		}		
	}
	.options{
		padding-left: 30rpx;
		margin-top: 10rpx;
		display: flex;
		.optionid{
			padding-right: 20rpx;
		}
	}
}
.checkbox-btn{
	justify-content: flex-start;
}
.input{
	padding: 10rpx 10rpx 20rpx 10rpx;
	border: 2px solid $uni-border-color;
	margin:20rpx 20rpx 10rpx 20rpx;
	.title{
		.questionid{
			text-align: center;
			width:120rpx;
		}
		.quextiontext{
			text-indent:2em;
			margin-left: 20rpx;
		}		
	}
	.textarea{
		margin:10rpx 20rpx 0rpx 20rpx;
		padding: 10rpx 10rpx 10rpx 10rpx;
		border: 1px solid $uni-border-color;
	}
	input{
		width:100%;
		border-bottom: 1px solid grey;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值