LaveyD 8 kuukautta sitten
vanhempi
commit
388bf7cada

+ 1 - 2
src/App.vue

@@ -81,8 +81,7 @@ export default {
   methods: {
     checkConfig () {
       const serverUrl = this.$localStore.get('serverUrl')
-      const updateUrl = this.$localStore.get('updateUrl')
-      if (!serverUrl || !updateUrl) {
+      if (!serverUrl) {
         this.$router.push('/config')
         return false
       } else {

+ 7 - 2
src/pages/config/index.vue

@@ -374,6 +374,8 @@
 
 <script>
 import { isUrl, isEmpty } from '@/utils'
+import { forEach } from 'lodash'
+
 // const printer = require('printer')
 const { ipcRenderer } = require('electron')
 const ipc = require('electron').ipcRenderer
@@ -530,7 +532,11 @@ export default {
           if (!this.customLogoUrl) {
             await this.deleteFile(this.form.customLogo)
           }
-          this.$localStore.set(this.form)
+
+          forEach(this.form, (value, key) => {
+            this.$localStore.set(key, value)
+          })
+          // this.$localStore.set(this.form)
           this.$message.success('配置完成,请等待刷新')
 
           setTimeout(() => {
@@ -635,7 +641,6 @@ export default {
   },
   created () {
     this.init()
-    this.customMazuSetupProductUrl() // 妈祖景区写死生产地址
   },
   beforeDestroy () {
     ipc.removeListener('selected-directory', this.handleSelectDirectory)

+ 299 - 0
src/pages/queryReport/handOverReport.vue

@@ -0,0 +1,299 @@
+<template>
+  <div class="form-wrap">
+    <div style="padding: 10px">
+      <div class="opt-area">
+        <div class="info">
+          <div class="name">
+            售票员:{{ adminName }}
+          </div>
+          <div style="margin-left: 20px">
+            时间:{{ handOverTime }}
+          </div>
+        </div>
+        <el-button
+          type="primary"
+          @click="confirmHandOver"
+        >
+          确认交班
+        </el-button>
+      </div>
+      <el-tabs
+        v-model="activeName">
+        <el-tab-pane
+          name="saleStat"
+          label="售票统计">
+          <div class="table-box">
+            <el-table
+              stripe
+              border
+              :data="saleList">
+              <el-table-column
+                prop="ticketTypeName"
+                label="票种"
+              >
+                <template slot-scope="scope">
+                  {{ scope.row.ticketTypeName === '-' ? '总计' : scope.row.ticketTypeName }}
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="salePrice"
+                label="售票金额">
+              </el-table-column>
+
+              <el-table-column
+                prop="saleNum">
+                <template
+                  slot="header">
+                  售票张数
+                  <Tip msg="一码多人时算一张"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="saleCheckNum"
+                label="售票人数">
+                <template
+                  slot="header">
+                  售票人数
+                  <Tip msg="一码多人时算多张"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="actualCheckNum"
+                label="售票总人次">
+                <template
+                  slot="header">
+                  售票总人次
+                  <Tip msg="售票人数 × 票种人数"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="cancelPrice"
+                label="退票金额">
+              </el-table-column>
+
+              <el-table-column
+                width="100"
+                prop="cancelNum"
+                label="退票张数">
+                <template
+                  slot="header">
+                  退票张数
+                  <Tip msg="一码多人时算一张"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="cancelCheckNum"
+                label="退票人数">
+                <template
+                  slot="header">
+                  退票人数
+                  <Tip msg="一码多人时算多张"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="actualPrice"
+                label="实售金额">
+              </el-table-column>
+              <el-table-column
+                prop="actualNum"
+                label="实售张数">
+              </el-table-column>
+              <el-table-column
+                prop="actualCheckNum"
+                label="实售人数">
+              </el-table-column>
+            </el-table>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane
+          name="printStat"
+          label="取票统计">
+          <div class="table-box">
+            <el-table
+              stripe
+              border
+              :data="printList">
+              <el-table-column
+                prop="payChannel"
+                label="支付方式">
+              </el-table-column>
+              <el-table-column
+                prop="salePrice"
+                label="售票金额">
+              </el-table-column>
+
+              <el-table-column
+                prop="saleNum">
+                <template
+                  slot="header">
+                  售票张数
+                  <Tip msg="一码多人时算一张"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="saleCheckNum"
+                label="售票人数">
+                <template
+                  slot="header">
+                  售票人数
+                  <Tip msg="一码多人时算多张"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="actualCheckNum"
+                label="售票总人次">
+                <template
+                  slot="header">
+                  售票总人次
+                  <Tip msg="售票人数 × 票种人数"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="cancelPrice"
+                label="退票金额">
+              </el-table-column>
+
+              <el-table-column
+                width="100"
+                prop="cancelNum"
+                label="退票张数">
+                <template
+                  slot="header">
+                  退票张数
+                  <Tip msg="一码多人时算一张"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="cancelCheckNum"
+                label="退票人数">
+                <template
+                  slot="header">
+                  退票人数
+                  <Tip msg="一码多人时算多张"></Tip>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="actualPrice"
+                label="实售金额">
+              </el-table-column>
+              <el-table-column
+                prop="actualNum"
+                label="实售张数">
+              </el-table-column>
+              <el-table-column
+                prop="actualCheckNum"
+                label="实售人数">
+              </el-table-column>
+            </el-table>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+
+<script>
+import { apiHandOverCurrent, apiHandOverAdd } from '@/api/handOver'
+import { getPayStatus } from '@/utils/index'
+// import ReaderInput from '@/components/ReaderInput'
+
+export default {
+  name: 'handOverReport',
+  computed: {
+    salesList () {
+      return this.$store.state.user.salesList
+    },
+    saleChannel () {
+      return this.$store.state.app.saleChannel
+    },
+    payChannelOptions () {
+      return this.$store.getters.payChannelOptions
+    },
+    ticketTypeList () {
+      return this.$store.state.app.ticketTypeList
+    },
+    scenicList () {
+      return this.$store.state.app.scenicList
+    }
+  },
+  components: {
+    // ReaderInput
+  },
+  data () {
+    return {
+      activeName: 'saleStat',
+      loading: false,
+      adminName: '',
+      handOverTime: '',
+      saleList: [],
+      printList: []
+    }
+  },
+  created () {
+    this.queryList()
+  },
+  methods: {
+    getPayStatus,
+    reset () {
+    },
+    queryList () {
+      this.loading = true
+      apiHandOverCurrent().then(res => {
+        if (res.data) {
+          const { adminName, handOverStartTime, handOverEndTime, handOverStatistics } = res.data
+          this.adminName = adminName
+          this.handOverTime = `${handOverStartTime} - ${handOverEndTime}`
+
+          try {
+            const stat = JSON.parse(handOverStatistics) || {}
+            console.log(stat, 'bbb')
+            this.saleList = stat.order_sale || []
+            this.printList = stat.payChannel_sale || []
+          } catch (error) {
+            console.error(error)
+          }
+        }
+      }).finally(() => {
+        this.loading = false
+      })
+    },
+    confirmHandOver () {
+      this.$confirm('确认交班?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        apiHandOverAdd().then(res => {
+          if (res.data.code === '200') {
+            this.$message.success('操作成功')
+          }
+        })
+      }).catch(() => {
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.form-wrap {
+  .opt-area {
+    display: flex;
+    justify-content: space-between;
+
+    .info {
+      display: flex;
+    }
+  }
+}
+</style>

+ 1 - 0
src/pages/systemSetting/account/EditDialog.vue

@@ -99,6 +99,7 @@
             :value="0"
             label="员工"></el-option>
         </el-select>
+        <Tip msg="普通员工只可以浏览自己的数据 管理员可以浏览全部数据 "></Tip>
       </el-form-item>
     </div>
     <div class="dialog-btn-wrap">

+ 4 - 4
src/pages/systemSetting/commonSetting.vue

@@ -72,7 +72,9 @@
             verify
             label="配置键"
             prop="configKey">
-            <el-input v-model="currentItem.configKey"></el-input>
+            <el-input
+              v-model="currentItem.configKey"
+              disabled></el-input>
           </el-form-item>
           <el-form-item
             verify
@@ -162,10 +164,8 @@ export default {
       if (res.data.code === '200') {
         this.$message.success('操作成功')
         this.dialogVisible = false
-        this.getConfig()
-      } else {
-        this.$message.error(res.msg)
       }
+      this.getConfig()
     },
     // 删除免票配置项
     deleteConfig (configIndex) {

+ 1 - 0
src/permission.js

@@ -25,6 +25,7 @@ router.beforeEach((to, from, next) => {
       // } else {
       //   next()
       // }
+      // 根据权限加载路由
       if (!store.getters.addRouters.length) {
         store.dispatch('GetInfo').then(res => {
           store.dispatch('GenerateRoutes', res.data).then(() => { // 根据roles权限生成可访问的路由表

+ 12 - 6
src/router/index.js

@@ -115,6 +115,18 @@ let routerMap = [
         name: 'salesQuery',
         component: require('@/pages/queryReport/salesQuery').default,
         meta: { title: '售票记录', permissionName: 'order-center:sale-list' }
+      },
+      {
+        path: 'handOverReport',
+        name: 'handOverReport',
+        component: require('@/pages/queryReport/handOverReport').default,
+        meta: { title: '交班报表', permissionName: 'order-center:hand-over-report' }
+      },
+      {
+        path: 'handOverList',
+        name: 'handOverList',
+        component: require('@/pages/queryReport/handOverList').default,
+        meta: { title: '交班记录', permissionName: 'order-center:hand-over-list' }
       }
     ]
   },
@@ -261,12 +273,6 @@ let routerMap = [
         name: 'reportList',
         component: require('@/pages/queryReport/reportList').default,
         meta: { title: '报表列表', permissionName: 'statistics-center:report-list' }
-      },
-      {
-        path: 'handOverList',
-        name: 'handOverList',
-        component: require('@/pages/queryReport/handOverList').default,
-        meta: { title: '交班记录', permissionName: 'statistics-center:hand-over-list' }
       }
     ]
   },

+ 18 - 5
src/styles/sidebar.scss

@@ -108,14 +108,17 @@
     }
   }
   .hideSidebar {
-    .logo{
-      display: none;
+    .left-menu {
+      .title {
+        width: 40px;
+      }
     }
     .sidebar-container {
-      width: 36px !important;
+      width: 50px !important;
+      padding-top: 20px;
     }
     .main-container {
-      margin-left: 36px;
+      margin-left: 50px;
     }
     .submenu-title-noDropdown {
       padding-left: 10px !important;
@@ -126,6 +129,7 @@
     }
     .el-submenu {
       overflow: hidden;
+      margin: 5px 0;
       &>.el-submenu__title {
         padding-left: 9px !important;
         .el-submenu__icon-arrow {
@@ -184,4 +188,13 @@
 //   .svg-icon{
 //     fill: #121958 !important;
 //   }
-// }
+// }
+
+.el-menu--vertical {
+  left: 46px !important;
+  .el-menu-item {
+    &.is-active {
+      color: #fff !important;
+    }
+  }
+}