xjc преди 4 години
родител
ревизия
6735ad06bd
променени са 6 файла, в които са добавени 481 реда и са изтрити 354 реда
  1. 3 0
      src/api.js
  2. 1 1
      src/views/Home.vue
  3. 149 114
      src/views/message/InnerSurvey.vue
  4. 29 19
      src/views/message/Notice.vue
  5. 120 87
      src/views/message/OutSurvey.vue
  6. 179 133
      src/views/message/templateList.vue

+ 3 - 0
src/api.js

@@ -162,6 +162,9 @@ export default {
 	saveSurveyResult: params => {
 		return axios.post(`${baseURL}/api/admin/message/survey/result`, params);
 	},
+	saveSurveyResultOut: params => {
+		return axios.post(`${baseURL}/api/admin/message/survey/result/out`, params);
+	},
 	getMessageSurveyAnalyse: params => {
 		return axios.get(`${baseURL}/api/admin/message/survey/analyse`, { params: params });
 	},

+ 1 - 1
src/views/Home.vue

@@ -6,7 +6,7 @@
 	<el-container>
 		<el-header>
 			<div class="header">
-				<!-- <img class="logo" src="../assets/logo.png" alt=""> -->
+				<img class="logo" src="../assets/logo.png" alt="">
 				期刊微信公众号管理系统
 			</div>	
 			<div class="nav">

+ 149 - 114
src/views/message/InnerSurvey.vue

@@ -65,21 +65,21 @@ a {
   top: 15px;
   left: 20px;
 }
-.result_dialog .el-dialog{
-    width: 40%;
-    margin-top:20vh!important;
+.result_dialog .el-dialog {
+  width: 40%;
+  margin-top: 20vh !important;
 }
-.result-item{
-    height: 35px;
-    .label{
-        font-weight: 600;
-    }
+.result-item {
+  height: 35px;
+  .label {
+    font-weight: 600;
+  }
 }
-.qrcode_dialog{
-  .el-dialog{
+.qrcode_dialog {
+  .el-dialog {
     width: 30%;
   }
-  img{
+  img {
     width: 100%;
   }
 }
@@ -101,6 +101,7 @@ a {
               placeholder="请输入标题"
               v-model="form.name"
               @clear="getData"
+              @keyup.enter.native="search"
             ></el-input>
           </el-form-item>
           <el-form-item>
@@ -134,9 +135,7 @@ a {
             <a @click="showSurvey(scope.row)" target="_blank"
               ><span>查看问卷</span></a
             >
-            <a
-              v-if="scope.row.template_qrcode"
-              @click="showQrcode(scope.row)"
+            <a v-if="scope.row.template_qrcode" @click="showQrcode(scope.row)"
               ><span> | 生成二维码</span></a
             >
           </template>
@@ -145,21 +144,21 @@ a {
           <template slot-scope="scope">
             <span v-if="scope.row.receiver_ids"
               >共统计:
-              <a target="_blank" @click="analyseData('total',scope.row.id)"
-                ><span>{{ scope.row.receiver_ids.length }}</span></a
+              <a target="_blank" @click="analyseData('total', scope.row.id)"
+                ><span>{{ scope.row.receiver_ids?scope.row.receiver_ids.length:0 }}</span></a
               >人<br />
             </span>
             已填报:<a
               :href="scope.row.fileurl"
               target="_blank"
-              @click="analyseData('finish',scope.row.id)"
-              ><span>{{ scope.row.finish_ids.length }}</span></a
+              @click="analyseData('finish', scope.row.id)"
+              ><span>{{ scope.row.finish_ids?scope.row.finish_ids.length:0 }}</span></a
             >人<br />
             <span v-if="scope.row.receiver_ids">
               未填报:<a
                 :href="scope.row.fileurl"
                 target="_blank"
-                @click="analyseData('unfinish',scope.row.id)"
+                @click="analyseData('unfinish', scope.row.id)"
                 ><span>{{ scope.row.unfinish_ids.length }}</span></a
               >人<br
             /></span>
@@ -170,10 +169,12 @@ a {
             <a @click="showMessageAnalyse(scope.row)">查看</a>
           </template>
         </el-table-column>
-        <el-table-column prop="cname" label="发送者" width="80px"> </el-table-column>
+        <el-table-column prop="cname" label="发送者" width="80px">
+        </el-table-column>
         <!-- <el-table-column prop="receiver_names" label="接收者"> -->
         <!-- </el-table-column> -->
-        <el-table-column prop="ctime" label="发送时间" width="180px"> </el-table-column>
+        <el-table-column prop="ctime" label="发送时间" width="180px">
+        </el-table-column>
         <el-table-column prop="zip" width="150" label="操作">
           <template slot-scope="scope">
             <el-button class="edit" type="text" @click="edit(scope.row)"
@@ -198,7 +199,6 @@ a {
       :title="dialogTitle"
       :close-on-click-modal="false"
       :visible.sync="dialogVisible"
-      @close="getData"
     >
       <el-form
         size="small"
@@ -210,7 +210,12 @@ a {
         :rules="rules"
       >
         <el-form-item label="标题" prop="name">
-          <el-input v-model="form1.name" placeholder="请输入标题" maxlength="50" show-word-limit></el-input>
+          <el-input
+            v-model="form1.name"
+            placeholder="请输入标题"
+            maxlength="50"
+            show-word-limit
+          ></el-input>
         </el-form-item>
         <el-form-item label="接收人" prop="receiver_id">
           <el-cascader
@@ -274,6 +279,7 @@ a {
             <el-input
               v-if="item.type == 'textarea'"
               type="textarea"
+              :rows="4"
               v-model="form2[item.label]"
               :placeholder="item.placeholder"
             ></el-input>
@@ -359,13 +365,16 @@ a {
                 placeholder="请输入标题"
                 v-model="form1.name"
                 @clear="search1"
+                @keyup.enter.native="search1"
               ></el-input>
             </el-form-item>
             <el-form-item>
               <el-button type="primary" @click="search1">搜索</el-button>
             </el-form-item>
             <el-form-item style="float: right">
-              <el-button type="primary" @click="downloadExcel">导出Excel</el-button>
+              <el-button type="primary" @click="downloadExcel"
+                >导出Excel</el-button
+              >
             </el-form-item>
           </el-form>
         </div>
@@ -380,7 +389,10 @@ a {
           style="width: 100%"
         >
           <el-table-column prop="realname" label="姓名"> </el-table-column>
-          <el-table-column prop="journal_name" label="所属期刊"></el-table-column>
+          <el-table-column
+            prop="journal_name"
+            label="所属期刊"
+          ></el-table-column>
           <el-table-column prop="cname" label="状态">
             <template slot-scope="scope">
               <span v-if="scope.row.post_status">已填报</span>
@@ -389,12 +401,15 @@ a {
           </el-table-column>
           <el-table-column prop="post_time" label="填报时间"> </el-table-column>
           <el-table-column prop="zip" width="80" label="操作">
-          <template slot-scope="scope">
-            <el-button class="edit" type="text" @click="showPostResult(scope.row)"
-              >查看</el-button
-            >
-          </template>
-        </el-table-column>
+            <template slot-scope="scope">
+              <el-button
+                class="edit"
+                type="text"
+                @click="showPostResult(scope.row)"
+                >查看</el-button
+              >
+            </template>
+          </el-table-column>
         </el-table>
         <Page
           ref="pageButton"
@@ -407,28 +422,33 @@ a {
     </el-dialog>
     <!-- 展示填报结果 -->
     <el-dialog
-    :title="dialogTitle3"
-    :close-on-click-modal="false"
-    :visible.sync="dialogVisible3"
-    class="result_dialog"
+      :title="dialogTitle3"
+      :close-on-click-modal="false"
+      :visible.sync="dialogVisible3"
+      class="result_dialog"
     >
-    <div class="content">
-        <div class="result-item" v-for="(item,key) in this.postResult" :key="key">
-            <span class="label">{{key}}:</span><span class="value">{{item}}</span>
+      <div class="content">
+        <div
+          class="result-item"
+          v-for="(item, key) in this.postResult"
+          :key="key"
+        >
+          <span class="label">{{ key }}:</span
+          ><span class="value">{{ item }}</span>
         </div>
-        <div v-if="Object.keys(postResult).length==0">暂无数据</div>
-    </div>
+        <div v-if="Object.keys(postResult).length == 0">暂无数据</div>
+      </div>
     </el-dialog>
     <!-- 展示二维码 -->
     <el-dialog
-    :title="dialogTitle4"
-    :close-on-click-modal="false"
-    :visible.sync="dialogVisible4"
-    class="qrcode_dialog"
+      :title="dialogTitle4"
+      :close-on-click-modal="false"
+      :visible.sync="dialogVisible4"
+      class="qrcode_dialog"
     >
-    <div class="content">
-        <img :src="qrcodeUrl" alt="">
-    </div>
+      <div class="content">
+        <img :src="qrcodeUrl" alt="" />
+      </div>
     </el-dialog>
   </section>
 </template>
@@ -440,18 +460,17 @@ export default {
   },
   data() {
     return {
-    //   checked: [],
-      qrcodeUrl:"",
-      cur_message_id:null,
-      cur_post_type:null,
-      postResult:{},
-      analyseDataList:[],
+      //   checked: [],
+      qrcodeUrl: "",
+      cur_message_id: null,
+      cur_post_type: null,
+      postResult: {},
+      analyseDataList: [],
       title: "",
       widgetList: [],
       form: { name: "", page: 1, page_size: 20 },
       form1: {},
-      form2: {
-      },
+      form2: {},
       total: 1,
       list: [{ name: "2333" }],
       loading: false,
@@ -459,12 +478,12 @@ export default {
       dialogVisible: false,
       dialogVisible1: false,
       dialogVisible2: false,
-      dialogVisible3:false,
-      dialogVisible4:false,
+      dialogVisible3: false,
+      dialogVisible4: false,
       dialogTitle: "",
-      dialogTitle2:"",
-      dialogTitle3:"",
-      dialogTitle4:"",
+      dialogTitle2: "",
+      dialogTitle3: "",
+      dialogTitle4: "",
       defaultProps: {},
       data: [],
       templateList: [],
@@ -472,8 +491,12 @@ export default {
       checkList: [],
       rules: {
         name: [{ required: true, message: "请输入标题", trigger: "blur" }],
-        receiver_id:[{ required: true, message: "请选择接收人", trigger: "change" }],
-        template_id:[{ required: true, message: "请选择模板", trigger: "change" }]
+        receiver_id: [
+          { required: true, message: "请选择接收人", trigger: "change" },
+        ],
+        template_id: [
+          { required: true, message: "请选择模板", trigger: "change" },
+        ],
       },
       props: { multiple: true },
       options: [
@@ -536,46 +559,58 @@ export default {
     };
   },
   methods: {
-    showQrcode(row){
-      this.dialogTitle4="生成二维码"
-      this.dialogVisible4=true
-      this.qrcodeUrl=row.template_qrcode
+    showQrcode(row) {
+      this.dialogTitle4 = "生成二维码";
+      this.dialogVisible4 = true;
+      this.qrcodeUrl = row.template_qrcode;
     },
-    showMessageAnalyse(row){
-          this.$router.push({path:'/message/innerSurvey/analyse',query:{id:row.id,type:row.type}})
+    showMessageAnalyse(row) {
+      this.$router.push({
+        path: "/message/innerSurvey/analyse",
+        query: { id: row.id, type: row.type },
+      });
     },
-    downloadExcel(){
-      this.$api.downloadAnalyseAll({message_id:this.cur_message_id,type:this.cur_post_type}).then((res)=>{
-          var elink = document.createElement('a');
-          let blob=new Blob([res.data], {type: 'application/vnd.ms-excel,charset=UTF-8'});
-          let objUrl=URL.createObjectURL(blob);
-          let file_name=decodeURIComponent(res.headers['content-disposition'].split('=')[1]);
-          console.log(file_name)
+    downloadExcel() {
+      this.$api
+        .downloadAnalyseAll({
+          message_id: this.cur_message_id,
+          type: this.cur_post_type,
+        })
+        .then((res) => {
+          var elink = document.createElement("a");
+          let blob = new Blob([res.data], {
+            type: "application/vnd.ms-excel,charset=UTF-8",
+          });
+          let objUrl = URL.createObjectURL(blob);
+          let file_name = decodeURIComponent(
+            res.headers["content-disposition"].split("=")[1]
+          );
+          console.log(file_name);
           elink.download = file_name;
-          elink.style.display = 'none';                
+          elink.style.display = "none";
           elink.href = objUrl;
           document.body.appendChild(elink);
           elink.click();
-          document.body.removeChild(elink);      
+          document.body.removeChild(elink);
           this.download_loading = false;
-      })
+        });
     },
-    showPostResult(row){
-        this.postResult = row.post_result
-        this.dialogTitle3 = "填报结果"
-        this.dialogVisible3 = true
+    showPostResult(row) {
+      this.postResult = row.post_result;
+      this.dialogTitle3 = "填报结果";
+      this.dialogVisible3 = true;
     },
-    analyseData(type,message_id) {
-      let parm = this.form1
-      parm.type = type
-      parm.message_id = message_id
-      this.dialogTitle2 = "统计结果"
+    analyseData(type, message_id) {
+      let parm = this.form1;
+      parm.type = type;
+      parm.message_id = message_id;
+      this.dialogTitle2 = "统计结果";
       this.dialogVisible2 = true;
-      this.$api.getMessageSurveyAnalyse(parm).then((res)=>{
-          this.analyseDataList = res.data.data.list
-          this.cur_message_id = message_id
-          this.cur_post_type = type
-      })
+      this.$api.getMessageSurveyAnalyse(parm).then((res) => {
+        this.analyseDataList = res.data.data.list;
+        this.cur_message_id = message_id;
+        this.cur_post_type = type;
+      });
     },
     handleSuccess(res, file) {
       this.form2[res.data.type] = res.data.url;
@@ -587,20 +622,22 @@ export default {
       this.form2[label] = i;
     },
     showSurvey(row) {
-        let _this = this;
+      let _this = this;
       this.title = row.name;
       this.message_id = row.id;
+      this.widgetList = []
+      this.form2 = {}
       this.$api.getMessageInfo({ id: row.id }).then((res) => {
         if (res.data.code == 0) {
           this.widgetList = res.data.data.widget;
           this.widgetList.forEach((i) => {
             if (i.type == "checkbox") {
-            //   _this.form2[i.label] = [] ;
-              _this.$set(_this.form2,i.label,[])
-            } 
+              //   _this.form2[i.label] = [] ;
+              _this.$set(_this.form2, i.label, []);
+            }
           });
-        console.log(this.form2)
-        //   debugger
+          console.log(this.form2);
+          //   debugger
           this.dialogVisible1 = true;
         }
       });
@@ -627,7 +664,7 @@ export default {
       this.getData();
     },
     search1() {
-      this.analyseData("total",this.cur_message_id)
+      this.analyseData("total", this.cur_message_id);
     },
     openDiag() {
       this.form1 = {};
@@ -643,7 +680,7 @@ export default {
     },
     getData() {
       var parm = this.form;
-      parm.type = 0
+      parm.type = 0;
       this.loading = true;
       this.$api.getAllTemplateList().then((res) => {
         this.templateList = res.data.data;
@@ -674,17 +711,15 @@ export default {
       });
     },
     edit(row) {
-      this.form1 = row;
-      let receiver_ids = this.form1.receiver_id;
-      console.log(receiver_ids, 33333333333333);
-      if (typeof receiver_ids == "string") {
-        receiver_ids = JSON.parse(receiver_ids);
-      }
-      // receiver_ids.forEach((element,index) => {
-      //     receiver_ids[index] = parseInt(element)
-      // });
-      this.form1.receiver_id = receiver_ids;
-      this.dialogVisible = true;
+      this.$api.getMessageInfo({id:row.id}).then((res)=>{
+          this.form1 = res.data.data;
+          let receiver_ids = this.form1.receiver_id;
+          if (typeof receiver_ids == "string") {
+            receiver_ids = JSON.parse(receiver_ids);
+          }
+          this.form1.receiver_id = receiver_ids;
+          this.dialogVisible = true;
+      })
     },
     saveResult() {
       let result = JSON.stringify(this.form2);
@@ -700,13 +735,13 @@ export default {
               message: "保存成功!",
             });
           } else {
-            this.$message.error("保存失败!");
+            this.$message.error(res.data.message);
           }
           this.dialogVisible1 = false;
         });
     },
     save() {
-      this.loading = true
+      this.loading = true;
       this.$refs["form1"].validate((valid) => {
         if (valid) {
           let parm = this.form1;
@@ -724,7 +759,7 @@ export default {
                 this.$message.error("保存失败!");
               }
               this.getData();
-              this.loading = false
+              this.loading = false;
             });
           } else {
             this.dialogVisible = false;

+ 29 - 19
src/views/message/Notice.vue

@@ -100,6 +100,7 @@ a {
               placeholder="请输入标题"
               v-model="form.name"
               @clear="getData"
+              @keyup.enter.native="search"
             ></el-input>
           </el-form-item>
           <el-form-item>
@@ -133,13 +134,13 @@ a {
             <span v-if="scope.row.receiver_ids"
               >共统计:
               <a target="_blank" @click="analyseData('total',scope.row.id)"
-                ><span>{{ scope.row.receiver_ids.length }}</span></a
+                ><span>{{ scope.row.receiver_ids?scope.row.receiver_ids.length:0 }}</span></a
               >人<br />
             </span>
             已阅读:<a
               target="_blank"
               @click="analyseData('finish',scope.row.id)"
-              ><span>{{ scope.row.finish_ids.length }}</span></a
+              ><span>{{ scope.row.finish_ids?scope.row.finish_ids.length:0 }}</span></a
             >人<br />
             <span v-if="scope.row.receiver_ids">
               未阅读:<a
@@ -177,7 +178,6 @@ a {
       :title="dialogTitle"
       :close-on-click-modal="false"
       :visible.sync="dialogVisible"
-      @close="getData"
     >
       <el-form
         size="small"
@@ -189,7 +189,7 @@ a {
         :rules="rules"
       >
         <el-form-item label="标题" prop="name">
-          <el-input v-model="form1.name" placeholder="请输入标题" maxlength="30" show-word-limit></el-input>
+          <el-input v-model="form1.name" placeholder="请输入标题" maxlength="50" show-word-limit></el-input>
         </el-form-item>
         <el-form-item label="接收人" prop="receiver_id">
           <el-cascader
@@ -241,11 +241,13 @@ a {
               <el-input
                 clearable
                 placeholder="请输入标题"
-                v-model="form.name"
+                v-model="form1.name"
+                @clear="search1"
+                @keyup.enter.native="search1"
               ></el-input>
             </el-form-item>
             <el-form-item>
-              <el-button type="primary" @click="search">搜索</el-button>
+              <el-button type="primary" @click="search1">搜索</el-button>
             </el-form-item>
             <el-form-item style="float: right">
               <el-button type="primary" @click="downloadExcel">导出Excel</el-button>
@@ -383,9 +385,12 @@ export default {
         this.dialogVisible3 = true
     },
     analyseData(type,message_id) {
+      let parm = this.form1
+      parm.type = type
+      parm.id = message_id
       this.dialogTitle2 = "统计结果"
       this.dialogVisible2 = true;
-      this.$api.getNoticeAnalyse({type:type,id:message_id}).then((res)=>{
+      this.$api.getNoticeAnalyse(parm).then((res)=>{
           this.analyseDataList = res.data.data.list
           this.cur_message_id = message_id
           this.cur_post_type = type
@@ -440,6 +445,9 @@ export default {
       let parm = this.form;
       this.getData();
     },
+    search1() {
+      this.analyseData(this.cur_post_type,this.cur_message_id);
+    },
     openDiag() {
       this.form1 = {};
       this.dialogVisible = true;
@@ -471,7 +479,7 @@ export default {
       this.$confirm("确定删除吗", "提示", {
         type: "warning",
       }).then(() => {
-        this.$api.delMessageInfo({ id: id }).then((res) => {
+        this.$api.delNotice({ id: id }).then((res) => {
           this.$message({
             message: "删除成功",
             type: "success",
@@ -481,17 +489,19 @@ export default {
       });
     },
     edit(row) {
-      this.form1 = row;
-      this.dialogTitle = "编辑消息"
-      let receiver_ids = this.form1.receiver_id;
-      if (typeof receiver_ids == "string") {
-        receiver_ids = JSON.parse(receiver_ids);
-      }
-      // receiver_ids.forEach((element,index) => {
-      //     receiver_ids[index] = parseInt(element)
-      // });
-      this.form1.receiver_id = receiver_ids;
-      this.dialogVisible = true;
+      this.$api.getNoticeInfo({id:row.id}).then((res)=>{
+        this.form1 = res.data.data;
+        this.dialogTitle = "编辑消息"
+        let receiver_ids = this.form1.receiver_id;
+        if (typeof receiver_ids == "string") {
+          receiver_ids = JSON.parse(receiver_ids);
+        }
+        // receiver_ids.forEach((element,index) => {
+        //     receiver_ids[index] = parseInt(element)
+        // });
+        this.form1.receiver_id = receiver_ids;
+        this.dialogVisible = true;
+        })
     },
     saveResult() {
       let result = JSON.stringify(this.form2);

+ 120 - 87
src/views/message/OutSurvey.vue

@@ -60,19 +60,20 @@ a {
   }
 }
 .survey_logo {
+  width: 143px;
   position: relative;
   top: 15px;
   left: 20px;
 }
-.result_dialog .el-dialog{
-    width: 40%;
-    margin-top:20vh!important;
+.result_dialog .el-dialog {
+  width: 40%;
+  margin-top: 20vh !important;
 }
-.result-item{
-    height: 35px;
-    .label{
-        font-weight: 600;
-    }
+.result-item {
+  height: 35px;
+  .label {
+    font-weight: 600;
+  }
 }
 </style>
 <template>
@@ -92,6 +93,7 @@ a {
               placeholder="请输入标题"
               v-model="form.name"
               @clear="getData"
+              @keyup.enter.native="search"
             ></el-input>
           </el-form-item>
           <el-form-item>
@@ -135,9 +137,12 @@ a {
         </el-table-column>
         <el-table-column prop="cname" label="填报统计">
           <template slot-scope="scope">
-            <span>已填报:
-              <a target="_blank" @click="analyseData('total',scope.row.id)"
-                ><span>{{ scope.row.finish_ids?scope.row.finish_ids.length:0 }}</span></a
+            <span
+              >已填报:
+              <a target="_blank" @click="analyseData('total', scope.row.id)"
+                ><span>{{
+                  scope.row.finish_ids ? scope.row.finish_ids.length : 0
+                }}</span></a
               >人<br />
             </span>
           </template>
@@ -147,10 +152,12 @@ a {
             <a @click="showMessageAnalyse(scope.row)">查看</a>
           </template>
         </el-table-column>
-        <el-table-column prop="cname" label="发送者" width="80px"> </el-table-column>
+        <el-table-column prop="cname" label="发送者" width="80px">
+        </el-table-column>
         <!-- <el-table-column prop="receiver_names" label="接收者"> -->
         <!-- </el-table-column> -->
-        <el-table-column prop="ctime" label="发送时间" width="180px"> </el-table-column>
+        <el-table-column prop="ctime" label="发送时间" width="180px">
+        </el-table-column>
         <el-table-column prop="zip" width="150" label="操作">
           <template slot-scope="scope">
             <el-button class="edit" type="text" @click="edit(scope.row)"
@@ -175,7 +182,6 @@ a {
       :title="dialogTitle"
       :close-on-click-modal="false"
       :visible.sync="dialogVisible"
-      @close="getData"
     >
       <el-form
         size="small"
@@ -187,7 +193,12 @@ a {
         :rules="rules"
       >
         <el-form-item label="标题" prop="name">
-          <el-input v-model="form1.name" placeholder="请输入标题"></el-input>
+          <el-input
+            v-model="form1.name"
+            placeholder="请输入标题"
+            maxlength="50"
+            show-word-limit
+          ></el-input>
         </el-form-item>
         <el-form-item label="问卷模板" prop="template_id">
           <el-select
@@ -323,13 +334,16 @@ a {
                 placeholder="请输入标题"
                 v-model="form1.name"
                 @clear="search1"
+                @keyup.enter.native="search1"
               ></el-input>
             </el-form-item>
             <el-form-item>
               <el-button type="primary" @click="search1">搜索</el-button>
             </el-form-item>
             <el-form-item style="float: right">
-              <el-button type="primary" @click="downloadExcel">导出Excel</el-button>
+              <el-button type="primary" @click="downloadExcel"
+                >导出Excel</el-button
+              >
             </el-form-item>
           </el-form>
         </div>
@@ -343,8 +357,13 @@ a {
           row-key="id"
           style="width: 100%"
         >
-          <el-table-column v-for="(item,index) in analyseHeadList" :key="index" :label="item" :prop="item"> 
-              <!-- <template slot-scope="scope">{{scope.row.item}}</template> -->
+          <el-table-column
+            v-for="(item, index) in analyseHeadList"
+            :key="index"
+            :label="item"
+            :prop="item"
+          >
+            <!-- <template slot-scope="scope">{{scope.row.item}}</template> -->
           </el-table-column>
           <!-- <el-table-column prop="realname" label="姓名"> </el-table-column>
           <el-table-column prop="journal_name" label="所属期刊"></el-table-column>
@@ -374,17 +393,22 @@ a {
     </el-dialog>
     <!-- 展示填报结果 -->
     <el-dialog
-    :title="dialogTitle3"
-    :close-on-click-modal="false"
-    :visible.sync="dialogVisible3"
-    class="result_dialog"
+      :title="dialogTitle3"
+      :close-on-click-modal="false"
+      :visible.sync="dialogVisible3"
+      class="result_dialog"
     >
-    <div class="content">
-        <div class="result-item" v-for="(item,key) in this.postResult" :key="key">
-            <span class="label">{{key}}:</span><span class="value">{{item}}</span>
+      <div class="content">
+        <div
+          class="result-item"
+          v-for="(item, key) in this.postResult"
+          :key="key"
+        >
+          <span class="label">{{ key }}:</span
+          ><span class="value">{{ item }}</span>
         </div>
-        <div v-if="Object.keys(postResult).length==0">暂无数据</div>
-    </div>
+        <div v-if="Object.keys(postResult).length == 0">暂无数据</div>
+      </div>
     </el-dialog>
   </section>
 </template>
@@ -396,18 +420,17 @@ export default {
   },
   data() {
     return {
-    //   checked: [],
-      cur_message_id:null,
-      cur_post_type:null,
-      postResult:{},
-      analyseDataList:[],
-      analyseHeadList:[],
+      //   checked: [],
+      cur_message_id: null,
+      cur_post_type: null,
+      postResult: {},
+      analyseDataList: [],
+      analyseHeadList: [],
       title: "",
       widgetList: [],
       form: { name: "", page: 1, page_size: 20 },
       form1: {},
-      form2: {
-      },
+      form2: {},
       total: 1,
       list: [{ name: "2333" }],
       loading: false,
@@ -415,10 +438,10 @@ export default {
       dialogVisible: false,
       dialogVisible1: false,
       dialogVisible2: false,
-      dialogVisible3:false,
+      dialogVisible3: false,
       dialogTitle: "",
-      dialogTitle2:"",
-      dialogTitle3:"",
+      dialogTitle2: "",
+      dialogTitle3: "",
       defaultProps: {},
       data: [],
       templateList: [],
@@ -426,7 +449,9 @@ export default {
       checkList: [],
       rules: {
         name: [{ required: true, message: "请输入标题", trigger: "blur" }],
-        template_id: [{ required: true, message: "请选择问卷模板", trigger: "change" }]
+        template_id: [
+          { required: true, message: "请选择问卷模板", trigger: "change" },
+        ],
       },
       props: { multiple: true },
       options: [
@@ -462,7 +487,7 @@ export default {
               ],
             },
           ],
-        },  
+        },
         {
           value: 17,
           label: "西北",
@@ -490,42 +515,54 @@ export default {
   },
   // computed() {},
   methods: {
-    showMessageAnalyse(row){
-          this.$router.push({path:'/message/outSurvey/analyse',query:{id:row.id,type:row.type}})
+    showMessageAnalyse(row) {
+      this.$router.push({
+        path: "/message/outSurvey/analyse",
+        query: { id: row.id, type: row.type },
+      });
     },
-    downloadExcel(){
-      this.$api.downloadSurveyResultOut({message_id:this.cur_message_id,type:this.cur_post_type}).then((res)=>{
-          var elink = document.createElement('a');
-          let blob=new Blob([res.data], {type: 'application/vnd.ms-excel,charset=UTF-8'});
-          let objUrl=URL.createObjectURL(blob);
-          let file_name=decodeURIComponent(res.headers['content-disposition'].split('=')[1]);
-          console.log(file_name)
+    downloadExcel() {
+      this.$api
+        .downloadSurveyResultOut({
+          message_id: this.cur_message_id,
+          type: this.cur_post_type,
+        })
+        .then((res) => {
+          var elink = document.createElement("a");
+          let blob = new Blob([res.data], {
+            type: "application/vnd.ms-excel,charset=UTF-8",
+          });
+          let objUrl = URL.createObjectURL(blob);
+          let file_name = decodeURIComponent(
+            res.headers["content-disposition"].split("=")[1]
+          );
+          console.log(file_name);
           elink.download = file_name;
-          elink.style.display = 'none';                
+          elink.style.display = "none";
           elink.href = objUrl;
           document.body.appendChild(elink);
           elink.click();
-          document.body.removeChild(elink);      
+          document.body.removeChild(elink);
           this.download_loading = false;
-      })
+        });
     },
-    showPostResult(row){
-        this.postResult = row.post_result
-        this.dialogTitle3 = "填报结果"
-        this.dialogVisible3 = true
+    showPostResult(row) {
+      this.postResult = row.post_result;
+      this.dialogTitle3 = "填报结果";
+      this.dialogVisible3 = true;
     },
-    analyseData(type,message_id) {
-      let parm = this.form1
-      parm.type = type
-      parm.message_id = message_id
-      this.dialogTitle2 = "统计结果"
+    analyseData(type, message_id) {
+      let parm = this.form1;
+      parm.type = type;
+      parm.message_id = message_id;
+      this.dialogTitle2 = "统计结果";
       this.dialogVisible2 = true;
-      this.$api.getMessageSurveyAnalyseOut(parm).then((res)=>{
-          this.analyseDataList = res.data.data.list
-          this.analyseHeadList = res.data.data.headers
-          this.cur_message_id = message_id
-          this.cur_post_type = type
-      })
+      this.$api.getMessageSurveyAnalyseOut(parm).then((res) => {
+        this.analyseDataList = res.data.data.list;
+        this.analyseHeadList = res.data.data.headers;
+        this.cur_message_id = message_id;
+        this.cur_post_type = type;
+      });
     },
     handleSuccess(res, file) {
       this.form2[res.data.type] = res.data.url;
@@ -537,20 +574,22 @@ export default {
       this.form2[label] = i;
     },
     showSurvey(row) {
-        let _this = this;
+      let _this = this;
       this.title = row.name;
       this.message_id = row.id;
+      this.widgetList = []
+      this.form2 = {}
       this.$api.getMessageInfo({ id: row.id }).then((res) => {
         if (res.data.code == 0) {
           this.widgetList = res.data.data.widget;
           this.widgetList.forEach((i) => {
             if (i.type == "checkbox") {
-            //   _this.form2[i.label] = [] ;
-              _this.$set(_this.form2,i.label,[])
-            } 
+              //   _this.form2[i.label] = [] ;
+              _this.$set(_this.form2, i.label, []);
+            }
           });
-        console.log(this.form2)
-        //   debugger
+          console.log(this.form2);
+          //   debugger
           this.dialogVisible1 = true;
         }
       });
@@ -578,7 +617,7 @@ export default {
     },
     search1() {
       let parm = this.form;
-      this.analyseData("total",this.cur_message_id);
+      this.analyseData("total", this.cur_message_id);
     },
     openDiag() {
       this.form1 = {};
@@ -625,22 +664,15 @@ export default {
       });
     },
     edit(row) {
-      this.form1 = row;
-      // let receiver_ids = this.form1.receiver_id;
-      // console.log(receiver_ids, 33333333333333);
-      // if (typeof receiver_ids == "string") {
-      //   receiver_ids = JSON.parse(receiver_ids);
-      // }
-      // // receiver_ids.forEach((element,index) => {
-      // //     receiver_ids[index] = parseInt(element)
-      // // });
-      // this.form1.receiver_id = receiver_ids;
-      this.dialogVisible = true;
+      this.$api.getMessageInfo({id:row.id}).then((res)=>{
+          this.form1 = res.data.data;
+          this.dialogVisible = true;
+      })
     },
     saveResult() {
       let result = JSON.stringify(this.form2);
       this.$api
-        .saveSurveyResult({
+        .saveSurveyResultOut({
           message_id: this.message_id,
           result: result,
         })
@@ -651,9 +683,10 @@ export default {
               message: "保存成功!",
             });
           } else {
-            this.$message.error("保存失败!");
+            this.$message.error(res.data.message);
           }
           this.dialogVisible1 = false;
+          this.getData()
         });
     },
     save() {

+ 179 - 133
src/views/message/templateList.vue

@@ -1,145 +1,191 @@
 <style lang="scss">
-    .preview{
-        .el-form-item{
-            margin-bottom:15px;
-        }
-        label,p{
-            line-height: 25px !important;
-        }
-    }
+.preview {
+  .el-form-item {
+    margin-bottom: 15px;
+  }
+  label,
+  p {
+    line-height: 25px !important;
+  }
+}
 </style>
 <template>
-    <section>
-        <p><span>信息管理></span>问卷模板</p>
-        <div class="content">
-            <div class="filter">
-                <el-form size="small" label-width="70px" :inline="true"  label-position="left">
-                    <el-form-item label="">
-                            <el-input clearable placeholder="请输入您要搜索的内容" v-model="form.name"></el-input>
-                    </el-form-item>
-                    <el-form-item>
-                        <el-button  type="primary" @click="search">搜索</el-button>
-                    </el-form-item>
-                    <el-form-item style="float:right" >
-                        <el-button @click="dialogVisible=true,dialogTitle='新增模板'" type="primary">新增模板</el-button>
-                    </el-form-item>
-                </el-form>
-            </div>
-            <el-table
-                    class="table"
-                    :data="list" height="50vh"
-                    border  v-loading="loading"
-                    default-expand-all row-key="id"
-                    style="width: 100%">
-                    <el-table-column
-                    prop="name"  
-                    label="模板名称">
-                    </el-table-column>
-                    <el-table-column
-                    prop="cname"  
-                    label=创建人>
-                    </el-table-column>
-                    <el-table-column
-                    prop="ctime"  
-                    label="创建时间">
-                    </el-table-column>
-                    <el-table-column  
-                    prop="zip"  width="150"
-                    label="操作">
-                    <template slot-scope="scope">
-                        <el-button class="edit" type="text" @click="edit(scope.row)">编辑</el-button>
-                        <el-button class="del" @click="del(scope.row.id)" type="text">删除</el-button>
-                    </template>
-                    </el-table-column>
-            </el-table>
-            <Page  ref="pageButton" :current='form.page' :page_size='form.page_size' :total='total' @pageChange='gopage'/>
-        </div>
-
-        <el-dialog
-        :title="dialogTitle" :close-on-click-modal='false'
-        :visible.sync="dialogVisible">
-        <el-form ref="form1" size="small" class="preview" :inline='false' label-width="80px" :rules="rules" :model="form1">
-                <el-form-item label="模板名称" prop="name">
-                    <el-input v-model="form1.name" placeholder="请输入模板名称"></el-input>
-                </el-form-item>
+  <section>
+    <p><span>信息管理></span>问卷模板</p>
+    <div class="content">
+      <div class="filter">
+        <el-form
+          size="small"
+          label-width="70px"
+          :inline="true"
+          label-position="left"
+        >
+          <el-form-item label="">
+            <el-input
+              clearable
+              placeholder="请输入您要搜索的内容"
+              v-model="form.name"
+              @clear="search"
+              @keyup.enter.native="search"
+            ></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="search">搜索</el-button>
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button
+              @click="(dialogVisible = true), (dialogTitle = '新增模板')"
+              type="primary"
+              >新增模板</el-button
+            >
+          </el-form-item>
         </el-form>
-        <span slot="footer" class="dialog-footer">
-            <el-button size="small" type="primary" @click="addTtitle">确 定</el-button>
-        </span>
-        </el-dialog>
-    </section>
+      </div>
+      <el-table
+        class="table"
+        :data="list"
+        height="50vh"
+        border
+        v-loading="loading"
+        default-expand-all
+        row-key="id"
+        style="width: 100%"
+      >
+        <el-table-column prop="name" label="模板名称"> </el-table-column>
+        <el-table-column prop="cname" label="创建人"> </el-table-column>
+        <el-table-column prop="ctime" label="创建时间"> </el-table-column>
+        <el-table-column prop="zip" width="150" label="操作">
+          <template slot-scope="scope">
+            <el-button class="edit" type="text" @click="edit(scope.row)"
+              >编辑</el-button
+            >
+            <el-button class="del" @click="del(scope.row.id)" type="text"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <Page
+        ref="pageButton"
+        :current="form.page"
+        :page_size="form.page_size"
+        :total="total"
+        @pageChange="gopage"
+      />
+    </div>
+
+    <el-dialog
+      :title="dialogTitle"
+      :close-on-click-modal="false"
+      :visible.sync="dialogVisible"
+    >
+      <el-form
+        ref="form1"
+        size="small"
+        class="preview"
+        :inline="false"
+        label-width="80px"
+        :rules="rules"
+        :model="form1"
+      >
+        <el-form-item label="模板名称" prop="name">
+          <el-input
+            v-model="form1.name"
+            placeholder="请输入模板名称"
+            maxlength="50"
+            show-word-limit
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" type="primary" @click="addTtitle"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </section>
 </template>
 <script>
-import Page from '../../components/Page';
+import Page from "../../components/Page";
 export default {
-  components:{
-        Page
+  components: {
+    Page,
   },
-  data(){
-    return{
-    //   edit:0,
-      form:{name:'',page:1,page_size:20},
-      form1:{},
-      total:1,
-      list:[{name:'2333'}],
-      loading:false,
-      input:'',
-      dialogVisible:false,
-      dialogTitle:"",
-      defaultProps:{},
+  data() {
+    return {
+      //   edit:0,
+      form: { name: "", page: 1, page_size: 20 },
+      form1: {},
+      total: 1,
+      list: [{ name: "2333" }],
+      loading: false,
+      input: "",
+      dialogVisible: false,
+      dialogTitle: "",
+      defaultProps: {},
       data: [],
-      rules:{name: [{ required: true, message: "请输入标题", trigger: "blur" }]}
-    }
+      rules: {
+        name: [{ required: true, message: "请输入标题", trigger: "blur" }],
+      },
+    };
+  },
+  methods: {
+    addTtitle() {
+      this.$refs["form1"].validate((valid) => {
+        if (valid) {
+          this.$router.push({
+            path: "/message/template/add",
+            query: { title: this.form1.name, id: this.form1.id },
+          });
+        }
+      });
+    },
+    search() {
+      let parm = this.form;
+      this.getData();
+    },
+    getData() {
+      var parm = this.form;
+      this.loading = true;
+      this.$api.getTemplateList(parm).then((res) => {
+        this.list = res.data.data.list;
+        this.total = res.data.data.total;
+        this.loading = false;
+      });
+    },
+    edit(row) {
+      this.$api.getTemplate({id:row.id}).then((res)=>{
+        this.form1 = row;
+        this.dialogVisible = true;
+      })
+    },
+    del(id) {
+      this.$confirm(
+        "删除模板与模板相关联的消息会被一起删除,确定删除吗?",
+        "提示",
+        {
+          type: "warning",
+        }
+      ).then(() => {
+        this.$api.delTemplate({ id: id }).then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.getData();
+        });
+      });
+    },
+    gopage(size) {
+      if (size) {
+        this.form.page_size = size;
+      }
+      this.form.page = this.$refs.pageButton.page;
+      this.getData();
+    },
   },
-  methods:{
-        addTtitle(){
-            this.$refs["form1"].validate((valid) => {
-                if(valid){
-                    this.$router.push({path:'/message/template/add',query:{title:this.form1.name,id:this.form1.id}})
-                }
-            })
-        },
-        search(){
-            let parm = this.form
-            this.getData()
-        },
-        getData(){
-            var parm=this.form;        
-            this.loading=true
-            this.$api.getTemplateList(parm).then(res=>{
-                this.list=res.data.data.list;
-                this.total=res.data.data.total
-                this.loading=false
-            })
-        },
-        edit(row){
-            console.log(row)
-            this.form1 = row;
-            this.dialogVisible = true;
-        },
-        del(id){
-                this.$confirm('删除模板与模板相关联的消息会被一起删除,确定删除吗?', '提示', {
-                        type: 'warning'
-                    }).then(() => {
-                    this.$api.delTemplate({id:id}).then((res)=>{
-                            this.$message({
-                                message: '删除成功',
-                                type: 'success'
-                            })
-                            this.getData()
-                    })
-                })
-        },
-        gopage(size){
-            if(size){
-                this.form.page_size=size
-            }
-            this.form.page=this.$refs.pageButton.page
-            this.getData()
-        },
+  created() {
+    this.getData();
   },
-  created(){
-      this.getData()
-  }
-}
+};
 </script>