|
@@ -0,0 +1,388 @@
|
|
|
+<template>
|
|
|
+ <div class="scene-management-body" v-loading.fullscreen.lock="fullscreenLoading">
|
|
|
+ <div class="order-management-body">
|
|
|
+ <div class="order-management-inner">
|
|
|
+ <div class="base-info">
|
|
|
+ <span>关键词:</span>
|
|
|
+ <el-input @keyup.enter.native="currentPage=1&&_getSceneData()" v-model="searchKey" placeholder="关键词"></el-input>
|
|
|
+ <el-button type="primary" @click="currentPage=1&&_getSceneData()" color='red'>搜索</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 全部 -->
|
|
|
+ <div class="scene-management_bottom" v-if="tabIndex==0">
|
|
|
+ <div class="order-management-table">
|
|
|
+ <div class="scene-management_tab">
|
|
|
+ <ul>
|
|
|
+ <li v-for="(item,index) in tabs" :key="index" :class="{'scene-management_tab_li_active':item.idx==tabIndex}" @click="clickTabItem(item.idx)">{{item.name}}<span v-if="item.idx != -2" style="margin:0 10px;color: #999;font-weight: normal;">/</span></li>
|
|
|
+ </ul>
|
|
|
+ <!-- <div style="float: right;vertical-align: middle;">
|
|
|
+ <el-button type="primary" icon="el-icon-upload" @click="" color='red'>恢复</el-button>
|
|
|
+ <el-button type="danger" icon="el-icon-delete" @click="" color='red'>删除</el-button>
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ <el-table key="order_table" ref="order_table" class='e-table' :data="scenes" style="width: 100%">
|
|
|
+ <el-table-column label="场景封面" width="120">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <a :href="scope.row.webSite" target="_blank" style="cursor: pointer;">
|
|
|
+ <img :src="scope.row.thumb" width="100%" height="" />
|
|
|
+ </a>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneType" label="分类">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneName" width="200" label="标题">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="拍摄时间" width="200">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>{{new Date(scope.row.createTime).format('yyyy-MM-dd hh:mm:ss')}}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="经纬度" width="200">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.longitude">经度:{{scope.row.longitude}}</div>
|
|
|
+ <div v-if="scope.row.latitude">维度:{{scope.row.latitude }}</div>
|
|
|
+ <span v-if="!scope.row.latitude&&!scope.row.longitude">/</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="childName" label="设备ID" width="150">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="userName" label="用户名" width="150">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="scenekey" label="权限">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="viewCount" label="浏览数">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneType" label="平台展示">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-switch @change="_updateSceneStatus(scope.row.id,scope.row.status)" v-model="scope.row.statusBoo" active-color="#13ce66" inactive-color="#ff4949">
|
|
|
+ </el-switch>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="status" label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button type="text" @click="_deleScene(scope.row.id)" class="delete_btn">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div class="order-management-pagination">
|
|
|
+ <el-pagination @current-change="handleCurrentChange" :current-page.sync="currentPage" :page-size="pageSize" layout="total, prev, pager, next, jumper" :total="total">
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 展示中 -->
|
|
|
+ <div class="scene-management_bottom" v-if="tabIndex==1">
|
|
|
+ <div class="order-management-table">
|
|
|
+ <div class="scene-management_tab">
|
|
|
+ <ul>
|
|
|
+ <li v-for="(item,index) in tabs" :key="index" :class="{'scene-management_tab_li_active':item.idx==tabIndex}" @click="clickTabItem(item.idx)">{{item.name}}<span v-if="item.idx != -2" style="margin:0 10px;color: #999;font-weight: normal;">/</span></li>
|
|
|
+ </ul>
|
|
|
+ <!-- <div style="float: right;vertical-align: middle;">
|
|
|
+ <el-button type="primary" icon="el-icon-upload" @click="" color='red'>恢复</el-button>
|
|
|
+ <el-button type="danger" icon="el-icon-delete" @click="" color='red'>删除</el-button>
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ <el-table key="order_table1" ref="order_table1" class='e-table' :data="scenes" style="width: 100%">
|
|
|
+ <el-table-column label="场景封面" width="120">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <a :href="scope.row.webSite" target="_blank" style="cursor: pointer;">
|
|
|
+ <img :src="scope.row.thumb" width="100%" height="" />
|
|
|
+ </a>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneType" label="分类">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneName" width="200" label="标题">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="拍摄时间" width="200">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>{{new Date(scope.row.createTime).format('yyyy-MM-dd hh:mm:ss')}}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="经纬度" width="200">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.longitude">经度:{{scope.row.longitude}}</div>
|
|
|
+ <div v-if="scope.row.latitude">维度:{{scope.row.latitude }}</div>
|
|
|
+ <span v-if="!scope.row.latitude&&!scope.row.longitude">/</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="childName" width="150" label="设备ID">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="userName" width="150" label="用户名">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="scenekey" label="权限">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="viewCount" label="浏览数">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneType" label="平台展示">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-switch @change="_updateSceneStatus(scope.row.id,scope.row.status)" v-model="scope.row.statusBoo" active-color="#13ce66" inactive-color="#ff4949">
|
|
|
+ </el-switch>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="status" label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button type="text" @click="_deleScene(scope.row.id)" class="delete_btn">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div class="order-management-pagination">
|
|
|
+ <el-pagination @current-change="handleCurrentChange" :current-page.sync="currentPage" :page-size="10" layout="total, prev, pager, next, jumper" :total="total">
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 已隐藏 -->
|
|
|
+ <div class="scene-management_bottom" v-if="tabIndex==-2">
|
|
|
+ <div class="order-management-table">
|
|
|
+ <div class="scene-management_tab">
|
|
|
+ <ul>
|
|
|
+ <li v-for="(item,index) in tabs" :key="index" :class="{'scene-management_tab_li_active':item.idx==tabIndex}" @click="clickTabItem(item.idx)">{{item.name}}<span v-if="item.idx != -2" style="margin:0 10px;color: #999;font-weight: normal;">/</span></li>
|
|
|
+ </ul>
|
|
|
+ <!-- <div style="float: right;vertical-align: middle;">
|
|
|
+ <el-button type="primary" icon="el-icon-upload" @click="" color='red'>恢复</el-button>
|
|
|
+ <el-button type="danger" icon="el-icon-delete" @click="" color='red'>删除</el-button>
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ <el-table key="order_table2" ref="order_table2" class='e-table' :data="scenes" style="width: 100%">
|
|
|
+ <el-table-column label="场景封面" width="120">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <a :href="scope.row.webSite" target="_blank" style="cursor: pointer;">
|
|
|
+ <img :src="scope.row.thumb" width="100%" height="" />
|
|
|
+ </a>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneType" label="分类">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneName" width="200" label="标题">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="拍摄时间" width="200">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>{{new Date(scope.row.createTime).format('yyyy-MM-dd hh:mm:ss')}}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="经纬度" width="200">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.longitude">经度:{{scope.row.longitude}}</div>
|
|
|
+ <div v-if="scope.row.latitude">维度:{{scope.row.latitude }}</div>
|
|
|
+ <span v-if="!scope.row.latitude&&!scope.row.longitude">/</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="childName" width="150" label="设备ID">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="userName" width="150" label="用户名">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="scenekey" label="权限">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="viewCount" label="浏览数">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneType" label="平台展示">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-switch @change="_updateSceneStatus(scope.row.id,scope.row.status)" v-model="scope.row.statusBoo" active-color="#13ce66" inactive-color="#ff4949">
|
|
|
+ </el-switch>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="status" label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button type="text" @click="_deleScene(scope.row.id)" class="delete_btn">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div class="order-management-pagination">
|
|
|
+ <el-pagination @current-change="handleCurrentChange" :current-page.sync="currentPage" :page-size="10" layout="total, prev, pager, next, jumper" :total="total">
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+const _sceneTypeName = {
|
|
|
+ 0: '其他',
|
|
|
+ 1: '文博',
|
|
|
+ 2: '地产',
|
|
|
+ 3: '电商',
|
|
|
+ 4: '餐饮',
|
|
|
+ 5: '家居'
|
|
|
+}
|
|
|
+export default {
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ getRowKeys (row) {
|
|
|
+ return row.number
|
|
|
+ },
|
|
|
+ tabs: [{ name: '全部', idx: 0 }, { name: '展示中', idx: 1 }, { name: '已隐藏', idx: -2 }],
|
|
|
+ expands: [],
|
|
|
+ expandedArr: [],
|
|
|
+ scenes: [],
|
|
|
+ currentPage: 1,
|
|
|
+ key_input: '',
|
|
|
+ fullscreenLoading: false,
|
|
|
+ total: 0,
|
|
|
+ // expressNum_input: "",
|
|
|
+ searchDate: [],
|
|
|
+ searchKey: '',
|
|
|
+ searchOrderNumber: '',
|
|
|
+ searchPhone: '',
|
|
|
+ searchExpressNum: '',
|
|
|
+ hasClickSearch: false,
|
|
|
+ tabIndex: 0,
|
|
|
+ pageSize: 10,
|
|
|
+ value2: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ currentPage () {
|
|
|
+ this._getSceneData()
|
|
|
+ },
|
|
|
+ tabIndex () {
|
|
|
+ this._getSceneData()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ handleCurrentChange (val) {
|
|
|
+ let page = val
|
|
|
+ // console.log(`当前页: ${val}`)
|
|
|
+ if (this.total > 0 && !this.hasClickSearch) {
|
|
|
+ this._getSceneData(page)
|
|
|
+ } else {
|
|
|
+ this._searchOrderByPage(page)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ clickTabItem (idx) {
|
|
|
+ // console.log(idx)
|
|
|
+ this.tabIndex = idx
|
|
|
+ this.total = 0
|
|
|
+ this.hasClickSearch = false
|
|
|
+ this.currentPage = 0
|
|
|
+ this.$refs.searchKey.currentValue = this.key_input = ''
|
|
|
+ this._getSceneData(1)
|
|
|
+ },
|
|
|
+ async _getSceneData () {
|
|
|
+ this.fullscreenLoading = true
|
|
|
+ let status = this.tabIndex === 0 ? null : this.tabIndex
|
|
|
+
|
|
|
+ let res = await this.$http.post('/manager/scene/list', {
|
|
|
+ type: status,
|
|
|
+ searchKey: this.searchKey,
|
|
|
+ pageNum: this.currentPage,
|
|
|
+ pageSize: this.pageSize
|
|
|
+ })
|
|
|
+
|
|
|
+ this.fullscreenLoading = false
|
|
|
+
|
|
|
+ if (res.code === 0) {
|
|
|
+ let temp = res.data.list
|
|
|
+ for (var i = 0; i < temp.length; i++) {
|
|
|
+ temp[i].sceneType = _sceneTypeName[temp[i].sceneType]
|
|
|
+ temp[i].scenekey = temp[i].scenekey ? '私密' : '公开'
|
|
|
+ temp[i]['userName'] = temp[i]['userName'] ? temp[i]['userName'] : '未绑定'
|
|
|
+ let gpsStr = temp[i].gps || ''
|
|
|
+
|
|
|
+ if (gpsStr instanceof Object) {
|
|
|
+ JSON.parse(gpsStr, (k, v) => {
|
|
|
+ if (k && k === 'latitude') {
|
|
|
+ temp[i].latitude = this.formatDegree(v)
|
|
|
+ } else if (k && k === 'longitude') {
|
|
|
+ temp[i].longitude = this.formatDegree(v)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ if (temp[i].status === 1) {
|
|
|
+ temp[i].statusBoo = true
|
|
|
+ } else if (temp[i].status === -2) {
|
|
|
+ temp[i].statusBoo = false
|
|
|
+ } else {
|
|
|
+ temp[i].statusBoo = ''
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.scenes = temp
|
|
|
+ this.total = res.data.total ? res.data.total : this.total
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ formatDegree (value) {
|
|
|
+ value = Math.abs(value)
|
|
|
+ var v1 = Math.floor(value)// 度
|
|
|
+ var v2 = Math.floor((value - v1) * 60)// 分
|
|
|
+ var v3 = Math.round((value - v1) * 3600 % 60)// 秒
|
|
|
+ return v1 + '°' + v2 + '\'' + v3 + '"'
|
|
|
+ },
|
|
|
+ async _updateSceneStatus (num, status) {
|
|
|
+ let tempStatus
|
|
|
+ if (status === 1) {
|
|
|
+ tempStatus = -2
|
|
|
+ } else if (status === -2) {
|
|
|
+ tempStatus = 1
|
|
|
+ } else {
|
|
|
+ this.$notify.error({
|
|
|
+ title: '错误',
|
|
|
+ message: '切换失败'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.fullscreenLoading = true
|
|
|
+ await this.$http.post('/manager/scene/updateStatus', {
|
|
|
+ type: tempStatus,
|
|
|
+ sceneId: num
|
|
|
+ })
|
|
|
+
|
|
|
+ this._getSceneData()
|
|
|
+ this.fullscreenLoading = false
|
|
|
+ },
|
|
|
+
|
|
|
+ _deleScene (num) {
|
|
|
+ this.$confirm('此操作将删除该场景, 是否继续?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(async () => {
|
|
|
+ this.fullscreenLoading = true
|
|
|
+ let res = await this.$http.post('/manager/scene/delete', {
|
|
|
+ sceneId: num
|
|
|
+ })
|
|
|
+ if (res.code === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '删除成功!'
|
|
|
+ })
|
|
|
+ this._getSceneData()
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ type: 'error',
|
|
|
+ message: res.msg
|
|
|
+ })
|
|
|
+ this._getSceneData()
|
|
|
+ }
|
|
|
+ this.fullscreenLoading = false
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '已取消删除'
|
|
|
+ })
|
|
|
+ this.fullscreenLoading = false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created () {
|
|
|
+ this._getSceneData()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+</script>
|
|
|
+<style lang="css" scoped>
|
|
|
+@import './style.css';
|
|
|
+</style>
|
|
|
+<style type="text/css">
|
|
|
+.el-table__expand-icon>i {
|
|
|
+ display: none !important;
|
|
|
+}
|
|
|
+
|
|
|
+.delete_btn span {
|
|
|
+ color: #f56c6c
|
|
|
+}
|
|
|
+
|
|
|
+</style>
|