xjc vor 4 Jahren
Ursprung
Commit
a0a96ac4cf

+ 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">

+ 21 - 4
src/views/message/InnerSurvey.vue

@@ -572,7 +572,7 @@ export default {
     },
     downloadExcel() {
       this.$api
-        .downloadAnalyseAll({
+        .downloadSurveyResult({
           message_id: this.cur_message_id,
           type: this.cur_post_type,
         })
@@ -634,10 +634,16 @@ export default {
           this.widgetList.forEach((i) => {
             if (i.type == "checkbox") {
               //   _this.form2[i.label] = [] ;
-              _this.$set(_this.form2, i.label, []);
+              if(i.result){
+                _this.$set(_this.form2, i.label, i.result);
+              }else{
+                _this.$set(_this.form2, i.label, []);
+              }
+            }else{
+              _this.$set(_this.form2, i.label, i.result);
             }
           });
-          console.log(this.form2);
+          console.log(this.form2);  
           //   debugger
           this.dialogVisible1 = true;
         }
@@ -665,7 +671,18 @@ export default {
       this.getData();
     },
     search1() {
-      this.analyseData("total", this.cur_message_id);
+      let parm = this.form1
+      let type = this.cur_post_type
+      let message_id = this.cur_message_id
+      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;
+      });
     },
     openDiag() {
       this.form1 = {};

+ 1 - 1
src/views/message/MessageAnalyse.vue

@@ -271,7 +271,7 @@ export default {
           series: [{
               name: '访问来源',
               type: 'pie',
-              radius: '55%',
+              radius: '45%',
               center: ['50%', '50%'],
               data:dataPie.sort(function (a, b) { return a.value - b.value; }),
               roseType: 'radius',

+ 104 - 70
src/views/message/Notice.vue

@@ -64,22 +64,22 @@ 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;
+  }
 }
-.w-e-text{
+.w-e-text {
   min-height: 500px;
 }
-.fu-dialog{
-  .el-dialog{
-    width:60%;
+.fu-dialog {
+  .el-dialog {
+    width: 60%;
   }
 }
 </style>
@@ -124,9 +124,9 @@ a {
         <el-table-column prop="name" 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
-            >
+            <a :href="item.url" target="_blank"
+              v-for="(item,index) in scope.row.fileurl" :key="index"
+              ><span>{{ item.name }}</span><br></a>
           </template>
         </el-table-column>
         <el-table-column prop="cname" label="消息查阅统计">
@@ -209,7 +209,18 @@ a {
           <fuEditor v-model="form1.content" :isClear="false" @change="changeEditor"></fuEditor>
         </el-form-item>
         <el-form-item label="附件">
-          <input @change="upload('fileurl')" id="fileurl" type="file" />
+          <!-- <input @change="upload('fileurl')" id="fileurl" type="file" /> -->
+          <el-upload
+            class="upload-demo"
+            action="/api/admin/uploadfile"
+            multiple
+            :limit="5"
+            :on-remove="handleRemove"
+            :on-success="handleUploadSuccess"
+            :file-list="fileList">
+            <el-button size="small" type="primary">点击上传</el-button>
+            <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
+          </el-upload>
           <span>
             <a :href="form1.fileurl" target="_blank"
             ><span>{{ form1.filename }}</span></a
@@ -308,25 +319,25 @@ a {
 </template>
 <script>
 import Page from "../../components/Page";
-import fuEditor from '../../components/fuEditor'
+import fuEditor from "../../components/fuEditor";
 export default {
   components: {
     Page,
-    fuEditor
+    fuEditor,
   },
   data() {
     return {
-    //   checked: [],
-      cur_message_id:null,
-      cur_post_type:null,
-      postResult:{},
-      analyseDataList:[],
+      //   checked: [],
+      fileList:[],
+      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,
@@ -334,10 +345,10 @@ export default {
       dialogVisible: false,
       dialogVisible1: false,
       dialogVisible2: false,
-      dialogVisible3:false,
+      dialogVisible3: false,
       dialogTitle: "",
-      dialogTitle2:"",
-      dialogTitle3:"",
+      dialogTitle2: "",
+      dialogTitle3: "",
       defaultProps: {},
       data: [],
       templateList: [],
@@ -345,57 +356,77 @@ export default {
       checkList: [],
       rules: {
         name: [{ required: true, message: "请输入标题", trigger: "blur" }],
-        receiver_id:[{ required: true, message: "请选择接收人", trigger: "change" }],
-        content:[{ required: true, message: "请输入消息内容", trigger: "change" }]
+        receiver_id: [
+          { required: true, message: "请选择接收人", trigger: "change" },
+        ],
+        content: [
+          { required: true, message: "请输入消息内容", trigger: "change" },
+        ],
       },
       props: { multiple: true },
       options: [],
     };
   },
   methods: {
-    clearFilename(){
-      this.form1.filename = '';
-      document.getElementById("fileurl").value = '';
+    handleRemove(file,filelist){
+      let i = this.fileList.indexOf(file)
+      this.fileList.splice(i,1)
+    },
+    handleUploadSuccess(res,file,filelist){
+        this.fileList.push(res.data)
+    },
+    clearFilename() {
+      this.form1.filename = "";
+      document.getElementById("fileurl").value = "";
     },
     changeEditor(val) {
       this.form1.content = val;
     },
-    showMessageAnalyse(){
-          this.$router.push({path:'/message/message/analyse'})
+    showMessageAnalyse() {
+      this.$router.push({ path: "/message/message/analyse" });
     },
-    downloadExcel(){
-      this.$api.downloadNoticeAnalyse({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
+        .downloadNoticeAnalyse({
+          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) {
-      this.form1 = {}
-      let parm = this.form1
-      parm.type = type
-      parm.id = message_id
-      this.dialogTitle2 = "统计结果"
+    analyseData(type, message_id) {
+      this.form1 = {};
+      let parm = this.form1;
+      parm.type = type;
+      parm.id = message_id;
+      this.dialogTitle2 = "统计结果";
       this.dialogVisible2 = true;
-      this.$api.getNoticeAnalyse(parm).then((res)=>{
-          this.analyseDataList = res.data.data.list
-          this.cur_message_id = message_id
-          this.cur_post_type = type
-      })
+      this.$api.getNoticeAnalyse(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;
@@ -407,7 +438,7 @@ export default {
       this.form2[label] = i;
     },
     showSurvey(row) {
-        let _this = this;
+      let _this = this;
       this.title = row.name;
       this.message_id = row.id;
       this.$api.getMessageInfo({ id: row.id }).then((res) => {
@@ -415,12 +446,12 @@ export default {
           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;
         }
       });
@@ -447,10 +478,11 @@ export default {
       this.getData();
     },
     search1() {
-      this.analyseData(this.cur_post_type,this.cur_message_id);
+      this.analyseData(this.cur_post_type, this.cur_message_id);
     },
     openDiag() {
       this.form1 = {};
+      this.fileList = []
       this.dialogVisible = true;
       this.dialogTitle = "发送消息";
     },
@@ -490,9 +522,10 @@ export default {
       });
     },
     edit(row) {
-      this.$api.getNoticeInfo({id:row.id}).then((res)=>{
+      this.$api.getNoticeInfo({ id: row.id }).then((res) => {
         this.form1 = res.data.data;
-        this.dialogTitle = "编辑消息"
+        this.fileList = res.data.data.fileurl
+        this.dialogTitle = "编辑消息";
         let receiver_ids = this.form1.receiver_id;
         if (typeof receiver_ids == "string") {
           receiver_ids = JSON.parse(receiver_ids);
@@ -502,7 +535,7 @@ export default {
         // });
         this.form1.receiver_id = receiver_ids;
         this.dialogVisible = true;
-        })
+      });
     },
     saveResult() {
       let result = JSON.stringify(this.form2);
@@ -528,6 +561,7 @@ export default {
         if (valid) {
           let parm = this.form1;
           let id = this.form1.id;
+          parm.fileurl = JSON.stringify(this.fileList)
           parm.receiver_id = JSON.stringify(parm.receiver_id);
           if (id) {
             this.$api.editNotice(parm).then((res) => {

+ 13 - 2
src/views/message/OutSurvey.vue

@@ -643,8 +643,19 @@ export default {
       this.getData();
     },
     search1() {
-      let parm = this.form;
-      this.analyseData("total", this.cur_message_id);
+      let parm = this.form1;
+      let type = this.cur_post_type
+      let message_id = this.cur_message_id
+      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;
+      });
     },
     openDiag() {
       this.form1 = {};

+ 3 - 1
src/views/message/modelForm.vue

@@ -138,6 +138,7 @@
                 }
             }
             .survey_logo{
+                width:145px;
                 position: relative;
                 top:15px;
                 left: 20px;
@@ -393,6 +394,7 @@ components: {vuedraggable},
         },
         save(){
             let id = this.$route.query.id;
+            let copyid = this.$route.query.copyid
             let widgets = Array.from(this.widgetList);
             let flag = 0;
             let labels = []
@@ -442,7 +444,7 @@ components: {vuedraggable},
                     widget:JSON.stringify(widgets)
                 }
             console.log(widgets,22222222222)
-            if(id){
+            if(id && !copyid){
                 params.id = id;
                 this.$api.editTemplate(params).then(res=>{
                     if(res.data.code==0){

+ 39 - 4
src/views/message/templateList.vue

@@ -56,7 +56,19 @@
         <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
+              class="edit"
+              type="text"
+              @click="edit(scope.row)"
+              v-if="scope.row.edit"
+              >编辑</el-button
+            >
+            <el-button
+              class="edit"
+              type="text"
+              @click="edit(scope.row)"
+              v-else
+              disabled
               >编辑</el-button
             >
             <el-button class="del" @click="del(scope.row.id)" type="text"
@@ -88,6 +100,16 @@
         :rules="rules"
         :model="form1"
       >
+        <el-form-item label="选择历史模板">
+          <el-select v-model="form1.copyid" filterable @change="changeTemplate">
+            <el-option
+              v-for="(item, index) in allTemplate"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="模板名称" prop="name">
           <el-input
             v-model="form1.name"
@@ -114,6 +136,7 @@ export default {
   data() {
     return {
       //   edit:0,
+      allTemplate: [],
       form: { name: "", page: 1, page_size: 20 },
       form1: {},
       total: 1,
@@ -130,12 +153,21 @@ export default {
     };
   },
   methods: {
+    changeTemplate(val){
+      let selVal = this.allTemplate.filter(function(x){return x.id==val})
+      this.form1.name = selVal[0].name
+    },
     addTtitle() {
       this.$refs["form1"].validate((valid) => {
         if (valid) {
+          let query = { title: this.form1.name, id: this.form1.id }
+          if(this.form1.copyid){
+            query.id = this.form1.copyid
+            query.copyid = this.form1.copyid
+          }
           this.$router.push({
             path: "/message/template/add",
-            query: { title: this.form1.name, id: this.form1.id },
+            query: query,
           });
         }
       });
@@ -152,12 +184,15 @@ export default {
         this.total = res.data.data.total;
         this.loading = false;
       });
+      this.$api.getAllTemplateList().then((res) => {
+        this.allTemplate = res.data.data;
+      });
     },
     edit(row) {
-      this.$api.getTemplate({id:row.id}).then((res)=>{
+      this.$api.getTemplate({ id: row.id }).then((res) => {
         this.form1 = row;
         this.dialogVisible = true;
-      })
+      });
     },
     del(id) {
       this.$confirm(