| 
					
				 | 
			
			
				@@ -0,0 +1,200 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div class="m-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <h2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-page-header @back="onCancel" :content="detailName"></el-page-header> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </h2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="m-core"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="buttons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" @click="openUpload()">上传照片</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" v-if="!editing" @click="changeMode()">编辑照片</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="danger" v-if="editing" @click="remove()">删除照片</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" v-if="editing" @click="confirm()">确定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" v-if="editing" @click="editing = false">取消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-alert 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        v-if="editing" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type="info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        class="alert" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :closable="false"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div slot="title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-button class="btn" type="text" :disabled="list.length === checked.length" @click="checkAll()">全选</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-button class="btn" type="text" :disabled="!checked.length" @click="checked = []">取消选择</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <span>共{{list.length}}条, 已选择{{checked.length}}条</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-alert> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-checkbox-group v-model="checked"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-for="(item) in list" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :key="item.url" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="img-container" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div v-if="editing" class="ctrl-bar"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-checkbox class="check" :label="item.id"></el-checkbox> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <i class="el-icon-view" :class="{active: views.includes(item.id)}" @click="setView(item)"></i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :src="item.url" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="img" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :preview-src-list="list.map(item => item.url)"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-image> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-tooltip v-if="!editing" class="item" effect="dark" :content="item.name" placement="top" :open-delay=".3"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="name">{{item.name}}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-tooltip> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input class="nameinput" v-else v-model="item.name" size="mini" placeholder="请输入照片名称" clearable/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-checkbox-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <empty v-if="list.length == 0"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-dialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title="上传照片" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :visible.sync="uploadVisible" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      v-if="uploadVisible" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <upload-popup 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @close="uploadVisible = false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @submited="submited" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :name="$route.query.name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import uploadPopup from '@/views/resetTeaming/components/training-photos/upload' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { photoQueryPage, photoDel } from '@/views/resetTeaming/components/training-photos/api' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  components: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'upload-popup': uploadPopup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  computed: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    detailName() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return this.$route.query.name || '相册详情' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      views: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      checked: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      uploadVisible: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      list: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      editing: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.FetchList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onCancel() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$store.dispatch("delVisitedViews", this.$route); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.$route.query.returnUrl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$router.push(this.$route.query.returnUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    openUpload() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.uploadVisible = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    changeMode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.checked = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.views = this.list.filter(item => item.clientShow).map(item => item.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.editing = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    submited() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.FetchList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setView(item){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const indexOf = this.views.indexOf(item.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (indexOf > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.views.splice(indexOf, 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.views.push(item.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    checkAll() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.checked = this.list.map(item => item.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async FetchList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await photoQueryPage({photoAlbumId: this.$route.params.id}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(res.data.rows) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.list = res.data.rows 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async confirm() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await this.$confirm('是否确认修改照片信息?', '提示') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async remove() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await this.$confirm('是否确认删除已选照片?', '提示') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await photoDel({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ids: this.checked.join(',') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="less" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.img-container{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: inline-flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-right: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-top: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  >.name{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 150px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    line-height: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-top: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: rgba(0, 0, 0, .65); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    text-overflow: ellipsis; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    white-space: pre; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 14px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  >.nameinput{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 150px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-top: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.ctrl-bar{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background-color: rgba(0, 0, 0, .45); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  z-index: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: space-between; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 0 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.el-icon-view{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 14px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  &.active{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #14928A; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.switch{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  right: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  z-index: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.img{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 150px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 150px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.alert{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-top: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.btn{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |