فهرست منبع

管理后台-业务中心

panyong 3 سال پیش
والد
کامیت
855014a6c0

+ 4 - 4
htmldev/manage/src/router/modules/business.js

@@ -15,16 +15,16 @@ const businessRouter = {
       redirect: '/business/place/query',
       children: [
         {
-          path: 'create',
-          component: () => import('@/views/business/place/create/index'),
-          name: 'BusinessPlaceCreate',
+          path: 'list',
+          component: () => import('@/views/business/place/list/index'),
+          name: 'BusinessPlaceList',
           meta: { title: '座位管理' }
         },
         {
           path: 'query',
           component: () => import('@/views/business/place/query/index'),
           name: 'BusinessPlaceQuery',
-          meta: { title: '预定' }
+          meta: { title: '预定查询' }
         },
         {
           path: 'release',

+ 0 - 13
htmldev/manage/src/views/business/place/create/index.vue

@@ -1,13 +0,0 @@
-<template>
-  <div>座位管理</div>
-</template>
-
-<script>
-export default {
-  name: 'index'
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>

+ 92 - 0
htmldev/manage/src/views/business/place/list/details.vue

@@ -0,0 +1,92 @@
+<template>
+  <div>
+    <el-dialog :title="exData.id ? '编辑': '新增'" :visible.sync="dialog" width="450px" :close-on-click-modal="false"
+               top="50px">
+      <el-form ref="form" :model="form" label-width="100px" class="bind-phone">
+        <el-form-item v-if="!exData.id" label="项目选择:">
+          <el-select v-model="form.department_project_id">
+            <el-option v-for="(item, index) in projectArr" :key="index" :label="item.project_name"
+                       :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="部门名称:">
+          <el-input v-model="form.department_name" placeholder="请输入部门名称"></el-input>
+        </el-form-item>
+        <el-form-item label="部门描述:">
+          <el-input v-model="form.department_desc" placeholder="请输入部门描述"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer text-center">
+        <el-button @click="dialog = false">取 消</el-button>
+        <el-button type="danger" @click="handleSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+
+export default {
+  props: {
+    value: {
+      type: Boolean,
+      default: true
+    },
+    exData: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    }
+  },
+  computed: {
+    ...mapGetters([
+      'projectArr'
+    ])
+  },
+  data () {
+    return {
+      dialog: !!this.value,
+      form: {
+        department_project_id: undefined,
+        department_name: '',
+        department_desc: ''
+      }
+    }
+  },
+  methods: {
+    async handleSubmit () {
+      let url = this.exData.id ? '/department/edit' : '/department/add'
+      const data = await this.$fetch('/api/auth' + url, { ...this.form })
+      if (data.code === 200) {
+        this.$message.success('提交成功')
+        this.$emit('success')
+        this.dialog = false
+      }
+    }
+  },
+  mounted () {
+    if (this.projectArr.length == 0) {
+      this.$store.dispatch('common/setProjectArr')
+    }
+    if (this.exData.id) {
+      this.form.id = this.exData.id
+      this.form.department_name = this.exData.department_name
+      this.form.department_desc = this.exData.department_desc
+    }
+  },
+  watch: {
+    dialog (val) {
+      if (!val) this.$emit('input', val)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.top-tip {
+  margin-top: -20px;
+  margin-bottom: 20px;
+}
+</style>

+ 117 - 0
htmldev/manage/src/views/business/place/list/index.vue

@@ -0,0 +1,117 @@
+<template>
+  <div class="padding-20">
+    <div class="search-box">
+      <el-form ref="form" :inline="true" :model="searchForm" clearable label-width="100px" class="mt-10">
+        <el-form-item label="创建时间:">
+          <el-date-picker
+            :editable="false"
+            v-model="time"
+            @change="timearr => {timearr ? (searchForm.start_time = timearr[0] + ' 00:00:00', searchForm.end_time = timearr[1] + ' 23:59:59') : searchForm.start_time = searchForm.end_time = undefined}"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            start-placeholder="开始时间"
+            end-placeholder="结束时间"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="部门名称:">
+          <el-input v-model="searchForm.department_name" placeholder="请输入部门名称" clearable></el-input>
+        </el-form-item>
+        <el-form-item class="ml-10">
+          <el-button icon="el-icon-search" type="primary" @click="searchSubmit">查询</el-button>
+        </el-form-item>
+        <el-form-item class="ml-10">
+          <el-button icon="el-icon-plus" type="primary" @click="add" v-permission="'department_list_add'">新增</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+    <el-table :data="tableData"
+              stripe
+              v-loading="tableLoading"
+              fit
+              class="marginT-10 order-table"
+              border
+              :max-height="vheight">
+      <el-table-column label="编号" prop="id"></el-table-column>
+      <el-table-column label="名称" prop="department_name"></el-table-column>
+      <el-table-column label="数量" prop="department_project_name"></el-table-column>
+      <el-table-column label="人数" prop="department_project_name"></el-table-column>
+      <el-table-column label="单价" prop="department_project_name"></el-table-column>
+      <el-table-column label="最晚保留时间(分钟)" prop="department_project_name"></el-table-column>
+      <el-table-column label="最晚到店时间" prop="department_desc"></el-table-column>
+      <el-table-column label="介绍" prop="department_desc"></el-table-column>
+      <el-table-column label="备注" prop="department_desc"></el-table-column>
+      <el-table-column label="操作">
+        <template slot-scope="scope">
+          <el-button type="text" @click="edit(scope.row)" v-permission="'department_list_edit'">编辑</el-button>
+          <el-button type="text" @click="del(scope.row)" v-permission="'department_list_del'">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      class="marginT-20"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :hide-on-single-page="true"
+      :current-page="page"
+      :page-size="page_size"
+      :page-sizes="[10, 20, 100, 200, 300, 400]"
+      background
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="totalCount"/>
+    <detail v-if="detailsDialog.show" v-model="detailsDialog.show" :exData="detailsDialog.exData"
+            @success="init"></detail>
+  </div>
+</template>
+
+<script>
+import page from '@/mixin/page'
+import detail from './details'
+
+export default {
+  mixins: [page],
+  components: {
+    detail,
+  },
+  data () {
+    return {
+      detailsDialog: {
+        show: false,
+        exData: {}
+      },
+      time: [],
+      searchForm: {},
+      tableData: [],
+      tableUrl: '/department/list'
+    }
+  },
+  methods: {
+    add () {
+      this.detailsDialog.exData = {}
+      this.detailsDialog.show = true
+    },
+    edit (row) {
+      this.detailsDialog.exData = row
+      this.detailsDialog.show = true
+    },
+    del (row) {
+      this.$confirm('确定要删除吗', '确认', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const data = await this.$fetch('/api/auth/department/del', { id: row.id })
+        if (data.code == 200) {
+          this.$message.success('删除成功')
+          this.init()
+        }
+      }).catch(() => {})
+    }
+  },
+  mounted () {
+    this.init()
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 92 - 0
htmldev/manage/src/views/business/place/query/details.vue

@@ -0,0 +1,92 @@
+<template>
+  <div>
+    <el-dialog :title="exData.id ? '编辑': '新增'" :visible.sync="dialog" width="450px" :close-on-click-modal="false"
+               top="50px">
+      <el-form ref="form" :model="form" label-width="100px" class="bind-phone">
+        <el-form-item v-if="!exData.id" label="项目选择:">
+          <el-select v-model="form.department_project_id">
+            <el-option v-for="(item, index) in projectArr" :key="index" :label="item.project_name"
+                       :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="部门名称:">
+          <el-input v-model="form.department_name" placeholder="请输入部门名称"></el-input>
+        </el-form-item>
+        <el-form-item label="部门描述:">
+          <el-input v-model="form.department_desc" placeholder="请输入部门描述"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer text-center">
+        <el-button @click="dialog = false">取 消</el-button>
+        <el-button type="danger" @click="handleSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+
+export default {
+  props: {
+    value: {
+      type: Boolean,
+      default: true
+    },
+    exData: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    }
+  },
+  computed: {
+    ...mapGetters([
+      'projectArr'
+    ])
+  },
+  data () {
+    return {
+      dialog: !!this.value,
+      form: {
+        department_project_id: undefined,
+        department_name: '',
+        department_desc: ''
+      }
+    }
+  },
+  methods: {
+    async handleSubmit () {
+      let url = this.exData.id ? '/department/edit' : '/department/add'
+      const data = await this.$fetch('/api/auth' + url, { ...this.form })
+      if (data.code === 200) {
+        this.$message.success('提交成功')
+        this.$emit('success')
+        this.dialog = false
+      }
+    }
+  },
+  mounted () {
+    if (this.projectArr.length == 0) {
+      this.$store.dispatch('common/setProjectArr')
+    }
+    if (this.exData.id) {
+      this.form.id = this.exData.id
+      this.form.department_name = this.exData.department_name
+      this.form.department_desc = this.exData.department_desc
+    }
+  },
+  watch: {
+    dialog (val) {
+      if (!val) this.$emit('input', val)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.top-tip {
+  margin-top: -20px;
+  margin-bottom: 20px;
+}
+</style>

+ 106 - 3
htmldev/manage/src/views/business/place/query/index.vue

@@ -1,13 +1,116 @@
 <template>
-  <div>预定</div>
+  <div class="padding-20">
+    <div class="search-box">
+      <el-form ref="form" :inline="true" :model="searchForm" clearable label-width="100px" class="mt-10">
+        <el-form-item label="创建时间:">
+          <el-date-picker
+            :editable="false"
+            v-model="time"
+            @change="timearr => {timearr ? (searchForm.start_time = timearr[0] + ' 00:00:00', searchForm.end_time = timearr[1] + ' 23:59:59') : searchForm.start_time = searchForm.end_time = undefined}"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            start-placeholder="开始时间"
+            end-placeholder="结束时间"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="部门名称:">
+          <el-input v-model="searchForm.department_name" placeholder="请输入部门名称" clearable></el-input>
+        </el-form-item>
+        <el-form-item class="ml-10">
+          <el-button icon="el-icon-search" type="primary" @click="searchSubmit">查询</el-button>
+        </el-form-item>
+        <el-form-item class="ml-10">
+          <el-button icon="el-icon-plus" type="primary" @click="add" v-permission="'department_list_add'">新增</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+    <el-table :data="tableData"
+              stripe
+              v-loading="tableLoading"
+              fit
+              class="marginT-10 order-table"
+              border
+              :max-height="vheight">
+      <el-table-column label="预定日期" prop="id"></el-table-column>
+      <el-table-column label="预订人" prop="department_name"></el-table-column>
+      <el-table-column label="手机号" prop="department_project_name"></el-table-column>
+      <el-table-column label="预定人数" prop="department_project_name"></el-table-column>
+      <el-table-column label="预定座位类型" prop="department_desc"></el-table-column>
+      <el-table-column label="最晚到场时间" prop="department_project_name"></el-table-column>
+      <el-table-column label="状态" prop="department_desc"></el-table-column>
+      <el-table-column label="签到时间" prop="department_desc"></el-table-column>
+      <el-table-column label="备注" prop="department_desc"></el-table-column>
+      <el-table-column label="操作">
+        <template slot-scope="scope">
+          <el-button type="text" @click="edit(scope.row)" v-permission="'department_list_edit'">签到</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      class="marginT-20"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :hide-on-single-page="true"
+      :current-page="page"
+      :page-size="page_size"
+      :page-sizes="[10, 20, 100, 200, 300, 400]"
+      background
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="totalCount"/>
+    <detail v-if="detailsDialog.show" v-model="detailsDialog.show" :exData="detailsDialog.exData"
+            @success="init"></detail>
+  </div>
 </template>
 
 <script>
+import page from '@/mixin/page'
+import detail from './details'
+
 export default {
-  name: 'index'
+  mixins: [page],
+  components: {
+    detail,
+  },
+  data () {
+    return {
+      detailsDialog: {
+        show: false,
+        exData: {}
+      },
+      time: [],
+      searchForm: {},
+      tableData: [],
+      tableUrl: '/department/list'
+    }
+  },
+  methods: {
+    add () {
+      this.detailsDialog.exData = {}
+      this.detailsDialog.show = true
+    },
+    edit (row) {
+      this.detailsDialog.exData = row
+      this.detailsDialog.show = true
+    },
+    del (row) {
+      this.$confirm('确定要删除吗', '确认', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const data = await this.$fetch('/api/auth/department/del', { id: row.id })
+        if (data.code == 200) {
+          this.$message.success('删除成功')
+          this.init()
+        }
+      }).catch(() => {})
+    }
+  },
+  mounted () {
+    this.init()
+  },
 }
 </script>
 
 <style lang="scss" scoped>
-
 </style>

+ 92 - 0
htmldev/manage/src/views/business/place/release/details.vue

@@ -0,0 +1,92 @@
+<template>
+  <div>
+    <el-dialog :title="exData.id ? '编辑': '新增'" :visible.sync="dialog" width="450px" :close-on-click-modal="false"
+               top="50px">
+      <el-form ref="form" :model="form" label-width="100px" class="bind-phone">
+        <el-form-item v-if="!exData.id" label="项目选择:">
+          <el-select v-model="form.department_project_id">
+            <el-option v-for="(item, index) in projectArr" :key="index" :label="item.project_name"
+                       :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="部门名称:">
+          <el-input v-model="form.department_name" placeholder="请输入部门名称"></el-input>
+        </el-form-item>
+        <el-form-item label="部门描述:">
+          <el-input v-model="form.department_desc" placeholder="请输入部门描述"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer text-center">
+        <el-button @click="dialog = false">取 消</el-button>
+        <el-button type="danger" @click="handleSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+
+export default {
+  props: {
+    value: {
+      type: Boolean,
+      default: true
+    },
+    exData: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    }
+  },
+  computed: {
+    ...mapGetters([
+      'projectArr'
+    ])
+  },
+  data () {
+    return {
+      dialog: !!this.value,
+      form: {
+        department_project_id: undefined,
+        department_name: '',
+        department_desc: ''
+      }
+    }
+  },
+  methods: {
+    async handleSubmit () {
+      let url = this.exData.id ? '/department/edit' : '/department/add'
+      const data = await this.$fetch('/api/auth' + url, { ...this.form })
+      if (data.code === 200) {
+        this.$message.success('提交成功')
+        this.$emit('success')
+        this.dialog = false
+      }
+    }
+  },
+  mounted () {
+    if (this.projectArr.length == 0) {
+      this.$store.dispatch('common/setProjectArr')
+    }
+    if (this.exData.id) {
+      this.form.id = this.exData.id
+      this.form.department_name = this.exData.department_name
+      this.form.department_desc = this.exData.department_desc
+    }
+  },
+  watch: {
+    dialog (val) {
+      if (!val) this.$emit('input', val)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.top-tip {
+  margin-top: -20px;
+  margin-bottom: 20px;
+}
+</style>

+ 105 - 3
htmldev/manage/src/views/business/place/release/index.vue

@@ -1,13 +1,115 @@
 <template>
-  <div>订座安排</div>
+  <div class="padding-20">
+    <div class="search-box">
+      <el-form ref="form" :inline="true" :model="searchForm" clearable label-width="100px" class="mt-10">
+        <el-form-item label="创建时间:">
+          <el-date-picker
+            :editable="false"
+            v-model="time"
+            @change="timearr => {timearr ? (searchForm.start_time = timearr[0] + ' 00:00:00', searchForm.end_time = timearr[1] + ' 23:59:59') : searchForm.start_time = searchForm.end_time = undefined}"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            start-placeholder="开始时间"
+            end-placeholder="结束时间"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="部门名称:">
+          <el-input v-model="searchForm.department_name" placeholder="请输入部门名称" clearable></el-input>
+        </el-form-item>
+        <el-form-item class="ml-10">
+          <el-button icon="el-icon-search" type="primary" @click="searchSubmit">查询</el-button>
+        </el-form-item>
+        <el-form-item class="ml-10">
+          <el-button icon="el-icon-plus" type="primary" @click="add" v-permission="'department_list_add'">新增</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+    <el-table :data="tableData"
+              stripe
+              v-loading="tableLoading"
+              fit
+              class="marginT-10 order-table"
+              border
+              :max-height="vheight">
+      <el-table-column label="日期" prop="id"></el-table-column>
+      <el-table-column label="名称" prop="department_name"></el-table-column>
+      <el-table-column label="开放数量" prop="department_project_name"></el-table-column>
+      <el-table-column label="座位状态" prop="department_project_name"></el-table-column>
+      <el-table-column label="最晚到店时间" prop="department_desc"></el-table-column>
+      <el-table-column label="说明" prop="department_project_name"></el-table-column>
+      <el-table-column label="备注" prop="department_desc"></el-table-column>
+      <el-table-column label="操作">
+        <template slot-scope="scope">
+          <el-button type="text" @click="edit(scope.row)" v-permission="'department_list_edit'">编辑</el-button>
+          <el-button type="text" @click="del(scope.row)" v-permission="'department_list_del'">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      class="marginT-20"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :hide-on-single-page="true"
+      :current-page="page"
+      :page-size="page_size"
+      :page-sizes="[10, 20, 100, 200, 300, 400]"
+      background
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="totalCount"/>
+    <detail v-if="detailsDialog.show" v-model="detailsDialog.show" :exData="detailsDialog.exData"
+            @success="init"></detail>
+  </div>
 </template>
 
 <script>
+import page from '@/mixin/page'
+import detail from './details'
+
 export default {
-  name: 'index'
+  mixins: [page],
+  components: {
+    detail,
+  },
+  data () {
+    return {
+      detailsDialog: {
+        show: false,
+        exData: {}
+      },
+      time: [],
+      searchForm: {},
+      tableData: [],
+      tableUrl: '/department/list'
+    }
+  },
+  methods: {
+    add () {
+      this.detailsDialog.exData = {}
+      this.detailsDialog.show = true
+    },
+    edit (row) {
+      this.detailsDialog.exData = row
+      this.detailsDialog.show = true
+    },
+    del (row) {
+      this.$confirm('确定要删除吗', '确认', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const data = await this.$fetch('/api/auth/department/del', { id: row.id })
+        if (data.code == 200) {
+          this.$message.success('删除成功')
+          this.init()
+        }
+      }).catch(() => {})
+    }
+  },
+  mounted () {
+    this.init()
+  },
 }
 </script>
 
 <style lang="scss" scoped>
-
 </style>