first commit
This commit is contained in:
@@ -0,0 +1,307 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta content="IE=edge" http-equiv="X-UA-Compatible">
|
||||
<!-- 在 head 标签中添加 meta 标签,并设置 viewport-fit=cover 值 -->
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover"
|
||||
name="viewport">
|
||||
<title>智慧工会问卷调查</title>
|
||||
<!-- 引入样式文件 -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/vant@2.5/lib/index.css" rel="stylesheet">
|
||||
<link href="https://cdn.bootcss.com/weui/2.2.0/style/weui.min.css" rel="stylesheet">
|
||||
</head>
|
||||
<style>
|
||||
[v-clock] {
|
||||
display: none
|
||||
}
|
||||
|
||||
.van-radio__label {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.van-checkbox__label {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.weui-msg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.myHide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.max50 {
|
||||
max-width: 50%;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div id="app" style="padding: 0 10px;" v-clock v-if="showPage">
|
||||
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="问卷调查"></van-nav-bar>
|
||||
<div style="margin: 1.2rem 0.20rem 0.4rem 0.20rem;padding: 0.3rem 0.34rem;text-align: center"
|
||||
v-show="showMsg==true">
|
||||
<div class="weui-msg">
|
||||
<div class="weui-msg__icon-area">
|
||||
<i class="weui-icon-success weui-icon_msg" v-if="flag"></i>
|
||||
<i class="weui-icon-warn weui-icon_msg" v-else></i>
|
||||
</div>
|
||||
<div class="weui-msg__text-area">
|
||||
<h2 class="weui-msg__title">{{msg}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="padding-top: 20px" v-show="showMsg==false">
|
||||
<div style="width: 100%;text-align: center;color: #1ea0fa"><h2>{{data.qtitle}}</h2></div>
|
||||
<div style="width: 100%;margin-top: 20px" v-html="data.qsm" v-if="data.qsm">
|
||||
</div>
|
||||
<hr style="margin-top: 20px;border: none;border-bottom: 1px rgb(150,150,150) dashed" v-if="data.qsm"/>
|
||||
|
||||
<div style="margin-top: 50px;">
|
||||
<van-panel :desc="getTxt(issue.its)" :status="issue.iisbd?'必答':''"
|
||||
:title="(iidx+1)+'. '+ getTxt(issue.iname)"
|
||||
style="margin: 20px 0;box-shadow: 0 0 10px rgb(220,220,220)" v-for="issue,iidx in data.issues">
|
||||
<!-- 单选-->
|
||||
|
||||
<div style="padding: 10px" v-if="issue.itx==1&&issue.iisdx==true">
|
||||
<van-radio-group :direction="issue.iplfs==1?'vertical':'horizontal'"
|
||||
style="position: relative;box-sizing: border-box;"
|
||||
v-model="issue.rwid">
|
||||
<van-radio :class="issue.iplfs==2?'max50':''" :name="wor.wid"
|
||||
style="padding: 10px 10px;margin: 0;box-sizing: border-box;"
|
||||
v-for="wor in issue.wors">
|
||||
<div style="width: 100%" v-if="wor.wimg">
|
||||
<van-image
|
||||
:src="'${AppFileDomain!}'+wor.wimg"
|
||||
fit="cover"
|
||||
height="100px"
|
||||
width="100px"/>
|
||||
</div>
|
||||
<div style="width: 100%;margin: 5px 0" v-html="wor.wtxt"></div>
|
||||
<div style="width: 100%;margin: 5px 0;color: rgb(180,180,180);font-size: 12px"
|
||||
v-html="wor.wsm">
|
||||
</div>
|
||||
<div style="width: 100%;margin: 5px 0" v-if="wor.wistk==true">
|
||||
<van-field :required="wor.wisbt" style="border: 1px rgb(240,240,240) solid"
|
||||
v-model="wor.rval"/>
|
||||
</div>
|
||||
</van-radio>
|
||||
</van-radio-group>
|
||||
</div>
|
||||
<!-- 多选-->
|
||||
<div style="padding: 10px" v-if="issue.itx==1&&issue.iisdx==false">
|
||||
<van-checkbox-group :direction="issue.iplfs==1?'vertical':'horizontal'"
|
||||
:max="issue.imaxselect?issue.imaxselect:9999999"
|
||||
style="position: relative;box-sizing: border-box;"
|
||||
v-model="issue.rwid">
|
||||
<van-checkbox :class="issue.iplfs==2?'max50':''" :name="wor.wid" shape="square"
|
||||
style="padding: 10px 10px;margin: 0;box-sizing: border-box;"
|
||||
v-for="wor in issue.wors">
|
||||
<div style="width: 100%" v-if="wor.wimg">
|
||||
<van-image
|
||||
:src="'${AppFileDomain!}'+wor.wimg"
|
||||
fit="cover"
|
||||
height="100px"
|
||||
width="100px"/>
|
||||
</div>
|
||||
<div style="width: 100%;margin: 5px 0" v-html="wor.wtxt"></div>
|
||||
<div style="width: 100%;margin: 5px 0;color: rgb(180,180,180);font-size: 12px"
|
||||
v-html="wor.wsm">
|
||||
</div>
|
||||
<div style="width: 100%;margin: 5px 0" v-if="wor.wistk==true">
|
||||
<van-field :required="wor.wisbt" style="border: 1px rgb(240,240,240) solid"
|
||||
v-model="wor.rval"/>
|
||||
</div>
|
||||
</van-checkbox>
|
||||
</van-checkbox-group>
|
||||
</div>
|
||||
<!-- 填空-->
|
||||
<div style="padding: 10px" v-if="issue.itx==2">
|
||||
<van-field
|
||||
autosize
|
||||
placeholder="请输入内容"
|
||||
rows="2"
|
||||
show-word-limit
|
||||
style="border: 1px rgb(240,240,240) solid"
|
||||
type="textarea"
|
||||
v-model="issue.wors[0].rval"
|
||||
/>
|
||||
</div>
|
||||
</van-panel>
|
||||
</div>
|
||||
|
||||
<div style="width: 100%;text-align: center;margin-top: 30px">
|
||||
<van-button :loading="loading" @click.native="subData" color="#1ea0fa" style="width: 70%" type="primary"
|
||||
v-show="data!={}">
|
||||
提交问卷
|
||||
</van-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="weui-footer" style="margin-top: 80px;margin-bottom: 10px" v-if="showPage">
|
||||
<p class="weui-footer__text">Copyright © 2019-2020 智慧工会平台</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-number-keyboard safe-area-inset-bottom/>
|
||||
<!-- 引入 Vue 和 Vant 的 JS 文件 -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/vant@2.5/lib/vant.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js"></script>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: "#app",
|
||||
data: function () {
|
||||
return {
|
||||
loading: false,
|
||||
showMsg: false,
|
||||
showPage: false,
|
||||
msg: '',
|
||||
flag: null,
|
||||
data: {},
|
||||
formData: [],
|
||||
getTxt(val) {
|
||||
if (val) {
|
||||
return val.replace(/<(style|script|iframe)[^>]*?>[\s\S]+?<\/\1\s*>/gi, '').replace(/<[^>]+?>/g, '').replace(/\s+/g, ' ').replace(/ /g, ' ').replace(/>/g, ' ');
|
||||
}
|
||||
return ''
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
subData: function () {
|
||||
let flag = true
|
||||
let msg = ""
|
||||
vue.formData = []
|
||||
|
||||
let issues = vue.data.issues
|
||||
i:
|
||||
for (let i = 0; i < issues.length; i++) {
|
||||
w:
|
||||
for (let j = 0; j < issues[i].wors.length; j++) {
|
||||
let wor = issues[i].wors[j]
|
||||
if (issues[i].iisbd) {
|
||||
if (issues[i].itx == 1 && !issues[i].rwid) {
|
||||
flag = false
|
||||
msg = '第' + (i + 1) + '题未作答!'
|
||||
break i
|
||||
}
|
||||
if (issues[i].itx == 2 && !wor.rval) {
|
||||
flag = false
|
||||
msg = '第' + (i + 1) + '题未作答!'
|
||||
break i
|
||||
}
|
||||
if (issues[i].rwid == wor.wid && wor.wisbt && !wor.rval) {
|
||||
flag = false
|
||||
msg = '第' + (i + 1) + '题内容未填写!'
|
||||
break i
|
||||
}
|
||||
}
|
||||
}
|
||||
if (issues[i].itx == 1 && issues[i].iisbd && issues[i].rwid.length == 0) {
|
||||
flag = false
|
||||
msg = '第' + (i + 1) + '题未作答!'
|
||||
break i
|
||||
}
|
||||
}
|
||||
|
||||
if (!flag) {
|
||||
vue.$notify({type: 'danger', message: msg})
|
||||
} else {
|
||||
issues.forEach(function (issue) {
|
||||
if (issue.iisdx == false) {
|
||||
issue.rwid.forEach(function (wid) {
|
||||
issue.wors.forEach(function (wor) {
|
||||
if (wor.wid == wid) {
|
||||
let reply = {"rwid": wor.wid, "rval": wor.rval}
|
||||
vue.formData.push(reply)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
issue.wors.forEach(function (wor) {
|
||||
if (wor.wid == issue.rwid) {
|
||||
let reply = {"rwid": wor.wid, "rval": wor.rval}
|
||||
vue.formData.push(reply)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
vue.loading = true
|
||||
$.post("/platform/zgfw/mobile/questionnaire/subData", {json: JSON.stringify(vue.formData)}, function (data) {
|
||||
if (data.code == 0) {
|
||||
vue.loading = false
|
||||
vue.msg = '您的答卷已提交,感谢您的参与!'
|
||||
vue.flag = true
|
||||
vue.showMsg = true
|
||||
} else {
|
||||
vue.$notify({type: 'danger', message: data.msg})
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
getData: function () {
|
||||
$.get("/platform/zgfw/mobile/questionnaire/data", function (data) {
|
||||
if (data.code == 0) {
|
||||
if (data.data.qflag == 1 || data.data.qflag == 3) {
|
||||
vue.msg = '该问卷尚未开启!'
|
||||
vue.flag = false
|
||||
vue.showMsg = true
|
||||
} else {
|
||||
if (data.data.qdtkssj && data.data.qdtjssj) {
|
||||
let now = new Date()
|
||||
let qdtkssj = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate() + ' ' + data.data.qdtkssj
|
||||
let qdtjssj = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate() + ' ' + data.data.qdtjssj
|
||||
qdtkssj = new Date(qdtkssj).getTime()
|
||||
qdtjssj = new Date(qdtjssj).getTime()
|
||||
if (!(qdtkssj < now.getTime() && now.getTime() < qdtjssj)) {
|
||||
vue.msg = '该问卷每日答题时间为:' + data.data.qdtkssj + '-' + data.data.qdtjssj
|
||||
vue.flag = false
|
||||
vue.showMsg = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data.data.issues.forEach(function (issue) {
|
||||
if (issue.itx == 1 && issue.iisdx) {
|
||||
issue.rwid = ''
|
||||
} else if (issue.itx == 1 && !issue.iisdx) {
|
||||
issue.rwid = []
|
||||
} else if (issue.itx == 2) {
|
||||
issue.rwid = issue.wors[0].wid
|
||||
}
|
||||
issue.wors.forEach(function (wor) {
|
||||
if (wor.wismr) {
|
||||
if (issue.itx == 1 && issue.iisdx) {
|
||||
issue.rwid = wor.wid
|
||||
} else if (issue.itx == 1 && !issue.iisdx) {
|
||||
issue.rwid.push(wor.wid)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
vue.showMsg = false
|
||||
vue.data = data.data
|
||||
} else {
|
||||
vue.msg = data.msg
|
||||
vue.flag = false
|
||||
vue.showMsg = true
|
||||
// window.close()
|
||||
// wx.closeWindow();
|
||||
}
|
||||
vue.showPage = true
|
||||
})
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.getData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user