This commit is contained in:
2024-09-02 14:08:37 +08:00
parent c409249f61
commit 4f3a1910bc
82 changed files with 9497 additions and 2733 deletions
@@ -51,10 +51,10 @@ layout("/layouts/platform.html"){
<el-card shadow="never" class="mt20">
<el-table :data="tableData" header-align="center" style="width: 100%">
<el-table-column align="center" label="序号" type="index" :index="indexMethod"></el-table-column>
<el-table-column align="center" label="标题" prop="qtitle" show-overflow-tooltip="true"></el-table-column>
<el-table-column align="center" label="标题" prop="qtitle"></el-table-column>
<el-table-column align="center" label="说明" prop="qsm" show-overflow-tooltip="true">
<template scope="scope">
<div v-if="scope.row.qsm">{{removeHTMLTag(scope.row.qsm)}}</div>
<div v-html="scope.row.qsm" v-if="scope.row.qsm">{{scope.row.qsm}}</div>
<span v-else>暂无</span>
</template>
</el-table-column>
@@ -90,14 +90,13 @@ layout("/layouts/platform.html"){
<template #edit_func>
<el-button @click="doExport" icon="el-icon-printer" type="primary">导出</el-button>
<el-button @click="doExportByUnion" icon="el-icon-printer" type="primary">按分工会导出</el-button>
</template>
<template #edit>
<div class="pl10 pr10">
<el-row class="text-center">
<h2 style="margin: 0">{{viewData.q.qtitle}}</h2>
</el-row>
<el-row class="mb20" style="width: 96%; margin: 20px auto 0;">
<el-row class="mb20">
<div v-html="viewData.q.qsm"></div>
</el-row>
@@ -165,7 +164,7 @@ layout("/layouts/platform.html"){
:visible.sync="tkViewDialogVisible"
custom-class="ViewDialogClass"
title="详细信息"
width="60%"
width="50%"
>
<el-row>
<div class="btn-group tool-button mt5">
@@ -178,56 +177,43 @@ layout("/layouts/platform.html"){
</div>
</el-row>
<el-table
:data="tkTableData"
header-align="center"
size="medium"
style="width: 100%; margin-top: 20px"
>
<el-table-column
align="center"
<el-row class="el-table-container" style="margin-top: 20px;">
<el-table
:data="tkTableData"
header-align="center"
label="序号"
type="index"
size="medium"
style="width: 100%"
>
<template scope="scope">
<span>{{scope.$index+(tkPageForm.pageNumber - 1) * tkPageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="提交时间"
prop="rtime"
width="180px">
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="提交人"
show-overflow-tooltip
prop="username">
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="所属工会"
show-overflow-tooltip
prop="unionname">
</el-table-column>
<el-table-column
header-align="center"
label="文本"
prop="rval"
width="600px">
</el-table-column>
</el-table>
<el-table-column
align="center"
header-align="center"
label="序号"
type="index"
>
<template scope="scope">
<span>{{scope.$index+(tkPageForm.pageNumber - 1) * tkPageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="提交时间"
prop="rtime"
width="200px">
</el-table-column>
<el-table-column
header-align="center"
label="文本"
prop="rval">
</el-table-column>
</el-table>
</el-row>
<el-row class="el-pagination-container">
<el-pagination
:current-page="tkPageForm.pageNumber"
:page-size="tkPageForm.pageSize"
:page-sizes="[10, 20, 30, 50]"
:total="tkPageForm.totalCount"
:total="pageForm.totalCount"
@current-change="(val)=>{tkPageForm.pageNumber = val;tkPageData();}"
@size-change="(val)=>{tkPageForm.pageSize = val;tkPageData();}"
layout="total, prev, pager, next">
@@ -271,9 +257,6 @@ layout("/layouts/platform.html"){
}
},
methods: {
doExportByUnion() {
location.href = loc() + '/doExportByUnion?questionId=' + this.questionId
},
doExport() {
location.href = loc() + '/doExport?questionId=' + this.questionId
},
@@ -34,10 +34,6 @@ layout("/layouts/platform.html"){
color: red;
}
#qsmEditor .w-e-text-container {
height: 200px !important;
}
.btDiv {
cursor: pointer;
}
@@ -158,11 +154,13 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="标题"
show-overflow-tooltip prop="qtitle"></el-table-column>
prop="qtitle"></el-table-column>
<el-table-column align="center" header-align="center" label="说明" prop="qsm"
show-overflow-tooltip>
<template scope="scope">
<div v-if="scope.row.qsm">{{removeHTMLTag(scope.row.qsm)}}</div>
<div v-html="scope.row.qsm" v-if="!isNull(scope.row.qsm)">
{{scope.row.qsm}}
</div>
<span v-else>暂无</span>
</template>
</el-table-column>
@@ -223,7 +221,7 @@ layout("/layouts/platform.html"){
<template #edit>
<div v-if="editMode==='basicInfo'">
<el-form :model="formData" :rules="formRules" label-position="right"
label-width="120px" ref="addform">
label-width="120px" ref="addForm">
<vi-title2 title="基础设置"></vi-title2>
<el-form-item label="问卷类型" prop="qlx">
@@ -232,90 +230,12 @@ layout("/layouts/platform.html"){
<el-radio :label="1" border>投票调查</el-radio>
<el-radio :label="2" border>答题</el-radio>
<!-- <el-radio :label="3" border>购物调查</el-radio>-->
<el-radio :label="4" border>意向选择</el-radio>
<!-- <el-radio :label="4" border>意向选择</el-radio>-->
</el-radio-group>
</el-form-item>
<el-form-item class="is-required" label="标题" prop="qtitle">
<el-input placeholder="请填写标题" v-model="formData.qtitle"></el-input>
</el-form-item>
<el-row v-show="![1,3,4].includes(formData.qlx)" :gutter="20">
<el-col :span="12">
<el-form-item class="is-required" label="每日可答次数" label-width="120px"
prop="qrkdcs">
<el-input-number :max="100" :min="0"
controls-position="right"
placeholder="设0则不限制次数"
style="width: 100%"
v-model="formData.qrkdcs"></el-input-number>
<div class="text-primary">设0则不限制次数</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="每日答题时间" prop="qdtkssj">
<el-time-picker
end-placeholder="结束时间"
is-range
placeholder="选择时间范围"
range-separator="-"
start-placeholder="开始时间"
style="width: 100%"
v-model="formData.qdtsj"
value-format="HH:mm:ss">
</el-time-picker>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="![1,3,4].includes(formData.qlx)" :gutter="20">
<el-col :span="12">
<el-form-item class="is-required" label="回答总次数" label-width="120px"
prop="answerTotalSum">
<el-input-number :max="100" :min="0"
controls-position="right"
placeholder="设0则不限制次数"
style="width: 100%"
v-model="formData.answerTotalSum"></el-input-number>
<div class="text-primary">设0则不限制次数</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker
style="width: 100%"
type="datetime"
v-model="formData.startTime"
value-format="timestamp">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
:picker-options="endTimeOptions"
style="width: 100%"
type="datetime"
v-model="formData.endTime"
value-format="timestamp">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" v-show="formData.qlx===4">
<el-form-item label="自动选择默认项" label-width="150px" prop="autoSelect">
<el-switch
v-model="formData.autoSelect"
>
</el-switch>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="说明" prop="qsm">
<div id="qsmEditor"></div>
<el-input placeholder="请填写标题" v-model="formData.qtitle" maxlength="200"></el-input>
</el-form-item>
<el-form-item label="参加人员" prop="activityUserScopeId">
@@ -334,52 +254,236 @@ layout("/layouts/platform.html"){
</el-form-item>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="出题模式" prop="ctMode">
<el-radio-group v-model="formData.ctMode" size="small">
<el-radio :label="1" border>定时定题</el-radio>
<el-radio :label="2" border>随机题目</el-radio>
</el-radio-group>
<el-col :span="12">
<el-form-item label="开始时间" prop="startTime"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-date-picker
style="width: 100%"
type="datetime"
v-model="formData.startTime"
value-format="timestamp">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.ctMode===2">
<el-form-item label="单次出题数量" prop="ctNum">
<!--:max="formData.issues.length"-->
<el-input-number :min="1"
controls-position="right"
style="width: 100%"
v-model="formData.ctNum"></el-input-number>
<el-col :span="12">
<el-form-item label="结束时间" prop="endTime"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-date-picker
:picker-options="endTimeOptions"
style="width: 100%"
type="datetime"
v-model="formData.endTime"
value-format="timestamp">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-form-item label="说明" prop="qsm">
<text-editor v-model="formData.qsm"></text-editor>
</el-form-item>
<vi-title2 title="出题设置"></vi-title2>
<el-form-item label="出题模式" prop="ctMode"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-radio-group v-model="formData.ctMode" size="small">
<el-radio :label="1" border>定时定题</el-radio>
<el-radio :label="2" border>随机题目</el-radio>
<el-radio :label="3" border>常规模式</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="题目顺序打乱" prop="disruptingOrder"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-radio-group v-model="formData.disruptingOrder" size="small">
<el-radio :label="true" border>打乱</el-radio>
<el-radio :label="false" border>不变</el-radio>
</el-radio-group>
</el-form-item>
<el-row :gutter="20" v-if="formData.ctMode==2">
<el-col :span="6">
<el-form-item label="是否抽奖" prop="isRaffle">
<el-radio-group v-model="formData.isRaffle" size="small">
<el-form-item label="单次随机题数" prop="ranDomSingleIssueNum"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-input-number :min="1"
controls-position="right"
style="width: 100%"
v-model="formData.ranDomSingleIssueNum"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总共随机数" prop="ranDomSum"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-input-number :min="1"
controls-position="right"
style="width: 100%"
v-model="formData.ranDomSum"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20"
v-if="formData.ctMode!=2 || (formData.ctMode==2 && formData.startTime && formData.endTime && moment(formData.endTime).diff(formData.startTime,'days') >= 1)">
<el-col :span="24">
<el-form-item label="是否可重复答" prop="canRepeatedAnswer"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-radio-group v-model="formData.canRepeatedAnswer" size="small">
<el-radio :label="true" border>是</el-radio>
<el-radio :label="false" border>否</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.isRaffle">
<el-form-item label="抽奖分数" prop="raffleScore">
<el-input-number :min="1"
<el-col :span="24">
<el-form-item label="可重复答次数"
prop="canRepeatedAnswerNum"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]"
v-if="formData.canRepeatedAnswer">
<el-input-number :min="0"
controls-position="right"
style="width: 100%"
v-model="formData.raffleScore"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.isRaffle">
<el-form-item label="获奖人数" prop="raffleWinnerUserNum">
<el-input-number :max="10000" :min="1"
controls-position="right"
style="width: 100%"
v-model="formData.raffleWinnerUserNum"></el-input-number>
style="width: 300px"
v-model="formData.canRepeatedAnswerNum"></el-input-number>
<div class="text-primary">设0则为不限制</div>
</el-form-item>
</el-col>
</el-row>
<template>
<vi-title2 title="分数统计设置"></vi-title2>
<el-form-item label="分数统计" prop="calcScoreMode"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-radio-group v-model="formData.calcScoreMode" size="small">
<el-radio :label="1" border>最高得分</el-radio>
<el-radio :label="2" border>最新得分</el-radio>
</el-radio-group>
</el-form-item>
</template>
<vi-title2 title="抽奖设置"></vi-title2>
<el-form-item label="是否抽奖" prop="isRaffle"
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
<el-radio-group v-model="formData.isRaffle" size="small">
<el-radio :label="true" border>是</el-radio>
<el-radio :label="false" border>否</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="抽奖规则" prop="raffleRule" v-if="formData.isRaffle">
<el-table :data="formData.raffleRule" border size="small">
<el-table-column label="开始答题时间" prop="startAnswerDate">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'raffleRule.'+$index+'.startAnswerDate'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-date-picker
v-model="row.startAnswerDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择开始答题时间">
</el-date-picker>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="结束答题时间" prop="endAnswerDate">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'raffleRule.'+$index+'.endAnswerDate'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-date-picker
v-model="row.endAnswerDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择结束答题时间">
</el-date-picker>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="抽奖时间" prop="raffleTime">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'raffleRule.'+$index+'.raffleTime'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-date-picker
v-model="row.raffleTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择抽奖时间">
</el-date-picker>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="抽奖分数" prop="raffleScore">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'raffleRule.'+$index+'.raffleScore'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input-number :min="1"
controls-position="right"
style="width: 300px"
placeholder="抽奖分数"
v-model="row.raffleScore"></el-input-number>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="获奖人数" prop="raffleWinnerUserNum">
<template scope="{row,$index}">
<el-form-item label-width="0"
:prop="'raffleRule.'+$index+'.raffleWinnerUserNum'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input-number :min="1"
controls-position="right"
style="width: 300px"
placeholder="获奖人数"
v-model="row.raffleWinnerUserNum"></el-input-number>
</el-form-item>
</template>
</el-table-column>
<el-table-column width="100px">
<template scope="{row}" slot="header">
<el-button icon="el-icon-plus"
size="mini"
type="primary"
@click="formData.raffleRule.push({})"
></el-button>
</template>
<template scope="{$index}">
<el-button size="mini"
icon="el-icon-delete"
type="danger"
@click="formData.raffleRule.splice($index,1)"></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<!-- <el-form-item label="抽奖时间" prop="raffleTime"-->
<!-- v-if="formData.isRaffle"-->
<!-- :rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">-->
<!-- <el-date-picker-->
<!-- v-model="formData.raffleTime"-->
<!-- type="datetime"-->
<!-- value-format="yyyy-MM-dd HH:mm:ss"-->
<!-- placeholder="选择抽奖时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="抽奖分数" prop="raffleScore"-->
<!-- v-if="formData.isRaffle"-->
<!-- :rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">-->
<!-- <el-input-number :min="1"-->
<!-- controls-position="right"-->
<!-- style="width: 300px"-->
<!-- v-model="formData.raffleScore"></el-input-number>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="获奖人数" prop="raffleWinnerUserNum"-->
<!-- v-if="formData.isRaffle"-->
<!-- :rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">-->
<!-- <el-input-number :max="10000" :min="1"-->
<!-- controls-position="right"-->
<!-- style="width: 300px"-->
<!-- v-model="formData.raffleWinnerUserNum"></el-input-number>-->
<!-- </el-form-item>-->
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="medium">取消</el-button>
<el-button @click="modifyBasicInfo" type="primary">确定</el-button>
@@ -718,7 +822,7 @@ layout("/layouts/platform.html"){
<el-row>
<span>
标题、提示
标题提示:
</span>
<el-button @click="openIssueName('iname')" plain size="small">
@@ -732,7 +836,7 @@ layout("/layouts/platform.html"){
<el-row type="flex" style="flex-flow: row wrap;column-gap: 10px;margin:20px 0">
<div>
<span>题目类型</span>
<span>题目类型:</span>
<el-select
@change="if(currentModifyIssue.itx==2){issueData[currentModifyIssueIndex].iplfs=1;issueData[currentModifyIssueIndex].iisdx=true;issueData[currentModifyIssueIndex].wors=[{}]}else{issueData[currentModifyIssueIndex].wors=[{wtxt:'选项1'},{wtxt:'选项2'}]}"
placeholder="题型" size="small"
@@ -795,8 +899,9 @@ layout("/layouts/platform.html"){
</div>
</el-row>
<el-row class="mb20">
<span>显示日期</span>
<!--定时定题模式下才需要设置显示日期-->
<el-row class="mb20" v-if="questionData.ctMode==1">
<span>显示日期:</span>
<el-date-picker placeholder="请选择显示日期"
size="small"
type="date"
@@ -806,16 +911,6 @@ layout("/layouts/platform.html"){
</el-date-picker>
</el-row>
<el-row class="mb20">
<span>排序编号</span>
<el-input
v-if="questionData.ctMode==1"
v-model="issueData[currentModifyIssueIndex].ipxbh"
place="请输入排序编号"
style="width: 80px"
size="small"></el-input>
</el-row>
<template v-if="issueData[currentModifyIssueIndex].itx===1">
<vi-title2 title="选项设置"></vi-title2>
<el-row v-if="currentModifyIssue.itx==1">
@@ -958,7 +1053,6 @@ layout("/layouts/platform.html"){
</div>
<script>
let qsmEditor
let upTxtEditor
let cakeEditor
let vue = new Vue({
@@ -983,7 +1077,7 @@ layout("/layouts/platform.html"){
year: new Date().getFullYear() + ''
},
viewData: {issue: [{word: []}]},
formData: {issues: [{wors: [{}]}]},
formData: {issues: [{wors: [{}]}], raffleRule: []},
setTitleDialogVisible: false,
formRules: {
qtitle: [{required: true, message: '请填写标题', trigger: ['blur', 'change']}],
@@ -1217,14 +1311,7 @@ layout("/layouts/platform.html"){
this.$refs.guava.edit()
this.editMode = 'basicInfo'
setTimeout(() => {
$('#qsmEditor').html("")
qsmEditor = new wangEditor('#qsmEditor')
qsmEditor.config.uploadImgShowBase64 = true
qsmEditor.config.onchange = (html) => {
this.$set(this.formData, "qsm", html)
}
qsmEditor.create()
this.formData = {issues: [], qlx: 2, qrkdcs: 0}
this.formData = {issues: [], qlx: 2, qrkdcs: 0, raffleRule: []}
}, 300)
},
@@ -1233,18 +1320,15 @@ layout("/layouts/platform.html"){
async openEditBasicInfo(qid) {
const {code, data, msg} = await $.get(loc() + "/findBasicInfo", {qid: qid})
if (code === 0) {
this.$nextTick(() => {
$('#qsmEditor').html(data.qsm)
qsmEditor = new wangEditor('#qsmEditor')
qsmEditor.config.onchange = (html) => {
this.$set(this.formData, "qsm", html)
setTimeout(() => {
if (data.raffleRule == null) {
data.raffleRule = []
}
qsmEditor.create()
this.formData = data
if (!this.isNull(this.formData.qdtkssj) && !this.isNull(this.formData.qdtjssj)) {
this.$set(this.formData, 'qdtsj', [this.formData.qdtkssj, this.formData.qdtjssj])
}
})
}, 300)
this.editMode = 'basicInfo'
this.$refs.guava.edit()
} else {
@@ -1252,6 +1336,7 @@ layout("/layouts/platform.html"){
}
},
async modifyBasicInfo() {
if (this.formData.qlx === 4) {
if (this.formData.autoSelect && this.formData.endTime < new Date().getTime()) {
this.$message.warning('结束时间必须要大于当前时间')
@@ -1259,22 +1344,25 @@ layout("/layouts/platform.html"){
}
}
//答题 并且是 定时定题
// if (this.formData.qlx === 2 && this.formData.ctMode === 1) {
// if (this.formData.issues.some(v => v.displayDate != null) && this.formData.issues.some(v => v.displayDate == null)) {
// this.$message.warning('显示日期只能全为空或者全不为空')
// return
// }
// }
this.$refs['addForm'].validate(async valid => {
if (valid) {
// if (this.formData.isRaffle && moment(this.formData.raffleTime).isBefore(moment(this.formData.endTime))) {
// this.$message.warning('抽奖时间必须要大于活动结束时间')
// return
// }
const {code, msg} = await $.post(loc() + '/modifyBasicInfo', this.formData)
if (code === 0) {
this.notifySuccess(msg)
this.$refs.guava.index()
this.pageData()
} else {
this.notifyWarning(msg)
}
const {code, msg} = await $.post(loc() + '/modifyBasicInfo', {
question: JSON.stringify(this.formData)
})
if (code === 0) {
this.$message.success(msg)
this.$refs.guava.index()
this.pageData()
} else {
this.$message.warning(msg)
}
}
})
},
//打开题目设置
@@ -1303,14 +1391,23 @@ layout("/layouts/platform.html"){
//修改题目
async doModifyIssues() {
//答题 并且是 定时定题
if (this.questionData.qlx === 2 && this.questionData.ctMode === 1) {
if (this.issueData.some(v => v.displayDate != null) && this.issueData.some(v => v.displayDate == null)) {
this.notifyWarning('显示日期只能全为空或者全不为空')
//答题
if (this.questionData.qlx === 2) {
if (this.issueData.some(v => v.fraction == null || v.fraction === '')) {
this.$message.warning('每题都需要设置分数')
return
}
}
//定时定题需要设置时间
if (this.questionData.ctMode === 1) {
if (this.issueData.some(v => v.displayDate == null || v.displayDate === '')) {
this.$message.warning('每题都需要设置显示日期')
return
}
}
const confirm = await this.$confirm('您确定要提交吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@@ -40,7 +40,8 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">工号姓名:</div>
<div class="search-item-option">
<el-input placeholder="输入关键字" v-model="pageForm.searchKeyword" maxlength="10"></el-input>
<el-input placeholder="输入关键字" v-model="pageForm.searchKeyword"
maxlength="10"></el-input>
</div>
</div>
@@ -113,6 +114,7 @@ layout("/layouts/platform.html"){
<el-table-column
:label="column.label"
:prop="column.prop"
:key="column.key"
:sortable="column.sortable"
align="center"
header-align="center"
@@ -122,6 +124,10 @@ layout("/layouts/platform.html"){
<span @click="showDays(row)" style="color: #236eb4; cursor: pointer">{{ row.dayCount ? row.dayCount : 0 }}</span>
</template>
</el-table-column>
<el-table-column label="每轮得分" prop="everyRandomScore"
v-if="questionCtMode==2 && isSameDay"></el-table-column>
</el-table>
<!--# include("/layouts/pagination.html"){}#-->
@@ -167,8 +173,8 @@ layout("/layouts/platform.html"){
{prop: 'unionname', label: '工会'},
{prop: 'mobile', label: '联系方式'},
// {prop: 'answerTotal', label: '答题次数(第几回答题)', sortable: true},
{prop: 'max_score', label: '得分'},
{prop: 'answerDate', label: '答题日期'},
{prop: 'score', label: '得分'},
],
pageForm: {
unionId: '',
@@ -179,8 +185,29 @@ layout("/layouts/platform.html"){
}
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue')
computed: {
//判断是否为同一天
isSameDay() {
if (this.pageForm.questionId) {
const currentQuestion = this.questions.find(v => v.qid === this.pageForm.questionId)
if (currentQuestion) {
const {startTime, endTime} = currentQuestion
return moment(startTime).isSame(moment(endTime), 'day')
}
return false
}
return false
},
questionCtMode(){
if (this.pageForm.questionId) {
const currentQuestion = this.questions.find(v => v.qid === this.pageForm.questionId)
if (currentQuestion) {
return currentQuestion.ctMode
}
return null
}
return null
}
},
methods: {
showDays(row) {
@@ -209,7 +236,7 @@ layout("/layouts/platform.html"){
this.doSearch()
},
async getQuestion() {
const {data} = await $.get(loc()+"/getQuestion", {year: this.pageForm.year})
const {data} = await $.get(loc() + "/getQuestion", {year: this.pageForm.year})
return data
},
async flushUnits() {
@@ -1,222 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-tabs__content {
padding-top: 20px;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
:clearable="false"
@change="yearChange"
placeholder="选择年"
style="width: 100%"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属问卷:</div>
<div class="search-item-option">
<el-select filterable="true" placeholder="所属问卷" style="width: 100%;" @change="doSearch"
v-model="pageForm.questionId">
<el-option :label="item.qtitle" :value="item.qid" v-for="item in questions"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">工号姓名:</div>
<div class="search-item-option">
<el-input placeholder="输入关键字" v-model="pageForm.searchKeyword" maxlength="10"></el-input>
</div>
</div>
<div class="search-item"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
filterable="true"
placeholder="所属工会" style="width: 100%;"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id" v-for="item in unions"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select clearable="true" filterable="true" placeholder="所属单位"
style="width: 100%;"
v-model="pageForm.unitId">
<el-option :label="item.name" :value="item.id" v-for="item in units"></el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="参加人员">
<template #func>
<el-button :disabled="!pageForm.questionId" @click="doExportInventory" icon="el-icon-printer"
size="small"
type="primary">导出名单
</el-button>
<!--<el-button :disabled="!pageForm.questionId" @click="doExportAll" icon="el-icon-printer"
size="small"
type="primary">导出分工会阶段得分
</el-button>-->
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" class="vi-table"
ref="table" row-key="id" style="width: 100%" v-loading="tableLoading">
<el-table-column
align="center" header-align="center" label="名次" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
show-overflow-tooltip
v-for="column in tableColumns">
<template v-if="column.prop=='dayCount'" scope="{row}">
<span @click="showDays(row)" style="color: #236eb4; cursor: pointer">{{ row.dayCount ? row.dayCount : 0 }}</span>
</template>
</el-table-column>
</el-table>
<!--# include("/layouts/pagination.html"){}#-->
</el-card>
</template>
</guava>
<!-- <el-dialog title="答题次数" :visible.sync="dayDialogVisible" width="40%">-->
<!-- <el-table :data="dayTableData" style="width: 100%;" max-height="400">-->
<!-- <el-table-column align="center" header-align="center" show-overflow-tooltip label="姓名"-->
<!-- prop="username"></el-table-column>-->
<!-- <el-table-column align="center" header-align="center" show-overflow-tooltip label="工号"-->
<!-- prop="loginname"></el-table-column>-->
<!-- <el-table-column align="center" header-align="center" show-overflow-tooltip label="答题时间"-->
<!-- prop="day"></el-table-column>-->
<!-- </el-table>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="dayDialogVisible = false">确 定</el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
dayDialogVisible: false,
dayTableData: [],
unions: [],
units: [],
questions: [],
tableLoading: false,
tableKey: '',
tableColumns: [
{prop: 'username', label: '姓名'},
{prop: 'loginname', label: '工号'},
{prop: 'sex', label: '性别'},
{prop: 'unitname', label: '单位'},
{prop: 'unionname', label: '工会'},
{prop: 'mobile', label: '联系方式'},
// {prop: 'answerTotal', label: '答题次数(第几回答题)', sortable: true},
{prop: 'max_score', label: '得分'},
// {prop: 'answerDate', label: '答题日期'},
],
pageForm: {
unionId: '',
unitId: '',
year: new Date().getFullYear() + '',
keyWord: '',
answerDate: moment().format("YYYY-MM-DD")
}
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue')
},
methods: {
showDays(row) {
if (!row.days || row.dayCount === 0) {
return
}
this.dayTableData = []
row.days.split(',').map(o => {
this.dayTableData.push({username: row.username, loginname: row.loginname, day: o})
})
this.dayDialogVisible = true
},
doExportInventory() {
let {questionId, unionId, unitId, answerDate} = this.pageForm
answerDate = answerDate == null ? '' : answerDate
window.open(loc() + "/export?questionId=" + questionId + "&unionId=" + unionId + "&unitId=" + unitId + "&answerDate=" + answerDate)
},
doExportAll() {
const {questionId, unionId, unitId} = this.pageForm
window.open(loc() + "/doExportAll?questionId=" + questionId)
},
async yearChange() {
this.questions = await this.getQuestion()
this.questions = this.questions.filter(v => v.qlx === 2)
this.$set(this.pageForm, "questionId", this.questions.length > 0 ? this.questions[0].qid : '')
this.doSearch()
},
async getQuestion() {
const {data} = await $.get("/platform/question/answer/ranking/getQuestion", {year: this.pageForm.year})
return data
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.questions = await this.getQuestion()
this.questions = this.questions.filter(v => v.qlx === 2)
this.$set(this.pageForm, "questionId", this.questions.length > 0 ? this.questions[0].qid : '')
this.pageData();
this.unions = await getUnions(null)
this.flushUnits();
}
})
</script>
<!--#
}
#-->
@@ -91,11 +91,6 @@ layout("/layouts/platform.html"){
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="中奖名单">
<template #func>
<el-button :disabled="!pageForm.questionId" @click="doRaffle" icon="el-icon-printer"
size="small"
type="primary">立即抽奖
</el-button>
<el-button :disabled="!pageForm.questionId" @click="exportWinners" icon="el-icon-printer"
size="small"
type="primary">导出中奖名单
@@ -152,9 +147,8 @@ layout("/layouts/platform.html"){
{prop: 'unitname', label: '单位'},
{prop: 'unionname', label: '工会'},
{prop: 'mobile', label: '联系方式'},
{prop: 'score', label: '得分'},
// {prop: 'winDate', label: '中奖日期'},
// {prop: 'maxScore', label: '抽奖分数(最高分)'},
{prop: 'winDate', label: '中奖日期'},
{prop: 'score', label: '抽奖分数'},
],
pageForm: {
unionId: '',
@@ -188,12 +182,6 @@ layout("/layouts/platform.html"){
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
async doRaffle() {
const {code} = await $.get('/platform/question/answer/statistics/doRaffle', {questionId: this.pageForm.questionId})
if (code === 0) {
this.doSearch()
}
}
},
async created() {
this.questions = await this.getQuestion()