yuanyiming преди 1 година
родител
ревизия
fceb157624

+ 10 - 0
src/api/eva.js

@@ -131,6 +131,16 @@ export function selectSTEType(params) {
   })
 }
 
+// 获取记录地点
+export function selectSTEPlace(params) {
+  return request({
+    url: '/selectSTEPlace',
+    method: 'get',
+    params,
+    hideloading: false
+  })
+}
+
 // 获取学期选项
 // export function selectTermRecord(params) {
 //   return request({

+ 84 - 58
src/views/eva/components/ImageComponent.vue

@@ -22,11 +22,25 @@
         <el-progress :text-inside="true" :stroke-width="20" :percentage="progress" style="width: 80%"></el-progress>
       </div>
     </div>
+
+    <pop v-show="repShowMask">
+      <template v-slot:tit>提示</template>
+      <template v-slot:con>确定删除吗吗</template>
+      <template v-slot:btn1>
+        <div class="btn" style="color: rgba(136,136,136,1);" @click="repShowMask = false">取消</div>
+      </template>
+      <template v-slot:btn2>
+        <div class="btn" style="color: rgba(251,67,25,1);" @click="repAddRecord">确认</div>
+      </template>
+    </pop>
   </div>
 </template>
 
 <script>
+import pop from './pop.vue'
+
 export default {
+  components: { pop },
   props: {
     imgList: {
       type: Array,
@@ -39,7 +53,9 @@ export default {
     return {
       // imgList: []
       proVisible: false,
-      progress: 0
+      progress: 0,
+      repShowMask: false,
+      delImg: ''
     }
   },
   methods: {
@@ -52,69 +68,79 @@ export default {
       e.target.value = ''
     },
     deleteItem(i) {
+      this.repShowMask = true
+      this.delImg = i
+    },
+    repAddRecord() {
+      this.repShowMask = false
       const a = JSON.parse(JSON.stringify(this.imgList))
-      a.splice(a.indexOf(i), 1)
+      a.splice(a.indexOf(this.delImg), 1)
       // this.imgList.splice(this.imgList.indexOf(i), 1)
       this.$emit('update:imgList', a)
       this.$forceUpdate()
     },
     beforeUpload(event) {
-      var file = event.target.files[0]
-      var credentials = {
-        accessKeyId: 'AKIATLPEDU37QV5CHLMH',
-        secretAccessKey: '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'
-      } // 秘钥形式的登录上传
-      window.AWS.config.update(credentials)
-      window.AWS.config.region = 'cn-northwest-1' // 设置区域
-      var bucket = new window.AWS.S3({ params: { Bucket: 'ccrb' } }) // 选择桶
-      var _this = this
-      _this.progress = 0
-      _this.proVisible = true
-      if (file) {
-        var params = {
-          Key:
-            file.name.split('.')[0] +
-            new Date().getTime() +
-            '.' +
-            file.name.split('.')[file.name.split('.').length - 1],
-          ContentType: file.type,
-          Body: file,
-          'Access-Control-Allow-Credentials': '*',
-          ACL: 'public-read'
-        } // key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true
-        }
-        bucket
-          .upload(params, options)
-          .on('httpUploadProgress', function(evt) {
-            // 这里可以写进度条
-            _this.progress = parseInt((evt.loaded * 80) / evt.total)
-          })
-          .send(function(err, data) {
-            _this.progress = 100
-            _this.mediaLoading = false
-            setTimeout(() => {
-              _this.proVisible = false
-            }, 1000)
-            if (err) {
-              // _this.$message.error('上传失败')
-            } else {
-              _this.$toast({
-                message: '上传成功',
-                type: 'success'
-              })
-              // console.log(_this.imgList)
-              const a = JSON.parse(JSON.stringify(_this.imgList))
-              a.push(data.Location)
-              // console.log('aaaaaaaaaaaaaaaaa', a)
-              _this.$emit('update:imgList', a)
+      var file = ''
+      for (let cfindex = 0; cfindex < event.target.files.length; cfindex++) {
+        console.log('event.target.files', event.target.files)
+        file = event.target.files[cfindex]
+        console.log('file', file)
+        var credentials = {
+          accessKeyId: 'AKIATLPEDU37QV5CHLMH',
+          secretAccessKey: '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'
+        } // 秘钥形式的登录上传
+        window.AWS.config.update(credentials)
+        window.AWS.config.region = 'cn-northwest-1' // 设置区域
+        var bucket = new window.AWS.S3({ params: { Bucket: 'ccrb' } }) // 选择桶
+        var _this = this
+        _this.progress = 0
+        _this.proVisible = true
+        if (file) {
+          var params = {
+            Key:
+              file.name.split('.')[0] +
+              new Date().getTime() +
+              '.' +
+              file.name.split('.')[file.name.split('.').length - 1],
+            ContentType: file.type,
+            Body: file,
+            'Access-Control-Allow-Credentials': '*',
+            ACL: 'public-read'
+          } // key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
+          var options = {
+            partSize: 2048 * 1024 * 1024,
+            queueSize: 2,
+            leavePartsOnError: true
+          }
+          bucket
+            .upload(params, options)
+            .on('httpUploadProgress', function(evt) {
+              // 这里可以写进度条
+              _this.progress = parseInt((evt.loaded * 80) / evt.total)
+            })
+            .send(function(err, data) {
+              _this.progress = 100
+              _this.mediaLoading = false
+              setTimeout(() => {
+                _this.proVisible = false
+              }, 1000)
+              if (err) {
+                // _this.$message.error('上传失败')
+              } else {
+                _this.$toast({
+                  message: '上传成功',
+                  type: 'success'
+                })
+                // console.log(_this.imgList)
+                const a = JSON.parse(JSON.stringify(_this.imgList))
+                a.push(data.Location)
+                // console.log('aaaaaaaaaaaaaaaaa', a)
+                _this.$emit('update:imgList', a)
 
-              // _this.getImage(_this.imgList)
-            }
-          })
+                // _this.getImage(_this.imgList)
+              }
+            })
+        }
       }
     },
     getImage(imageList) {
@@ -139,7 +165,7 @@ export default {
     justify-content: center;
     align-items: center;
     margin: 10px 0;
-    margin-right: 10px;
+    margin-right: 4px;
 
     border: 1px solid rgba(217, 217, 217, 1);
 

+ 1 - 1
src/views/eva/components/bar.vue

@@ -2,7 +2,7 @@
   <!-- 导航条 -->
   <div class="bar" :style="{ background: num ? '#005CCD' : '#f9f9f9', color: num ? '#fff' : 'rgba(0, 0, 0, 0.90)' }">
     <van-icon @click="back" name="arrow-left" />
-    <div>
+    <div style="font-size: 16px;;">
       {{ tit }}
     </div>
     <div>

+ 2 - 2
src/views/eva/components/radioSelect.vue

@@ -104,13 +104,13 @@ export default {
   .list {
     position: absolute;
     left: 0;
-    top: 100%;
+    top: calc(100% + 10px);
     max-height: 220px;
     overflow-y: scroll;
     background-color: #fff;
     width: 100%;
     box-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.1);
-    z-index: 10;
+    z-index: 100;
     border-radius: 8px;
     .ol {
       height: 40px;

+ 2 - 2
src/views/eva/components/selects.vue

@@ -116,13 +116,13 @@ export default {
   .list {
     position: absolute;
     left: 0;
-    top: 100%;
+    top: calc(100% + 10px);
     max-height: 220px;
     overflow-y: scroll;
     background-color: #fff;
     width: 100%;
     box-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.1);
-    z-index: 10;
+    z-index: 100;
     border-radius: 8px;
     .ol {
       height: 40px;

+ 133 - 8
src/views/eva/studentEvaluate.vue

@@ -3,8 +3,8 @@
   <div class="studentEvaluate" @click="col">
     <bar :tit="'学生评价'" :num="1">
       <template v-slot:btn>
-        <div v-if="!shareShow" @click="save">发布</div>
-        <div v-else @click="amend">修改</div>
+        <div v-if="!shareShow" style="font-size: 16px;font-weight: normal;" @click="save">发布</div>
+        <div v-else style="font-size: 16px;font-weight: normal;" @click="amend">修改</div>
       </template>
     </bar>
 
@@ -12,6 +12,11 @@
 
     <!-- <div class="bigBlock"> -->
     <div class="bigBlock" style="">
+      <div
+        v-if="placeShow"
+        @click="placeShow = false"
+        style="position:absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: 10;"
+      ></div>
       <div class="claName">
         <div class="tit">学生</div>
         <div class="studentName">{{ studentInfo.name }}</div>
@@ -85,10 +90,32 @@
       </div>
       <div v-show="tim" style="height: 10px;"></div>
 
-      <div class="claName">
+      <div class="claName" style="position: relative;">
         <div class="tit">地点</div>
         <div class="inpBlock studentName">
-          <input type="text" v-model="place" class="inp" placeholder="请输入" />
+          <!-- <radioSelect ref="claSel" :listCont="placeList" :tit="'请选择地点'" :choose="termData"></radioSelect> -->
+          <!-- <div > -->
+          <!-- :readonly="placeId != 1" -->
+          <input type="text" v-model="place" @click="selectPlace" class="inp" placeholder="请选择或输入" />
+          <!-- </div> -->
+
+          <div class="list" v-if="placeShow">
+            <div class="ol" v-for="(i, index) in placeList" :key="index + 'w'" @click="cho(i)">
+              <div :style="{ color: placeId == i.id ? '#3894FF' : '' }">{{ i.name }}</div>
+              <div>
+                <img :style="{ display: placeId == i.id ? '' : 'none' }" src="@/assets/images/eva/dui.png" alt="" />
+              </div>
+            </div>
+
+            <div class="ol" @click="cho({ name: '', id: '1' })">
+              <div :style="{ color: placeId == 1 ? '#3894FF' : '' }">
+                其他
+              </div>
+              <div>
+                <img :style="{ display: placeId == 1 ? '' : 'none' }" src="@/assets/images/eva/dui.png" alt="" />
+              </div>
+            </div>
+          </div>
         </div>
       </div>
       <div class="claName">
@@ -171,6 +198,7 @@ import { selectTerm } from '@/api/eva'
 import { selectStudentDetail } from '@/api/eva'
 import { selectManyClassStudent } from '@/api/eva'
 import { selectSTEType } from '@/api/eva'
+import { selectSTEPlace } from '@/api/eva'
 
 import '@/utils/aws-sdk-2.235.1.min.js'
 
@@ -196,6 +224,9 @@ export default {
       // 纬度选项
       weiList: [],
       termList: [],
+      placeList: [],
+      // 遮罩层
+      placeShow: false,
       // 所选数据
       // 学生
       selectSData: [],
@@ -207,6 +238,8 @@ export default {
       visitTime: '',
       // 地点
       place: '',
+      placeId: 1,
+
       // 观察内容
       observeCon: '',
       // 观察记录
@@ -282,6 +315,7 @@ export default {
       //   console.log('this.studentList', this.studentList)
       // })
     },
+    // 获取学期筛选框
     getTermData() {
       selectTerm().then(res => {
         // console.log('获取学期筛选框', res)
@@ -294,6 +328,7 @@ export default {
         this.termList = res[0]
       })
     },
+    // 获取纬度筛选框
     getWei() {
       const data3 = {
         org: this.$store.state.user.userinfo.org,
@@ -350,6 +385,7 @@ export default {
       this.imgList = imgList
       this.$forceUpdate()
     },
+    // 保存前进行判断
     save() {
       // 判断是否填写完整,是否让他继续往下走
       let isOk = 0
@@ -365,11 +401,13 @@ export default {
 
       this.isShowMask = true
     },
+    // 重复添加
     repPop() {
       this.recordCon = ''
       this.imgList = []
       this.getPresentDate()
     },
+    // 添加新纪录进行判断
     repetitionSave() {
       let isOk = 0
 
@@ -385,7 +423,63 @@ export default {
 
       this.repShowMask = true
     },
+    getRecordPlace() {
+      const data = {
+        org: this.$store.state.user.userinfo.org,
+        oid: this.$store.state.user.userinfo.organizeid
+      }
+      selectSTEPlace(data).then(res => {
+        // this.filtrate = res[0]
+        console.log('getRecordPlace', res)
+        var ptype = res[0] // 公共子级分类
+        var pctype = res[1] // 该学校子级分类
+        var potype = res[2] // 组织子级分类
+
+        if (potype.length > 0) {
+          this.placeList = potype
+        } else if (pctype.length > 0) {
+          this.placeList = pctype
+        } else {
+          this.placeList = ptype
+        }
 
+        // if (fotype.length == 0 && sotype.length == 0) {
+        //   if (fctype.length == 0 && sctype.length == 0) {
+        //     for (var i = 0; i < ftype.length; i++) {
+        //       allfType.push(ftype[i])
+        //     }
+        //     for (var i = 0; i < stype.length; i++) {
+        //       allsType.push(stype[[i]])
+        //     }
+        //   } else {
+        //     for (var i = 0; i < fctype.length; i++) {
+        //       allfType.push(fctype[i])
+        //     }
+        //     for (var i = 0; i < sctype.length; i++) {
+        //       allsType.push(sctype[[i]])
+        //     }
+        //   }
+        // } else {
+        //   for (var i = 0; i < fotype.length; i++) {
+        //     allfType.push(fotype[i])
+        //   }
+        //   for (var i = 0; i < sotype.length; i++) {
+        //     allsType.push(sctysotypepe[[i]])
+        //   }
+        // }
+        // console.log('分类分类分类', res)
+        // this.weiList = allsType
+      })
+    },
+    selectPlace() {
+      this.placeShow = true
+    },
+    cho(i) {
+      // console.log('i', i)
+      this.place = i.name
+      this.placeId = i.id
+    },
+    // 修改前判断
     amend() {
       let isOk = 0
       // console.log(this.$store.state);
@@ -422,7 +516,8 @@ export default {
           observeCon: this.observeCon,
           recordCon: this.recordCon,
           imgList: this.imgList.join(','),
-          term: this.termData[0]
+          term: this.termData[0],
+          pid: this.placeId
         }
       ]
       // return console.log(data)
@@ -463,7 +558,8 @@ export default {
           observeCon: this.observeCon,
           recordCon: this.recordCon,
           imgList: this.imgList.join(','),
-          term: this.termData[0]
+          term: this.termData[0],
+          pid: this.placeId
         }
       ]
       // return console.log(data);
@@ -508,7 +604,7 @@ export default {
         this.studentInfo.cname = allData.cname
         this.studentInfo.classid = allData.classid
         this.studentInfo.userid = allData.sid
-
+        this.placeId = allData.placeId
         this.visitTime = allData.recordDate
         this.place = allData.place
         this.recordCon = allData.recordCon
@@ -531,6 +627,7 @@ export default {
         // console.log('selectWData', this.selectWData)
       })
     },
+    // 获取当前时间
     getPresentDate() {
       const currentTime = new Date()
       const year = currentTime.getFullYear()
@@ -618,6 +715,7 @@ export default {
   },
 
   created() {
+    this.getRecordPlace()
     // 是否显示分享和继续记录按钮。添加按钮进来不显示
     this.shareShow = this.$route.query.shareShow * 1
     // console.log(this.shareShow)
@@ -636,6 +734,7 @@ export default {
 .studentEvaluate {
   font-size: 14px;
   z-index: 1;
+  position: relative;
   // min-height: 100vh;
   background-image: linear-gradient(to bottom, #005ccd 1%, #005ccd 12%, #f6f5f8 35%, #f6f5f8 100%);
   .rl {
@@ -652,7 +751,7 @@ export default {
     margin-top: 10px;
     background-color: #fff;
     border-radius: 15px;
-    position: relative;
+    // position: relative;
     z-index: 1;
     // scroll-behavior: auto;
     overflow-y: scroll;
@@ -750,8 +849,34 @@ export default {
     }
     .inpBlock {
       // border: 1px solid rgba(187, 187, 187, 1);
+      position: relative;
       height: 100%;
       flex: 1;
+      .list {
+        position: absolute;
+        left: 0;
+        top: calc(100% + 10px);
+        max-height: 220px;
+        overflow-y: scroll;
+        background-color: #fff;
+        width: 100%;
+        box-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.1);
+        z-index: 30;
+        border-radius: 8px;
+        .ol {
+          height: 40px;
+          line-height: 40px;
+          width: 100%;
+          background-color: #fff;
+          box-sizing: border-box;
+          padding: 0px 10px;
+          display: flex;
+          justify-content: space-between;
+        }
+        // .ol:hover {
+        //   background-color: #f3f6f9;
+        // }
+      }
       .inp {
         box-sizing: border-box;
         height: 100%;