307 lines
14 KiB
HTML
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(/ /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> |