|
@@ -0,0 +1,222 @@
|
|
|
+// components/questionnaire/questionnaire.js
|
|
|
+import $ from '../../utils/Tool';
|
|
|
+import {
|
|
|
+ queryQuestion,
|
|
|
+ submitAnswer,
|
|
|
+ notShowQuestion
|
|
|
+} from "../../requests/api";
|
|
|
+Component({
|
|
|
+ /**
|
|
|
+ * 组件的属性列表
|
|
|
+ */
|
|
|
+ options: {
|
|
|
+ styleIsolation: 'shared',
|
|
|
+ },
|
|
|
+ properties: {
|
|
|
+
|
|
|
+ },
|
|
|
+ lifetimes: {
|
|
|
+ attached: function() {
|
|
|
+
|
|
|
+ this.queryDate();
|
|
|
+ // 在组件实例进入页面节点树时执行
|
|
|
+ },
|
|
|
+ detached: function() {
|
|
|
+ // 在组件实例被从页面节点树移除时执行
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组件的初始数据
|
|
|
+ */
|
|
|
+ data: {
|
|
|
+ startValue:0,
|
|
|
+ checked:[],
|
|
|
+ tipsshow:false,
|
|
|
+ dialogRadio:'2',
|
|
|
+ answer:false,
|
|
|
+ questionDate:[],
|
|
|
+ firstDate:{},
|
|
|
+ otherDate:[],
|
|
|
+ submitFlag:false,
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组件的方法列表
|
|
|
+ */
|
|
|
+ methods: {
|
|
|
+ preventTouchMove(){
|
|
|
+
|
|
|
+ },
|
|
|
+ emitClose(value){
|
|
|
+ this.triggerEvent('surveyClose',value?{good:true}:{good:false})
|
|
|
+ },
|
|
|
+ queryDate(){
|
|
|
+ let data={
|
|
|
+ "criteria":{
|
|
|
+ "type":0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ queryQuestion(data).then(res=>{
|
|
|
+ const [firstDate,...otherDate]= res.content;
|
|
|
+ otherDate.forEach(v=>{
|
|
|
+ v.checked=[];
|
|
|
+ v.remark=false;
|
|
|
+ v.remarkTxt="";
|
|
|
+ })
|
|
|
+ this.setData({
|
|
|
+ firstDate:firstDate||{},
|
|
|
+ otherDate:otherDate||[],
|
|
|
+ questionDate:res.content||[]
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ inputChange(e){
|
|
|
+ let {index} = e.currentTarget.dataset;
|
|
|
+ let mText = 'otherDate['+ index +'].remarkTxt';
|
|
|
+ let {value} = e.detail;
|
|
|
+ this.setData({
|
|
|
+ [mText]:value
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ closePage(){
|
|
|
+ this.setData({
|
|
|
+ tipsshow:true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ starChange(event){
|
|
|
+ let that =this;
|
|
|
+ if(event.detail!==5){
|
|
|
+ this.setData({
|
|
|
+ startValue: event.detail,
|
|
|
+ answer:true
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ this.setData({
|
|
|
+ startValue: event.detail,
|
|
|
+ submitFlag:true
|
|
|
+ },()=>{
|
|
|
+ that.submitFeed();
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ // this.emitClose(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ selectChange(event){
|
|
|
+ let {index} = event.currentTarget.dataset;
|
|
|
+ let mText = 'otherDate['+ index +'].checked';
|
|
|
+ let remark = 'otherDate['+ index +'].remark';
|
|
|
+ let flag = event.detail.includes("12");
|
|
|
+ let that =this;
|
|
|
+ this.setData({
|
|
|
+ [mText]: event.detail,
|
|
|
+ [remark]:flag
|
|
|
+ },()=>{
|
|
|
+ if(flag){
|
|
|
+ wx.createSelectorQuery().in(that).select('#qus_listbox').boundingClientRect(function(rect){
|
|
|
+ that.setData({
|
|
|
+ textScroll:rect.height
|
|
|
+ })
|
|
|
+ }).exec()
|
|
|
+ }
|
|
|
+ let falg = that.data.otherDate.filter((item)=>{
|
|
|
+ return !item.checked.length
|
|
|
+ });
|
|
|
+ !falg.length?that.setData({submitFlag:true}):that.setData({submitFlag:false});
|
|
|
+ });
|
|
|
+ },
|
|
|
+ radioChange(event){
|
|
|
+ this.setData({
|
|
|
+ dialogRadio: event.detail,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ closeDialog(){
|
|
|
+ this.setData({
|
|
|
+ tipsshow:false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ async submitMsg(){
|
|
|
+ if(this.data.dialogRadio==1){
|
|
|
+ let {id} = $.store.get('userInfo');
|
|
|
+ let tenantId = $.store.get('tenantId');
|
|
|
+ let projectId = $.store.get('projectId');
|
|
|
+ let data={
|
|
|
+ "projectId":projectId,
|
|
|
+ "tenantId":tenantId,
|
|
|
+ "userId":id,
|
|
|
+ "startTime":this.data.firstDate.startTime,
|
|
|
+ "endTime":this.data.firstDate.endTime,
|
|
|
+ "isDisplay": false,
|
|
|
+ "seasonType":this.data.firstDate.seasonType
|
|
|
+ }
|
|
|
+
|
|
|
+ await notShowQuestion(data)
|
|
|
+ }
|
|
|
+ this.setData({
|
|
|
+ tipsshow:false
|
|
|
+ })
|
|
|
+ this.data.dialogRadio==1?this.emitClose(true):this.emitClose();
|
|
|
+ },
|
|
|
+ submitFeed(){
|
|
|
+ if(!this.data.submitFlag){
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let falgRemark=true;
|
|
|
+ let {id,nickname,phone,userName}= $.store.get('userInfo');
|
|
|
+ let startTime = this.data.firstDate.startTime;
|
|
|
+ let endTime = this.data.firstDate.endTime;
|
|
|
+ let projectId= $.store.get('projectId');
|
|
|
+ let tenantId= $.store.get('tenantId');
|
|
|
+ let dateTemplate={
|
|
|
+ "projectId":projectId,//项目id
|
|
|
+ "tenantId":tenantId,
|
|
|
+ "seasonType":this.data.firstDate.seasonType||'Warm',//季节类型
|
|
|
+ "userId":id,//用户id
|
|
|
+ "nickName":nickname,//微信昵称
|
|
|
+ "phone":phone,//手机号
|
|
|
+ "userName":userName,//手机号
|
|
|
+ "type":"0",//类型 0 小程序
|
|
|
+ "startTime":startTime,//调查问卷开始时间
|
|
|
+ "endTime":endTime,//调查问卷结束时间
|
|
|
+ }
|
|
|
+ let firstDate={...dateTemplate};
|
|
|
+ let startIndex=5-this.data.startValue;
|
|
|
+ firstDate.questionId=this.data.firstDate.questionId;
|
|
|
+ firstDate.questionAnswerList=[{answerId: this.data.firstDate.questionAnswerList[startIndex].answerId}];
|
|
|
+ let data=[firstDate];
|
|
|
+ if(this.data.answer){
|
|
|
+ this.data.otherDate.forEach(item=>{
|
|
|
+ let otherdate={...dateTemplate};
|
|
|
+ otherdate.questionId=item.questionId;
|
|
|
+ otherdate.questionAnswerList=[];
|
|
|
+ item.checked.forEach(v=>{
|
|
|
+ let obj={};
|
|
|
+ obj.answerId=v;
|
|
|
+ if(item.remark&&v==12){
|
|
|
+ item.remarkTxt?(obj.remark=item.remarkTxt):(falgRemark=false);
|
|
|
+ }
|
|
|
+ otherdate.questionAnswerList.push(obj);
|
|
|
+ })
|
|
|
+ data.push(otherdate);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if(!falgRemark){
|
|
|
+ wx.showToast({
|
|
|
+ title:"其他选项不能为空",
|
|
|
+ icon:"none",
|
|
|
+ duration: 1000
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ submitAnswer(data).then(res=>{
|
|
|
+ let that =this;
|
|
|
+ this.setData({dialogRadio:1},()=>{
|
|
|
+ that.submitMsg();
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+})
|