Files
UNION_NSI/target/classes/views/platform/question/mobile/questionnaire.html
T
2026-09-08 19:49:21 +08:00

307 lines
14 KiB
HTML

<!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(/&nbsp;/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>