|
|
@@ -10,6 +10,59 @@
|
|
|
.el-cascader{
|
|
|
width:100%;
|
|
|
}
|
|
|
+ a{
|
|
|
+ text-decoration: none;
|
|
|
+ color:#409EFF;
|
|
|
+ }
|
|
|
+ // 右边
|
|
|
+ .item-main{
|
|
|
+ // margin:34px;
|
|
|
+ // height:600px;
|
|
|
+ // background: #FFFFFF;
|
|
|
+ border: 1px solid #DDDDDD;
|
|
|
+ box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.13);
|
|
|
+ border-radius: 20px;
|
|
|
+ .el-form.over_y{
|
|
|
+ max-height:calc( 100vh - 340px);
|
|
|
+ }
|
|
|
+ /deep/.el-form-item__label{
|
|
|
+ float: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // label样式
|
|
|
+ .edit_label {
|
|
|
+ /deep/.el-input__inner{
|
|
|
+ background:#F5FAFF;
|
|
|
+ border:0px;
|
|
|
+ padding:0px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /deep/.opicon{
|
|
|
+ font-weight: bold;
|
|
|
+ padding:5px;
|
|
|
+ color:#3895FE;
|
|
|
+ }
|
|
|
+ .tpl_title{
|
|
|
+ font-size: 18px;
|
|
|
+ margin-bottom:20px;
|
|
|
+ }
|
|
|
+ .tpl_form{
|
|
|
+ margin:20px;
|
|
|
+ border:1px solid #ccc;
|
|
|
+ border-radius: 20px;
|
|
|
+ /deep/.el-form-item{
|
|
|
+ background:none;
|
|
|
+ }
|
|
|
+ /deep/.el-form-item__content{
|
|
|
+ width:100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .survey_logo{
|
|
|
+ position: relative;
|
|
|
+ top:15px;
|
|
|
+ left: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
</style>
|
|
|
<template>
|
|
|
<section>
|
|
|
@@ -40,6 +93,32 @@
|
|
|
label="标题">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="附件">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <a :href="scope.row.fileurl" target="_blank"><span>{{scope.row.filename}}</span></a>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="cname"
|
|
|
+ label="是否问卷">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <a @click="showSurvey(scope.row)" target="_blank"><span>查看问卷</span></a>
|
|
|
+ <a v-if="scope.row.template_qrcode" :href="scope.row.template_qrcode" target="_blank"><span> | 生成二维码</span></a>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="cname"
|
|
|
+ label="问卷统计">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span v-if="scope.row.receiver_ids">共统计:
|
|
|
+ <a target="_blank"><span>{{scope.row.receiver_ids.length}}</span></a>人<br>
|
|
|
+ </span>
|
|
|
+ 已完成:<a :href="scope.row.fileurl" target="_blank"><span>生成二维码</span></a>人<br>
|
|
|
+ <span v-if="scope.row.receiver_ids">未完成:<a :href="scope.row.fileurl" target="_blank"><span>生成二维码</span></a>人<br></span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
prop="cname"
|
|
|
label="发送者">
|
|
|
</el-table-column>
|
|
|
@@ -66,8 +145,8 @@
|
|
|
<el-dialog
|
|
|
:title="dialogTitle" :close-on-click-modal='false'
|
|
|
:visible.sync="dialogVisible">
|
|
|
- <el-form size="small" class="preview" :inline='false' label-width="80px">
|
|
|
- <el-form-item label="标题">
|
|
|
+ <el-form size="small" class="preview" :inline='false' label-width="80px" :model="form1" ref="form1" :rules="rules">
|
|
|
+ <el-form-item label="标题" prop="name">
|
|
|
<el-input v-model="form1.name" placeholder="请输入标题"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="接收人">
|
|
|
@@ -92,7 +171,7 @@
|
|
|
</el-cascader>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="问卷模板">
|
|
|
- <el-select placeholder="请选择问卷模板" v-model="form1.template_id">
|
|
|
+ <el-select placeholder="请选择问卷模板" v-model="form1.template_id" clearable>
|
|
|
<el-option
|
|
|
v-for="(item, index) in templateList"
|
|
|
:key="index"
|
|
|
@@ -101,11 +180,60 @@
|
|
|
></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="附件">
|
|
|
+ <input @change="upload('fileurl')" id='fileurl' type="file">
|
|
|
+ <a :href="form1.fileurl" target="_blank"><span>{{form1.filename}}</span></a>
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
<el-button size="small" type="primary" @click="save">确 定</el-button>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
+ <!-- 问卷调查表单 -->
|
|
|
+ <el-dialog
|
|
|
+ :title="dialogTitle" :close-on-click-modal='false'
|
|
|
+ :visible.sync="dialogVisible1">
|
|
|
+ <div class='item-main'>
|
|
|
+ <img src="../../assets/survey_logo.png" alt="" class="survey_logo">
|
|
|
+ <h5 align='center' class="tpl_title">{{title}}</h5>
|
|
|
+ <el-form ref="form" :model="form2" class="tpl_form over_y">
|
|
|
+ <el-form-item v-for="(item,index) in widgetList" :key="index" :label="item.label">
|
|
|
+ <el-input v-if="item.type=='input'" v-model="form2[item.label]" :placeholder="item.placeholder"></el-input>
|
|
|
+ <el-input v-if="item.type=='textarea'" type="textarea" v-model="form2[item.label]" :placeholder="item.placeholder"></el-input>
|
|
|
+ <el-radio-group v-if="item.type=='radio'" v-model="form2[item.label]">
|
|
|
+ <el-radio :label="iitem.label" v-for="(iitem,index) in item.items" :key="index">{{iitem.label}}</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ <el-radio-group v-if="item.type=='checkbox'" v-model="form2[item.label]">
|
|
|
+ <el-checkbox :label="iitem.label" v-for="(iitem,index) in item.items" :key="index">{{iitem.label}}</el-checkbox>
|
|
|
+ </el-radio-group>
|
|
|
+ <el-upload
|
|
|
+ v-if="item.type=='image'"
|
|
|
+ action="https://jsonplaceholder.typicode.com/posts/"
|
|
|
+ list-type="picture-card"
|
|
|
+ :on-preview="handlePictureCardPreview"
|
|
|
+ :on-remove="handleRemove">
|
|
|
+ <i class="el-icon-plus"></i>
|
|
|
+ </el-upload>
|
|
|
+ <el-upload
|
|
|
+ v-if="item.type=='file'"
|
|
|
+ class="upload-demo"
|
|
|
+ ref="upload"
|
|
|
+ action="https://jsonplaceholder.typicode.com/posts/"
|
|
|
+ :on-preview="handlePreview"
|
|
|
+ :on-remove="handleRemove"
|
|
|
+ :file-list="fileList"
|
|
|
+ :auto-upload="false">
|
|
|
+ <!-- <el-button slot="trigger" size="small" type="primary">选取文件</el-button> -->
|
|
|
+ <el-button style="margin-left: 10px;" size="small" type="primary" plain @click="submitUpload">添加文件</el-button>
|
|
|
+ <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="this.widgetList.length">
|
|
|
+ <el-button size="medium" type="primary" @click="saveResult" style="width:100%;">提交</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</section>
|
|
|
</template>
|
|
|
<script>
|
|
|
@@ -116,18 +244,26 @@ export default {
|
|
|
},
|
|
|
data(){
|
|
|
return{
|
|
|
+ widgetList:[],
|
|
|
form:{name:'',page:1,page_size:20},
|
|
|
form1:{},
|
|
|
+ form2:{},
|
|
|
total:1,
|
|
|
list:[{name:'2333'}],
|
|
|
loading:false,
|
|
|
input:'',
|
|
|
dialogVisible:false,
|
|
|
+ dialogVisible1:false,
|
|
|
dialogTitle:"",
|
|
|
defaultProps:{},
|
|
|
data: [],
|
|
|
templateList:[],
|
|
|
userList:[],
|
|
|
+ rules: {
|
|
|
+ name: [
|
|
|
+ { required: true, message: '请输入标题', trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
props: { multiple: true },
|
|
|
options: [{
|
|
|
value: 1,
|
|
|
@@ -179,6 +315,30 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods:{
|
|
|
+ showSurvey(row){
|
|
|
+ this.title = row.name
|
|
|
+ this.message_id = row.id
|
|
|
+ this.$api.getTemplate({id:row.template_id}).then(res=>{
|
|
|
+ if(res.data.code==0){
|
|
|
+ this.widgetList = res.data.data.widget;
|
|
|
+ this.dialogVisible1 = true;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ upload(type){
|
|
|
+ var file=document.getElementById(type).files;
|
|
|
+ var data=new FormData();
|
|
|
+ data.append("file",file[0])
|
|
|
+ this.$api.uploadFile(data).then(res=>{
|
|
|
+ if(res.data.code==0){
|
|
|
+ this.$set(this.form1,type,res.data.data.url)
|
|
|
+ this.$set(this.form1,"filename",res.data.data.name)
|
|
|
+ this.$message({message: '上传成功!',type: 'success'});
|
|
|
+ }else{
|
|
|
+ this.$message.error(res.data.message);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
handleChange(value){
|
|
|
console.log(value)
|
|
|
},
|
|
|
@@ -243,36 +403,55 @@ export default {
|
|
|
this.form1.receiver_id = receiver_ids
|
|
|
this.dialogVisible = true;
|
|
|
},
|
|
|
+ saveResult(){
|
|
|
+ let parm = {
|
|
|
+ message_id:this.message_id,
|
|
|
+ result:this.form2
|
|
|
+ }
|
|
|
+ this.$api.saveSurveyResult(parm).then(res=>{
|
|
|
+ if(res.data.code==0){
|
|
|
+ this.$message({
|
|
|
+ type:"success",
|
|
|
+ message:"保存成功!"
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.$message.error("保存失败!");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
save(){
|
|
|
- let parm = this.form1
|
|
|
- let id = this.form1.id
|
|
|
- parm.receiver_id = JSON.stringify(parm.receiver_id)
|
|
|
- if(id){
|
|
|
- this.$api.editMessage(parm).then(res=>{
|
|
|
- if(res.data.code==0){
|
|
|
- this.$message({
|
|
|
- type:"success",
|
|
|
- message:"保存成功!"
|
|
|
+ this.$refs["form1"].validate((valid)=>{
|
|
|
+ if(valid){
|
|
|
+ let parm = this.form1
|
|
|
+ let id = this.form1.id
|
|
|
+ parm.receiver_id = JSON.stringify(parm.receiver_id)
|
|
|
+ if(id){
|
|
|
+ this.$api.editMessage(parm).then(res=>{
|
|
|
+ if(res.data.code==0){
|
|
|
+ this.$message({
|
|
|
+ type:"success",
|
|
|
+ message:"保存成功!"
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.$message.error("保存失败!");
|
|
|
+ }
|
|
|
})
|
|
|
}else{
|
|
|
- this.$message.error("保存失败!");
|
|
|
- }
|
|
|
- })
|
|
|
- }else{
|
|
|
- this.$api.addMessage(parm).then(res=>{
|
|
|
- if(res.data.code==0){
|
|
|
- this.$message({
|
|
|
- type:"success",
|
|
|
- message:"保存成功!"
|
|
|
+ this.$api.addMessage(parm).then(res=>{
|
|
|
+ if(res.data.code==0){
|
|
|
+ this.$message({
|
|
|
+ type:"success",
|
|
|
+ message:"保存成功!"
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.$message.error("保存失败!");
|
|
|
+ }
|
|
|
})
|
|
|
- }else{
|
|
|
- this.$message.error("保存失败!");
|
|
|
}
|
|
|
- })
|
|
|
- }
|
|
|
- this.getData()
|
|
|
- this.dialogVisible = false
|
|
|
-
|
|
|
+ this.getData()
|
|
|
+ this.dialogVisible = false
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
created(){
|