ソースを参照

Merge branch 'master' of http://git.zthymaoyi.com/zyw/tourism

achao 2 年 前
コミット
4286f433e9

+ 1 - 1
unimall-admin/config/index.js

@@ -15,7 +15,7 @@ module.exports = {
 
         // can be overwritten by process.env.HOST
         // if you want dev by ip, please set host: '0.0.0.0'
-        host: '192.168.110.82',
+        host: '192.168.110.138',
         port: 9527, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
         autoOpenBrowser: true,
         errorOverlay: true,

+ 73 - 0
unimall-admin/src/api/tourism/dishClassifyInfo.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询菜品分类列表
+export function listDishClassifyInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.dishClassifyInfo',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询菜品分类详细
+export function getDishClassifyInfo(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.dishClassifyInfo',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增菜品分类
+export function addDishClassifyInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.dishClassifyInfo',
+      _mt: 'add',
+      dishClassifyInfo: data
+    }
+  })
+}
+
+// 修改菜品分类
+export function updateDishClassifyInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.dishClassifyInfo',
+      _mt: 'update',
+      dishClassifyInfo: data
+    }
+  })
+}
+
+// 删除菜品分类
+export function delDishClassifyInfo(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.dishClassifyInfo',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出菜品分类
+export function exportDishClassifyInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.dishClassifyInfo',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/tourism/foodDishesInfo.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询餐饮菜品信息列表
+export function listFoodDishesInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodDishesInfo',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询餐饮菜品信息详细
+export function getFoodDishesInfo(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodDishesInfo',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增餐饮菜品信息
+export function addFoodDishesInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodDishesInfo',
+      _mt: 'add',
+      foodDishesInfo: data
+    }
+  })
+}
+
+// 修改餐饮菜品信息
+export function updateFoodDishesInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodDishesInfo',
+      _mt: 'update',
+      foodDishesInfo: data
+    }
+  })
+}
+
+// 删除餐饮菜品信息
+export function delFoodDishesInfo(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodDishesInfo',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出餐饮菜品信息
+export function exportFoodDishesInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodDishesInfo',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/tourism/foodGroupDetailInfo.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询餐饮团购详细信息列表
+export function listFoodGroupDetailInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupDetailInfo',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询餐饮团购详细信息详细
+export function getFoodGroupDetailInfo(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupDetailInfo',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增餐饮团购详细信息
+export function addFoodGroupDetailInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupDetailInfo',
+      _mt: 'add',
+      foodGroupDetailInfo: data
+    }
+  })
+}
+
+// 修改餐饮团购详细信息
+export function updateFoodGroupDetailInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupDetailInfo',
+      _mt: 'update',
+      foodGroupDetailInfo: data
+    }
+  })
+}
+
+// 删除餐饮团购详细信息
+export function delFoodGroupDetailInfo(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupDetailInfo',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出餐饮团购详细信息
+export function exportFoodGroupDetailInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupDetailInfo',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/tourism/foodGroupInfo.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询餐饮团购信息列表
+export function listFoodGroupInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupInfo',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询餐饮团购信息详细
+export function getFoodGroupInfo(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupInfo',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增餐饮团购信息
+export function addFoodGroupInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupInfo',
+      _mt: 'add',
+      foodGroupInfo: data
+    }
+  })
+}
+
+// 修改餐饮团购信息
+export function updateFoodGroupInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupInfo',
+      _mt: 'update',
+      foodGroupInfo: data
+    }
+  })
+}
+
+// 删除餐饮团购信息
+export function delFoodGroupInfo(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupInfo',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出餐饮团购信息
+export function exportFoodGroupInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupInfo',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/tourism/foodGroupOrdeInfo.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询餐饮团购订单信息列表
+export function listFoodGroupOrdeInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupOrderInfo',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询餐饮团购订单信息详细
+export function getFoodGroupOrdeInfo(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupOrderInfo',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增餐饮团购订单信息
+export function addFoodGroupOrdeInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupOrderInfo',
+      _mt: 'add',
+      foodGroupOrderInfo: data
+    }
+  })
+}
+
+// 修改餐饮团购订单信息
+export function updateFoodGroupOrdeInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupOrderInfo',
+      _mt: 'update',
+      foodGroupOrderInfo: data
+    }
+  })
+}
+
+// 删除餐饮团购订单信息
+export function delFoodGroupOrdeInfo(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodGroupOrderInfo',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出餐饮团购订单信息
+export function exportFoodGroupOrdeInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodGroupOrderInfo',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/tourism/foodInfo.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询餐饮入驻信息列表
+export function listFoodInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodInfo',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询餐饮入驻信息详细
+export function getFoodInfo(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodInfo',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增餐饮入驻信息
+export function addFoodInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodInfo',
+      _mt: 'add',
+      foodInfo: data
+    }
+  })
+}
+
+// 修改餐饮入驻信息
+export function updateFoodInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodInfo',
+      _mt: 'update',
+      foodInfo: data
+    }
+  })
+}
+
+// 删除餐饮入驻信息
+export function delFoodInfo(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.foodInfo',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出餐饮入驻信息
+export function exportFoodInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.foodInfo',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/tourism/homestayDetailInfo.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询民宿详细信息列表
+export function listHomestayDetailInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.homestayDetailInfo',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询民宿详细信息详细
+export function getHomestayDetailInfo(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.homestayDetailInfo',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增民宿详细信息
+export function addHomestayDetailInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.homestayDetailInfo',
+      _mt: 'add',
+      homestayDetailInfo: data
+    }
+  })
+}
+
+// 修改民宿详细信息
+export function updateHomestayDetailInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.homestayDetailInfo',
+      _mt: 'update',
+      homestayDetailInfo: data
+    }
+  })
+}
+
+// 删除民宿详细信息
+export function delHomestayDetailInfo(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.homestayDetailInfo',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出民宿详细信息
+export function exportHomestayDetailInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.homestayDetailInfo',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/tourism/homestayInfo.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询民宿入驻信息列表
+export function listHomestayInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.homestayInfo',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询民宿入驻信息详细
+export function getHomestayInfo(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.homestayInfo',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增民宿入驻信息
+export function addHomestayInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.homestayInfo',
+      _mt: 'add',
+      homestayInfo: data
+    }
+  })
+}
+
+// 修改民宿入驻信息
+export function updateHomestayInfo(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.homestayInfo',
+      _mt: 'update',
+      homestayInfo: data
+    }
+  })
+}
+
+// 删除民宿入驻信息
+export function delHomestayInfo(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.homestayInfo',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出民宿入驻信息
+export function exportHomestayInfo(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.homestayInfo',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/tourism/productManagement.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询生活服务信息列表
+export function listProductManagement(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.productManagement',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询生活服务信息详细
+export function getProductManagement(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.productManagement',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增生活服务信息
+export function addProductManagement(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.productManagement',
+      _mt: 'add',
+      productManagement: data
+    }
+  })
+}
+
+// 修改生活服务信息
+export function updateProductManagement(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.productManagement',
+      _mt: 'update',
+      productManagement: data
+    }
+  })
+}
+
+// 删除生活服务信息
+export function delProductManagement(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.tourism.productManagement',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出生活服务信息
+export function exportProductManagement(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.tourism.productManagement',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 358 - 0
unimall-admin/src/views/dishClassifyInfo/index.vue

@@ -0,0 +1,358 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="餐饮入驻表id" prop="foodId">
+        <el-input
+          v-model="queryParams.foodId"
+          placeholder="请输入餐饮入驻表id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="分类名称" prop="classifyName">
+        <el-input
+          v-model="queryParams.classifyName"
+          placeholder="请输入分类名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="置顶标识" prop="topMarking">
+        <el-input
+          v-model="queryParams.topMarking"
+          placeholder="请输入置顶标识"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:dishClassifyInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:dishClassifyInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:dishClassifyInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:dishClassifyInfo:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="dishClassifyInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="餐饮入驻表id" align="center" prop="foodId" />
+      <el-table-column label="分类名称" align="center" prop="classifyName" />
+      <el-table-column label="置顶标识" align="center" prop="topMarking" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:dishClassifyInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:dishClassifyInfo: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="餐饮入驻表id" prop="foodId">
+          <el-input v-model="form.foodId" placeholder="请输入餐饮入驻表id" />
+        </el-form-item>
+        <el-form-item label="分类名称" prop="classifyName">
+          <el-input v-model="form.classifyName" placeholder="请输入分类名称" />
+        </el-form-item>
+        <el-form-item label="置顶标识" prop="topMarking">
+          <el-input v-model="form.topMarking" placeholder="请输入置顶标识" />
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listDishClassifyInfo, getDishClassifyInfo, delDishClassifyInfo, addDishClassifyInfo, updateDishClassifyInfo, exportDishClassifyInfo } from "@/api/tourism/dishClassifyInfo";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 菜品分类表格数据
+      dishClassifyInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        foodId: undefined,
+        classifyName: undefined,
+        topMarking: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        foodId: [
+          { required: true, message: "餐饮入驻表id不能为空", trigger: "blur" }
+        ],        topMarking: [
+          { required: true, message: "置顶标识不能为空", trigger: "blur" }
+        ],        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询菜品分类列表 */
+    getList() {
+      this.loading = true;
+      listDishClassifyInfo(this.queryParams).then(response => {
+        this.dishClassifyInfoList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        foodId: undefined,
+        classifyName: undefined,
+        topMarking: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加菜品分类";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getDishClassifyInfo(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改菜品分类";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateDishClassifyInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addDishClassifyInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除菜品分类编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delDishClassifyInfo(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有菜品分类数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportDishClassifyInfo(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 377 - 0
unimall-admin/src/views/foodDishesInfo/index.vue

@@ -0,0 +1,377 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="餐饮入驻表id" prop="foodId">
+        <el-input
+          v-model="queryParams.foodId"
+          placeholder="请输入餐饮入驻表id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="分类" prop="classify">
+        <el-input
+          v-model="queryParams.classify"
+          placeholder="请输入分类"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="菜品名称" prop="dishName">
+        <el-input
+          v-model="queryParams.dishName"
+          placeholder="请输入菜品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="菜品单价" prop="dishPrice">
+        <el-input
+          v-model="queryParams.dishPrice"
+          placeholder="请输入菜品单价"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:foodDishesInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:foodDishesInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:foodDishesInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:foodDishesInfo:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="foodDishesInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="餐饮入驻表id" align="center" prop="foodId" />
+      <el-table-column label="分类" align="center" prop="classify" />
+      <el-table-column label="菜品名称" align="center" prop="dishName" />
+      <el-table-column label="菜品单价" align="center" prop="dishPrice" />
+      <el-table-column label="菜品图片" align="center" prop="dishImage" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:foodDishesInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:foodDishesInfo: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="餐饮入驻表id" prop="foodId">
+          <el-input v-model="form.foodId" placeholder="请输入餐饮入驻表id" />
+        </el-form-item>
+        <el-form-item label="分类" prop="classify">
+          <el-input v-model="form.classify" placeholder="请输入分类" />
+        </el-form-item>
+        <el-form-item label="菜品名称" prop="dishName">
+          <el-input v-model="form.dishName" placeholder="请输入菜品名称" />
+        </el-form-item>
+        <el-form-item label="菜品单价" prop="dishPrice">
+          <el-input v-model="form.dishPrice" placeholder="请输入菜品单价" />
+        </el-form-item>
+        <el-form-item label="菜品图片" prop="dishImage">
+          <el-input v-model="form.dishImage" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listFoodDishesInfo, getFoodDishesInfo, delFoodDishesInfo, addFoodDishesInfo, updateFoodDishesInfo, exportFoodDishesInfo } from "@/api/tourism/foodDishesInfo";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 餐饮菜品信息表格数据
+      foodDishesInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        foodId: undefined,
+        classify: undefined,
+        dishName: undefined,
+        dishPrice: undefined,
+        dishImage: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        foodId: [
+          { required: true, message: "餐饮入驻表id不能为空", trigger: "blur" }
+        ],        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询餐饮菜品信息列表 */
+    getList() {
+      this.loading = true;
+      listFoodDishesInfo(this.queryParams).then(response => {
+        this.foodDishesInfoList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        foodId: undefined,
+        classify: undefined,
+        dishName: undefined,
+        dishPrice: undefined,
+        dishImage: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加餐饮菜品信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getFoodDishesInfo(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改餐饮菜品信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateFoodDishesInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addFoodDishesInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除餐饮菜品信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delFoodDishesInfo(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有餐饮菜品信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportFoodDishesInfo(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 388 - 0
unimall-admin/src/views/foodGroupDetailInfo/index.vue

@@ -0,0 +1,388 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="团购表id" prop="groupId">
+        <el-input
+          v-model="queryParams.groupId"
+          placeholder="请输入团购表id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="分类" prop="classify">
+        <el-input
+          v-model="queryParams.classify"
+          placeholder="请输入分类"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="菜品名称" prop="dishName">
+        <el-input
+          v-model="queryParams.dishName"
+          placeholder="请输入菜品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="菜品单价" prop="dishPrice">
+        <el-input
+          v-model="queryParams.dishPrice"
+          placeholder="请输入菜品单价"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="份数" prop="number">
+        <el-input
+          v-model="queryParams.number"
+          placeholder="请输入份数"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:foodGroupDetailInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:foodGroupDetailInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:foodGroupDetailInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:foodGroupDetailInfo:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="foodGroupDetailInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="团购表id" align="center" prop="groupId" />
+      <el-table-column label="分类" align="center" prop="classify" />
+      <el-table-column label="菜品名称" align="center" prop="dishName" />
+      <el-table-column label="菜品单价" align="center" prop="dishPrice" />
+      <el-table-column label="份数" align="center" prop="number" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:foodGroupDetailInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:foodGroupDetailInfo: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="团购表id" prop="groupId">
+          <el-input v-model="form.groupId" placeholder="请输入团购表id" />
+        </el-form-item>
+        <el-form-item label="分类" prop="classify">
+          <el-input v-model="form.classify" placeholder="请输入分类" />
+        </el-form-item>
+        <el-form-item label="菜品名称" prop="dishName">
+          <el-input v-model="form.dishName" placeholder="请输入菜品名称" />
+        </el-form-item>
+        <el-form-item label="菜品单价" prop="dishPrice">
+          <el-input v-model="form.dishPrice" placeholder="请输入菜品单价" />
+        </el-form-item>
+        <el-form-item label="份数" prop="number">
+          <el-input v-model="form.number" placeholder="请输入份数" />
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listFoodGroupDetailInfo, getFoodGroupDetailInfo, delFoodGroupDetailInfo, addFoodGroupDetailInfo, updateFoodGroupDetailInfo, exportFoodGroupDetailInfo } from "@/api/tourism/foodGroupDetailInfo";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 餐饮团购详细信息表格数据
+      foodGroupDetailInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        groupId: undefined,
+        classify: undefined,
+        dishName: undefined,
+        dishPrice: undefined,
+        number: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        groupId: [
+          { required: true, message: "团购表id不能为空", trigger: "blur" }
+        ],        number: [
+          { required: true, message: "份数不能为空", trigger: "blur" }
+        ],        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询餐饮团购详细信息列表 */
+    getList() {
+      this.loading = true;
+      listFoodGroupDetailInfo(this.queryParams).then(response => {
+        this.foodGroupDetailInfoList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        groupId: undefined,
+        classify: undefined,
+        dishName: undefined,
+        dishPrice: undefined,
+        number: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加餐饮团购详细信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getFoodGroupDetailInfo(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改餐饮团购详细信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateFoodGroupDetailInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addFoodGroupDetailInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除餐饮团购详细信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delFoodGroupDetailInfo(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有餐饮团购详细信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportFoodGroupDetailInfo(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 629 - 0
unimall-admin/src/views/foodGroupInfo/index.vue

@@ -0,0 +1,629 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="餐饮入驻表id" prop="foodId">
+        <el-input
+          v-model="queryParams.foodId"
+          placeholder="请输入餐饮入驻表id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="店铺名称" prop="shopNames">
+        <el-input
+          v-model="queryParams.shopNames"
+          placeholder="请输入店铺名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="团购标题" prop="groupTitle">
+        <el-input
+          v-model="queryParams.groupTitle"
+          placeholder="请输入团购标题"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最少可供用餐人数" prop="leastPeople">
+        <el-input
+          v-model="queryParams.leastPeople"
+          placeholder="请输入最少可供用餐人数"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最多可供用餐人数" prop="mostPeople">
+        <el-input
+          v-model="queryParams.mostPeople"
+          placeholder="请输入最多可供用餐人数"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="下单后随时退单(0接受1不接受)" prop="chargeableFlag">
+        <el-input
+          v-model="queryParams.chargeableFlag"
+          placeholder="请输入下单后随时退单(0接受1不接受)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="活动结束后自动退单(0接受1不接受)" prop="endChargeable">
+        <el-input
+          v-model="queryParams.endChargeable"
+          placeholder="请输入活动结束后自动退单(0接受1不接受)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="提前预约时间" prop="reservationTime">
+        <el-input
+          v-model="queryParams.reservationTime"
+          placeholder="请输入提前预约时间"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="活动开始时间" prop="startDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.startDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择活动开始时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="活动结束时间" prop="endDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.endDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择活动结束时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="不可用日期" prop="unavailableDate">
+        <el-input
+          v-model="queryParams.unavailableDate"
+          placeholder="请输入不可用日期"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="餐位费" prop="spaceFee">
+        <el-input
+          v-model="queryParams.spaceFee"
+          placeholder="请输入餐位费"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商品外带打包(0支持1不支持)" prop="packFlag">
+        <el-input
+          v-model="queryParams.packFlag"
+          placeholder="请输入商品外带打包(0支持1不支持)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="包间消费使用(0支持1不支持)" prop="roomUsage">
+        <el-input
+          v-model="queryParams.roomUsage"
+          placeholder="请输入包间消费使用(0支持1不支持)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="与店内其他优惠共享(0支持1不支持)" prop="discountSharing">
+        <el-input
+          v-model="queryParams.discountSharing"
+          placeholder="请输入与店内其他优惠共享(0支持1不支持)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="免费打包(0支持1不支持)" prop="freePackaging">
+        <el-input
+          v-model="queryParams.freePackaging"
+          placeholder="请输入免费打包(0支持1不支持)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="发票(0可开1询问商家)" prop="invoice">
+        <el-input
+          v-model="queryParams.invoice"
+          placeholder="请输入发票(0可开1询问商家)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="置顶标识" prop="topMarking">
+        <el-input
+          v-model="queryParams.topMarking"
+          placeholder="请输入置顶标识"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:foodGroupInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:foodGroupInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:foodGroupInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:foodGroupInfo:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="foodGroupInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="餐饮入驻表id" align="center" prop="foodId" />
+      <el-table-column label="店铺名称" align="center" prop="shopNames" />
+      <el-table-column label="团购标题" align="center" prop="groupTitle" />
+      <el-table-column label="最少可供用餐人数" align="center" prop="leastPeople" />
+      <el-table-column label="最多可供用餐人数" align="center" prop="mostPeople" />
+      <el-table-column label="下单后随时退单(0接受1不接受)" align="center" prop="chargeableFlag" />
+      <el-table-column label="活动结束后自动退单(0接受1不接受)" align="center" prop="endChargeable" />
+      <el-table-column label="提前预约时间" align="center" prop="reservationTime" />
+      <el-table-column label="活动开始时间" align="center" prop="startDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startDate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="活动结束时间" align="center" prop="endDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endDate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="不可用日期" align="center" prop="unavailableDate" />
+      <el-table-column label="餐位费" align="center" prop="spaceFee" />
+      <el-table-column label="商品外带打包(0支持1不支持)" align="center" prop="packFlag" />
+      <el-table-column label="包间消费使用(0支持1不支持)" align="center" prop="roomUsage" />
+      <el-table-column label="与店内其他优惠共享(0支持1不支持)" align="center" prop="discountSharing" />
+      <el-table-column label="免费打包(0支持1不支持)" align="center" prop="freePackaging" />
+      <el-table-column label="发票(0可开1询问商家)" align="center" prop="invoice" />
+      <el-table-column label="菜品图片" align="center" prop="dishImage" />
+      <el-table-column label="置顶标识" align="center" prop="topMarking" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:foodGroupInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:foodGroupInfo: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="餐饮入驻表id" prop="foodId">
+          <el-input v-model="form.foodId" placeholder="请输入餐饮入驻表id" />
+        </el-form-item>
+        <el-form-item label="店铺名称" prop="shopNames">
+          <el-input v-model="form.shopNames" placeholder="请输入店铺名称" />
+        </el-form-item>
+        <el-form-item label="团购标题" prop="groupTitle">
+          <el-input v-model="form.groupTitle" placeholder="请输入团购标题" />
+        </el-form-item>
+        <el-form-item label="最少可供用餐人数" prop="leastPeople">
+          <el-input v-model="form.leastPeople" placeholder="请输入最少可供用餐人数" />
+        </el-form-item>
+        <el-form-item label="最多可供用餐人数" prop="mostPeople">
+          <el-input v-model="form.mostPeople" placeholder="请输入最多可供用餐人数" />
+        </el-form-item>
+        <el-form-item label="下单后随时退单(0接受1不接受)" prop="chargeableFlag">
+          <el-input v-model="form.chargeableFlag" placeholder="请输入下单后随时退单(0接受1不接受)" />
+        </el-form-item>
+        <el-form-item label="活动结束后自动退单(0接受1不接受)" prop="endChargeable">
+          <el-input v-model="form.endChargeable" placeholder="请输入活动结束后自动退单(0接受1不接受)" />
+        </el-form-item>
+        <el-form-item label="提前预约时间" prop="reservationTime">
+          <el-input v-model="form.reservationTime" placeholder="请输入提前预约时间" />
+        </el-form-item>
+        <el-form-item label="活动开始时间" prop="startDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.startDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择活动开始时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="活动结束时间" prop="endDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.endDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择活动结束时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="不可用日期" prop="unavailableDate">
+          <el-input v-model="form.unavailableDate" placeholder="请输入不可用日期" />
+        </el-form-item>
+        <el-form-item label="餐位费" prop="spaceFee">
+          <el-input v-model="form.spaceFee" placeholder="请输入餐位费" />
+        </el-form-item>
+        <el-form-item label="商品外带打包(0支持1不支持)" prop="packFlag">
+          <el-input v-model="form.packFlag" placeholder="请输入商品外带打包(0支持1不支持)" />
+        </el-form-item>
+        <el-form-item label="包间消费使用(0支持1不支持)" prop="roomUsage">
+          <el-input v-model="form.roomUsage" placeholder="请输入包间消费使用(0支持1不支持)" />
+        </el-form-item>
+        <el-form-item label="与店内其他优惠共享(0支持1不支持)" prop="discountSharing">
+          <el-input v-model="form.discountSharing" placeholder="请输入与店内其他优惠共享(0支持1不支持)" />
+        </el-form-item>
+        <el-form-item label="免费打包(0支持1不支持)" prop="freePackaging">
+          <el-input v-model="form.freePackaging" placeholder="请输入免费打包(0支持1不支持)" />
+        </el-form-item>
+        <el-form-item label="发票(0可开1询问商家)" prop="invoice">
+          <el-input v-model="form.invoice" placeholder="请输入发票(0可开1询问商家)" />
+        </el-form-item>
+        <el-form-item label="菜品图片" prop="dishImage">
+          <el-input v-model="form.dishImage" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="置顶标识" prop="topMarking">
+          <el-input v-model="form.topMarking" placeholder="请输入置顶标识" />
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listFoodGroupInfo, getFoodGroupInfo, delFoodGroupInfo, addFoodGroupInfo, updateFoodGroupInfo, exportFoodGroupInfo } from "@/api/tourism/foodGroupInfo";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 餐饮团购信息表格数据
+      foodGroupInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        foodId: undefined,
+        shopNames: undefined,
+        groupTitle: undefined,
+        leastPeople: undefined,
+        mostPeople: undefined,
+        chargeableFlag: undefined,
+        endChargeable: undefined,
+        reservationTime: undefined,
+        startDate: undefined,
+        endDate: undefined,
+        unavailableDate: undefined,
+        spaceFee: undefined,
+        packFlag: undefined,
+        roomUsage: undefined,
+        discountSharing: undefined,
+        freePackaging: undefined,
+        invoice: undefined,
+        dishImage: undefined,
+        topMarking: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        foodId: [
+          { required: true, message: "餐饮入驻表id不能为空", trigger: "blur" }
+        ],        leastPeople: [
+          { required: true, message: "最少可供用餐人数不能为空", trigger: "blur" }
+        ],        mostPeople: [
+          { required: true, message: "最多可供用餐人数不能为空", trigger: "blur" }
+        ],        chargeableFlag: [
+          { required: true, message: "下单后随时退单(0接受1不接受)不能为空", trigger: "blur" }
+        ],        endChargeable: [
+          { required: true, message: "活动结束后自动退单(0接受1不接受)不能为空", trigger: "blur" }
+        ],        reservationTime: [
+          { required: true, message: "提前预约时间不能为空", trigger: "blur" }
+        ],        startDate: [
+          { required: true, message: "活动开始时间不能为空", trigger: "blur" }
+        ],        endDate: [
+          { required: true, message: "活动结束时间不能为空", trigger: "blur" }
+        ],        packFlag: [
+          { required: true, message: "商品外带打包(0支持1不支持)不能为空", trigger: "blur" }
+        ],        roomUsage: [
+          { required: true, message: "包间消费使用(0支持1不支持)不能为空", trigger: "blur" }
+        ],        discountSharing: [
+          { required: true, message: "与店内其他优惠共享(0支持1不支持)不能为空", trigger: "blur" }
+        ],        freePackaging: [
+          { required: true, message: "免费打包(0支持1不支持)不能为空", trigger: "blur" }
+        ],        invoice: [
+          { required: true, message: "发票(0可开1询问商家)不能为空", trigger: "blur" }
+        ],        topMarking: [
+          { required: true, message: "置顶标识不能为空", trigger: "blur" }
+        ],        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询餐饮团购信息列表 */
+    getList() {
+      this.loading = true;
+      listFoodGroupInfo(this.queryParams).then(response => {
+        this.foodGroupInfoList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        foodId: undefined,
+        shopNames: undefined,
+        groupTitle: undefined,
+        leastPeople: undefined,
+        mostPeople: undefined,
+        chargeableFlag: undefined,
+        endChargeable: undefined,
+        reservationTime: undefined,
+        startDate: undefined,
+        endDate: undefined,
+        unavailableDate: undefined,
+        spaceFee: undefined,
+        packFlag: undefined,
+        roomUsage: undefined,
+        discountSharing: undefined,
+        freePackaging: undefined,
+        invoice: undefined,
+        dishImage: undefined,
+        topMarking: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加餐饮团购信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getFoodGroupInfo(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改餐饮团购信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateFoodGroupInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addFoodGroupInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除餐饮团购信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delFoodGroupInfo(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有餐饮团购信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportFoodGroupInfo(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 354 - 0
unimall-admin/src/views/foodGroupOrdeInfo/index.vue

@@ -0,0 +1,354 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="下单人id" prop="buyerId">
+        <el-input
+          v-model="queryParams.buyerId"
+          placeholder="请输入下单人id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="团购表id" prop="groupId">
+        <el-input
+          v-model="queryParams.groupId"
+          placeholder="请输入团购表id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+        <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option label="请选择字典生成" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:foodGroupOrdeInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:foodGroupOrdeInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:foodGroupOrdeInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:foodGroupOrdeInfo:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="foodGroupOrdeInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="下单人id" align="center" prop="buyerId" />
+      <el-table-column label="团购表id" align="center" prop="groupId" />
+      <el-table-column label="状态" align="center" prop="status" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:foodGroupOrdeInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:foodGroupOrdeInfo: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="下单人id" prop="buyerId">
+          <el-input v-model="form.buyerId" placeholder="请输入下单人id" />
+        </el-form-item>
+        <el-form-item label="团购表id" prop="groupId">
+          <el-input v-model="form.groupId" placeholder="请输入团购表id" />
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-radio-group v-model="form.status">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listFoodGroupOrdeInfo, getFoodGroupOrdeInfo, delFoodGroupOrdeInfo, addFoodGroupOrdeInfo, updateFoodGroupOrdeInfo, exportFoodGroupOrdeInfo } from "@/api/tourism/foodGroupOrdeInfo";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 餐饮团购订单信息表格数据
+      foodGroupOrdeInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        buyerId: undefined,
+        groupId: undefined,
+        status: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        groupId: [
+          { required: true, message: "团购表id不能为空", trigger: "blur" }
+        ],        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询餐饮团购订单信息列表 */
+    getList() {
+      this.loading = true;
+      listFoodGroupOrdeInfo(this.queryParams).then(response => {
+        this.foodGroupOrdeInfoList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        buyerId: undefined,
+        groupId: undefined,
+        status: "0",
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加餐饮团购订单信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getFoodGroupOrdeInfo(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改餐饮团购订单信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateFoodGroupOrdeInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addFoodGroupOrdeInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除餐饮团购订单信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delFoodGroupOrdeInfo(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有餐饮团购订单信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportFoodGroupOrdeInfo(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 660 - 0
unimall-admin/src/views/foodInfo/index.vue

@@ -0,0 +1,660 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="个人id" prop="commonId">
+        <el-input
+          v-model="queryParams.commonId"
+          placeholder="请输入个人id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="主体(商铺/个人)" prop="mainBody">
+        <el-input
+          v-model="queryParams.mainBody"
+          placeholder="请输入主体(商铺/个人)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="店铺名称" prop="shopNames">
+        <el-input
+          v-model="queryParams.shopNames"
+          placeholder="请输入店铺名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="门面照片" prop="coverImage">
+        <el-input
+          v-model="queryParams.coverImage"
+          placeholder="请输入门面照片"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="省" prop="province">
+        <el-input
+          v-model="queryParams.province"
+          placeholder="请输入省"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="市" prop="city">
+        <el-input
+          v-model="queryParams.city"
+          placeholder="请输入市"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="区" prop="area">
+        <el-input
+          v-model="queryParams.area"
+          placeholder="请输入区"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="定位" prop="location">
+        <el-input
+          v-model="queryParams.location"
+          placeholder="请输入定位"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="详细地址" prop="detailedAddress">
+        <el-input
+          v-model="queryParams.detailedAddress"
+          placeholder="请输入详细地址"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="经营者" prop="operater">
+        <el-input
+          v-model="queryParams.operater"
+          placeholder="请输入经营者"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="经营者手机号" prop="operaterPhone">
+        <el-input
+          v-model="queryParams.operaterPhone"
+          placeholder="请输入经营者手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系人" prop="contacts">
+        <el-input
+          v-model="queryParams.contacts"
+          placeholder="请输入联系人"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系人手机号" prop="contactsPhone">
+        <el-input
+          v-model="queryParams.contactsPhone"
+          placeholder="请输入联系人手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="标签" prop="label">
+        <el-input
+          v-model="queryParams.label"
+          placeholder="请输入标签"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="营业执照" prop="businessLicense">
+        <el-input
+          v-model="queryParams.businessLicense"
+          placeholder="请输入营业执照"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="经营许可证" prop="operateCertificate">
+        <el-input
+          v-model="queryParams.operateCertificate"
+          placeholder="请输入经营许可证"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="经营许可证有效期" prop="operateCertificateDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.operateCertificateDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择经营许可证有效期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="营业开始时间" prop="startDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.startDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择营业开始时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="营业结束时间" prop="endDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.endDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择营业结束时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="允许用户查看菜品价格(0允许1禁止)" prop="lookFlag">
+        <el-input
+          v-model="queryParams.lookFlag"
+          placeholder="请输入允许用户查看菜品价格(0允许1禁止)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+        <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option label="请选择字典生成" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:foodInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:foodInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:foodInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:foodInfo:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="foodInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="个人id" align="center" prop="commonId" />
+      <el-table-column label="主体(商铺/个人)" align="center" prop="mainBody" />
+      <el-table-column label="店铺名称" align="center" prop="shopNames" />
+      <el-table-column label="门面照片" align="center" prop="coverImage" />
+      <el-table-column label="室内照片" align="center" prop="indoorImage" />
+      <el-table-column label="省" align="center" prop="province" />
+      <el-table-column label="市" align="center" prop="city" />
+      <el-table-column label="区" align="center" prop="area" />
+      <el-table-column label="定位" align="center" prop="location" />
+      <el-table-column label="详细地址" align="center" prop="detailedAddress" />
+      <el-table-column label="经营者" align="center" prop="operater" />
+      <el-table-column label="经营者手机号" align="center" prop="operaterPhone" />
+      <el-table-column label="联系人" align="center" prop="contacts" />
+      <el-table-column label="联系人手机号" align="center" prop="contactsPhone" />
+      <el-table-column label="标签" align="center" prop="label" />
+      <el-table-column label="营业执照" align="center" prop="businessLicense" />
+      <el-table-column label="经营许可证" align="center" prop="operateCertificate" />
+      <el-table-column label="经营许可证有效期" align="center" prop="operateCertificateDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.operateCertificateDate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="营业开始时间" align="center" prop="startDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startDate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="营业结束时间" align="center" prop="endDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endDate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="允许用户查看菜品价格(0允许1禁止)" align="center" prop="lookFlag" />
+      <el-table-column label="状态" align="center" prop="status" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:foodInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:foodInfo: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="个人id" prop="commonId">
+          <el-input v-model="form.commonId" placeholder="请输入个人id" />
+        </el-form-item>
+        <el-form-item label="主体(商铺/个人)" prop="mainBody">
+          <el-input v-model="form.mainBody" placeholder="请输入主体(商铺/个人)" />
+        </el-form-item>
+        <el-form-item label="店铺名称" prop="shopNames">
+          <el-input v-model="form.shopNames" placeholder="请输入店铺名称" />
+        </el-form-item>
+        <el-form-item label="门面照片" prop="coverImage">
+          <el-input v-model="form.coverImage" placeholder="请输入门面照片" />
+        </el-form-item>
+        <el-form-item label="室内照片" prop="indoorImage">
+          <el-input v-model="form.indoorImage" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="省" prop="province">
+          <el-input v-model="form.province" placeholder="请输入省" />
+        </el-form-item>
+        <el-form-item label="市" prop="city">
+          <el-input v-model="form.city" placeholder="请输入市" />
+        </el-form-item>
+        <el-form-item label="区" prop="area">
+          <el-input v-model="form.area" placeholder="请输入区" />
+        </el-form-item>
+        <el-form-item label="定位" prop="location">
+          <el-input v-model="form.location" placeholder="请输入定位" />
+        </el-form-item>
+        <el-form-item label="详细地址" prop="detailedAddress">
+          <el-input v-model="form.detailedAddress" placeholder="请输入详细地址" />
+        </el-form-item>
+        <el-form-item label="经营者" prop="operater">
+          <el-input v-model="form.operater" placeholder="请输入经营者" />
+        </el-form-item>
+        <el-form-item label="经营者手机号" prop="operaterPhone">
+          <el-input v-model="form.operaterPhone" placeholder="请输入经营者手机号" />
+        </el-form-item>
+        <el-form-item label="联系人" prop="contacts">
+          <el-input v-model="form.contacts" placeholder="请输入联系人" />
+        </el-form-item>
+        <el-form-item label="联系人手机号" prop="contactsPhone">
+          <el-input v-model="form.contactsPhone" placeholder="请输入联系人手机号" />
+        </el-form-item>
+        <el-form-item label="标签" prop="label">
+          <el-input v-model="form.label" placeholder="请输入标签" />
+        </el-form-item>
+        <el-form-item label="营业执照" prop="businessLicense">
+          <el-input v-model="form.businessLicense" placeholder="请输入营业执照" />
+        </el-form-item>
+        <el-form-item label="经营许可证" prop="operateCertificate">
+          <el-input v-model="form.operateCertificate" placeholder="请输入经营许可证" />
+        </el-form-item>
+        <el-form-item label="经营许可证有效期" prop="operateCertificateDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.operateCertificateDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择经营许可证有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="营业开始时间" prop="startDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.startDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择营业开始时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="营业结束时间" prop="endDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.endDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择营业结束时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="允许用户查看菜品价格(0允许1禁止)" prop="lookFlag">
+          <el-input v-model="form.lookFlag" placeholder="请输入允许用户查看菜品价格(0允许1禁止)" />
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-radio-group v-model="form.status">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listFoodInfo, getFoodInfo, delFoodInfo, addFoodInfo, updateFoodInfo, exportFoodInfo } from "@/api/tourism/foodInfo";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 餐饮入驻信息表格数据
+      foodInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        commonId: undefined,
+        mainBody: undefined,
+        shopNames: undefined,
+        coverImage: undefined,
+        indoorImage: undefined,
+        province: undefined,
+        city: undefined,
+        area: undefined,
+        location: undefined,
+        detailedAddress: undefined,
+        operater: undefined,
+        operaterPhone: undefined,
+        contacts: undefined,
+        contactsPhone: undefined,
+        label: undefined,
+        businessLicense: undefined,
+        operateCertificate: undefined,
+        operateCertificateDate: undefined,
+        startDate: undefined,
+        endDate: undefined,
+        lookFlag: undefined,
+        status: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        operateCertificateDate: [
+          { required: true, message: "经营许可证有效期不能为空", trigger: "blur" }
+        ],        startDate: [
+          { required: true, message: "营业开始时间不能为空", trigger: "blur" }
+        ],        endDate: [
+          { required: true, message: "营业结束时间不能为空", trigger: "blur" }
+        ],        lookFlag: [
+          { required: true, message: "允许用户查看菜品价格(0允许1禁止)不能为空", trigger: "blur" }
+        ],        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询餐饮入驻信息列表 */
+    getList() {
+      this.loading = true;
+      listFoodInfo(this.queryParams).then(response => {
+        this.foodInfoList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        commonId: undefined,
+        mainBody: undefined,
+        shopNames: undefined,
+        coverImage: undefined,
+        indoorImage: undefined,
+        province: undefined,
+        city: undefined,
+        area: undefined,
+        location: undefined,
+        detailedAddress: undefined,
+        operater: undefined,
+        operaterPhone: undefined,
+        contacts: undefined,
+        contactsPhone: undefined,
+        label: undefined,
+        businessLicense: undefined,
+        operateCertificate: undefined,
+        operateCertificateDate: undefined,
+        startDate: undefined,
+        endDate: undefined,
+        lookFlag: undefined,
+        status: "0",
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加餐饮入驻信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getFoodInfo(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改餐饮入驻信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateFoodInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addFoodInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除餐饮入驻信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delFoodInfo(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有餐饮入驻信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportFoodInfo(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 612 - 0
unimall-admin/src/views/homestayDetailInfo/index.vue

@@ -0,0 +1,612 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="民宿入驻表id" prop="homestayId">
+        <el-input
+          v-model="queryParams.homestayId"
+          placeholder="请输入民宿入驻表id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="标题" prop="title">
+        <el-input
+          v-model="queryParams.title"
+          placeholder="请输入标题"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="床铺数量" prop="bedNum">
+        <el-input
+          v-model="queryParams.bedNum"
+          placeholder="请输入床铺数量"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最多可住人数" prop="mostPeople">
+        <el-input
+          v-model="queryParams.mostPeople"
+          placeholder="请输入最多可住人数"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="面积" prop="decorationArea">
+        <el-input
+          v-model="queryParams.decorationArea"
+          placeholder="请输入面积"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="省" prop="province">
+        <el-input
+          v-model="queryParams.province"
+          placeholder="请输入省"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="市" prop="city">
+        <el-input
+          v-model="queryParams.city"
+          placeholder="请输入市"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="区" prop="area">
+        <el-input
+          v-model="queryParams.area"
+          placeholder="请输入区"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="定位" prop="location">
+        <el-input
+          v-model="queryParams.location"
+          placeholder="请输入定位"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="详细地址" prop="detailedAddress">
+        <el-input
+          v-model="queryParams.detailedAddress"
+          placeholder="请输入详细地址"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="标签" prop="label">
+        <el-input
+          v-model="queryParams.label"
+          placeholder="请输入标签"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="服务" prop="service">
+        <el-input
+          v-model="queryParams.service"
+          placeholder="请输入服务"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="家居" prop="homeFurnishing">
+        <el-input
+          v-model="queryParams.homeFurnishing"
+          placeholder="请输入家居"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="卫浴" prop="bathroom">
+        <el-input
+          v-model="queryParams.bathroom"
+          placeholder="请输入卫浴"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="餐厨" prop="kitchen">
+        <el-input
+          v-model="queryParams.kitchen"
+          placeholder="请输入餐厨"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="建筑" prop="build">
+        <el-input
+          v-model="queryParams.build"
+          placeholder="请输入建筑"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="单价" prop="price">
+        <el-input
+          v-model="queryParams.price"
+          placeholder="请输入单价"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+        <el-form-item label="户型" prop="houseType">
+        <el-select v-model="queryParams.houseType" placeholder="请选择户型" clearable size="small">
+          <el-option label="请选择字典生成" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="置顶标识" prop="topMarking">
+        <el-input
+          v-model="queryParams.topMarking"
+          placeholder="请输入置顶标识"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:homestayDetailInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:homestayDetailInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:homestayDetailInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:homestayDetailInfo:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="homestayDetailInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="民宿入驻表id" align="center" prop="homestayId" />
+      <el-table-column label="标题" align="center" prop="title" />
+      <el-table-column label="床铺数量" align="center" prop="bedNum" />
+      <el-table-column label="最多可住人数" align="center" prop="mostPeople" />
+      <el-table-column label="面积" align="center" prop="decorationArea" />
+      <el-table-column label="省" align="center" prop="province" />
+      <el-table-column label="市" align="center" prop="city" />
+      <el-table-column label="区" align="center" prop="area" />
+      <el-table-column label="定位" align="center" prop="location" />
+      <el-table-column label="详细地址" align="center" prop="detailedAddress" />
+      <el-table-column label="标签" align="center" prop="label" />
+      <el-table-column label="服务" align="center" prop="service" />
+      <el-table-column label="家居" align="center" prop="homeFurnishing" />
+      <el-table-column label="卫浴" align="center" prop="bathroom" />
+      <el-table-column label="餐厨" align="center" prop="kitchen" />
+      <el-table-column label="建筑" align="center" prop="build" />
+      <el-table-column label="单价" align="center" prop="price" />
+      <el-table-column label="户型" align="center" prop="houseType" />
+      <el-table-column label="民宿图片" align="center" prop="homestayImage" />
+      <el-table-column label="详细介绍" align="center" prop="detailedIntroduction" />
+      <el-table-column label="置顶标识" align="center" prop="topMarking" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:homestayDetailInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:homestayDetailInfo: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="民宿入驻表id" prop="homestayId">
+          <el-input v-model="form.homestayId" placeholder="请输入民宿入驻表id" />
+        </el-form-item>
+        <el-form-item label="标题" prop="title">
+          <el-input v-model="form.title" placeholder="请输入标题" />
+        </el-form-item>
+        <el-form-item label="床铺数量" prop="bedNum">
+          <el-input v-model="form.bedNum" placeholder="请输入床铺数量" />
+        </el-form-item>
+        <el-form-item label="最多可住人数" prop="mostPeople">
+          <el-input v-model="form.mostPeople" placeholder="请输入最多可住人数" />
+        </el-form-item>
+        <el-form-item label="面积" prop="decorationArea">
+          <el-input v-model="form.decorationArea" placeholder="请输入面积" />
+        </el-form-item>
+        <el-form-item label="省" prop="province">
+          <el-input v-model="form.province" placeholder="请输入省" />
+        </el-form-item>
+        <el-form-item label="市" prop="city">
+          <el-input v-model="form.city" placeholder="请输入市" />
+        </el-form-item>
+        <el-form-item label="区" prop="area">
+          <el-input v-model="form.area" placeholder="请输入区" />
+        </el-form-item>
+        <el-form-item label="定位" prop="location">
+          <el-input v-model="form.location" placeholder="请输入定位" />
+        </el-form-item>
+        <el-form-item label="详细地址" prop="detailedAddress">
+          <el-input v-model="form.detailedAddress" placeholder="请输入详细地址" />
+        </el-form-item>
+        <el-form-item label="标签" prop="label">
+          <el-input v-model="form.label" placeholder="请输入标签" />
+        </el-form-item>
+        <el-form-item label="服务" prop="service">
+          <el-input v-model="form.service" placeholder="请输入服务" />
+        </el-form-item>
+        <el-form-item label="家居" prop="homeFurnishing">
+          <el-input v-model="form.homeFurnishing" placeholder="请输入家居" />
+        </el-form-item>
+        <el-form-item label="卫浴" prop="bathroom">
+          <el-input v-model="form.bathroom" placeholder="请输入卫浴" />
+        </el-form-item>
+        <el-form-item label="餐厨" prop="kitchen">
+          <el-input v-model="form.kitchen" placeholder="请输入餐厨" />
+        </el-form-item>
+        <el-form-item label="建筑" prop="build">
+          <el-input v-model="form.build" placeholder="请输入建筑" />
+        </el-form-item>
+        <el-form-item label="单价" prop="price">
+          <el-input v-model="form.price" placeholder="请输入单价" />
+        </el-form-item>
+        <el-form-item label="户型">
+          <el-select v-model="form.houseType" placeholder="请选择户型">
+            <el-option label="请选择字典生成" value="" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="民宿图片" prop="homestayImage">
+          <el-input v-model="form.homestayImage" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="详细介绍" prop="detailedIntroduction">
+          <el-input v-model="form.detailedIntroduction" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="置顶标识" prop="topMarking">
+          <el-input v-model="form.topMarking" placeholder="请输入置顶标识" />
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listHomestayDetailInfo, getHomestayDetailInfo, delHomestayDetailInfo, addHomestayDetailInfo, updateHomestayDetailInfo, exportHomestayDetailInfo } from "@/api/tourism/homestayDetailInfo";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 民宿详细信息表格数据
+      homestayDetailInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        homestayId: undefined,
+        title: undefined,
+        bedNum: undefined,
+        mostPeople: undefined,
+        decorationArea: undefined,
+        province: undefined,
+        city: undefined,
+        area: undefined,
+        location: undefined,
+        detailedAddress: undefined,
+        label: undefined,
+        service: undefined,
+        homeFurnishing: undefined,
+        bathroom: undefined,
+        kitchen: undefined,
+        build: undefined,
+        price: undefined,
+        houseType: undefined,
+        homestayImage: undefined,
+        detailedIntroduction: undefined,
+        topMarking: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        homestayId: [
+          { required: true, message: "民宿入驻表id不能为空", trigger: "blur" }
+        ],        bedNum: [
+          { required: true, message: "床铺数量不能为空", trigger: "blur" }
+        ],        mostPeople: [
+          { required: true, message: "最多可住人数不能为空", trigger: "blur" }
+        ],        topMarking: [
+          { required: true, message: "置顶标识不能为空", trigger: "blur" }
+        ],        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询民宿详细信息列表 */
+    getList() {
+      this.loading = true;
+      listHomestayDetailInfo(this.queryParams).then(response => {
+        this.homestayDetailInfoList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        homestayId: undefined,
+        title: undefined,
+        bedNum: undefined,
+        mostPeople: undefined,
+        decorationArea: undefined,
+        province: undefined,
+        city: undefined,
+        area: undefined,
+        location: undefined,
+        detailedAddress: undefined,
+        label: undefined,
+        service: undefined,
+        homeFurnishing: undefined,
+        bathroom: undefined,
+        kitchen: undefined,
+        build: undefined,
+        price: undefined,
+        houseType: undefined,
+        homestayImage: undefined,
+        detailedIntroduction: undefined,
+        topMarking: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加民宿详细信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getHomestayDetailInfo(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改民宿详细信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateHomestayDetailInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addHomestayDetailInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除民宿详细信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delHomestayDetailInfo(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有民宿详细信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportHomestayDetailInfo(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 399 - 0
unimall-admin/src/views/homestayInfo/index.vue

@@ -0,0 +1,399 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="个人id" prop="commonId">
+        <el-input
+          v-model="queryParams.commonId"
+          placeholder="请输入个人id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="手机号" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="请输入手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="姓名" prop="realname">
+        <el-input
+          v-model="queryParams.realname"
+          placeholder="请输入姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="身份证号" prop="personNo">
+        <el-input
+          v-model="queryParams.personNo"
+          placeholder="请输入身份证号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="身份证正面" prop="personImageFront">
+        <el-input
+          v-model="queryParams.personImageFront"
+          placeholder="请输入身份证正面"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="身份证背面" prop="personImageBack">
+        <el-input
+          v-model="queryParams.personImageBack"
+          placeholder="请输入身份证背面"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:homestayInfo:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:homestayInfo:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:homestayInfo:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:homestayInfo:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="homestayInfoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="个人id" align="center" prop="commonId" />
+      <el-table-column label="手机号" align="center" prop="phone" />
+      <el-table-column label="姓名" align="center" prop="realname" />
+      <el-table-column label="身份证号" align="center" prop="personNo" />
+      <el-table-column label="身份证正面" align="center" prop="personImageFront" />
+      <el-table-column label="身份证背面" align="center" prop="personImageBack" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:homestayInfo:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:homestayInfo: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="个人id" prop="commonId">
+          <el-input v-model="form.commonId" placeholder="请输入个人id" />
+        </el-form-item>
+        <el-form-item label="手机号" prop="phone">
+          <el-input v-model="form.phone" placeholder="请输入手机号" />
+        </el-form-item>
+        <el-form-item label="姓名" prop="realname">
+          <el-input v-model="form.realname" placeholder="请输入姓名" />
+        </el-form-item>
+        <el-form-item label="身份证号" prop="personNo">
+          <el-input v-model="form.personNo" placeholder="请输入身份证号" />
+        </el-form-item>
+        <el-form-item label="身份证正面" prop="personImageFront">
+          <el-input v-model="form.personImageFront" placeholder="请输入身份证正面" />
+        </el-form-item>
+        <el-form-item label="身份证背面" prop="personImageBack">
+          <el-input v-model="form.personImageBack" placeholder="请输入身份证背面" />
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listHomestayInfo, getHomestayInfo, delHomestayInfo, addHomestayInfo, updateHomestayInfo, exportHomestayInfo } from "@/api/tourism/homestayInfo";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 民宿入驻信息表格数据
+      homestayInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        commonId: undefined,
+        phone: undefined,
+        realname: undefined,
+        personNo: undefined,
+        personImageFront: undefined,
+        personImageBack: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询民宿入驻信息列表 */
+    getList() {
+      this.loading = true;
+      listHomestayInfo(this.queryParams).then(response => {
+        this.homestayInfoList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        commonId: undefined,
+        phone: undefined,
+        realname: undefined,
+        personNo: undefined,
+        personImageFront: undefined,
+        personImageBack: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加民宿入驻信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getHomestayInfo(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改民宿入驻信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateHomestayInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addHomestayInfo(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除民宿入驻信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delHomestayInfo(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有民宿入驻信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportHomestayInfo(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 559 - 0
unimall-admin/src/views/productManagement/index.vue

@@ -0,0 +1,559 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="个人id" prop="commonId">
+        <el-input
+          v-model="queryParams.commonId"
+          placeholder="请输入个人id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="主体(商铺/个人)" prop="mainBody">
+        <el-input
+          v-model="queryParams.mainBody"
+          placeholder="请输入主体(商铺/个人)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="店铺名称/服务名称" prop="shopNames">
+        <el-input
+          v-model="queryParams.shopNames"
+          placeholder="请输入店铺名称/服务名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="省" prop="province">
+        <el-input
+          v-model="queryParams.province"
+          placeholder="请输入省"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="市" prop="city">
+        <el-input
+          v-model="queryParams.city"
+          placeholder="请输入市"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="区" prop="area">
+        <el-input
+          v-model="queryParams.area"
+          placeholder="请输入区"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="定位" prop="location">
+        <el-input
+          v-model="queryParams.location"
+          placeholder="请输入定位"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="详细地址" prop="detailedAddress">
+        <el-input
+          v-model="queryParams.detailedAddress"
+          placeholder="请输入详细地址"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="昵称" prop="nickname">
+        <el-input
+          v-model="queryParams.nickname"
+          placeholder="请输入昵称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="手机号" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="请输入手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="姓名" prop="realname">
+        <el-input
+          v-model="queryParams.realname"
+          placeholder="请输入姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="身份证号" prop="personNo">
+        <el-input
+          v-model="queryParams.personNo"
+          placeholder="请输入身份证号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="身份证正面" prop="personImageFront">
+        <el-input
+          v-model="queryParams.personImageFront"
+          placeholder="请输入身份证正面"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="身份证背面" prop="personImageBack">
+        <el-input
+          v-model="queryParams.personImageBack"
+          placeholder="请输入身份证背面"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="营业执照" prop="businessLicense">
+        <el-input
+          v-model="queryParams.businessLicense"
+          placeholder="请输入营业执照"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+        <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option label="请选择字典生成" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['tourism:productManagement:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['tourism:productManagement:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['tourism:productManagement:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['tourism:productManagement:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="productManagementList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="个人id" align="center" prop="commonId" />
+      <el-table-column label="主体(商铺/个人)" align="center" prop="mainBody" />
+      <el-table-column label="店铺名称/服务名称" align="center" prop="shopNames" />
+      <el-table-column label="封面图片" align="center" prop="coverImage" />
+      <el-table-column label="省" align="center" prop="province" />
+      <el-table-column label="市" align="center" prop="city" />
+      <el-table-column label="区" align="center" prop="area" />
+      <el-table-column label="定位" align="center" prop="location" />
+      <el-table-column label="详细地址" align="center" prop="detailedAddress" />
+      <el-table-column label="业务描述" align="center" prop="serviceDescription" />
+      <el-table-column label="昵称" align="center" prop="nickname" />
+      <el-table-column label="手机号" align="center" prop="phone" />
+      <el-table-column label="姓名" align="center" prop="realname" />
+      <el-table-column label="身份证号" align="center" prop="personNo" />
+      <el-table-column label="身份证正面" align="center" prop="personImageFront" />
+      <el-table-column label="身份证背面" align="center" prop="personImageBack" />
+      <el-table-column label="营业执照" align="center" prop="businessLicense" />
+      <el-table-column label="状态" align="center" prop="status" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['tourism:productManagement:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['tourism:productManagement: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="个人id" prop="commonId">
+          <el-input v-model="form.commonId" placeholder="请输入个人id" />
+        </el-form-item>
+        <el-form-item label="主体(商铺/个人)" prop="mainBody">
+          <el-input v-model="form.mainBody" placeholder="请输入主体(商铺/个人)" />
+        </el-form-item>
+        <el-form-item label="店铺名称/服务名称" prop="shopNames">
+          <el-input v-model="form.shopNames" placeholder="请输入店铺名称/服务名称" />
+        </el-form-item>
+        <el-form-item label="封面图片" prop="coverImage">
+          <el-input v-model="form.coverImage" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="省" prop="province">
+          <el-input v-model="form.province" placeholder="请输入省" />
+        </el-form-item>
+        <el-form-item label="市" prop="city">
+          <el-input v-model="form.city" placeholder="请输入市" />
+        </el-form-item>
+        <el-form-item label="区" prop="area">
+          <el-input v-model="form.area" placeholder="请输入区" />
+        </el-form-item>
+        <el-form-item label="定位" prop="location">
+          <el-input v-model="form.location" placeholder="请输入定位" />
+        </el-form-item>
+        <el-form-item label="详细地址" prop="detailedAddress">
+          <el-input v-model="form.detailedAddress" placeholder="请输入详细地址" />
+        </el-form-item>
+        <el-form-item label="业务描述" prop="serviceDescription">
+          <el-input v-model="form.serviceDescription" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="昵称" prop="nickname">
+          <el-input v-model="form.nickname" placeholder="请输入昵称" />
+        </el-form-item>
+        <el-form-item label="手机号" prop="phone">
+          <el-input v-model="form.phone" placeholder="请输入手机号" />
+        </el-form-item>
+        <el-form-item label="姓名" prop="realname">
+          <el-input v-model="form.realname" placeholder="请输入姓名" />
+        </el-form-item>
+        <el-form-item label="身份证号" prop="personNo">
+          <el-input v-model="form.personNo" placeholder="请输入身份证号" />
+        </el-form-item>
+        <el-form-item label="身份证正面" prop="personImageFront">
+          <el-input v-model="form.personImageFront" placeholder="请输入身份证正面" />
+        </el-form-item>
+        <el-form-item label="身份证背面" prop="personImageBack">
+          <el-input v-model="form.personImageBack" placeholder="请输入身份证背面" />
+        </el-form-item>
+        <el-form-item label="营业执照" prop="businessLicense">
+          <el-input v-model="form.businessLicense" placeholder="请输入营业执照" />
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-radio-group v-model="form.status">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listProductManagement, getProductManagement, delProductManagement, addProductManagement, updateProductManagement, exportProductManagement } from "@/api/tourism/productManagement";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 生活服务信息表格数据
+      productManagementList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        commonId: undefined,
+        mainBody: undefined,
+        shopNames: undefined,
+        coverImage: undefined,
+        province: undefined,
+        city: undefined,
+        area: undefined,
+        location: undefined,
+        detailedAddress: undefined,
+        serviceDescription: undefined,
+        nickname: undefined,
+        phone: undefined,
+        realname: undefined,
+        personNo: undefined,
+        personImageFront: undefined,
+        personImageBack: undefined,
+        businessLicense: undefined,
+        status: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询生活服务信息列表 */
+    getList() {
+      this.loading = true;
+      listProductManagement(this.queryParams).then(response => {
+        this.productManagementList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        commonId: undefined,
+        mainBody: undefined,
+        shopNames: undefined,
+        coverImage: undefined,
+        province: undefined,
+        city: undefined,
+        area: undefined,
+        location: undefined,
+        detailedAddress: undefined,
+        serviceDescription: undefined,
+        nickname: undefined,
+        phone: undefined,
+        realname: undefined,
+        personNo: undefined,
+        personImageFront: undefined,
+        personImageBack: undefined,
+        businessLicense: undefined,
+        status: "0",
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加生活服务信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids.join(',')
+      getProductManagement(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改生活服务信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateProductManagement(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addProductManagement(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除生活服务信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delProductManagement(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有生活服务信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportProductManagement(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>