main
parent
5d58cb6627
commit
e69000485d
@ -0,0 +1,73 @@
|
|||||||
|
import httpService from "@/request"
|
||||||
|
|
||||||
|
// 查询所有问卷调查信息
|
||||||
|
export function getQuestionList(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/questionnaire/list`,
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加问卷调查表信息
|
||||||
|
export function addQuestion(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/questionnaire/insert`,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新问卷调查表信息
|
||||||
|
export function updateQuestion(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/questionnaire/update`,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除问卷调查信息
|
||||||
|
export function delQuestion(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/questionnaire/delete`,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 发布下架问卷调查
|
||||||
|
export function releaseQuestion(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/questionnaire/isRelease`,
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据问卷调查主键ID查询问卷调查信息
|
||||||
|
export function findQuestion(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/questionnaire/findById`,
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据问卷调查主键id查询报表分析信息
|
||||||
|
export function getReport(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/questionnaire/reportAnalysis`,
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据题目主键id查询开放题内容信息列表
|
||||||
|
export function getAnswerList(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/questionnaire/shortAnswerList`,
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,317 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="cardTitle">
|
||||||
|
<a-space size="large">
|
||||||
|
<span>新增问卷调查</span>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
|
<div class="top-button">
|
||||||
|
<a-button type="primary" @click="save">保存</a-button>
|
||||||
|
<!-- <a-button style="margin-left: 10px">预览</a-button> -->
|
||||||
|
<a-button style="margin-left: 10px" @click="cancel">取消</a-button>
|
||||||
|
</div>
|
||||||
|
<div class="main-area">
|
||||||
|
<div class="type-choose">
|
||||||
|
<div class="type-title">题型选择</div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(1)"><a-icon type="check-circle" />单选题</a-button></div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(2)"><a-icon type="check-square" />多选题</a-button></div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(3)"><a-icon type="unordered-list" />下拉单选</a-button></div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(4)"><a-icon type="check" />判断题</a-button></div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(5)"><a-icon type="question" />开放题</a-button></div>
|
||||||
|
</div>
|
||||||
|
<div class="question-area">
|
||||||
|
<div class="question-area-top">
|
||||||
|
<a-input v-model="form.title" style="margin: 20px;width: 980px" placeholder="问卷标题(限40字)"></a-input>
|
||||||
|
<a-textarea v-model="form.description" style="margin: 0px 20px 20px 20px;width: 980px;height:88px" placeholder="问卷说明"></a-textarea>
|
||||||
|
</div>
|
||||||
|
<div class="question-area-top" style="margin-top: 20px" v-for="(item,index) in form.questionnaireInsertTopicDTOList" :key="index">
|
||||||
|
<div class="question-list">
|
||||||
|
<h4>{{index+1}}.{{item.topic}}</h4><a-tag>{{item.type==1?'单选题':item.type==2?'多选题':item.type==3?'下拉单选':item.type==4?'判断题':'开放题'}}</a-tag>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left: 40px" v-if="item.type==1 || item.type==3">
|
||||||
|
<a-radio disabled v-for="(it,id) in item.questionnaireInsertTopicChoiceDTOList" :key="id">{{it.answer}}</a-radio>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left: 40px" v-if="item.type==2">
|
||||||
|
<a-checkbox disabled v-for="(it,id) in item.questionnaireInsertTopicChoiceDTOList" :key="id">{{it.answer}}</a-checkbox>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 20px">
|
||||||
|
<a-button type="primary" style="margin-left: 20px" @click="editQuestionItem(item,index)">编辑</a-button>
|
||||||
|
<a-button style="margin-left: 20px" @click="deleteQuestionItem(index)">删除</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="question-item">
|
||||||
|
<div style="padding: 20px;display: flex">
|
||||||
|
<div style="width: 80%" v-if="questionCard.type == 1 || questionCard.type == 2 || questionCard.type == 3">
|
||||||
|
<a-form-model layout="horizontal" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||||
|
<a-form-model-item label="题目">
|
||||||
|
<a-input v-model="questionCard.topic"></a-input>
|
||||||
|
<a-button @click="addchoice">添加选项</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item :label="'选项'+(index+1)" v-for="(item,index) in questionChoice" :key="index">
|
||||||
|
<div style="display: flex">
|
||||||
|
<a-input v-model="item.answer"></a-input>
|
||||||
|
<a-button @click="deleteChoice(index)" shape="circle" icon="close" />
|
||||||
|
</div>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
<div>
|
||||||
|
<a-button type="primary" style="margin-left: 20px" @click="questionComfirm(questionCard.type)">{{isEdit==true?'确认编辑':'确认'}}</a-button>
|
||||||
|
<a-button style="margin-left: 20px" @click="questionCancel">取消</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="width: 80%" v-else-if="questionCard.type == 4 || questionCard.type == 5">
|
||||||
|
<a-form-model layout="horizontal" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||||
|
<a-form-model-item label="题目">
|
||||||
|
<a-input v-model="questionCard.topic"></a-input>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
<div>
|
||||||
|
<a-button type="primary" style="margin-left: 20px" @click="questionComfirm(questionCard.type)">{{isEdit==true?'确认编辑':'确认'}}</a-button>
|
||||||
|
<a-button style="margin-left: 20px" @click="questionCancel">取消</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 20px" v-else>
|
||||||
|
请点击左侧按钮添加题目
|
||||||
|
</div>
|
||||||
|
<div style="width: 20%" v-if="questionCard.type == 1 || questionCard.type == 2 || questionCard.type == 3 || questionCard.type == 4|| questionCard.type == 5">
|
||||||
|
<a-form-model layout="horizontal" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||||
|
<a-form-model-item>
|
||||||
|
<a-select v-model="questionCard.type">
|
||||||
|
<a-select-option :value="1">单选题</a-select-option>
|
||||||
|
<a-select-option :value="2">多选题</a-select-option>
|
||||||
|
<a-select-option :value="3">下拉单选</a-select-option>
|
||||||
|
<a-select-option :value="4">判断题</a-select-option>
|
||||||
|
<a-select-option :value="5">开放题</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="question-setting">
|
||||||
|
<div style="padding: 20px">
|
||||||
|
<a-form-model>
|
||||||
|
<a-form-model-item label="封面图片设置">
|
||||||
|
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="开始日期">
|
||||||
|
<a-date-picker v-model="form.beginDate" value-format="YYYY-MM-DD HH:mm:ss"></a-date-picker>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="截止日期">
|
||||||
|
<a-date-picker v-model="form.endDate" value-format="YYYY-MM-DD HH:mm:ss"></a-date-picker>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="问卷对象">
|
||||||
|
<a-select v-model="form.answerType">
|
||||||
|
<a-select-option :value="1">无限制</a-select-option>
|
||||||
|
<a-select-option :value="2">业主</a-select-option>
|
||||||
|
<a-select-option :value="3">业主亲属</a-select-option>
|
||||||
|
<a-select-option :value="4">租户</a-select-option>
|
||||||
|
<a-select-option :value="5">租户亲属</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="是否立即发布">
|
||||||
|
<a-select v-model="form.isRelease">
|
||||||
|
<a-select-option :value="1">发布</a-select-option>
|
||||||
|
<a-select-option :value="0">不发布</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {addQuestion} from "@/api/operation/scroll"
|
||||||
|
export default {
|
||||||
|
name: "addScroll",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
labelCol: { span: 2 },
|
||||||
|
wrapperCol: { span: 14 },
|
||||||
|
letters: ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'],
|
||||||
|
form: {
|
||||||
|
title: '',
|
||||||
|
description: '',
|
||||||
|
answerType: undefined,
|
||||||
|
beginDate: '',
|
||||||
|
endDate: '',
|
||||||
|
questionnaireInsertTopicDTOList: [],
|
||||||
|
isRelease: 0,
|
||||||
|
imgUrls: [],
|
||||||
|
},
|
||||||
|
id: undefined,
|
||||||
|
questionCard: {
|
||||||
|
type: undefined,
|
||||||
|
topic: '',
|
||||||
|
},
|
||||||
|
questionChoice: [],
|
||||||
|
//编辑问题
|
||||||
|
isEdit: false,
|
||||||
|
activeIndex: undefined,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//添加问题
|
||||||
|
addQuestion(type) {
|
||||||
|
this.isEdit = false;
|
||||||
|
this.activeIndex = undefined;
|
||||||
|
let obj = {
|
||||||
|
type: type,
|
||||||
|
topic: '',
|
||||||
|
questionnaireInsertTopicChoiceDTOList: [],
|
||||||
|
};
|
||||||
|
this.questionCard = obj
|
||||||
|
},
|
||||||
|
//确认,取消添加问题
|
||||||
|
questionComfirm(type) {
|
||||||
|
if(this.isEdit == false) {
|
||||||
|
if(type == 1 || type == 2 || type == 3) {
|
||||||
|
for(let i = 0;i<this.questionChoice.length;i++) {
|
||||||
|
this.questionChoice[i].options = this.letters[i]
|
||||||
|
};
|
||||||
|
let obj = {
|
||||||
|
type: this.questionCard.type,
|
||||||
|
topic: this.questionCard.topic,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: this.questionChoice
|
||||||
|
};
|
||||||
|
this.form.questionnaireInsertTopicDTOList.push(obj)
|
||||||
|
} else {
|
||||||
|
let obj = {
|
||||||
|
type: this.questionCard.type,
|
||||||
|
topic: this.questionCard.topic,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: []
|
||||||
|
};
|
||||||
|
this.form.questionnaireInsertTopicDTOList.push(obj)
|
||||||
|
}
|
||||||
|
} else if (this.isEdit == true) {
|
||||||
|
if(type == 1 || type == 2 || type == 3) {
|
||||||
|
for(let i = 0;i<this.questionChoice.length;i++) {
|
||||||
|
this.questionChoice[i].options = this.letters[i]
|
||||||
|
};
|
||||||
|
let obj = {
|
||||||
|
type: this.questionCard.type,
|
||||||
|
topic: this.questionCard.topic,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: this.questionChoice
|
||||||
|
};
|
||||||
|
this.form.questionnaireInsertTopicDTOList[this.activeIndex] = obj
|
||||||
|
} else {
|
||||||
|
let obj = {
|
||||||
|
type: this.questionCard.type,
|
||||||
|
topic: this.questionCard.topic,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: []
|
||||||
|
};
|
||||||
|
this.form.questionnaireInsertTopicDTOList[this.activeIndex] = obj
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.questionCancel()
|
||||||
|
},
|
||||||
|
questionCancel() {
|
||||||
|
this.isEdit = false;
|
||||||
|
this.activeIndex = undefined;
|
||||||
|
this.questionChoice = [];
|
||||||
|
this.questionCard = {
|
||||||
|
type: undefined,
|
||||||
|
topic: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//添加选项
|
||||||
|
addchoice() {
|
||||||
|
let obj = {
|
||||||
|
answer: '',
|
||||||
|
options: '',
|
||||||
|
};
|
||||||
|
this.questionChoice.push(obj)
|
||||||
|
},
|
||||||
|
//删除选项
|
||||||
|
deleteChoice(index) {
|
||||||
|
this.questionChoice.splice(index,1)
|
||||||
|
},
|
||||||
|
//编辑已经添加的问题
|
||||||
|
editQuestionItem(item,index) {
|
||||||
|
this.isEdit = true;
|
||||||
|
this.activeIndex = index;
|
||||||
|
this.questionCard.type = item.type;
|
||||||
|
this.questionCard.topic = item.topic;
|
||||||
|
if(item.questionnaireInsertTopicChoiceDTOList) {
|
||||||
|
this.questionChoice = item.questionnaireInsertTopicChoiceDTOList
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//删除已经添加的问题
|
||||||
|
deleteQuestionItem(index) {
|
||||||
|
this.form.questionnaireInsertTopicDTOList.splice(index,1)
|
||||||
|
},
|
||||||
|
//保存
|
||||||
|
save() {
|
||||||
|
addQuestion(this.form).then(res => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
this.$message.success(res.msg);
|
||||||
|
this.$router.go(-1);
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//取消
|
||||||
|
cancel() {
|
||||||
|
this.questionList = [];
|
||||||
|
this.$router.go(-1);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.top-button {
|
||||||
|
padding: 8px 0px 20px 10px
|
||||||
|
}
|
||||||
|
.main-area {
|
||||||
|
display: flex;
|
||||||
|
padding: 0px 20px 20px 10px;
|
||||||
|
.type-choose {
|
||||||
|
height: 837px;
|
||||||
|
width: 220px;
|
||||||
|
border: 2px solid #E7E7E7;
|
||||||
|
.type-title {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 20px;
|
||||||
|
padding: 18px 18px 18px 18px
|
||||||
|
}
|
||||||
|
.type-button {
|
||||||
|
height: 40px;
|
||||||
|
width: 180px;
|
||||||
|
margin-left: 18px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-area {
|
||||||
|
margin-left: 20px;
|
||||||
|
.question-area-top {
|
||||||
|
// height: 184px;
|
||||||
|
width: 1020px;
|
||||||
|
border: 2px solid #E7E7E7
|
||||||
|
}
|
||||||
|
.question-item {
|
||||||
|
width: 1020px;
|
||||||
|
border: 2px solid #E7E7E7;
|
||||||
|
margin-top: 20px;
|
||||||
|
background: #F5F5F5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-setting {
|
||||||
|
height: 837px;
|
||||||
|
width: 230px;
|
||||||
|
margin-left: 20px;
|
||||||
|
border: 2px solid #E7E7E7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-list {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 20px 20px 20px 40px
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,67 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="cardTitle">
|
||||||
|
<a-space size="large">
|
||||||
|
<span>问卷调查报表分析</span>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
|
<div class="rep-title">物业服务满意度调查问卷</div>
|
||||||
|
<div class="rep-time">{{reportData.beginDate}} 至 {{reportData.endDate}}</div>
|
||||||
|
<div class="rep-number">共收集到<span style="color: rgb(49,98,188)"> {{reportData.answerNum}} </span>份问卷</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {getReport, getAnswerList} from "@/api/operation/scroll"
|
||||||
|
export default {
|
||||||
|
name: "analyze",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
id: undefined,
|
||||||
|
reportData: {
|
||||||
|
// title: '',
|
||||||
|
beginDate: '',
|
||||||
|
endDate: '',
|
||||||
|
answerNum: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.id = this.$route.params.id;
|
||||||
|
getReport({questionnaireId: this.id}).then(res => {
|
||||||
|
let data = res.data;
|
||||||
|
this.reportData = {
|
||||||
|
beginDate: data.beginDate,
|
||||||
|
endDate: data.endDate,
|
||||||
|
answerNum: data.answerNum
|
||||||
|
}
|
||||||
|
console.log(data)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.rep-title {
|
||||||
|
font-family: PingFang SC;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 25px;
|
||||||
|
padding: 0px 10px 10px 10px;
|
||||||
|
}
|
||||||
|
.rep-time {
|
||||||
|
font-family: PingFang SC;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 17px;
|
||||||
|
color: #999999;
|
||||||
|
padding: 0px 10px 10px 10px;
|
||||||
|
}
|
||||||
|
.rep-number {
|
||||||
|
font-family: PingFang SC;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 20px;
|
||||||
|
padding: 0px 10px 10px 10px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,161 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<a-drawer title="职位设置" :width="540" :visible="show" :body-style="{ paddingBottom: '80px' }" @close="addClose">
|
||||||
|
<div class="drawer-content" style="padding: 16px">
|
||||||
|
职位类型
|
||||||
|
<a-divider></a-divider>
|
||||||
|
<!-- tags -->
|
||||||
|
<span v-for="item,index in typeList" :key="item.id">
|
||||||
|
<a-input
|
||||||
|
v-if="item.show==true"
|
||||||
|
ref="input"
|
||||||
|
v-focus
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
:style="{ width: '78px','padding-bottom':'3px','margin-right':'7px' }"
|
||||||
|
v-model="item.name"
|
||||||
|
@blur="editType(item)"
|
||||||
|
@keyup.enter="editType(item)"
|
||||||
|
/>
|
||||||
|
<a-tag
|
||||||
|
v-else-if="item.show==false" closable @close.prevent="delType(item.id)"
|
||||||
|
@click="editInput(item,index)" >
|
||||||
|
{{item.name}}
|
||||||
|
</a-tag>
|
||||||
|
</span>
|
||||||
|
<!-- addTag -->
|
||||||
|
<span>
|
||||||
|
<a-input
|
||||||
|
v-if="inputVisible"
|
||||||
|
ref="addInput"
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
:style="{ width: '78px','padding-bottom':'3px'}"
|
||||||
|
:value="typeForm.name"
|
||||||
|
@change="handleInputChange"
|
||||||
|
@blur="handleInputConfirm"
|
||||||
|
@keyup.enter="handleInputConfirm"
|
||||||
|
/>
|
||||||
|
<a-tag v-else style="background: #fff; borderStyle: dashed;" @click="addShow">
|
||||||
|
<a-icon type="plus" /> 新增类型
|
||||||
|
</a-tag>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="drawer-footer">
|
||||||
|
<a-button :style="{ marginRight: '8px' }" @click="addClose">
|
||||||
|
关闭
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
</a-drawer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import {getPhontTypeList, addPhontType, delPhontType,updatePhontType} from "@/api/operation/suggestion"
|
||||||
|
import {getComList, addComType, updateComType, delComType} from "@/api/operation/commission"
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
show: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
typeForm: {
|
||||||
|
name: ''
|
||||||
|
},
|
||||||
|
typeList: [],
|
||||||
|
inputVisible: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getData() {
|
||||||
|
this.typeList = []
|
||||||
|
const res = await getComList();
|
||||||
|
const arr = res.data;
|
||||||
|
arr.forEach(ele => {
|
||||||
|
ele.show = false;
|
||||||
|
})
|
||||||
|
this.typeList = arr;
|
||||||
|
this.$emit("refresh");
|
||||||
|
},
|
||||||
|
//输入
|
||||||
|
editInput(obj, i) {
|
||||||
|
this.$set(this.typeList[i],'show',true)
|
||||||
|
this.$forceUpdate()
|
||||||
|
},
|
||||||
|
//新增
|
||||||
|
addShow(){
|
||||||
|
this.inputVisible = true;
|
||||||
|
this.$nextTick(function() {
|
||||||
|
this.$refs.addInput.focus();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//编辑
|
||||||
|
async editType(item){
|
||||||
|
let res = await updateComType({
|
||||||
|
id: item.id,
|
||||||
|
name: item.name
|
||||||
|
})
|
||||||
|
if(res.code === 200){
|
||||||
|
item.show = false
|
||||||
|
this.$forceUpdate()
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
}else{
|
||||||
|
this.$message.error(res.msg)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleInputChange(e) {
|
||||||
|
this.typeForm.name = e.target.value;
|
||||||
|
},
|
||||||
|
//新增和编辑确认
|
||||||
|
async handleInputConfirm() {
|
||||||
|
if(this.typeForm.name === ''){
|
||||||
|
this.inputVisible = false;
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let res = await addComType({
|
||||||
|
name:this.typeForm.name,
|
||||||
|
})
|
||||||
|
if(res.code === 200){
|
||||||
|
this.$message.success(res.msg);
|
||||||
|
this.inputVisible = false;
|
||||||
|
this.typeForm.name = '';
|
||||||
|
this.getData()
|
||||||
|
}else{
|
||||||
|
this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//删除
|
||||||
|
delType(id){
|
||||||
|
this.$confirm({
|
||||||
|
title: "是否删除",
|
||||||
|
icon:'delete',
|
||||||
|
onOk:async()=>{
|
||||||
|
let res = await delComType({industryCommitteeTypeId: id})
|
||||||
|
if(res.code=== 200){
|
||||||
|
this.$message.success(res.msg);
|
||||||
|
this.getData()
|
||||||
|
}else{
|
||||||
|
this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
},
|
||||||
|
addClose() {
|
||||||
|
this.$emit("addClose");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,67 @@
|
|||||||
|
export const columns = [
|
||||||
|
{
|
||||||
|
title: "问卷标题",
|
||||||
|
width: "15%",
|
||||||
|
dataIndex: "title",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "问卷对象",
|
||||||
|
width: "9%",
|
||||||
|
dataIndex: "answerType",
|
||||||
|
customRender: function(answerType) {
|
||||||
|
switch(answerType) {
|
||||||
|
case 1: return '无限制';
|
||||||
|
case 2: return '业主';
|
||||||
|
case 3: return '业主亲属';
|
||||||
|
case 4: return '租户';
|
||||||
|
case 5: return '租户亲属';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "状态",
|
||||||
|
width: "9%",
|
||||||
|
dataIndex: "status",
|
||||||
|
customRender: function(status) {
|
||||||
|
switch(status) {
|
||||||
|
case 1: return '未开始';
|
||||||
|
case 2: return '正在进行';
|
||||||
|
case 3: return '已结束';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "开始时间",
|
||||||
|
width: "15%",
|
||||||
|
dataIndex: "beginDate",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "结束时间",
|
||||||
|
width: "15%",
|
||||||
|
dataIndex: "endDate",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "答题人数",
|
||||||
|
width: "8%",
|
||||||
|
dataIndex: "answerNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "是否发布",
|
||||||
|
width: "10%",
|
||||||
|
dataIndex: "isRelease",
|
||||||
|
scopedSlots: { customRender: "release" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
dataIndex: "action",
|
||||||
|
key: "action",
|
||||||
|
width: "240",
|
||||||
|
fixed: "right",
|
||||||
|
scopedSlots: { customRender: "action" },
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
export const rules = {
|
||||||
|
appUserId: [{ required: true, message: "请选择住户", trigger: "change" }],
|
||||||
|
industryCommitteeTypeId: [{ required: true, message: "请选择职位", trigger: "change" }],
|
||||||
|
}
|
@ -0,0 +1,363 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="cardTitle">
|
||||||
|
<a-space size="large">
|
||||||
|
<span>编辑问卷调查</span>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
|
<div class="top-button">
|
||||||
|
<a-button type="primary" @click="save">保存</a-button>
|
||||||
|
<!-- <a-button style="margin-left: 10px">预览</a-button> -->
|
||||||
|
<a-button style="margin-left: 10px" @click="cancel">取消</a-button>
|
||||||
|
</div>
|
||||||
|
<div class="main-area">
|
||||||
|
<div class="type-choose">
|
||||||
|
<div class="type-title">题型选择</div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(1)"><a-icon type="check-circle" />单选题</a-button></div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(2)"><a-icon type="check-square" />多选题</a-button></div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(3)"><a-icon type="check-square" />下拉单选</a-button></div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(4)"><a-icon type="check" />判断题</a-button></div>
|
||||||
|
<div><a-button class="type-button" @click="addQuestion(5)"><a-icon type="question" />开放题</a-button></div>
|
||||||
|
</div>
|
||||||
|
<div class="question-area">
|
||||||
|
<div class="question-area-top">
|
||||||
|
<a-input v-model="form.title" style="margin: 20px;width: 980px" placeholder="问卷标题(限40字)"></a-input>
|
||||||
|
<a-textarea v-model="form.description" style="margin: 0px 20px 20px 20px;width: 980px;height:88px" placeholder="问卷说明"></a-textarea>
|
||||||
|
</div>
|
||||||
|
<div class="question-area-top" style="margin-top: 20px" v-for="(item,index) in form.questionnaireInsertTopicDTOList" :key="index">
|
||||||
|
<div class="question-list">
|
||||||
|
<h4>{{index+1}}.{{item.topic}}</h4><a-tag>{{item.type==1?'单选题':item.type==2?'多选题':item.type==3?'下拉单选':item.type==4?'判断题':'开放题'}}</a-tag>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left: 40px" v-if="item.type==1||item.type==3">
|
||||||
|
<a-radio disabled v-for="(it,id) in item.questionnaireInsertTopicChoiceDTOList" :key="id">{{it.answer}}</a-radio>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left: 40px" v-if="item.type==2">
|
||||||
|
<a-checkbox disabled v-for="(it,id) in item.questionnaireInsertTopicChoiceDTOList" :key="id">{{it.answer}}</a-checkbox>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 20px">
|
||||||
|
<a-button type="primary" style="margin-left: 20px" @click="editQuestionItem(item,index)">编辑</a-button>
|
||||||
|
<a-button style="margin-left: 20px" @click="deleteQuestionItem(index)">删除</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="question-item">
|
||||||
|
<div style="padding: 20px;display: flex">
|
||||||
|
<div style="width: 80%" v-if="questionCard.type == 1 || questionCard.type == 2 || questionCard.type == 3">
|
||||||
|
<a-form-model layout="horizontal" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||||
|
<a-form-model-item label="题目">
|
||||||
|
<a-input v-model="questionCard.topic"></a-input>
|
||||||
|
<a-button @click="addchoice">添加选项</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item :label="'选项'+(index+1)" v-for="(item,index) in questionChoice" :key="index">
|
||||||
|
<div style="display: flex">
|
||||||
|
<a-input v-model="item.answer"></a-input>
|
||||||
|
<a-button @click="deleteChoice(index)" shape="circle" icon="close" />
|
||||||
|
</div>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
<div>
|
||||||
|
<a-button type="primary" style="margin-left: 20px" @click="questionComfirm(questionCard.type)">{{isEdit==true?'确认编辑':'确认'}}</a-button>
|
||||||
|
<a-button style="margin-left: 20px" @click="questionCancel">取消</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="width: 80%" v-else-if="questionCard.type == 4 || questionCard.type == 5">
|
||||||
|
<a-form-model layout="horizontal" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||||
|
<a-form-model-item label="题目">
|
||||||
|
<a-input v-model="questionCard.topic"></a-input>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
<div>
|
||||||
|
<a-button type="primary" style="margin-left: 20px" @click="questionComfirm(questionCard.type)">{{isEdit==true?'确认编辑':'确认'}}</a-button>
|
||||||
|
<a-button style="margin-left: 20px" @click="questionCancel">取消</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 20px" v-else>
|
||||||
|
请点击左侧按钮添加题目
|
||||||
|
</div>
|
||||||
|
<div style="width: 20%" v-if="questionCard.type == 1 || questionCard.type == 2 || questionCard.type == 3 || questionCard.type == 4|| questionCard.type == 5">
|
||||||
|
<a-form-model layout="horizontal" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||||
|
<a-form-model-item>
|
||||||
|
<a-select v-model="questionCard.type">
|
||||||
|
<a-select-option :value="1">单选题</a-select-option>
|
||||||
|
<a-select-option :value="2">多选题</a-select-option>
|
||||||
|
<a-select-option :value="3">下拉单选</a-select-option>
|
||||||
|
<a-select-option :value="4">判断题</a-select-option>
|
||||||
|
<a-select-option :value="5">开放题</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="question-setting">
|
||||||
|
<div style="padding: 20px">
|
||||||
|
<a-form-model>
|
||||||
|
<a-form-model-item label="封面图片设置">
|
||||||
|
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="开始日期">
|
||||||
|
<a-date-picker v-model="form.beginDate" value-format="YYYY-MM-DD HH:mm:ss"></a-date-picker>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="截止日期">
|
||||||
|
<a-date-picker v-model="form.endDate" value-format="YYYY-MM-DD HH:mm:ss"></a-date-picker>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="问卷对象">
|
||||||
|
<a-select v-model="form.answerType">
|
||||||
|
<a-select-option :value="1">无限制</a-select-option>
|
||||||
|
<a-select-option :value="2">业主</a-select-option>
|
||||||
|
<a-select-option :value="3">业主亲属</a-select-option>
|
||||||
|
<a-select-option :value="4">租户</a-select-option>
|
||||||
|
<a-select-option :value="5">租户亲属</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="是否立即发布">
|
||||||
|
<a-select v-model="form.isRelease">
|
||||||
|
<a-select-option :value="1">发布</a-select-option>
|
||||||
|
<a-select-option :value="0">不发布</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {updateQuestion, findQuestion} from "@/api/operation/scroll"
|
||||||
|
export default {
|
||||||
|
name: "addScroll",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
labelCol: { span: 2 },
|
||||||
|
wrapperCol: { span: 14 },
|
||||||
|
letters: ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'],
|
||||||
|
form: {
|
||||||
|
id: undefined,
|
||||||
|
title: '',
|
||||||
|
description: '',
|
||||||
|
answerType: undefined,
|
||||||
|
beginDate: '',
|
||||||
|
endDate: '',
|
||||||
|
questionnaireInsertTopicDTOList: [],
|
||||||
|
isRelease: 0,
|
||||||
|
imgUrls: [],
|
||||||
|
deleteTopicIds: [],
|
||||||
|
},
|
||||||
|
id: undefined,
|
||||||
|
questionCard: {
|
||||||
|
type: undefined,
|
||||||
|
topic: '',
|
||||||
|
id: null,
|
||||||
|
deleteTopicChoiceIds: []
|
||||||
|
},
|
||||||
|
questionChoice: [],
|
||||||
|
//编辑问题
|
||||||
|
isEdit: false,
|
||||||
|
activeIndex: undefined,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.id = this.$route.params.id;
|
||||||
|
if(this.id != undefined) {
|
||||||
|
findQuestion({questionnaireId: this.id}).then(res => {
|
||||||
|
let data = res.data;
|
||||||
|
this.form.id = data.id;
|
||||||
|
this.form.title = data.title;
|
||||||
|
this.form.description = data.description;
|
||||||
|
this.form.answerType = data.answerType;
|
||||||
|
this.form.beginDate = data.beginDate;
|
||||||
|
this.form.endDate = data.endDate;
|
||||||
|
this.form.isRelease = data.isRelease;
|
||||||
|
// this.form.questionnaireInsertTopicDTOList = data.questionnaireFBITopicVoList;
|
||||||
|
let arr = [];
|
||||||
|
data.questionnaireFBITopicVoList.forEach(ele => {
|
||||||
|
ele.deleteTopicChoiceIds = []
|
||||||
|
let obj = {
|
||||||
|
id: ele.id,
|
||||||
|
type: ele.type,
|
||||||
|
topic: ele.topic,
|
||||||
|
deleteTopicChoiceIds: [],
|
||||||
|
questionnaireInsertTopicChoiceDTOList: ele.questionnaireFBITopicChoiceVoList
|
||||||
|
};
|
||||||
|
arr.push(obj)
|
||||||
|
});
|
||||||
|
this.form.questionnaireInsertTopicDTOList = arr
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//添加问题
|
||||||
|
addQuestion(type) {
|
||||||
|
this.isEdit = false;
|
||||||
|
this.activeIndex = undefined;
|
||||||
|
let obj = {
|
||||||
|
type: type,
|
||||||
|
topic: '',
|
||||||
|
id: null,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: [],
|
||||||
|
deleteTopicChoiceIds:[]
|
||||||
|
};
|
||||||
|
this.questionCard = obj
|
||||||
|
},
|
||||||
|
//确认,取消添加问题
|
||||||
|
questionComfirm(type) {
|
||||||
|
if(this.isEdit == false) {
|
||||||
|
if(type == 1 || type == 2 || type == 3) {
|
||||||
|
for(let i = 0;i<this.questionChoice.length;i++) {
|
||||||
|
this.questionChoice[i].options = this.letters[i]
|
||||||
|
};
|
||||||
|
let obj = {
|
||||||
|
type: this.questionCard.type,
|
||||||
|
topic: this.questionCard.topic,
|
||||||
|
id: null,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: this.questionChoice,
|
||||||
|
deleteTopicChoiceIds: [],
|
||||||
|
};
|
||||||
|
this.form.questionnaireInsertTopicDTOList.push(obj)
|
||||||
|
} else {
|
||||||
|
let obj = {
|
||||||
|
type: this.questionCard.type,
|
||||||
|
topic: this.questionCard.topic,
|
||||||
|
id: null,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: [],
|
||||||
|
deleteTopicChoiceIds: []
|
||||||
|
};
|
||||||
|
this.form.questionnaireInsertTopicDTOList.push(obj)
|
||||||
|
}
|
||||||
|
} else if (this.isEdit == true) {
|
||||||
|
if(type == 1 || type == 2 || type == 3) {
|
||||||
|
for(let i = 0;i<this.questionChoice.length;i++) {
|
||||||
|
this.questionChoice[i].options = this.letters[i]
|
||||||
|
};
|
||||||
|
let obj = {
|
||||||
|
type: this.questionCard.type,
|
||||||
|
topic: this.questionCard.topic,
|
||||||
|
id: this.questionCard.id,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: this.questionChoice,
|
||||||
|
deleteTopicChoiceIds: []
|
||||||
|
};
|
||||||
|
this.form.questionnaireInsertTopicDTOList[this.activeIndex] = obj
|
||||||
|
} else {
|
||||||
|
let obj = {
|
||||||
|
type: this.questionCard.type,
|
||||||
|
topic: this.questionCard.topic,
|
||||||
|
id: this.questionCard.id,
|
||||||
|
questionnaireInsertTopicChoiceDTOList: [],
|
||||||
|
deleteTopicChoiceIds: []
|
||||||
|
};
|
||||||
|
this.form.questionnaireInsertTopicDTOList[this.activeIndex] = obj
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.questionCancel()
|
||||||
|
},
|
||||||
|
questionCancel() {
|
||||||
|
this.isEdit = false;
|
||||||
|
this.activeIndex = undefined;
|
||||||
|
this.questionChoice = [];
|
||||||
|
this.questionCard = {
|
||||||
|
type: undefined,
|
||||||
|
topic: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//添加选项
|
||||||
|
addchoice() {
|
||||||
|
let obj = {
|
||||||
|
answer: '',
|
||||||
|
options: '',
|
||||||
|
id: null
|
||||||
|
};
|
||||||
|
this.questionChoice.push(obj)
|
||||||
|
},
|
||||||
|
//删除选项
|
||||||
|
deleteChoice(index) {
|
||||||
|
this.questionChoice.splice(index,1)
|
||||||
|
},
|
||||||
|
//编辑已经添加的问题
|
||||||
|
editQuestionItem(item,index) {
|
||||||
|
this.isEdit = true;
|
||||||
|
this.activeIndex = index;
|
||||||
|
this.questionCard.type = item.type;
|
||||||
|
this.questionCard.topic = item.topic;
|
||||||
|
this.questionCard.id = item.id;
|
||||||
|
if(item.questionnaireInsertTopicChoiceDTOList) {
|
||||||
|
this.questionChoice = item.questionnaireInsertTopicChoiceDTOList
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//删除已经添加的问题
|
||||||
|
deleteQuestionItem(index) {
|
||||||
|
this.form.questionnaireInsertTopicDTOList.splice(index,1)
|
||||||
|
},
|
||||||
|
//保存
|
||||||
|
save() {
|
||||||
|
console.log(this.form)
|
||||||
|
updateQuestion(this.form).then(res => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
this.$message.success(res.msg);
|
||||||
|
this.$router.go(-1);
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//取消
|
||||||
|
cancel() {
|
||||||
|
this.questionList = [];
|
||||||
|
this.$router.go(-1);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.top-button {
|
||||||
|
padding: 8px 0px 20px 10px
|
||||||
|
}
|
||||||
|
.main-area {
|
||||||
|
display: flex;
|
||||||
|
padding: 0px 20px 20px 10px;
|
||||||
|
.type-choose {
|
||||||
|
height: 837px;
|
||||||
|
width: 220px;
|
||||||
|
border: 2px solid #E7E7E7;
|
||||||
|
.type-title {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 20px;
|
||||||
|
padding: 18px 18px 18px 18px
|
||||||
|
}
|
||||||
|
.type-button {
|
||||||
|
height: 40px;
|
||||||
|
width: 180px;
|
||||||
|
margin-left: 18px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-area {
|
||||||
|
margin-left: 20px;
|
||||||
|
.question-area-top {
|
||||||
|
// height: 184px;
|
||||||
|
width: 1020px;
|
||||||
|
border: 2px solid #E7E7E7
|
||||||
|
}
|
||||||
|
.question-item {
|
||||||
|
width: 1020px;
|
||||||
|
border: 2px solid #E7E7E7;
|
||||||
|
margin-top: 20px;
|
||||||
|
background: #F5F5F5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-setting {
|
||||||
|
height: 837px;
|
||||||
|
width: 230px;
|
||||||
|
margin-left: 20px;
|
||||||
|
border: 2px solid #E7E7E7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.question-list {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 20px 20px 20px 40px
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,197 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="cardTitle">
|
||||||
|
<a-space size="large">
|
||||||
|
<span>问卷调查</span>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
|
<div class="search-box">
|
||||||
|
<a-row>
|
||||||
|
<a-col :span="20">
|
||||||
|
<a-space size="large">
|
||||||
|
<a-input v-model="form.title" style="width: 200px" placeholder="问卷标题"></a-input>
|
||||||
|
<a-select v-model="form.status" style="width: 200px" placeholder="问卷状态">
|
||||||
|
<a-select-option :value="1">未开始</a-select-option>
|
||||||
|
<a-select-option :value="2">正在进行</a-select-option>
|
||||||
|
<a-select-option :value="3">已结束</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
<a-select v-model="form.answerType" style="width: 200px" placeholder="问卷对象">
|
||||||
|
<a-select-option :value="1">无限制</a-select-option>
|
||||||
|
<a-select-option :value="2">业主</a-select-option>
|
||||||
|
<a-select-option :value="3">业主亲属</a-select-option>
|
||||||
|
<a-select-option :value="4">租户</a-select-option>
|
||||||
|
<a-select-option :value="5">租户亲属</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
<a-button type="primary" @click='getData'>查 询</a-button>
|
||||||
|
<a-button @click='reset'>重 置</a-button>
|
||||||
|
</a-space>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</div>
|
||||||
|
<a-button style="margin: 10px" class="add-btn" @click="addScroll">新增问卷调查</a-button>
|
||||||
|
<div class="main">
|
||||||
|
<a-table :columns="columns" :data-source="tableData"
|
||||||
|
:pagination="pagination" @change="handlerChange"
|
||||||
|
:row-selection="{
|
||||||
|
selectedRowKeys: selectedRowKeys,
|
||||||
|
onChange: selectionChoosed,
|
||||||
|
}"
|
||||||
|
:row-key="
|
||||||
|
(record, index) => {
|
||||||
|
return record.id;
|
||||||
|
}">
|
||||||
|
<template slot="release" slot-scope="text,record">
|
||||||
|
<a-switch checked-children="已发布"
|
||||||
|
un-checked-children="未发布"
|
||||||
|
:checked="record.isRelease == 1"
|
||||||
|
@change="handleRelease(record)">
|
||||||
|
</a-switch>
|
||||||
|
</template>
|
||||||
|
<template slot="action" slot-scope="text,record">
|
||||||
|
<span><a @click=analize(record)>分析报表</a></span>
|
||||||
|
<span><a style="margin-left: 8px" @click=edit(record)>编辑</a></span>
|
||||||
|
<span><a style="margin-left: 8px;color:red" @click=del(record)>删除</a></span>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
<div class="action">
|
||||||
|
<a-dropdown :disabled="!hasSelected">
|
||||||
|
<a-menu slot="overlay" @click="handleMenuClick">
|
||||||
|
<a-menu-item key="del"> 批量删除 </a-menu-item>
|
||||||
|
</a-menu>
|
||||||
|
<a-button> 批量操作 <a-icon type="down" /> </a-button>
|
||||||
|
</a-dropdown>
|
||||||
|
<span style="margin-left: 8px">
|
||||||
|
<template v-if="hasSelected">
|
||||||
|
{{ `已选择 ${selectedRowKeys.length} 条` }}
|
||||||
|
</template>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { rules, columns } from "./depend/config";
|
||||||
|
import {getQuestionList, delQuestion, releaseQuestion} from "@/api/operation/scroll"
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
form: {
|
||||||
|
title: '',
|
||||||
|
status: undefined,
|
||||||
|
answerType: undefined
|
||||||
|
},
|
||||||
|
rules: rules,
|
||||||
|
columns: columns,
|
||||||
|
tableData: [],
|
||||||
|
pagination: {
|
||||||
|
current: 1,
|
||||||
|
total: 0,
|
||||||
|
pageSize: 10,
|
||||||
|
showTotal: (total) => `共 ${total} 条`,
|
||||||
|
showSizeChanger: true,
|
||||||
|
showQuickJumper: true,
|
||||||
|
},
|
||||||
|
//批量删除
|
||||||
|
selectedRowKeys: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
let obj = Object.assign(this.form, {pageNum: this.pagination.current,size: this.pagination.pageSize})
|
||||||
|
getQuestionList(obj).then(res => {
|
||||||
|
this.tableData = res.data.rows;
|
||||||
|
this.pagination.total = res.data.total
|
||||||
|
})
|
||||||
|
},
|
||||||
|
reset() {
|
||||||
|
this.form = {
|
||||||
|
title: '',
|
||||||
|
status: undefined,
|
||||||
|
answerType: undefined
|
||||||
|
},
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
handlerChange() {
|
||||||
|
this.pagination.current = val.current;
|
||||||
|
this.pagination.pageSize = val.pageSize;
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
//报表分析
|
||||||
|
analize(val) {
|
||||||
|
this.$router.push({name:'analyze',params:{id:val.id}})
|
||||||
|
},
|
||||||
|
//编辑
|
||||||
|
edit(val) {
|
||||||
|
this.$router.push({name:'editScroll',params:{id:val.id}})
|
||||||
|
},
|
||||||
|
//发布
|
||||||
|
handleRelease(val) {
|
||||||
|
releaseQuestion({questionnaireId: val.id}).then(res => {
|
||||||
|
if(res.code === 200){
|
||||||
|
this.$message.success(res.msg);
|
||||||
|
this.getData()
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//删除
|
||||||
|
del(val) {
|
||||||
|
this.$confirm({
|
||||||
|
title: "是否删除该问卷?",
|
||||||
|
icon:'delete',
|
||||||
|
onOk:async()=>{
|
||||||
|
let res = await delQuestion({questionnaireIds: [val.id]})
|
||||||
|
if(res.code === 200){
|
||||||
|
this.$message.success(res.msg);
|
||||||
|
this.getData()
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//批量删除
|
||||||
|
selectionChoosed(val) {
|
||||||
|
this.selectedRowKeys = val
|
||||||
|
},
|
||||||
|
handleMenuClick(data) {
|
||||||
|
if (data.key === "del") {
|
||||||
|
this.$confirm({
|
||||||
|
title: "是否删除选中的问卷?",
|
||||||
|
icon:'delete',
|
||||||
|
onOk:async()=>{
|
||||||
|
let res = await delQuestion({questionnaireIds: this.selectedRowKeys})
|
||||||
|
if(res.code === 200){
|
||||||
|
this.$message.success(res.msg);
|
||||||
|
this.selectedRowKeys = [];
|
||||||
|
this.getData()
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 新增问卷
|
||||||
|
addScroll() {
|
||||||
|
this.$router.push({name:'addScroll'})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
hasSelected() {
|
||||||
|
return this.selectedRowKeys.length > 0;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.drawer-content {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in new issue