浏览代码

自动生成业务代码

wukai 2 年之前
父节点
当前提交
4a79ef84e8

+ 44 - 0
src/api/biz/bluetoothINfo.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询蓝牙信息列表
+export function listBluetoothINfo(query) {
+  return request({
+    url: '/biz/bluetoothINfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询蓝牙信息详细
+export function getBluetoothINfo(bInfoId) {
+  return request({
+    url: '/biz/bluetoothINfo/' + bInfoId,
+    method: 'get'
+  })
+}
+
+// 新增蓝牙信息
+export function addBluetoothINfo(data) {
+  return request({
+    url: '/biz/bluetoothINfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改蓝牙信息
+export function updateBluetoothINfo(data) {
+  return request({
+    url: '/biz/bluetoothINfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除蓝牙信息
+export function delBluetoothINfo(bInfoId) {
+  return request({
+    url: '/biz/bluetoothINfo/' + bInfoId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/biz/deviceInfo.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询设备信息列表
+export function listDeviceInfo(query) {
+  return request({
+    url: '/biz/deviceInfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询设备信息详细
+export function getDeviceInfo(autoId) {
+  return request({
+    url: '/biz/deviceInfo/' + autoId,
+    method: 'get'
+  })
+}
+
+// 新增设备信息
+export function addDeviceInfo(data) {
+  return request({
+    url: '/biz/deviceInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改设备信息
+export function updateDeviceInfo(data) {
+  return request({
+    url: '/biz/deviceInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除设备信息
+export function delDeviceInfo(autoId) {
+  return request({
+    url: '/biz/deviceInfo/' + autoId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/biz/keyInfo.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询关键字列表
+export function listKeyInfo(query) {
+  return request({
+    url: '/biz/keyInfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询关键字详细
+export function getKeyInfo(keyId) {
+  return request({
+    url: '/biz/keyInfo/' + keyId,
+    method: 'get'
+  })
+}
+
+// 新增关键字
+export function addKeyInfo(data) {
+  return request({
+    url: '/biz/keyInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改关键字
+export function updateKeyInfo(data) {
+  return request({
+    url: '/biz/keyInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除关键字
+export function delKeyInfo(keyId) {
+  return request({
+    url: '/biz/keyInfo/' + keyId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/biz/venueArea.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询场馆区域列表
+export function listVenueArea(query) {
+  return request({
+    url: '/biz/venueArea/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询场馆区域详细
+export function getVenueArea(areaId) {
+  return request({
+    url: '/biz/venueArea/' + areaId,
+    method: 'get'
+  })
+}
+
+// 新增场馆区域
+export function addVenueArea(data) {
+  return request({
+    url: '/biz/venueArea',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改场馆区域
+export function updateVenueArea(data) {
+  return request({
+    url: '/biz/venueArea',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除场馆区域
+export function delVenueArea(areaId) {
+  return request({
+    url: '/biz/venueArea/' + areaId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/biz/venueInfo.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询场馆基本信息列表
+export function listVenueInfo(query) {
+  return request({
+    url: '/biz/venueInfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询场馆基本信息详细
+export function getVenueInfo(venueId) {
+  return request({
+    url: '/biz/venueInfo/' + venueId,
+    method: 'get'
+  })
+}
+
+// 新增场馆基本信息
+export function addVenueInfo(data) {
+  return request({
+    url: '/biz/venueInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改场馆基本信息
+export function updateVenueInfo(data) {
+  return request({
+    url: '/biz/venueInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除场馆基本信息
+export function delVenueInfo(venueId) {
+  return request({
+    url: '/biz/venueInfo/' + venueId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/biz/wifiInfo.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询WIFI信息列表
+export function listWifiInfo(query) {
+  return request({
+    url: '/biz/wifiInfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询WIFI信息详细
+export function getWifiInfo(wifiInfoId) {
+  return request({
+    url: '/biz/wifiInfo/' + wifiInfoId,
+    method: 'get'
+  })
+}
+
+// 新增WIFI信息
+export function addWifiInfo(data) {
+  return request({
+    url: '/biz/wifiInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改WIFI信息
+export function updateWifiInfo(data) {
+  return request({
+    url: '/biz/wifiInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除WIFI信息
+export function delWifiInfo(wifiInfoId) {
+  return request({
+    url: '/biz/wifiInfo/' + wifiInfoId,
+    method: 'delete'
+  })
+}

+ 386 - 0
src/views/biz/bluetoothINfo/index.vue

@@ -0,0 +1,386 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="设备ID" prop="deviceId">
+        <el-input
+          v-model="queryParams.deviceId"
+          placeholder="请输入设备ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="场馆ID" prop="venueId">
+        <el-input
+          v-model="queryParams.venueId"
+          placeholder="请输入场馆ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="区域ID" prop="areaId">
+        <el-input
+          v-model="queryParams.areaId"
+          placeholder="请输入区域ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="MAC地址" prop="mac">
+        <el-input
+          v-model="queryParams.mac"
+          placeholder="请输入MAC地址"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="蓝牙名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入蓝牙名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="文件名" prop="fileName">
+        <el-input
+          v-model="queryParams.fileName"
+          placeholder="请输入文件名"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="文件地址" prop="filePath">
+        <el-input
+          v-model="queryParams.filePath"
+          placeholder="请输入文件地址"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否非法" prop="isIllegal">
+        <el-select v-model="queryParams.isIllegal" placeholder="请选择是否非法" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="数据采集时间" prop="time">
+        <el-date-picker clearable
+          v-model="queryParams.time"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择数据采集时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['biz:bluetoothINfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['biz:bluetoothINfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['biz:bluetoothINfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['biz:bluetoothINfo:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="bluetoothINfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="信息ID" align="center" prop="bInfoId" />
+      <el-table-column label="设备ID" align="center" prop="deviceId" />
+      <el-table-column label="场馆ID" align="center" prop="venueId" />
+      <el-table-column label="区域ID" align="center" prop="areaId" />
+      <el-table-column label="MAC地址" align="center" prop="mac" />
+      <el-table-column label="蓝牙名称" align="center" prop="name" />
+      <el-table-column label="文件名" align="center" prop="fileName" />
+      <el-table-column label="文件地址" align="center" prop="filePath" />
+      <el-table-column label="是否非法" align="center" prop="isIllegal">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isIllegal"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="关键字类型" align="center" prop="keyType" />
+      <el-table-column label="数据采集时间" align="center" prop="time" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.time, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['biz:bluetoothINfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['biz:bluetoothINfo:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改蓝牙信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="设备ID" prop="deviceId">
+          <el-input v-model="form.deviceId" placeholder="请输入设备ID" />
+        </el-form-item>
+        <el-form-item label="场馆ID" prop="venueId">
+          <el-input v-model="form.venueId" placeholder="请输入场馆ID" />
+        </el-form-item>
+        <el-form-item label="区域ID" prop="areaId">
+          <el-input v-model="form.areaId" placeholder="请输入区域ID" />
+        </el-form-item>
+        <el-form-item label="MAC地址" prop="mac">
+          <el-input v-model="form.mac" placeholder="请输入MAC地址" />
+        </el-form-item>
+        <el-form-item label="蓝牙名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入蓝牙名称" />
+        </el-form-item>
+        <el-form-item label="文件名" prop="fileName">
+          <el-input v-model="form.fileName" placeholder="请输入文件名" />
+        </el-form-item>
+        <el-form-item label="文件地址" prop="filePath">
+          <el-input v-model="form.filePath" placeholder="请输入文件地址" />
+        </el-form-item>
+        <el-form-item label="是否非法" prop="isIllegal">
+          <el-select v-model="form.isIllegal" placeholder="请选择是否非法">
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="数据采集时间" prop="time">
+          <el-date-picker clearable
+            v-model="form.time"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择数据采集时间">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listBluetoothINfo, getBluetoothINfo, delBluetoothINfo, addBluetoothINfo, updateBluetoothINfo } from "@/api/biz/bluetoothINfo";
+
+export default {
+  name: "BluetoothINfo",
+  dicts: ['sys_yes_no'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 蓝牙信息表格数据
+      bluetoothINfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        deviceId: null,
+        venueId: null,
+        areaId: null,
+        mac: null,
+        name: null,
+        fileName: null,
+        filePath: null,
+        isIllegal: null,
+        keyType: null,
+        time: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        mac: [
+          { required: true, message: "MAC地址不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询蓝牙信息列表 */
+    getList() {
+      this.loading = true;
+      listBluetoothINfo(this.queryParams).then(response => {
+        this.bluetoothINfoList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        bInfoId: null,
+        deviceId: null,
+        venueId: null,
+        areaId: null,
+        mac: null,
+        name: null,
+        fileName: null,
+        filePath: null,
+        isIllegal: null,
+        keyType: null,
+        time: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.bInfoId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加蓝牙信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const bInfoId = row.bInfoId || this.ids
+      getBluetoothINfo(bInfoId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改蓝牙信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.bInfoId != null) {
+            updateBluetoothINfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addBluetoothINfo(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const bInfoIds = row.bInfoId || this.ids;
+      this.$modal.confirm('是否确认删除蓝牙信息编号为"' + bInfoIds + '"的数据项?').then(function() {
+        return delBluetoothINfo(bInfoIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('biz/bluetoothINfo/export', {
+        ...this.queryParams
+      }, `bluetoothINfo_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 321 - 0
src/views/biz/deviceInfo/index.vue

@@ -0,0 +1,321 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="设备ID" prop="deviceId">
+        <el-input
+          v-model="queryParams.deviceId"
+          placeholder="请输入设备ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="设备品牌" prop="deviceBrand">
+        <el-input
+          v-model="queryParams.deviceBrand"
+          placeholder="请输入设备品牌"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="设备型号" prop="deviceModel">
+        <el-input
+          v-model="queryParams.deviceModel"
+          placeholder="请输入设备型号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="备注" prop="deviceDesc">
+        <el-input
+          v-model="queryParams.deviceDesc"
+          placeholder="请输入备注"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="注册时间">
+        <el-date-picker
+          v-model="daterangeRegisterTime"
+          style="width: 240px"
+          value-format="yyyy-MM-dd"
+          type="daterange"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['biz:deviceInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['biz:deviceInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['biz:deviceInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['biz:deviceInfo:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="deviceInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="租户号" align="center" prop="autoId" />
+      <el-table-column label="设备ID" align="center" prop="deviceId" />
+      <el-table-column label="设备品牌" align="center" prop="deviceBrand" />
+      <el-table-column label="设备型号" align="center" prop="deviceModel" />
+      <el-table-column label="备注" align="center" prop="deviceDesc" />
+      <el-table-column label="注册时间" align="center" prop="registerTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.registerTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['biz:deviceInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['biz:deviceInfo:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改设备信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="设备ID" prop="deviceId">
+          <el-input v-model="form.deviceId" placeholder="请输入设备ID" />
+        </el-form-item>
+        <el-form-item label="设备品牌" prop="deviceBrand">
+          <el-input v-model="form.deviceBrand" placeholder="请输入设备品牌" />
+        </el-form-item>
+        <el-form-item label="设备型号" prop="deviceModel">
+          <el-input v-model="form.deviceModel" placeholder="请输入设备型号" />
+        </el-form-item>
+        <el-form-item label="备注" prop="deviceDesc">
+          <el-input v-model="form.deviceDesc" placeholder="请输入备注" />
+        </el-form-item>
+        <el-form-item label="注册时间" prop="registerTime">
+          <el-date-picker clearable
+            v-model="form.registerTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择注册时间">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listDeviceInfo, getDeviceInfo, delDeviceInfo, addDeviceInfo, updateDeviceInfo } from "@/api/biz/deviceInfo";
+
+export default {
+  name: "DeviceInfo",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 设备信息表格数据
+      deviceInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 注册时间时间范围
+      daterangeRegisterTime: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        deviceId: null,
+        deviceBrand: null,
+        deviceModel: null,
+        deviceDesc: null,
+        registerTime: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询设备信息列表 */
+    getList() {
+      this.loading = true;
+      this.queryParams.params = {};
+      if (null != this.daterangeRegisterTime && '' != this.daterangeRegisterTime) {
+        this.queryParams.params["beginRegisterTime"] = this.daterangeRegisterTime[0];
+        this.queryParams.params["endRegisterTime"] = this.daterangeRegisterTime[1];
+      }
+      listDeviceInfo(this.queryParams).then(response => {
+        this.deviceInfoList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        autoId: null,
+        deviceId: null,
+        deviceBrand: null,
+        deviceModel: null,
+        deviceDesc: null,
+        registerTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.daterangeRegisterTime = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.autoId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加设备信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const autoId = row.autoId || this.ids
+      getDeviceInfo(autoId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改设备信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.autoId != null) {
+            updateDeviceInfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addDeviceInfo(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const autoIds = row.autoId || this.ids;
+      this.$modal.confirm('是否确认删除设备信息编号为"' + autoIds + '"的数据项?').then(function() {
+        return delDeviceInfo(autoIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('biz/deviceInfo/export', {
+        ...this.queryParams
+      }, `deviceInfo_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 257 - 0
src/views/biz/keyInfo/index.vue

@@ -0,0 +1,257 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="关键字类型" prop="keyType">
+        <el-input
+          v-model="queryParams.keyType"
+          placeholder="请输入关键字类型"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['biz:keyInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['biz:keyInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['biz:keyInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['biz:keyInfo:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="keyInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="关键字ID" align="center" prop="keyId" />
+      <el-table-column label="关键字" align="center" prop="keyWords" />
+      <el-table-column label="关键字类型" align="center" prop="keyType" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['biz:keyInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['biz:keyInfo:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改关键字对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="关键字" prop="keyWords">
+          <el-input v-model="form.keyWords" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="关键字类型" prop="keyType">
+          <el-input v-model="form.keyType" placeholder="请输入关键字类型" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listKeyInfo, getKeyInfo, delKeyInfo, addKeyInfo, updateKeyInfo } from "@/api/biz/keyInfo";
+
+export default {
+  name: "KeyInfo",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 关键字表格数据
+      keyInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        keyWords: null,
+        keyType: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        keyWords: [
+          { required: true, message: "关键字不能为空", trigger: "blur" }
+        ],
+        keyType: [
+          { required: true, message: "关键字类型不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询关键字列表 */
+    getList() {
+      this.loading = true;
+      listKeyInfo(this.queryParams).then(response => {
+        this.keyInfoList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        keyId: null,
+        keyWords: null,
+        keyType: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.keyId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加关键字";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const keyId = row.keyId || this.ids
+      getKeyInfo(keyId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改关键字";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.keyId != null) {
+            updateKeyInfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addKeyInfo(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const keyIds = row.keyId || this.ids;
+      this.$modal.confirm('是否确认删除关键字编号为"' + keyIds + '"的数据项?').then(function() {
+        return delKeyInfo(keyIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('biz/keyInfo/export', {
+        ...this.queryParams
+      }, `keyInfo_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 262 - 0
src/views/biz/venueArea/index.vue

@@ -0,0 +1,262 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="场馆ID" prop="venueId">
+        <el-input
+          v-model="queryParams.venueId"
+          placeholder="请输入场馆ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="区域名称" prop="areaName">
+        <el-input
+          v-model="queryParams.areaName"
+          placeholder="请输入区域名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['biz:venueArea:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['biz:venueArea:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['biz:venueArea:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['biz:venueArea:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="venueAreaList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="区域ID" align="center" prop="areaId" />
+      <el-table-column label="场馆ID" align="center" prop="venueId" />
+      <el-table-column label="区域名称" align="center" prop="areaName" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['biz:venueArea:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['biz:venueArea:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改场馆区域对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="场馆ID" prop="venueId">
+          <el-input v-model="form.venueId" placeholder="请输入场馆ID" />
+        </el-form-item>
+        <el-form-item label="区域名称" prop="areaName">
+          <el-input v-model="form.areaName" placeholder="请输入区域名称" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listVenueArea, getVenueArea, delVenueArea, addVenueArea, updateVenueArea } from "@/api/biz/venueArea";
+
+export default {
+  name: "VenueArea",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 场馆区域表格数据
+      venueAreaList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        venueId: null,
+        areaName: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        areaName: [
+          { required: true, message: "区域名称不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询场馆区域列表 */
+    getList() {
+      this.loading = true;
+      listVenueArea(this.queryParams).then(response => {
+        this.venueAreaList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        areaId: null,
+        venueId: null,
+        areaName: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.areaId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加场馆区域";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const areaId = row.areaId || this.ids
+      getVenueArea(areaId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改场馆区域";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.areaId != null) {
+            updateVenueArea(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addVenueArea(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const areaIds = row.areaId || this.ids;
+      this.$modal.confirm('是否确认删除场馆区域编号为"' + areaIds + '"的数据项?').then(function() {
+        return delVenueArea(areaIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('biz/venueArea/export', {
+        ...this.queryParams
+      }, `venueArea_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 319 - 0
src/views/biz/venueInfo/index.vue

@@ -0,0 +1,319 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="场馆名称" prop="venueName">
+        <el-input
+          v-model="queryParams.venueName"
+          placeholder="请输入场馆名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="场馆地址" prop="venueAddr">
+        <el-input
+          v-model="queryParams.venueAddr"
+          placeholder="请输入场馆地址"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['biz:venueInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['biz:venueInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['biz:venueInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['biz:venueInfo:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="venueInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="场馆ID" align="center" prop="venueId" />
+      <el-table-column label="场馆名称" align="center" prop="venueName" />
+      <el-table-column label="场馆地址" align="center" prop="venueAddr" />
+      <el-table-column label="场馆用途" align="center" prop="venueDesc" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['biz:venueInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['biz:venueInfo:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改场馆基本信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="场馆名称" prop="venueName">
+          <el-input v-model="form.venueName" placeholder="请输入场馆名称" />
+        </el-form-item>
+        <el-form-item label="场馆地址" prop="venueAddr">
+          <el-input v-model="form.venueAddr" placeholder="请输入场馆地址" />
+        </el-form-item>
+        <el-form-item label="场馆用途" prop="venueDesc">
+          <el-input v-model="form.venueDesc" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-divider content-position="center">场馆区域信息</el-divider>
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddVenueArea">添加</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteVenueArea">删除</el-button>
+          </el-col>
+        </el-row>
+        <el-table :data="venueAreaList" :row-class-name="rowVenueAreaIndex" @selection-change="handleVenueAreaSelectionChange" ref="venueArea">
+          <el-table-column type="selection" width="50" align="center" />
+          <el-table-column label="序号" align="center" prop="index" width="50"/>
+          <el-table-column label="区域名称" prop="areaName" width="150">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.areaName" placeholder="请输入区域名称" />
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listVenueInfo, getVenueInfo, delVenueInfo, addVenueInfo, updateVenueInfo } from "@/api/biz/venueInfo";
+
+export default {
+  name: "VenueInfo",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 子表选中数据
+      checkedVenueArea: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 场馆基本信息表格数据
+      venueInfoList: [],
+      // 场馆区域表格数据
+      venueAreaList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        venueName: null,
+        venueAddr: null,
+        venueDesc: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        venueName: [
+          { required: true, message: "场馆名称不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询场馆基本信息列表 */
+    getList() {
+      this.loading = true;
+      listVenueInfo(this.queryParams).then(response => {
+        this.venueInfoList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        venueId: null,
+        venueName: null,
+        venueAddr: null,
+        venueDesc: null
+      };
+      this.venueAreaList = [];
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.venueId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加场馆基本信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const venueId = row.venueId || this.ids
+      getVenueInfo(venueId).then(response => {
+        this.form = response.data;
+        this.venueAreaList = response.data.venueAreaList;
+        this.open = true;
+        this.title = "修改场馆基本信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.venueAreaList = this.venueAreaList;
+          if (this.form.venueId != null) {
+            updateVenueInfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addVenueInfo(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const venueIds = row.venueId || this.ids;
+      this.$modal.confirm('是否确认删除场馆基本信息编号为"' + venueIds + '"的数据项?').then(function() {
+        return delVenueInfo(venueIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+	/** 场馆区域序号 */
+    rowVenueAreaIndex({ row, rowIndex }) {
+      row.index = rowIndex + 1;
+    },
+    /** 场馆区域添加按钮操作 */
+    handleAddVenueArea() {
+      let obj = {};
+      obj.areaName = "";
+      this.venueAreaList.push(obj);
+    },
+    /** 场馆区域删除按钮操作 */
+    handleDeleteVenueArea() {
+      if (this.checkedVenueArea.length == 0) {
+        this.$modal.msgError("请先选择要删除的场馆区域数据");
+      } else {
+        const venueAreaList = this.venueAreaList;
+        const checkedVenueArea = this.checkedVenueArea;
+        this.venueAreaList = venueAreaList.filter(function(item) {
+          return checkedVenueArea.indexOf(item.index) == -1
+        });
+      }
+    },
+    /** 复选框选中数据 */
+    handleVenueAreaSelectionChange(selection) {
+      this.checkedVenueArea = selection.map(item => item.index)
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('biz/venueInfo/export', {
+        ...this.queryParams
+      }, `venueInfo_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 361 - 0
src/views/biz/wifiInfo/index.vue

@@ -0,0 +1,361 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="设备ID" prop="deviceId">
+        <el-input
+          v-model="queryParams.deviceId"
+          placeholder="请输入设备ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="场馆ID" prop="venueId">
+        <el-input
+          v-model="queryParams.venueId"
+          placeholder="请输入场馆ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="区域ID" prop="areaId">
+        <el-input
+          v-model="queryParams.areaId"
+          placeholder="请输入区域ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="MAC地址" prop="bssid">
+        <el-input
+          v-model="queryParams.bssid"
+          placeholder="请输入MAC地址"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="WIFI名称" prop="ssid">
+        <el-input
+          v-model="queryParams.ssid"
+          placeholder="请输入WIFI名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否非法" prop="isIllegal">
+        <el-select v-model="queryParams.isIllegal" placeholder="请选择是否非法" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="数据采集时间" prop="time">
+        <el-date-picker clearable
+          v-model="queryParams.time"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择数据采集时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['biz:wifiInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['biz:wifiInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['biz:wifiInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['biz:wifiInfo:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="wifiInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="信息ID" align="center" prop="wifiInfoId" />
+      <el-table-column label="设备ID" align="center" prop="deviceId" />
+      <el-table-column label="场馆ID" align="center" prop="venueId" />
+      <el-table-column label="区域ID" align="center" prop="areaId" />
+      <el-table-column label="MAC地址" align="center" prop="bssid" />
+      <el-table-column label="WIFI名称" align="center" prop="ssid" />
+      <el-table-column label="认证页面" align="center" prop="authPage" />
+      <el-table-column label="是否非法" align="center" prop="isIllegal">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isIllegal"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="关键字类型" align="center" prop="keyType" />
+      <el-table-column label="数据采集时间" align="center" prop="time" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.time, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['biz:wifiInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['biz:wifiInfo:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改WIFI信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="设备ID" prop="deviceId">
+          <el-input v-model="form.deviceId" placeholder="请输入设备ID" />
+        </el-form-item>
+        <el-form-item label="场馆ID" prop="venueId">
+          <el-input v-model="form.venueId" placeholder="请输入场馆ID" />
+        </el-form-item>
+        <el-form-item label="区域ID" prop="areaId">
+          <el-input v-model="form.areaId" placeholder="请输入区域ID" />
+        </el-form-item>
+        <el-form-item label="MAC地址" prop="bssid">
+          <el-input v-model="form.bssid" placeholder="请输入MAC地址" />
+        </el-form-item>
+        <el-form-item label="WIFI名称" prop="ssid">
+          <el-input v-model="form.ssid" placeholder="请输入WIFI名称" />
+        </el-form-item>
+        <el-form-item label="认证页面" prop="authPage">
+          <el-input v-model="form.authPage" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="是否非法" prop="isIllegal">
+          <el-select v-model="form.isIllegal" placeholder="请选择是否非法">
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="数据采集时间" prop="time">
+          <el-date-picker clearable
+            v-model="form.time"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择数据采集时间">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listWifiInfo, getWifiInfo, delWifiInfo, addWifiInfo, updateWifiInfo } from "@/api/biz/wifiInfo";
+
+export default {
+  name: "WifiInfo",
+  dicts: ['sys_yes_no'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // WIFI信息表格数据
+      wifiInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        deviceId: null,
+        venueId: null,
+        areaId: null,
+        bssid: null,
+        ssid: null,
+        authPage: null,
+        isIllegal: null,
+        keyType: null,
+        time: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询WIFI信息列表 */
+    getList() {
+      this.loading = true;
+      listWifiInfo(this.queryParams).then(response => {
+        this.wifiInfoList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        wifiInfoId: null,
+        deviceId: null,
+        venueId: null,
+        areaId: null,
+        bssid: null,
+        ssid: null,
+        authPage: null,
+        isIllegal: null,
+        keyType: null,
+        time: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.wifiInfoId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加WIFI信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const wifiInfoId = row.wifiInfoId || this.ids
+      getWifiInfo(wifiInfoId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改WIFI信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.wifiInfoId != null) {
+            updateWifiInfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addWifiInfo(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const wifiInfoIds = row.wifiInfoId || this.ids;
+      this.$modal.confirm('是否确认删除WIFI信息编号为"' + wifiInfoIds + '"的数据项?').then(function() {
+        return delWifiInfo(wifiInfoIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('biz/wifiInfo/export', {
+        ...this.queryParams
+      }, `wifiInfo_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>