Browse Source

逻辑优化

develop
liwei 3 years ago
parent
commit
97dd4d39c7
17 changed files with 635 additions and 350 deletions
  1. +1
    -1
      app.json
  2. +20
    -4
      pages/answercomplete/answercomplete.js
  3. +1
    -1
      pages/answercomplete/answercomplete.wxml
  4. +67
    -20
      pages/authorization/authorization.js
  5. +1
    -1
      pages/authorization/authorization.wxml
  6. +198
    -67
      pages/basicInformation/basicInformation.js
  7. +2
    -1
      pages/basicInformation/basicInformation.json
  8. +9
    -6
      pages/basicInformation/basicInformation.wxml
  9. +6
    -3
      pages/basicInformation/basicInformation.wxss
  10. +20
    -4
      pages/pagefailure/pagefailure.js
  11. +1
    -1
      pages/pagefailure/pagefailure.json
  12. +3
    -3
      pages/pagefailure/pagefailure.wxml
  13. +255
    -231
      pages/questionnaire/questionnaire.js
  14. +5
    -5
      pages/questionnaire/questionnaire.wxml
  15. +1
    -1
      pages/questionnaire/questionnaire.wxss
  16. +1
    -1
      project.config.json
  17. +44
    -0
      utils/api.js

+ 1
- 1
app.json View File

@ -12,7 +12,7 @@
}
},
"window": {
"navigationStyle":"custom",
"navigationStyle": "custom",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "微信接口功能演示",


+ 20
- 4
pages/answercomplete/answercomplete.js View File

@ -1,6 +1,8 @@
const api = require('../../utils/api.js')
Page({
data: {
statusBarHeight: 44, // 导航高度
baseURL: api.baseURL
},
onLoad() {
const _this=this;
@ -31,10 +33,17 @@ Page({
},
// 分享朋友
onShareAppMessage: (res) => {
let data='';
wx.getStorage({
key: 'project',
success ({data:{surveysheetid='', cid=''}}) {
data=`?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation'+data,
imageUrl: api.baseURL+"/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},
@ -45,10 +54,17 @@ Page({
},
// 分享朋友圈
onShareTimeline: (res) => {
let data='';
wx.getStorage({
key: 'project',
success ({data:{surveysheetid='', cid=''}}) {
data=`?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation'+data,
imageUrl: api.baseURL+"/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},


+ 1
- 1
pages/answercomplete/answercomplete.wxml View File

@ -3,7 +3,7 @@
<view class="answercomplete-title" style="top:{{statusBarHeight}}px">答题完成</view>
</view>
<view class="answercomplete-content">
<image class="answercomplete-logo" mode="答题完成" src="http://8.140.133.55:8096/public/uploadfile/complete.png"></image>
<image class="answercomplete-logo" mode="答题完成" src="{{baseURL}}/public/uploadfile/complete.png"></image>
<view class="answercomplete-prompt">您的问卷调查已完成!</view>
</view>
</view>

+ 67
- 20
pages/authorization/authorization.js View File

@ -1,29 +1,64 @@
const api = require('../../utils/api.js')
Page({
data: {
statusBarHeight: 44
statusBarHeight: 44,
baseURL: api.baseURL
},
getUserProfile(e) {
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
wx.getUserProfile({
desc: '授权登录', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
// 授权成功关闭当前页面,跳转至基础信息登记页面
wx.redirectTo({
url: '../basicInformation/basicInformation'
success: (data) => {
wx.login({
success({
code
}) {
if (code) {
//发起网络请求
api.post('/api/wxlogin', {
...data,
code: code
}).then(({
data
}) => {
// 存储用户uid
wx.setStorage({
key: "userInfo",
data: {...data}
})
// 授权成功关闭当前页面,跳转至基础信息登记页面
wx.redirectTo({
url: '../basicInformation/basicInformation'
})
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
}
})
});
},
// 分享朋友
onShareAppMessage: (res) => {
let data = '';
wx.getStorage({
key: 'project',
success({
data: {
surveysheetid = '',
cid = ''
}
}) {
data = `?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation' + data,
imageUrl: api.baseURL+"/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},
@ -34,10 +69,22 @@ Page({
},
// 分享朋友圈
onShareTimeline: (res) => {
let data = '';
wx.getStorage({
key: 'project',
success({
data: {
surveysheetid = '',
cid = ''
}
}) {
data = `?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation' + data,
imageUrl: api.baseURL+"/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},
@ -46,16 +93,16 @@ Page({
}
}
},
onShow(){
onShow() {
// 获取设备的信息
let systemInfo = wx.getSystemInfoSync();
// 获取信号区高度, 并设置标题高度
let statusBarHeight = systemInfo['statusBarHeight']
if (systemInfo.platform === 'andorid' ) {
statusBarHeight = statusBarHeight+1;
}else if (systemInfo.platform === 'ios') {
statusBarHeight = statusBarHeight+6;
}else{
if (systemInfo.platform === 'andorid') {
statusBarHeight = statusBarHeight + 1;
} else if (systemInfo.platform === 'ios') {
statusBarHeight = statusBarHeight + 6;
} else {
statusBarHeight = statusBarHeight;
}
this.setData({


+ 1
- 1
pages/authorization/authorization.wxml View File

@ -2,7 +2,7 @@
<view>
<view class="authorization-title" style="top:{{statusBarHeight}}px">获取授权</view>
<view class="property-wrap">
<image class="property-logo" mode="物业logo" src="http://8.140.133.55:8096/public/uploadfile/logo.png"></image>
<image class="property-logo" mode="物业logo" src="{{baseURL}}/public/uploadfile/logo.png"></image>
<view class="proterty-title">赛思维物业服务评估咨询有限公司</view>
<view class="proterty-text">信息化深耕物业全生命周期</view>
</view>


+ 198
- 67
pages/basicInformation/basicInformation.js View File

@ -1,45 +1,52 @@
const api = require('../../utils/api.js')
Page({
data: {
style: `--bg:url('${api.baseURL}/public/uploadfile/basics.png')`,
baseURL: api.baseURL,
statusBarHeight: 44, // 导航高度
addressList: [{
buildingId: '1',
descr: '世界大厦A座'
addressList: [], // 楼栋列表
unitList: [{
unitid: '1',
descr: '一单元'
},
{
unitid: '2',
descr: '二单元'
},
{
unitid: '3',
descr: '三单元'
},
{
buildingId: '2',
descr: '世界大厦B座'
unitid: '4',
descr: '四单元'
},
{
buildingId: '3',
unitid: '5',
descr: '五单元'
},
{
unitid: '',
descr: '其他'
}
], // 楼栋列表
unitList: [{
buildingId: '1',
descr: '1单元'
},
{
buildingId: '2',
descr: '2单元'
},
{
buildingId: '3',
descr: '其他'
}
], // 楼栋列表
addressSelectItem: {}, // 当道选择的楼栋对象
unitItem: {}, // 单元号
houseNumber: "", // 门牌号
oneButton: [],
showOneButtonDialog: false, //
},
// 更新当前选择的单元
setunitItem(e){
setunitItem(e) {
this.setData({
unitItem: this.data.unitList[e.detail.value]
})
},
// 更新门牌号的值
bindKeyHouseNumber(e) {
this.setData({
houseNumber: e.detail.value
})
},
// 更新选择的楼栋
bindPickerChange(e) {
@ -47,61 +54,40 @@ Page({
addressSelectItem: this.data.addressList[e.detail.value]
})
},
onLoad() {
const _this = this;
// 获取设备的信息
let systemInfo = wx.getSystemInfoSync();
// 获取信号区高度, 并设置标题高度
let statusBarHeight = systemInfo['statusBarHeight'];
if (systemInfo.platform === 'andorid') {
statusBarHeight = statusBarHeight + 10;
} else if (systemInfo.platform === 'ios') {
statusBarHeight = statusBarHeight + 6;
} else if (systemInfo.platform === 'devtools') {
statusBarHeight = statusBarHeight + 8;
} else {
statusBarHeight = statusBarHeight;
}
_this.setData({
statusBarHeight
});
// 获取用户授权信息
wx.getSetting({
success(res) {
// 校验用户是否已经授权
if (res.authSetting['scope.userInfo']) {
// 必须是在用户已经授权的情况下调用
wx.getUserInfo({
success: function (res) {
console.log(res)
}
})
} else {
// 如果未授权则关闭所有页面,跳转至授权登录页
wx.reLaunch({
url: '/pages/authorization/authorization'
})
}
}
});
// 失效页面
// wx.reLaunch({
// url: '/pages/pagefailure/pagefailure'
// })
},
// 跳转至答题页面
getUserProfile() {
// 信息登记完成,跳转至答题录页
wx.setStorage({
key: "basicInformation",
data: {
"buildingid": this.data.addressSelectItem.buildingid,
"unit": this.data.unitItem.unitid,
"room": this.data.houseNumber,
}
})
wx.navigateTo({
url: '/pages/questionnaire/questionnaire'
})
},
// 分享朋友
onShareAppMessage: (res) => {
let data = '';
wx.getStorage({
key: 'project',
success({
data: {
surveysheetid = '',
cid = ''
}
}) {
data = `?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation' + data,
imageUrl: api.baseURL + "/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},
@ -112,10 +98,22 @@ Page({
},
// 分享朋友圈
onShareTimeline: (res) => {
let data = '';
wx.getStorage({
key: 'project',
success({
data: {
surveysheetid = '',
cid = ''
}
}) {
data = `?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation' + data,
imageUrl: api.baseURL + "/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},
@ -124,4 +122,137 @@ Page({
}
}
},
// 获取楼栋信息
getBuildings(options) {
wx.showLoading({
title: '数据加载中',
})
// 获取楼栋信息
api.get(
'/api/getbuildings', {
cid: options.cid
}
).then(({
data = []
}) => {
wx.hideLoading()
this.setData({
addressList: data
})
}).catch((error) => {
wx.hideLoading()
})
},
// 校验问卷是否过期
isFailure(options) {
api.get('/api/wx_surveysheet/checkbarcode', {
...options
}).then(({
code,
data
}) => {
if (code === 200 && data == '已过期') {
wx.reLaunch({
url: '/pages/pagefailure/pagefailure'
})
}
})
},
onLoad(options) {
const _this = this;
// 获取设备的信息
let systemInfo = wx.getSystemInfoSync();
// 获取信号区高度, 并设置标题高度
let statusBarHeight = systemInfo['statusBarHeight'];
if (systemInfo.platform === 'andorid') {
statusBarHeight = statusBarHeight + 10;
} else if (systemInfo.platform === 'ios') {
statusBarHeight = statusBarHeight + 6;
} else if (systemInfo.platform === 'devtools') {
statusBarHeight = statusBarHeight + 9;
} else {
statusBarHeight = statusBarHeight;
}
_this.setData({
statusBarHeight
});
// 判断是否携带参数
if (options.cid && options.surveysheetid && options.lenDays) {
wx.setStorage({
key: "project",
data: options,
success() {
// 获取用户信息,防止数据不全
wx.getStorage({
key: 'userInfo',
success() {
_this.isFailure(options);
_this.getBuildings(options);
},
fail() {
// 如果授权信息丢失,跳转至授权登录页重新授权
wx.reLaunch({
url: '/pages/authorization/authorization'
})
}
})
},
fail() {
wx.showToast({
title: '请重新扫码登录',
icon: 'error',
duration: 3000
})
}
})
} else {
// 不是扫码登录时,分两种情况处理
wx.getStorage({
key: 'project',
success({
data
}) {
if (data.cid && data.surveysheetid && data.lenDays) {
// 扫码登录后,临时退出程序,重新进入
_this.isFailure(data);
_this.getBuildings(data);
} else {
// 非正常登录
_this.setData({
showOneButtonDialog: true
})
}
},
fail() {
// 非正常登录
_this.setData({
showOneButtonDialog: true
})
}
})
}
},
onShow() {
wx.getStorage({
key: 'project',
success({
data
}) {
// 校验问卷是否过期
api.get('/api/wx_surveysheet/checkbarcode', {
...data
}).then(({
code,
data
}) => {
if (code === 200 && data == '已过期') {
wx.reLaunch({
url: '/pages/pagefailure/pagefailure'
})
}
})
}
})
}
})

+ 2
- 1
pages/basicInformation/basicInformation.json View File

@ -2,6 +2,7 @@
"navigationBarTitleText": "基础信息",
"disableScroll": true,
"usingComponents": {
"mp-icon": "weui-miniprogram/icon/icon"
"mp-icon": "weui-miniprogram/icon/icon",
"mp-dialog": "weui-miniprogram/dialog/dialog"
}
}

+ 9
- 6
pages/basicInformation/basicInformation.wxml View File

@ -1,6 +1,6 @@
<!--基础信息维护-->
<view class="basicInformation">
<view class="basicInformation-title-wrap">
<view class="basicInformation-title-wrap" style="{{style}}">
<view class="basicInformation-title" style="top:{{statusBarHeight}}px">信息登记</view>
</view>
<view class="content-wrap">
@ -22,18 +22,18 @@
<view class="information-address-btn-wrap" id="information-address-btn-wrap">
<picker bindchange="bindPickerChange" range="{{addressList}}" range-key="descr">
<button class="information-address-btn" type="default" plain >{{addressSelectItem.descr}}</button>
<image class="information-address-icon" src="http://8.140.133.55:8096/public/uploadfile/select-address-down.png" />
<image class="information-address-icon" src="{{baseURL}}/public/uploadfile/select-address-down.png" />
</picker>
</view>
</view>
</view>
<view class="information-wrap">
<view class="information-wrap information-bottom">
<view class="information-title">请选择您的单元:</view>
<view class="information-address-wrap">
<view class="information-address-btn-wrap" id="information-unit-btn-wrap">
<picker bindchange="setunitItem" range="{{unitList}}" range-key="descr">
<button class="information-address-btn" type="default" plain>{{unitItem.descr}}</button>
<image class="information-address-icon" src="http://8.140.133.55:8096/public/uploadfile/select-address-down.png" />
<image class="information-address-icon" src="{{baseURL}}/public/uploadfile/select-address-down.png" />
</picker>
</view>
</view>
@ -46,11 +46,14 @@
</view>
</view>
<view class="content-details-btn-wrap">
<!-- unitItem.descr 其他选项后端需要传空,因此未用unitid -->
<button class="content-details-btn"
disabled="{{(addressSelectItem.buildingId && unitItem.buildingId ) ? false:true}}" type="primary"
disabled="{{(addressSelectItem.buildingid && unitItem.descr ) ? false:true}}" type="primary"
bindtap="getUserProfile"> 开始答题 </button>
</view>
</view>
</view>
<mp-dialog title="友情提示!" mask-closable="{{false}}" show="{{showOneButtonDialog}}" buttons="{{oneButton}}">
<view>请您扫码登录小程序!</view>
</mp-dialog>
</view>

+ 6
- 3
pages/basicInformation/basicInformation.wxss View File

@ -7,7 +7,7 @@
.basicInformation-title-wrap{
width: 100%;
height: 544rpx;
background: url('http://8.140.133.55:8096/public/uploadfile/basics.png') no-repeat;
background: var(--bg) no-repeat;
background-size: 100% 100%;
z-index: 0;
}
@ -75,6 +75,9 @@
width: 100%;
margin-bottom: 48rpx;
}
.information-bottom{
margin-bottom: 80rpx;
}
.information-title{
font-size: 32rpx;
font-family: PingFangSC-Medium, PingFang SC;
@ -113,7 +116,7 @@
}
.information-title-text{
float: left;
width: 48%;
width: 290rpx;
height: 44rpx;
font-size: 32rpx;
font-family: PingFangSC-Medium, PingFang SC;
@ -123,7 +126,7 @@
}
.information-title-input{
float: right;
width: 51%;
width: calc( 100% - 290rpx);
height: 50rpx;
line-height: 50rpx;
font-size: 32rpx;


+ 20
- 4
pages/pagefailure/pagefailure.js View File

@ -1,6 +1,8 @@
const api = require('../../utils/api.js')
Page({
data: {
statusBarHeight: 44, // 导航高度
baseURL: api.baseURL
},
onLoad() {
const _this=this;
@ -24,10 +26,17 @@ Page({
},
// 分享朋友
onShareAppMessage: (res) => {
let data='';
wx.getStorage({
key: 'project',
success ({data:{surveysheetid='', cid=''}}) {
data=`?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation'+data,
imageUrl: api.baseURL+"/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},
@ -38,10 +47,17 @@ Page({
},
// 分享朋友圈
onShareTimeline: (res) => {
let data='';
wx.getStorage({
key: 'project',
success ({data:{surveysheetid='', cid=''}}) {
data=`?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation'+data,
imageUrl: api.baseURL+"/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},


+ 1
- 1
pages/pagefailure/pagefailure.json View File

@ -1,5 +1,5 @@
{
"navigationBarTitleText": "页面失效",
"navigationBarTitleText": "问卷已失效",
"disableScroll": true,
"usingComponents": {}
}

+ 3
- 3
pages/pagefailure/pagefailure.wxml View File

@ -1,9 +1,9 @@
<view class="pagefailure">
<view class="pagefailure-title-wrap">
<view class="pagefailure-title" style="top:{{statusBarHeight}}px">页面失效</view>
<view class="pagefailure-title" style="top:{{statusBarHeight}}px">问卷已失效</view>
</view>
<view class="pagefailure-content">
<image class="pagefailure-logo" mode="页面失效" src="http://8.140.133.55:8096/public/uploadfile/invalid.png"></image>
<view class="pagefailure-prompt">页面失效</view>
<image class="pagefailure-logo" mode="问卷已失效" src="{{baseURL}}/public/uploadfile/invalid.png"></image>
<view class="pagefailure-prompt">问卷已失效</view>
</view>
</view>

+ 255
- 231
pages/questionnaire/questionnaire.js View File

@ -1,189 +1,13 @@
const api = require('../../utils/api.js')
Page({
data: {
style: `--bg:url('${api.baseURL}/public/uploadfile/questionnaire.png')`,
statusBarHeight: 44, // 导航高度
questionnaireList: [{
questionnaireDesc: '请您对物业管理公司提供的整体服务评分?',
questionnaireOptionList: [{
optionid: 'E',
optiontext: '非常不满意'
},
{
optionid: 'D',
optiontext: '不满意'
},
{
optionid: 'C',
optiontext: '一般'
},
{
optionid: 'B',
optiontext: '满意'
},
{
optionid: 'A',
optiontext: '非常满意'
}
],
subjecttype: '单选题',
questionNaireItem: {}
}, {
questionnaireDesc: '请您对物业管理公司提供的整体服务评分?',
questionnaireOptionList: [{
optionid: 'E',
optiontext: '非常不满意'
},
{
optionid: 'D',
optiontext: '不满意'
},
{
optionid: 'C',
optiontext: '一般'
},
{
optionid: 'B',
optiontext: '满意'
},
{
optionid: 'A',
optiontext: '非常满意'
}
],
subjecttype: '单选题',
questionNaireItem: {}
}, {
questionnaireDesc: '请您对物业管理公司提供的整体服务评分?',
questionnaireOptionList: [{
optionid: 'E',
optiontext: '非常不满意'
},
{
optionid: 'D',
optiontext: '不满意'
},
{
optionid: 'C',
optiontext: '一般'
},
{
optionid: 'B',
optiontext: '满意'
},
{
optionid: 'A',
optiontext: '非常满意'
}
],
subjecttype: '单选题',
questionNaireItem: {}
}, {
questionnaireDesc: '请您对物业管理公司提供的整体服务评分?',
questionnaireOptionList: [{
optionid: 'E',
optiontext: '非常不满意'
},
{
optionid: 'D',
optiontext: '不满意'
},
{
optionid: 'C',
optiontext: '一般'
},
{
optionid: 'B',
optiontext: '满意'
},
{
optionid: 'A',
optiontext: '非常满意'
}
],
subjecttype: '单选题',
questionNaireItem: {}
}, {
questionnaireDesc: '请您对物业管理公司提供的整体服务评分?',
questionnaireOptionList: [{
optionid: 'E',
optiontext: '非常不满意'
},
{
optionid: 'D',
optiontext: '不满意'
},
{
optionid: 'C',
optiontext: '一般'
},
{
optionid: 'B',
optiontext: '满意'
},
{
optionid: 'A',
optiontext: '非常满意'
}
],
subjecttype: '单选题',
questionNaireItem: {}
}, {
questionnaireDesc: '请您对物业管理公司提供的整体服务评分?',
questionnaireOptionList: [{
optionid: 'E',
optiontext: '非常不满意'
},
{
optionid: 'D',
optiontext: '不满意'
},
{
optionid: 'C',
optiontext: '一般'
},
{
optionid: 'B',
optiontext: '满意'
},
{
optionid: 'A',
optiontext: '非常满意'
}
],
subjecttype: '单选题',
questionNaireItem: {}
},{
questionnaireDesc: '请您对物业管理公司提供的整体服务评分?',
questionnaireOptionList: [{
optionid: 'E',
optiontext: '非常不满意'
},
{
optionid: 'D',
optiontext: '不满意'
},
{
optionid: 'C',
optiontext: '一般'
},
{
optionid: 'B',
optiontext: '满意'
},
{
optionid: 'A',
optiontext: '非常满意'
}
],
subjecttype: '单选题',
questionNaireItem: {}
}, {
questionnaireDesc: '请您对物业管理公司提供的整体服务评分',
subjecttype: '简述题',
questionNaireItem: {}
// #FFAE00
}], // 题目列表
questionNaireObj: {}, // 题目对象信息
isCalibrationScore: false, // 是否开启评分校验
scrollTop: 0
scrollTop: 0, // 滚动条高度
basicInformation: {}, // 基础信息界面填写的参数
userInfo: {} // 用户信息
},
// 所有题目完成后跳转至答题完成页面
getUserProfile() {
@ -193,50 +17,118 @@ Page({
isCalibrationScore: true
})
// 校验是否有未答题项,如果有则滚动至第一个未答题项目位置
const filterIndex = _this.data.questionnaireList.findIndex(e => !e.questionNaireItem.optiontext)
const filterIndex = _this.data.questionNaireObj.valst.findIndex(e => !e.questionNaireItem.optiontext)
if (filterIndex > -1) {
wx.createSelectorQuery().selectAll('.content-details-list').boundingClientRect(function (rect) {
const domList = rect.filter((e, index) => index < filterIndex);
console.log(domList);
_this.setData({
scrollTop: domList.reduce(function (sum, item) { //sum2 前两个数的和
return sum + (item.height+48); // 48代表元素margin-bottom值的一半
return sum + (item.height + 48); // 48代表元素margin-bottom值的一半
}, 0)
})
}).exec()
return false;
}
// 提交问卷成功,跳转至答题完成页面
wx.reLaunch({
url: '/pages/answercomplete/answercomplete'
// 整理答案集合
const parms = {
...this.data.basicInformation,
...this.data.questionNaireObj,
uid: this.data.userInfo.uid,
valst: this.data.questionNaireObj.valst.map(e => {
if (e.subjecttype == "单选题") {
e = {
"subjectid": e.subjectid,
"optioninput": '',
"selected_options": e.questionNaireItem.optionid
}
} else {
e = {
"subjectid": e.subjectid,
"optioninput": e.questionNaireItem.optiontext,
"selected_options": ''
}
}
return e;
})
}
api.post(
'/api/wx_surveysheet/addinfo', {
...parms
}
).then(({
code
}) => {
if (code === 200) {
this.reLaunchAnswercomplete();
}
})
},
// 更新开放性问题输入的值
setGradeValue(e) {
const index = e.currentTarget.dataset['index'];
if (e.detail.value.replace(/\s/g, "")) {
this.data.questionnaireList[index].questionNaireItem = {
this.data.questionNaireObj.valst[index].questionNaireItem = {
optionid: true,
optiontext: e.detail.value.replace(/\s/g, "")
};
} else {
this.data.questionnaireList[index].questionNaireItem = {
this.data.questionNaireObj.valst[index].questionNaireItem = {
optionid: false,
optiontext: ""
};
}
this.setData({
questionnaireList: [...this.data.questionnaireList]
questionNaireObj: {
...this.data.questionNaireObj
}
})
if (this.timer) {
clearTimeout(this.timer)
}
this.timer = setTimeout(() => {
// 更新缓存
const parms = {
cid: this.data.questionNaireObj.cid,
surveysheetid: this.data.questionNaireObj.surveysheetid,
subjectid: this.data.questionNaireObj.valst[index].subjectid,
uid: this.data.userInfo.uid,
valst: [{
"subjectid": this.data.questionNaireObj.valst[index].subjectid,
"optioninput": e.detail.value.replace(/\s/g, ""),
"selected_options": ''
}]
}
api.post('/api/wx_surveysheet/addinfocache', {
...parms
}).then(() => {})
}, 300)
},
// 更新评分
setGrade(e) {
const index = e.currentTarget.dataset['index'];
const item = e.currentTarget.dataset['value'];
this.data.questionnaireList[index].questionNaireItem = item;
this.data.questionNaireObj.valst[index].questionNaireItem = item;
this.setData({
questionnaireList: [...this.data.questionnaireList]
questionNaireObj: {
...this.data.questionNaireObj
}
})
// 更新缓存
const parms = {
cid: item.cid,
surveysheetid: item.surveysheetid,
subjectid: item.subjectid,
uid: this.data.userInfo.uid,
valst: [{
"subjectid": item.subjectid,
"optioninput": '',
"selected_options": item.optionid
}]
}
api.post('/api/wx_surveysheet/addinfocache', {
...parms
}).then(() => {})
},
// 返回信息登记页面
navigateBack() {
@ -244,46 +136,25 @@ Page({
delta: 1
})
},
onLoad() {
// 获取设备的信息
let systemInfo = wx.getSystemInfoSync();
// 获取信号区高度, 并设置标题高度
let statusBarHeight = systemInfo['statusBarHeight']
if (systemInfo.platform === 'andorid') {
statusBarHeight = statusBarHeight + 1;
} else if (systemInfo.platform === 'ios') {
statusBarHeight = statusBarHeight + 6;
} else {
statusBarHeight = statusBarHeight;
}
this.setData({
statusBarHeight
});
wx.getSetting({
success(res) {
// 校验用户是否已经授权
if (res.authSetting['scope.userInfo']) {
// 必须是在用户已经授权的情况下调用
wx.getUserInfo({
success: function (res) {
// console.log(res)
}
})
} else {
// 如果未授权则关闭所有页面,跳转至授权登录页
wx.reLaunch({
url: '/pages/authorization/authorization'
})
}
}
});
},
// 分享朋友
onShareAppMessage: (res) => {
let data = '';
wx.getStorage({
key: 'project',
success({
data: {
surveysheetid = '',
cid = ''
}
}) {
data = `?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation' + data,
imageUrl: api.baseURL+"/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},
@ -294,10 +165,22 @@ Page({
},
// 分享朋友圈
onShareTimeline: (res) => {
let data = '';
wx.getStorage({
key: 'project',
success({
data: {
surveysheetid = '',
cid = ''
}
}) {
data = `?surveysheetid=${surveysheetid}&cid=${cid}`
}
})
return {
title: '业主思维',
path: '/pages/basicInformation/basicInformation',
imageUrl: "http://8.140.133.55:8096/public/uploadfile/logo.png",
path: '/pages/basicInformation/basicInformation' + data,
imageUrl: api.baseURL+"/public/uploadfile/logo.png",
success: (res) => {
console.log("转发成功", res);
},
@ -306,4 +189,145 @@ Page({
}
}
},
// 跳转至已答题界面
reLaunchAnswercomplete() {
// 提交问卷成功,跳转至答题完成页面
wx.reLaunch({
url: '/pages/answercomplete/answercomplete'
})
},
// 获取问卷信息
getSelectinfo(options) {
// 先校验是否已经完成答题
api.get('/api/wx_surveysheet/checkresult', {
...this.data.userInfo,
...options
}).then(({
code,
data
}) => {
if (code == 200 && data) {
this.reLaunchAnswercomplete();
} else {
// 获取问卷列表
api.get(
'/api/wx_surveysheet/selectinfo', {
...options,
uid: this.data.userInfo.uid
}
).then(({
data
}) => {
// 整合简述题放在末尾
const newValst = [...(data.valst || []).filter(e => e.subjecttype == '单选题').concat((data.valst || []).filter(e => e.subjecttype == '简述题'))].map(e => {
// 添加存储答案的对象
e.questionNaireItem = {
...e.questionNaireItem
}
return e;
});
this.setData({
questionNaireObj: {
...data,
valst: newValst.map(e => {
if (e.subjecttype == "单选题") {
e.questionNaireItem.optionid = e.questionNaireItem['selected_options'];
if(e.questionNaireItem['selected_options']){
e.questionNaireItem.optiontext = (e.valst.find(item => item.optionid == e.questionNaireItem['selected_options'])).optiontext;
}else{
e.questionNaireItem.optiontext = '';
}
} else {
e.questionNaireItem.optionid = '';
e.questionNaireItem.optiontext = e.questionNaireItem.optioninput;
}
return e;
})
}
})
})
}
})
},
onLoad() {
const _this = this;
// 获取设备的信息
let systemInfo = wx.getSystemInfoSync();
// 获取信号区高度, 并设置标题高度
let statusBarHeight = systemInfo['statusBarHeight']
if (systemInfo.platform === 'andorid') {
statusBarHeight = statusBarHeight + 1;
} else if (systemInfo.platform === 'ios') {
statusBarHeight = statusBarHeight + 6;
} else {
statusBarHeight = statusBarHeight;
}
_this.setData({
statusBarHeight
});
// 获取用户信息
wx.getStorage({
key: 'userInfo',
success({
data
}) {
_this.setData({
userInfo: data
}, () => {
// 获取问卷信息
wx.getStorage({
key: 'project',
success({
data
}) {
_this.getSelectinfo(data);
}
})
})
},
fail(){
// 如果授权信息丢失,跳转至授权登录页重新授权
wx.reLaunch({
url: '/pages/authorization/authorization'
})
}
})
// 获取基础信息界面添写的参数
wx.getStorage({
key: 'basicInformation',
success({
data
}) {
_this.setData({
basicInformation: {
...data
}
})
}
})
},
onShow() {
wx.getStorage({
key: 'project',
success({
data
}) {
// 校验问卷是否过期
api.get('/api/wx_surveysheet/checkbarcode', {
...data
}).then(({
code,
data
}) => {
if (code === 200 && data == '已过期') {
wx.reLaunch({
url: '/pages/pagefailure/pagefailure'
})
}
})
}
})
}
})

+ 5
- 5
pages/questionnaire/questionnaire.wxml View File

@ -1,6 +1,6 @@
<!--基础信息维护-->
<view class="questionnaire">
<view class="questionnaire-title-wrap">
<view class="questionnaire-title-wrap" style="{{style}}">
<view class="questionnaire-title" style="top:{{statusBarHeight}}px">问卷调查</view>
<mp-icon class="navigateBack" bindtap="navigateBack" icon="back" style="top:{{statusBarHeight}}px" type="field"
color="#fff" size="{{14}}"></mp-icon>
@ -10,14 +10,14 @@
<view class="content-details-title">问卷调查</view>
<scroll-view class="content-details-content-wrap" scroll-with-animation scroll-y="true" scroll-top="{{scrollTop}}">
<!-- 问卷列表 -->
<view class="content-details-list" wx:for="{{questionnaireList}}" wx:key="index" wx:for-index="parentTndex">
<view class="content-details-list" wx:for="{{questionNaireObj.valst}}" wx:key="index" wx:for-index="parentTndex">
<view
class="content-details-list-title {{isCalibrationScore && !item.questionNaireItem.optiontext? 'content-details-list-title-not' : ''}}">
{{parentTndex+1}}、{{item.questionnaireDesc}}</view>
<mp-icon wx:if="{{item.subjecttype=='单选题'}}" wx:for="{{item.questionnaireOptionList}}" wx:for-item="grade"
{{parentTndex+1}}、{{item.subjecttext}}</view>
<mp-icon wx:if="{{item.subjecttype=='单选题'}}" wx:for="{{item.valst}}" wx:for-item="grade"
wx:key="index" bindtap="setGrade" data-index="{{parentTndex}}" data-value="{{grade}}"
class="content-details-field" icon="star" type="field"
color="{{grade.optionid >= item.questionNaireItem.optionid?'#FFAE00':'#D8D8D8'}}" size="{{26}}"></mp-icon>
color="{{grade.optionid >= item.questionNaireItem.optionid && item.questionNaireItem.optionid?'#FFAE00':'#D8D8D8'}}" size="{{26}}"></mp-icon>
<span wx:if="{{item.subjecttype=='单选题'}}"
class="content-details-result">{{item.questionNaireItem.optiontext}}</span>
<textarea wx:else bindinput="setGradeValue" data-index="{{parentTndex}}"


+ 1
- 1
pages/questionnaire/questionnaire.wxss View File

@ -7,7 +7,7 @@
.questionnaire-title-wrap{
width: 100%;
height: 564rpx;
background: url('http://8.140.133.55:8096/public/uploadfile/questionnaire.png') no-repeat;
background: var(--bg) no-repeat;
background-size: 100% 100%;
z-index: 0;
}


+ 1
- 1
project.config.json View File

@ -4,7 +4,7 @@
"ignore": []
},
"setting": {
"urlCheck": true,
"urlCheck": false,
"es6": true,
"enhance": false,
"postcss": true,


+ 44
- 0
utils/api.js View File

@ -0,0 +1,44 @@
var app = getApp();
// const baseURL = 'http://8.140.133.55:8096'; // 赛思维正式环境
const baseURL = 'http://101.201.121.115:8096'; // 赛思维测试环境
/**
* POST请求
* URL接口
* postData参数json类型
* doSuccess成功的回调函数
* doFail失败的回调函数
*/
const http = ({
url = '',
param = {},
...other
} = {}) => {
return new Promise((resolve, reject) => {
wx.request({
url: baseURL + url,
data: param,
header: {
'content-type': 'application/json' // 默认值 ,另一种是 "content-type": "application/x-www-form-urlencoded"
},
...other,
complete: (res) => {
if (res.statusCode === 200) {
resolve(res.data)
} else {
reject(res)
}
}
})
})
};
// get方法
const get = (url, param = {}) => {return http({url,param,method: 'GET'})}
// post方法
const post = (url, param = {}) => {return http({url,param,method: 'POST'})
}
module.exports = {
get,
post,
baseURL
}

Loading…
Cancel
Save