zhibin 6 vuotta sitten
vanhempi
commit
2fbe4440c0

+ 3 - 0
src/page/layout/temp.vue

@@ -0,0 +1,3 @@
+<template>
+  <router-view></router-view>
+</template>

+ 1 - 1
src/page/layout/title.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="title-layout">
-    <span class="label">{{$route.meta.text}}</span>
+    <span class="label">{{routes[routes.length - 1]}}</span>
     <div class="router">
       <span>系统后台</span>
       <span v-for="route in routes" :key="route">{{route}}</span>

+ 751 - 0
src/page/scene/index.vue

@@ -0,0 +1,751 @@
+<template>
+  <div id="scene-management">
+
+    <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="_sceneSearch" ref="searchKey" value="" placeholder="关键词"></el-input>
+            <el-button type="primary" @click="_sceneSearch" 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.homepic" 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>{{$base.dateFormat('yyyy-MM-dd hh:mm:ss', new Date(scope.row.createTime.time))}}</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.num,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.num)" 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==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.homepic" 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>{{$base.dateFormat('yyyy-MM-dd hh:mm:ss', new Date(scope.row.createTime.time))}}</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.num,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.num)" 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.homepic" 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>{{$base.dateFormat('yyyy-MM-dd hh:mm:ss', new Date(scope.row.createTime.time))}}</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.num,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.num)" 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>
+  </div>
+</template>
+<script>
+// import { request } from 'api/server'
+
+export default {
+
+  name: 'scene-management',
+
+  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: [],
+      searchOrderNumber: '',
+      searchPhone: '',
+      searchExpressNum: '',
+      hasClickSearch: false,
+      tabIndex: 0,
+      value2: true
+    }
+  },
+  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)
+    },
+    _getSceneData (page) {
+      this.fullscreenLoading = true
+      let status = this.tabIndex === 0 ? null : this.tabIndex
+
+      request['getManageScene']({
+        page: page - 1,
+        status
+        // key:"1"
+      }, 'get').then(res => {
+        this.fullscreenLoading = false
+
+        if (res) {
+          let temp = res.scene ? res.scene : res
+          // console.log(temp)
+
+          // console.log(this.scenes)
+          for (var i = 0; i < temp.length; i++) {
+            // temp[i]['expressNum_input'] = "";
+            let _sceneType = temp[i].sceneType
+            let _sceneTypeName = ''
+            switch (_sceneType) {
+              case 0:
+                _sceneTypeName = '其他'
+                break
+              case 1:
+                _sceneTypeName = '文博'
+                break
+              case 2:
+                _sceneTypeName = '地产'
+                break
+              case 3:
+                _sceneTypeName = '电商'
+                break
+              case 4:
+                _sceneTypeName = '餐饮'
+                break
+              case 5:
+                _sceneTypeName = '家居'
+                break
+              default:
+                _sceneTypeName = ''
+                break
+            }
+            temp[i].sceneType = _sceneTypeName
+            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) => {
+                // console.log(k)
+                if (k && k === 'latitude') {
+                  temp[i].latitude = this.formatDegree(v)
+                } else if (k && k === 'longitude') {
+                  temp[i].longitude = this.formatDegree(v)
+                }
+                // return v;       // 返回修改的值
+              })
+            }
+
+            // console.log(temp[i].latitude, temp[i].longitude)
+
+            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.sub ? res.sub : this.total
+
+          // console.log(temp)
+
+          // console.log(this.scenes)
+          // this.expands.push(this.orders[1].number);
+        }
+      })
+    },
+
+    formatDegree (value) {
+      /// <summary>将度转换成为度分秒</summary>
+
+      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 + '"'
+    },
+    _updateSceneStatus (num, status) {
+      let tempStatus
+      if (status === 1) {
+        tempStatus = -2
+      } else if (status === -2) {
+        tempStatus = 1
+      } else {
+        this.$notify.error({
+          title: '错误',
+          message: '切换失败'
+        })
+        return
+      }
+      let page = this.currentPage
+      this.fullscreenLoading = true
+      request['updateSceneStatus']({
+        num,
+        status: tempStatus
+      }, 'get').then(res => {
+        this._searchOrderByPage(page)
+
+        this.fullscreenLoading = false
+      })
+    },
+
+    _deleScene (num) {
+      let page = this.currentPage
+      // console.log(page)
+      this.$confirm('此操作将删除该场景, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.fullscreenLoading = true
+
+        request['deleteScene']({
+          num
+        }, 'get').then(res => {
+          if (res === 1) {
+            this.$message({
+              type: 'success',
+              message: '删除成功!'
+            })
+            this._getSceneData(page)
+            this.fullscreenLoading = false
+            this.total -= 1
+            // console.log(res)
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        })
+        this.fullscreenLoading = false
+      })
+    },
+
+    _sceneSearch () {
+      this.fullscreenLoading = true
+      this.hasClickSearch = true
+      let status = this.tabIndex === 0 ? null : this.tabIndex
+      let key = this.key_input = this.$refs.searchKey.currentValue || null
+      request['searchManageScene']({
+        key,
+        page: 0,
+        status
+      }, 'get').then(res => {
+        this.fullscreenLoading = false
+
+        if (res) {
+          let temp = res.scene ? res.scene : res
+          // console.log(temp)
+
+          // console.log(this.scenes)
+          for (var i = 0; i < temp.length; i++) {
+            // temp[i]['expressNum_input'] = "";
+            // temp[i]['userName'] = temp[i]['userName'] ? temp[i]['userName']:"未绑定";
+            let _sceneType = temp[i].sceneType
+            let _sceneTypeName = ''
+            switch (_sceneType) {
+              case 0:
+                _sceneTypeName = '其他'
+                break
+              case 1:
+                _sceneTypeName = '文博'
+                break
+              case 2:
+                _sceneTypeName = '地产'
+                break
+              case 3:
+                _sceneTypeName = '电商'
+                break
+              case 4:
+                _sceneTypeName = '餐饮'
+                break
+              case 5:
+                _sceneTypeName = '家居'
+                break
+              default:
+                _sceneTypeName = ''
+                break
+            }
+            temp[i].sceneType = _sceneTypeName
+            temp[i].scenekey = temp[i].scenekey ? '私密' : '公开'
+            temp[i]['userName'] = temp[i]['userName'] ? temp[i]['userName'] : '未绑定'
+
+            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.currentPage = 1
+          this.total = res.sub >= 0 ? res.sub : this.total
+          // console.log(temp)
+          // console.log(this.scenes)
+        } else {
+          // this.total = 0
+        }
+      })
+    },
+    _searchOrderByPage (page) {
+      let status = this.tabIndex === 0 ? null : this.tabIndex
+      let key = this.key_input
+      this.$refs.searchKey.currentValue = this.key_input
+      this.fullscreenLoading = true
+      request['searchManageScene']({
+        key,
+        page: page - 1,
+        status
+      }, 'get').then(res => {
+        this.fullscreenLoading = false
+
+        if (res) {
+          let temp = res.scene ? res.scene : res
+          // console.log(temp)
+
+          // console.log(this.scenes)
+          for (var i = 0; i < temp.length; i++) {
+            // temp[i]['expressNum_input'] = "";
+            let _sceneType = temp[i].sceneType
+            let _sceneTypeName = ''
+            switch (_sceneType) {
+              case 0:
+                _sceneTypeName = '其他'
+                break
+              case 1:
+                _sceneTypeName = '文博'
+                break
+              case 2:
+                _sceneTypeName = '地产'
+                break
+              case 3:
+                _sceneTypeName = '电商'
+                break
+              case 4:
+                _sceneTypeName = '餐饮'
+                break
+              case 5:
+                _sceneTypeName = '家居'
+                break
+              default:
+                _sceneTypeName = ''
+                break
+            }
+            temp[i].sceneType = _sceneTypeName
+            temp[i].scenekey = temp[i].scenekey ? '私密' : '公开'
+            temp[i]['userName'] = temp[i]['userName'] ? temp[i]['userName'] : '未绑定'
+            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
+
+          // console.log(temp)
+
+          // console.log(this.scenes)
+        }
+      })
+    },
+    loadData (row, expandedRows) {
+      // console.log(row, expandedRows)
+      this._getOrderDetail(row)
+    },
+    _getOrderDetail (row) {
+      this.fullscreenLoading = true
+      let { number: orderNum, cameraTypeId, amount, userName, productCount } = row
+
+      request['getOrderDetail']({
+        orderNum,
+        cameraTypeId,
+        amount,
+        userName,
+        productCount
+      }, 'get').then(res => {
+        this.fullscreenLoading = false
+        if (res) {
+          // console.log(row.number)
+          // console.log(res)
+          let tempRes = res
+          let temp = this.orders
+          for (let i = 0; i <= temp.length; i++) {
+            if (row.number === temp[i].number) {
+              temp[i]['product'] = tempRes['product']
+              temp[i]['receive'] = tempRes['receive']
+              // console.log('temp', temp[i].number)
+              // console.log('res', tempRes)
+              this.orders = temp
+            } else {
+              continue
+            }
+          }
+        }
+      })
+    }
+  },
+  created () {
+    this._getSceneData(1)
+  }
+}
+
+</script>
+<style lang="css" scoped>
+.scene-management-body {
+  width: 100%;
+  float: left;
+  /*  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);*/
+  /*border: 1px solid #ebeef5;*/
+}
+
+.order_check_row {
+  display: flex;
+  width: 100%;
+}
+
+.product_info {
+  width: 50%;
+  flex-direction: column;
+  display: flex;
+  padding: 20px;
+  background: #fff;
+}
+
+.order_info {
+  width: 50%;
+  padding: 20px;
+  margin-left: 20px;
+  background: #fff;
+}
+
+.product_info_title {
+  text-align: left;
+  font-weight: 700;
+  margin-bottom: 20px;
+}
+
+.product_info_body {
+  margin-left: 30px;
+  display: flex;
+}
+
+.product_info_body_img {
+  width: 110px;
+  height: 110px;
+  border: 1px solid #ddd;
+}
+
+.product_img {
+  margin: 5px auto;
+  width: 100px;
+  height: 100px;
+}
+
+.product_info_body_info {
+  margin-left: 50px;
+}
+
+.product_info_body_info_item {
+  line-height: 27px;
+  text-align: left;
+}
+
+.product_info_body_info_item_title {
+  width: 100px;
+  display: inline-block;
+  margin-right: 20px;
+  font-weight: 700;
+}
+
+.order_info_title {
+  text-align: left;
+  font-weight: 700;
+  margin-bottom: 20px;
+}
+
+.order_info_body {
+  margin-left: 30px;
+  text-align: left;
+}
+
+.order_info_body_info_item {
+  line-height: 23px;
+  padding: 10px 0;
+  border-bottom: 1px solid #f5f5f5;
+  text-align: left;
+}
+
+.order_info_body_info_item_title {
+  width: 100px;
+  display: inline-block;
+  margin-right: 20px;
+  font-weight: 700;
+}
+
+.order-management-body {
+  width: 100%;
+  margin: 30px 0 20px 0;
+  float: left;
+}
+
+.order-management-inner {
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  /*border: 1px solid #ebeef5;*/
+  padding: 20px;
+  background: #fff;
+  border-radius: 5px;
+}
+
+.base-info {
+  margin: 20px 0;
+}
+
+.scene-management_bottom {
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  /*border: 1px solid #ebeef5;*/
+  margin-top: 30px;
+  background: #fff;
+  border-radius: 5px;
+  padding: 20px 0;
+}
+
+.scene-management_tab {
+  margin: 0 0 20px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.scene-management_tab ul {
+  display: inline-block;
+}
+
+.scene-management_tab li {
+  display: inline-block;
+  cursor: pointer;
+  color: #999;
+  line-height: 1;
+}
+
+.scene-management_tab_li_active {
+  color: #000!important;
+  font-weight: bold;
+}
+
+.order-management-table {
+  margin: 0 20px;
+}
+
+.order-management-pagination {
+  padding: 20px 20px 0;
+  position: relative;
+  text-align: right;
+}
+
+.el-input {
+  width: 220px;
+}
+
+</style>
+<style type="text/css">
+.el-table__expand-icon>i {
+  display: none !important;
+}
+
+.delete_btn span {
+  color: #f56c6c
+}
+
+/*.el-table__expand-icon:after {
+    content: "查看详细"!important;
+    color:#09e1c0;
+    cursor: pointer;
+}*/
+
+</style>

+ 26 - 36
src/page/user/query-detail/query-detail.vue

@@ -10,10 +10,10 @@
     </div>
     <div class="data-show">
       <el-table :data="users" v-if="type === 1" style="width: 100%" show-summary :summary-method="getSummaries" v-loading="loading" class="table info1">
-        <el-table-column label="时间">
+        <el-table-column label="时间2">
           <template slot-scope="scope">
             <span>
-              {{$base.dateFormat('yyyy-MM-dd hh:mm:ss', new Date(scope.row.createTime.time))}}
+              {{new Date(scope.row.tradeTime).format('yyyy-MM-dd hh:mm:ss')}}
             </span>
           </template>
         </el-table-column>
@@ -28,7 +28,7 @@
             </span>
           </template>
         </el-table-column>
-        <el-table-column prop="orderNum" label="订单编号" width="220">
+        <el-table-column prop="orderSn" label="订单编号" width="220">
         </el-table-column>
         <el-table-column width="60">
         </el-table-column>
@@ -37,7 +37,7 @@
         <el-table-column prop="create_time" label="时间">
           <template slot-scope="scope">
             <span>
-              {{$base.dateFormat('yyyy-MM-dd hh:mm:ss', new Date(scope.row.createTime.time))}}
+              {{new Date(scope.row.createTime.tradeTime).format('yyyy-MM-dd hh:mm:ss')}}
             </span>
           </template>
         </el-table-column>
@@ -46,9 +46,6 @@
         <el-table-column prop="orderNum" label="订单编号">
         </el-table-column>
         <el-table-column label=" " width="60">
-          <template slot-scope="scope">
-            <span></span>
-          </template>
         </el-table-column>
       </el-table>
       <!-- @size-change="handleSizeChange"
@@ -61,7 +58,7 @@
   </div>
 </template>
 <script>
-import { request, serverName } from 'api/server'
+// import { request, serverName } from 'api/server'
 
 export default {
   props: ['screen'],
@@ -168,9 +165,19 @@ export default {
       })
     },
     async getData () {
-      let params = Object.assign({ page: this.pag.current - 1, cameraId: this.$route.params.id, type: this.type },
+      let params = Object.assign({ pageNum: this.pag.current - 1, cameraId: this.$route.params.id, type: this.type.toString(), pageSize: 10 },
         this.screen
       )
+
+      let data = (await this.$http.post('/manager/camera/detailLog', params)).data
+      
+      this.pag = {
+        current: params.pageNum + 1,
+        total: data.total
+      }
+      this.users = data.list
+      return;
+
       let result = []
       await request['showCameraDetail'](params, 'post').then(res => {
         if (res === -101) {
@@ -201,14 +208,6 @@ export default {
       this.loading = true
       this.getData()
 
-      // let result = await Promise.all([
-      //   this.$http.post('/showSubForCamera', {
-      //     type: this.type,
-      //     cameraId: this.$route.params.id
-      //   }),
-      //   this.getData()
-      // ])
-      // this.statistics = result[0]
       this.loading = false
     },
     async getStatistics () {
@@ -217,7 +216,7 @@ export default {
       let status = this.type
       date1 = this.screen.date1 || null
       date2 = this.screen.date2 || null
-
+      console.log('-----------')
       await request['showCameraStatistics2']({cameraId, status, date1, date2}, 'post').then(res => {
         // result = res;
         this.statistics = res
@@ -230,25 +229,16 @@ export default {
       while ((tool = this.tools.pop())) {
         this.$emit('rmTool', tool)
       }
+    },
+    async getPoint() {
+      
+      request['showCameraSurplus']({ cameraId: name }, 'post').then(res => {
+        // result = res;
+
+        console.log('result', res)
+        this.$router.push({ name: '用户明细', params: { id: name, points: res.result } })
+      })
     }
-    // async addTool() {
-    //   this.tools.push({
-    //     key: '设备ID',
-    //     value: this.$route.params.id
-    //   })
-    //   let result = await this.$http.post('/showSurplusPoint', { cameraId: this.$route.params.id })
-    //   if (result === -2 || result === -1) {
-    //     return this.$error('当前相机不存在!')
-    //   }
-    //   this.tools.push({
-    //     key: '当前剩余点数',
-    //     value: result,
-    //     class: 'strong'
-    //   })
-    //   for (let i = 0; i < this.tools.length; i++) {
-    //     this.$root.Bus.$emit('addTool', this.tools[i])
-    //   }
-    // }
   },
   watch: {
     screen () {

+ 22 - 18
src/page/user/query-list/index.vue

@@ -3,7 +3,7 @@
     <div class="export_btn">
       <el-button type="primary" @click="_exportExcelForService" color='red'>导出</el-button>
     </div>
-    <el-table :data="users" style="width: 100%" class="creamtable table" show-summary :highlight-current-row="false" :summary-method="getSummaries" v-loading="loading" :header-cell-class-name="tableHeaderClassName">
+    <el-table :data="users" style="width: 100%" class="creamtable table" show-summary :highlight-current-row="false"  :summary-method="getSummaries" v-loading="loading" :header-cell-class-name="tableHeaderClassName">
       <el-table-column label="">
         <el-table-column prop="childName" label="设备ID" class="test">
         </el-table-column>
@@ -31,7 +31,7 @@
       <el-table-column label="">
         <el-table-column label="操作" width="80">
           <template slot-scope="scope">
-            <span @click="goToDetail(scope.row.childName)" class="link">详细</span>
+            <span @click="goToDetail(scope.row.id)" class="link">详细</span>
             <!-- <router-link :to="" class="link">详细</router-link> -->
           </template>
         </el-table-column>
@@ -58,6 +58,10 @@ export default {
       loading: true
     }
   },
+  watch:{
+    statistics(){
+    }
+  },
   methods: {
     tableHeaderClassName ({ columnIndex, row }) {
       if (row.length === 4) {
@@ -136,24 +140,20 @@ export default {
       })
     },
     goToDetail (name) {
-      return
-      request['showCameraSurplus']({ cameraId: name }, 'post').then(res => {
-        // result = res;
-        console.log('result', res)
-        this.$router.push({ name: '用户明细', params: { id: name, points: res.result } })
-      })
-      // console.log('asdw')
+      this.$router.push({ name: 'user-detail', params: {id: name}})
     },
     getSummaries () {
-      return [
+      let {subCharge,subPoint,subSubStract,subSubStractPoint} = this.statistics
+      let tmp = [
         '', '', '', '',
-        this.statistics.subcharge,
-        this.statistics.subpoint,
-        this.statistics.subsubtractpoint,
-        this.statistics.subsubtract,
+        subCharge,
+        subPoint,
+        subSubStract,
+        subSubStractPoint,
         '',
         '总计'
       ]
+      return tmp
     },
     async getData () {
       let params = Object.assign(this.screen || {}, { page: this.pag.current - 1 })
@@ -174,13 +174,17 @@ export default {
       this.pag.total = data.total
     },
     async getStatistics () {
-      return
       let params = Object.assign(
         this.screen, {}
       )
-      await request['showCameraStatistics'](params, 'post').then(res => {
-        // result = res;
-        this.statistics = res
+      let data = (await this.$http.post('/manager/camera/searchStatistics', {
+        startDate: params.date1,
+        endDate: params.date2,
+        childName: params.childName
+      })).data.data
+
+      Object.keys(data).forEach(k => {
+        this.statistics[k] = data[k]
       })
     },
     async refresh () {

+ 19 - 0
src/router/index.js

@@ -49,6 +49,25 @@ export default new Router({
               path: '/',
               name: 'user-list',
               component: require('@/page/user/query-list').default
+            },
+            {
+              path: ':id',
+              name: 'user-detail',
+              meta: { text: '用户明细' },
+              component: require('@/page/user/query-detail').default
+            }
+          ]
+        },
+        {
+          path: '/',
+          name: 'Temp-scene',
+          component: require('@/page/layout/temp').default,
+          meta: { text: '更多设置' },
+          children: [
+            {
+              path: 'scene',
+              name: 'scene',
+              component: require('@/page/scene').default
             }
           ]
         }