xjc il y a 4 ans
Parent
commit
180b169bc6
3 fichiers modifiés avec 158 ajouts et 105 suppressions
  1. 2 2
      src/views/Home.vue
  2. 135 101
      src/views/message/MessageAnalyse.vue
  3. 21 2
      src/views/message/modelForm.vue

+ 2 - 2
src/views/Home.vue

@@ -10,8 +10,8 @@
 	<el-container>
 		<el-header>
 			<div class="header">
-				<img class="logo" src="../assets/logo.png" alt="">
-				<div class="siteTitle">中科院期刊微信公众号集中管理平台</div>
+				<!-- <img class="logo" src="../assets/logo.png" alt=""> -->
+				<!-- <div class="siteTitle">中科院期刊微信公众号集中管理平台</div> -->
 			</div>	
 			<div class="nav">
 				<!-- <router-link :class="act?'active':''" to="/index/index" @click.native='active(1)'>首页</router-link>

+ 135 - 101
src/views/message/MessageAnalyse.vue

@@ -72,7 +72,20 @@
           class="item-content"
           v-if="item.type == 'input' || item.type == 'textarea'"
         >
-          【答案】:<el-button type="primary" size="mini" @click="showItemResult(item)">查看详情</el-button>
+          【答案】:<el-button
+            type="primary"
+            size="mini"
+            @click="showItemResult(item)"
+            >查看详情</el-button
+          >
+        </div>
+        <div class="item-content" v-if="item.type == 'image'">
+          【答案】:<el-button
+            type="primary"
+            size="mini"
+            @click="showItemResult(item)"
+            >查看详情</el-button
+          >
         </div>
         <div
           class="item-content"
@@ -98,69 +111,83 @@
         </div>
       </div>
     </div>
-     <!-- 查看答题详情 -->
+    <!-- 查看答题详情 -->
     <el-dialog
-        :title="dialogTitle"
-        :close-on-click-modal="false"
-        :visible.sync="dialogVisible"
-      >
-        <div class="content">
-            <div class="filter">
-              <el-form
-                size="small"
-                label-width="70px"
-                :inline="true"
-                label-position="left"
+      :title="dialogTitle"
+      :close-on-click-modal="false"
+      :visible.sync="dialogVisible"
+    >
+      <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
+                type="primary"
+                icon="el-icon-download"
+                size="mini"
+                @click="downloadItem(cur_item)"
+                >导出excel</el-button
               >
-                <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
-                    type="primary"
-                    icon="el-icon-download"
-                    size="mini"
-                    @click="downloadItem(cur_item)"
-                    >导出excel</el-button
-                  >
-                </el-form-item>
-              </el-form>
-            </div>
-            <el-table
-              class="table"
-              :data="analyseDataList"
-              height="50vh"
-              border
-              v-loading="loading"
-              default-expand-all
-              row-key="id"
-              style="width: 100%"
+            </el-form-item>
+          </el-form>
+        </div>
+        <el-table
+          class="table"
+          :data="analyseDataList"
+          height="50vh"
+          border
+          v-loading="loading"
+          default-expand-all
+          row-key="id"
+          style="width: 100%"
+        >
+          <el-table-column label="序号" type="index" width="50" align="center">
+          </el-table-column>
+          <template v-for="(item, key) in this.headers">
+            <el-table-column
+              v-if="curItemType=='image'"
+              :key="key"
+              :prop="item"
+              :label="item"
             >
+              <template slot-scope="scope">
+                  <img :src="url" alt="" v-for="(url,iindex) in scope.row[item]" :key="iindex" width="80" height="60">
+              </template>
+            </el-table-column>
             <el-table-column
-        label="序号"
-        type="index"
-        width="50"
-        align="center">
-</el-table-column>
-              <el-table-column v-for="(item, key) in this.headers" :key="key" :prop="item" :label="item"> </el-table-column>
-            </el-table>
-            <Page
-              ref="pageButton"
-              :current="form.page"
-              :page_size="form.page_size"
-              :total="total"
-              @pageChange="gopage"
-            />
-        </div>
+              v-else
+              :key="key"
+              :prop="item"
+              :label="item"
+            >
+            </el-table-column>
+          </template>
+        </el-table>
+        <Page
+          ref="pageButton"
+          :current="form.page"
+          :page_size="form.page_size"
+          :total="total"
+          @pageChange="gopage"
+        />
+      </div>
     </el-dialog>
   </section>
 </template>
@@ -174,15 +201,16 @@ export default {
   data() {
     return {
       //   checked: [],
-      form:{},
+      curItemType:'',
+      form: {},
       total: 1,
       loading: false,
       results: [],
-      dialogTitle:"",
-      dialogVisible:false,
-      analyseDataList:[],
-      headers:[],
-      cur_item:null
+      dialogTitle: "",
+      dialogVisible: false,
+      analyseDataList: [],
+      headers: [],
+      cur_item: null,
     };
   },
   filters: {
@@ -258,18 +286,19 @@ export default {
         });
     },
     showItemResult(item) {
-      this.dialogTitle = '"'+item.label+'"答案详情'
+      this.curItemType = item.type
+      this.dialogTitle = '"' + item.label + '"答案详情';
       let message_id = this.$route.query.id;
       let type = this.$route.query.type;
       var parm = this.form;
-      parm.message_id = message_id
-      parm.type = type
-      parm.item = item.label
-      this.$api.showAnalyseItem(parm).then((res)=>{
-        let data = res.data.data
-        this.headers = Object.keys(data[0])
-        this.analyseDataList = data
-      })
+      parm.message_id = message_id;
+      parm.type = type;
+      parm.item = item.label;
+      this.$api.showAnalyseItem(parm).then((res) => {
+        let data = res.data.data;
+        this.headers = Object.keys(data[0]);
+        this.analyseDataList = data;
+      });
       this.dialogVisible = true;
       this.cur_item = item;
     },
@@ -278,14 +307,14 @@ export default {
       let parm = this.form;
       let message_id = this.$route.query.id;
       let type = this.$route.query.type;
-      parm.message_id = message_id
-      parm.type = type
-      parm.item = item.label
-      this.$api.showAnalyseItem(parm).then((res)=>{
-        let data = res.data.data
-        this.headers = Object.keys(data[0])
-        this.analyseDataList = data
-      })
+      parm.message_id = message_id;
+      parm.type = type;
+      parm.item = item.label;
+      this.$api.showAnalyseItem(parm).then((res) => {
+        let data = res.data.data;
+        this.headers = Object.keys(data[0]);
+        this.analyseDataList = data;
+      });
     },
     getData() {
       let message_id = this.$route.query.id;
@@ -328,22 +357,22 @@ export default {
         "#F0805A",
         "#26C0C0",
       ];
-      let pieColors = []
+      let pieColors = [];
       item.items.forEach((item, index) => {
         dataPie.push({
           name: item.label,
           value: item.times,
-          color:colors[index],
-          itemStyle : {
-          normal : {
-              label : {
-                show : true,
-                color:colors[index]
+          color: colors[index],
+          itemStyle: {
+            normal: {
+              label: {
+                show: true,
+                color: colors[index],
+              },
+              labelLine: {
+                show: true,
+                color: colors[index],
               },
-              labelLine : {
-                show : true,
-                color:colors[index]
-              }
             },
           },
         });
@@ -354,10 +383,15 @@ export default {
           itemStyle: { color: colors[index] },
         });
       });
-      dataPie = dataPie.filter(function(x){if(x.value==0){return false}return true})
-      dataPie.forEach((item,index)=>{
-          pieColors.push(item.color)
-        })
+      dataPie = dataPie.filter(function (x) {
+        if (x.value == 0) {
+          return false;
+        }
+        return true;
+      });
+      dataPie.forEach((item, index) => {
+        pieColors.push(item.color);
+      });
       let option = {
         title: {
           subtext: "填报次数",
@@ -399,8 +433,8 @@ export default {
               // },
               formatter: function (value, index) {
                 // 10 6 这些你自定义就行
-                  var v = value.substring(0, 6) + '...'
-                  return value.length > 10 ? v : value
+                var v = value.substring(0, 6) + "...";
+                return value.length > 10 ? v : value;
               },
               // x轴字体颜色
               textStyle: {
@@ -519,7 +553,7 @@ export default {
             //     }
 
             // },
-             data: dataPie.sort(function (a, b) {
+            data: dataPie.sort(function (a, b) {
               return a.value - b.value;
             }),
             animationType: "scale",

+ 21 - 2
src/views/message/modelForm.vue

@@ -217,6 +217,13 @@
     position: absolute;
     top: -5px;
   }
+  .ctl_btn_change {
+    top:20px;
+    right: -15px;
+    color: green;
+    width: 80px;
+    font-size:16px;
+  }
   .ctl_btn_note {
     right: 20px;
     color: #ffb800;
@@ -508,6 +515,9 @@
                     <span class="ctl_btn ctl_btn_note" @click="addNote(item)"
                       >注释</span
                     >
+                    <span class="ctl_btn ctl_btn_change" @click="item.type='checkbox'"
+                      >切换成多选</span
+                    >
                     <span
                       @click="widgetList.splice(index, 1)"
                       class="ctl_btn ctl_btn_del"
@@ -558,6 +568,9 @@
                     <span class="ctl_btn ctl_btn_note" @click="addNote(item)"
                       >注释</span
                     >
+                    <span class="ctl_btn ctl_btn_change" @click="item.type='radio'"
+                      >切换成单选</span
+                    >
                     <span
                       @click="widgetList.splice(index, 1)"
                       class="ctl_btn ctl_btn_del"
@@ -583,7 +596,7 @@
                     list-type="picture-card"
                     :on-preview="handlePreview"
                     :on-remove="handleRemove"
-                    limit="9"
+                    :limit="9"
                   >
                     <i class="el-icon-plus"></i>
                   </el-upload>
@@ -768,6 +781,9 @@
                             @click="addNote(iitem)"
                             >注释</span
                           >
+                          <span class="ctl_btn ctl_btn_change" @click="item.type='checkbox'"
+                      >切换成多选</span
+                    >
                           <span
                             @click="item.children.splice(index, 1)"
                             class="ctl_btn ctl_btn_del"
@@ -821,6 +837,9 @@
                             @click="addNote(iitem)"
                             >注释</span
                           >
+                          <span class="ctl_btn ctl_btn_change" @click="item.type='radio'"
+                      >切换成多选</span
+                    >
                           <span
                             @click="item.children.splice(index, 1)"
                             class="ctl_btn ctl_btn_del"
@@ -845,7 +864,7 @@
                           list-type="picture-card"
                           :on-preview="handlePreview"
                           :on-remove="handleRemove"
-                          limit="9"
+                          :limit="9"
                         >
                           <i class="el-icon-plus"></i>
                         </el-upload>