xjc 4 years ago
parent
commit
514aefdda4
3 changed files with 173 additions and 53 deletions
  1. 2 2
      src/views/Home.vue
  2. 169 49
      src/views/message/survey/answer.html
  3. 2 2
      vue.config.js

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

+ 169 - 49
src/views/message/survey/answer.html

@@ -93,21 +93,36 @@
     font-size: 14px;
     padding-bottom: 10px;
   }
-/*批注信息*/
-.tool_text{
-  width:315px;
-}
-.tool_text  p{
-    margin-bottom:10px;
-}
-.toolText_img img{
-      width:100px;
-      height: 100px;
-      margin-bottom:5px
-}
-.toolText_img img:nth-child(odd){
-  margin-right: 5px;
-}
+
+  /*批注信息*/
+  .tool_text {
+    width: 315px;
+  }
+
+  .tool_text p {
+    margin-bottom: 10px;
+  }
+
+  .toolText_img img {
+    width: 100px;
+    height: 100px;
+    margin-bottom: 5px
+  }
+
+  .toolText_img img:nth-child(odd) {
+    margin-right: 5px;
+  }
+
+  .group_title {
+    font-size: 16px;
+    font-weight: bold;
+    padding: 10px 0px;
+  }
+
+  .groupMain {
+    border: 1px solid #ccc;
+    border-radius: 5px;
+  }
 </style>
 
 <body>
@@ -117,43 +132,93 @@
       <h5 align="center" class="tpl_title">{{ title }}</h5>
       <div class="message_desc">{{messageData.desc}}</div>
       <el-form ref="form2" :model="form2" class="tpl_form over_y" :rules="rules1.rules" v-if="this.form2.status==1">
-        <el-form-item v-for="(item, index) in widgetList" :key="index" :label="(index+1)+'、'+(item.label)+item.cntype"
-          :prop="item.label">
-          <el-tooltip class="item" effect="dark" content="Left Bottom 提示文字" placement="bottom-end">
-            <i v-if="item.noteDesc||item.noteImgs"
-              class="el-icon-info"
-              style="position: absolute; top: -28px; right: 0px"
-            ></i>
-            <div slot="content" class='tool_text'> 
-              <p>{{item.noteDesc}}</p>
-              <div class='toolText_img'>
-                <img :src="item" alt="" v-for="(item,index) in item.noteImgs" :key="index" />
+        <template v-for="(item, index) in widgetList">
+          <el-form-item :key="index" :label="(index+1)+'、'+(item.label)+item.cntype" :prop="item.label"
+            v-if="item.type != 'group'">
+            <el-tooltip class="item" effect="dark" content="Left Bottom 提示文字" placement="bottom-end">
+              <i v-if="item.noteDesc||item.noteImgs" class="el-icon-info"
+                style="position: absolute; top: -28px; right: 0px"></i>
+              <div slot="content" class='tool_text'>
+                <p>{{item.noteDesc}}</p>
+                <div class='toolText_img'>
+                  <img :src="item" alt="" v-for="(item,index) in item.noteImgs" :key="index" />
+                </div>
               </div>
-            </div>
-          </el-tooltip>
-          <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" :rows=4></el-input>
-          <el-radio-group v-if="item.type == 'radio'" v-model="form2[item.label]" class="cus_select">
-            <el-radio :label="iitem.label" v-for="(iitem, index) in item.items" :key="index">{{ iitem.label }}
-            </el-radio>
-          </el-radio-group>
+            </el-tooltip>
+            <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" :rows=4></el-input>
+            <el-radio-group v-if="item.type == 'radio'" v-model="form2[item.label]" class="cus_select">
+              <el-radio :label="iitem.label" v-for="(iitem, index) in item.items" :key="index">{{ iitem.label }}
+              </el-radio>
+            </el-radio-group>
 
-          <el-checkbox-group v-else-if="item.type == 'checkbox'" v-model="form2[item.label]" class="cus_select">
-            <el-checkbox :label="iitem.label" v-for="(iitem, index) in item.items" :key="index"></el-checkbox>
-          </el-checkbox-group>
-          <el-upload v-if="item.type == 'image'" action="/api/admin/uploadfile" list-type="picture-card"
-            :data="{ type: item.label }" :on-success="handleSuccess">
-            <i class="el-icon-plus"></i>
+            <el-checkbox-group v-else-if="item.type == 'checkbox'" v-model="form2[item.label]" class="cus_select">
+              <el-checkbox :label="iitem.label" v-for="(iitem, index) in item.items" :key="index"></el-checkbox>
+            </el-checkbox-group>
+            <el-upload v-if="item.type == 'image'" action="/api/admin/uploadfile" list-type="picture-card"
+              :data="{ type: item.label }" :on-success="handleSuccess">
+              <i class="el-icon-plus"></i>
 
-          </el-upload>
-          <el-upload v-if="item.type == 'file'" class="upload-demo" ref="upload" action="/api/admin/uploadfile"
-            :data="{ type: item.label }" :on-success="handleSuccess">
-            <!-- <el-button slot="trigger" size="small" type="primary">选取文件</el-button> -->
-            <el-button style="margin-left: 10px" size="small" type="primary" plain>添加文件</el-button>
-            <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
-          </el-upload>
-        </el-form-item>
+            </el-upload>
+            <el-upload v-if="item.type == 'file'" class="upload-demo" ref="upload" action="/api/admin/uploadfile"
+              :data="{ type: item.label }" :on-success="handleSuccess">
+              <!-- <el-button slot="trigger" size="small" type="primary">选取文件</el-button> -->
+              <el-button style="margin-left: 10px" size="small" type="primary" plain>添加文件</el-button>
+              <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
+            </el-upload>
+          </el-form-item>
+          <!-- 域组件展示 -->
+          <h6 v-if="item.type == 'group'" align="center" class="group_title" :key="'revire_g' + index">
+            {{ item.label }}
+          </h6>
+          <section class="groupMain" v-if="item.type == 'group'" :key="'review_gi' + index">
+            <template v-for="(iitem, index) in item.children">
+              <el-form-item :prop="iitem.label + '(' + item.label + ')'" :key="'review_gc' + index"
+                :label="iitem.label + iitem.cntype">
+                <el-tooltip class="item" effect="dark" content="Left Bottom 提示文字" placement="bottom-end">
+                  <i v-if="iitem.noteDesc || iitem.noteImgs" class="el-icon-info"
+                    style="position: absolute; top: -28px; right: 0px"></i>
+                  <div slot="content" class="tool_text">
+                    <p>{{ iitem.noteDesc }}</p>
+                    <div class="toolText_img">
+                      <img :src="iitem" alt="" v-for="(iitem, index) in iitem.noteImgs"
+                        :key="'review_gc_noteimgs' + index" />
+                    </div>
+                  </div>
+                </el-tooltip>
+                <el-input :class="iitem.require ? 'require' : ''" v-if="iitem.type == 'input'"
+                  v-model="form2[iitem.label + '(' + item.label + ')']" :placeholder="iitem.placeholder"></el-input>
+                <el-input :class="iitem.require ? 'require' : ''" v-if="iitem.type == 'textarea'" type="textarea"
+                  v-model="form2[iitem.label + '(' + item.label + ')']" :placeholder="iitem.placeholder"></el-input>
+                <el-radio-group class="cus_select" v-if="iitem.type == 'radio'"
+                  v-model="form2[iitem.label + '(' + item.label + ')']" :class="iitem.require ? 'require' : ''">
+                  <el-radio :label="iiitem.label" v-for="(iiitem, index) in iitem.items" :key="'review_gcr' + index">{{
+                    iiitem.label }}</el-radio>
+                </el-radio-group>
+                <el-radio-group class="cus_select" v-if="iitem.type == 'checkbox'"
+                  v-model="form2[iitem.label + '(' + item.label + ')']" :class="iitem.require ? 'require' : ''">
+                  <el-checkbox :label="iiitem.label" v-for="(iiitem, index) in iitem.items" :key="'review_gcc' + index">
+                    {{ iiitem.label }}</el-checkbox>
+                </el-radio-group>
+                <el-upload :class="iitem.require ? 'require' : ''" v-if="iitem.type == 'image'"
+                  v-model="form2[iitem.label + '(' + item.label + ')']" action="/api/admin/uploadfile"
+                  list-type="picture-card" :on-preview="handlePreview" :on-remove="handleRemove">
+                  <i class="el-icon-plus"></i>
+                </el-upload>
+                <el-upload v-if="iitem.type == 'file'" class="upload-demo" ref="upload" action="/api/admin/uploadfile"
+                  :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>
+            </template>
+          </section>
+          <!-- 域组件end -->
+        </template>
         <el-form-item v-if="widgetList.length">
           <el-button size="medium" type="primary" @click="saveResult"
             style="width: 100%;height: 45px;font-size: 16px;margin-top:20px;" :disabled="form2.status==0">
@@ -233,6 +298,61 @@
                   { required: true, message: item.placeholder, trigger: "change" },
                 ];
               }
+              if (i.type == "image" && i.require) {
+                rules1[i.label] = [
+                  { required: true, message: i.placeholder, trigger: "change" },
+                ];
+              }
+              // 域组件rules
+              if (i.type == "group") {
+                i.children.forEach((item) => {
+                  if (item.type == "input" && item.require) {
+                    rules1[item.label + "(" + i.label + ")"] = [
+                      {
+                        required: true,
+                        message: item.placeholder,
+                        trigger: "blur",
+                      },
+                    ];
+                  }
+                  if (item.type == "textarea" && item.require) {
+                    rules1[item.label + "(" + i.label + ")"] = [
+                      {
+                        required: true,
+                        message: item.placeholder,
+                        trigger: "blur",
+                      },
+                    ];
+                  }
+                  if (item.type == "radio" && item.require) {
+                    rules1[item.label + "(" + i.label + ")"] = [
+                      {
+                        required: true,
+                        message: item.placeholder,
+                        trigger: "change",
+                      },
+                    ];
+                  }
+                  if (item.type == "checkbox" && item.require) {
+                    rules1[item.label + "(" + i.label + ")"] = [
+                      {
+                        required: true,
+                        message: item.placeholder,
+                        trigger: "change",
+                      },
+                    ];
+                  }
+                  if (item.type == "image" && item.require) {
+                    rules1[item.label + "(" + i.label + ")"] = [
+                      {
+                        required: true,
+                        message: item.placeholder,
+                        trigger: "change",
+                      },
+                    ];
+                  }
+                });
+              }
             }
             this.$set(this.rules1, "rules", rules1);
             this.title = res.data.name

+ 2 - 2
vue.config.js

@@ -2,8 +2,8 @@ module.exports={
     devServer:{
         proxy:{
             '/api':{
-                // target:'http://39.107.246.59:81',
-                target:'https://test.scxjc.club',
+                target:'http://39.107.246.59:81',
+                // target:'https://test.scxjc.club',
                 // target:'http://caos.tederen.com',
                 changeOrigin: true,
             }