jtoms před 3 roky
rodič
revize
2ff02ac1a4

+ 34 - 0
src/api/bz.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request'
+
+export function findMediaPage(data) {
+  return request({
+    url: '/bz/findMediaPage',
+    method: 'post',
+    data
+  })
+}
+
+export function saveMedia(data) {
+  return request({
+    url: '/bz/saveMedia',
+    method: 'post',
+    data
+  })
+}
+
+export function updateMediaId(id, data) {
+  return request({
+    url: '/bz/updateMediaId',
+    method: 'post',
+    params: { id },
+    data
+  })
+}
+
+export function deleteMediaByIds(ids) {
+  return request({
+    url: '/bz/deleteMediaByIds',
+    method: 'post',
+    data: ids
+  })
+}

+ 6 - 6
src/router/index.js

@@ -152,38 +152,38 @@ export const asyncRoutes = [
     path: '/bz',
     component: Layout,
     name: 'Bz',
-    meta: { title: '业务数据展示系统', icon: 'el-icon-help', authorities: ['app.key.find', 'app.key.request.logs'] },
+    meta: { title: '业务数据展示系统', icon: 'el-icon-help', authorities: ['bz.media', 'bz.monitor', 'bz.consume', 'bz.resourceAnalysis', 'bz.touristAnalysis'] },
     redirect: '/bz/media',
     children: [
       {
         path: 'media',
         name: 'BzMedia',
         component: () => import('@/views/bz/media'),
-        meta: { title: '多媒体资源管理', authorities: ['app.key.find'] }
+        meta: { title: '多媒体资源管理', authorities: ['bz.media'] }
       },
       {
         path: 'monitor',
         name: 'BzMonitor',
         component: () => import('@/views/bz/monitor'),
-        meta: { title: '实时监测', authorities: ['app.key.request.logs'] }
+        meta: { title: '实时监测', authorities: ['bz.monitor'] }
       },
       {
         path: 'consume',
         name: 'BzConsume',
         component: () => import('@/views/bz/consume'),
-        meta: { title: '文旅消费', authorities: ['app.key.request.logs'] }
+        meta: { title: '文旅消费', authorities: ['bz.consume'] }
       },
       {
         path: 'resourceAnalysis',
         name: 'BzResourceAnalysis',
         component: () => import('@/views/bz/resourceAnalysis'),
-        meta: { title: '文旅资源分析', authorities: ['app.key.request.logs'] }
+        meta: { title: '文旅资源分析', authorities: ['bz.resourceAnalysis'] }
       },
       {
         path: 'touristAnalysis',
         name: 'BzTouristAnalysis',
         component: () => import('@/views/bz/touristAnalysis'),
-        meta: { title: '游客分析', authorities: ['app.key.request.logs'] }
+        meta: { title: '游客分析', authorities: ['bz.touristAnalysis'] }
       }
     ]
   },

+ 1 - 0
src/styles/index.scss

@@ -207,6 +207,7 @@ div:focus {
 
   .image {
     height: 40px;
+    width: 40px;
     margin-top: 20px;
     margin-left: 10px;
   }

+ 82 - 0
src/views/bz/media/DialogForm.vue

@@ -0,0 +1,82 @@
+<template>
+  <el-dialog
+    v-if="visible"
+    :title="form.id?'编辑多媒体资源':'新建多媒体资源'"
+    :visible.sync="visible"
+  >
+    <el-form v-loading="isLoading" :model="form" label-width="100px" label-position="top">
+
+      <el-form-item label="场所类型">
+        <el-select v-model="form.categoryId" placeholder="请选择场所类型" clearable>
+          <el-option v-for="item in listDataType" :key="item.id" :label="item.name" :value="item.id" />
+        </el-select>
+      </el-form-item>
+
+      <el-row :gutter="24">
+        <el-col :span="12">
+          <el-form-item label="场所名称">
+            <el-input v-model="form.name" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+
+      <el-form-item label="地址">
+        <el-input v-model="form.address" />
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="visible = false">取 消</el-button>
+      <el-button type="primary" @click="handleSubmit">确 定</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+
+import { findAllDataType } from '@/api/place/base_info'
+import { saveMedia, updateMediaId } from '@/api/bz'
+
+export default {
+  data() {
+    return {
+      visible: false,
+      isLoading: false,
+      listDataType: [],
+      form: {}
+    }
+  },
+  mounted() {
+  },
+  methods: {
+    open(data) {
+      this.visible = true
+      this.isLoading = false
+      this.listDataType = []
+      this.form = Object.assign({}, data)
+
+      findAllDataType().then(listDataType => {
+        this.listDataType = listDataType
+      })
+    },
+    handleSubmit() {
+      console.log(this.form)
+      this.isLoading = true
+      if (this.form.id) {
+        updateMediaId(this.form.id, this.form).then(() => {
+          this.visible = false
+          this.$emit('ok')
+        }).finally(() => {
+          this.isLoading = false
+        })
+      } else {
+        saveMedia(this.form).then(res => {
+          this.visible = false
+          this.$emit('ok')
+        }).finally(() => {
+          this.isLoading = false
+        })
+      }
+    }
+  }
+}
+</script>

+ 67 - 8
src/views/bz/media/index.vue

@@ -5,12 +5,23 @@
         <el-input v-model="queryForm.name" placeholder="名称"/>
       </el-form-item>
       <el-form-item label="类型">
-        <el-select v-model="queryForm.isEnable" clearable placeholder="用户状态">
-          <el-option label="是" value="Y"/>
-          <el-option label="否" value="N"/>
+        <el-select v-model="queryForm.categoryId" placeholder="请选择场所类型" clearable>
+          <el-option v-for="item in listDataType" :key="item.id" :label="item.name" :value="item.id"/>
         </el-select>
       </el-form-item>
     </el-form>
+
+    <el-row class="action-bar-container" type="flex" justify="end">
+      <el-button type="primary" size="small" @click.native="fetchData">查询</el-button>
+      <el-button-group>
+        <el-button size="small" @click.native="$refs.dialogForm.open({})">
+          新建
+        </el-button>
+        <el-button size="small" @click.native="deleteByIds(multipleSelection)">
+          删除
+        </el-button>
+      </el-button-group>
+    </el-row>
     <el-table
       v-loading="isLoading"
       :data="pageData.records"
@@ -20,9 +31,15 @@
       @selection-change="selectionChange"
     >
       <el-table-column type="selection" width="55"/>
-      <el-table-column label="名称" prop="id" width="150"/>
-      <el-table-column label="地址" prop="name"/>
-      <el-table-column label="类型" prop="publicKey" width="150"/>
+      <el-table-column label="#" prop="id" width="150"/>
+      <el-table-column label="名称" prop="name"/>
+      <el-table-column label="地址" prop="address"/>
+      <el-table-column label="类型" prop="category.name" width="150"/>
+      <el-table-column label="操作" width="70" fixed="right">
+        <template slot-scope="scope">
+          <el-button type="text" @click.native="$refs.dialogForm.open(scope.row)">编辑</el-button>
+        </template>
+      </el-table-column>
     </el-table>
 
     <el-pagination
@@ -33,28 +50,70 @@
       :page-size="pageData.pageSize"
       @current-change="paginationChange"
     />
+    <dialog-form ref="dialogForm" @ok="fetchData"/>
   </div>
+
 </template>
 
 <script>
 
+import { findAllDataType } from '@/api/place/base_info'
+import { deleteMediaByIds, findMediaPage } from '@/api/bz'
+import DialogForm from './DialogForm'
+
 export default {
-  components: {},
+  components: {
+    DialogForm
+  },
   data() {
     return {
+      isLoading: true,
       queryForm: {},
-      pageData: {}
+      pageData: {},
+      listDataType: [],
+      multipleSelection: []
     }
   },
   computed: {},
   created() {
   },
   mounted() {
+    this.fetchData()
+    findAllDataType().then(listDataType => {
+      this.listDataType = listDataType
+    })
   },
   methods: {
+
+    deleteByIds(ids) {
+      this.$confirm('确认要删除吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        deleteMediaByIds(ids).then(() => {
+          this.fetchData()
+        })
+      })
+    },
+    fetchData() {
+      this.isLoading = true
+      findMediaPage({ ...this.queryForm, current: this.currentPage })
+        .then((response) => {
+          this.pageData = response
+        })
+        .finally(() => (this.isLoading = false))
+    },
     paginationChange(val) {
       this.currentPage = val
       this.fetchData()
+    },
+    selectionChange(val) {
+      const temp = []
+      val.forEach(o => {
+        temp.push(o.id)
+      })
+      this.multipleSelection = temp
     }
   }
 }