LaveyD 11 місяців тому
батько
коміт
2cc5c1045b

BIN
public/游客信息导入模板.xlsx


BIN
public/游客信息导入模板1.xlsx


+ 11 - 6
src/pages/queryReport/handOverList.vue

@@ -79,11 +79,6 @@
         <el-table-column
           label="交班统计数据"
           prop="handOverStatistics"
-        >
-        </el-table-column>
-        <el-table-column
-          label="操作"
-          width="120"
         >
           <template slot-scope="scope">
             <el-link
@@ -91,10 +86,17 @@
               @click="viewDetail(scope.row)">
               详情
             </el-link>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="操作"
+          width="120"
+        >
+          <template slot-scope="scope">
             <el-link
               type="primary"
               @click="downloadExport(scope.row)">
-              下载记录
+              下载
             </el-link>
           </template>
         </el-table-column>
@@ -172,6 +174,9 @@ export default {
       })
     },
     viewDetail (row) {
+      this.$router.push({
+        name: 'handOverReport', params: { id: row.id }
+      })
     }
   }
 }

+ 30 - 18
src/pages/queryReport/handOverReport.vue

@@ -11,6 +11,7 @@
           </div>
         </div>
         <el-button
+          v-if="!id"
           type="primary"
           @click="confirmHandOver"
         >
@@ -203,7 +204,7 @@
 </template>
 
 <script>
-import { apiHandOverCurrent, apiHandOverAdd } from '@/api/handOver'
+import { apiHandOverCurrent, apiHandOverAdd, apiHandOverDetail } from '@/api/handOver'
 import { getPayStatus } from '@/utils/index'
 // import ReaderInput from '@/components/ReaderInput'
 
@@ -233,6 +234,7 @@ export default {
     return {
       activeName: 'saleStat',
       loading: false,
+      id: '',
       adminName: '',
       handOverTime: '',
       saleList: [],
@@ -240,32 +242,42 @@ export default {
     }
   },
   created () {
+  },
+  activated () {
+    const { id } = this.$route.params
+    this.id = id || ''
     this.queryList()
   },
   methods: {
     getPayStatus,
     reset () {
     },
-    queryList () {
+    async queryList () {
       this.loading = true
-      apiHandOverCurrent().then(res => {
-        if (res.data) {
-          const { adminName, handOverStartTime, handOverEndTime, handOverStatistics } = res.data
-          this.adminName = adminName
-          this.handOverTime = `${handOverStartTime} - ${handOverEndTime}`
+      const { id } = this
+      const handler = id ? apiHandOverDetail : apiHandOverCurrent
+      const params = id ? {
+        id: this.id,
+        pageSize: -1,
+        pageNum: 1
+      } : {}
+      const res = await handler(params)
+      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)
-          }
+        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
-      })
+      }
+
+      this.loading = false
     },
     confirmHandOver () {
       this.$confirm('确认交班?', '提示', {

+ 17 - 10
src/pages/sellManage/common/TouristList.vue

@@ -64,6 +64,7 @@
 
           <el-upload
             :action="uploadUrl"
+            :headers="requestHeader"
             :auto-upload="true"
             :show-file-list="false"
             :on-success="handleSuccess"
@@ -289,6 +290,7 @@ import { randomString } from '@/utils'
 import { debounce } from 'throttle-debounce'
 import { getTicketInStockByQrcodeAndNumber } from '@/api/ticketType'
 import { getAgeByCardId } from '@/utils/index.js'
+import { getToken } from '@/utils/auth'
 
 export default {
   props: {
@@ -360,6 +362,11 @@ export default {
           message: 'IC卡号码'
         }
       ]
+    },
+    requestHeader () {
+      return {
+        SaToken: getToken()
+      }
     }
   },
   data () {
@@ -383,7 +390,7 @@ export default {
       },
       papersOption: IDENTIFY_TYPES,
       uploadUrl: '',
-      showUpload: false
+      showUpload: true
     }
   },
   methods: {
@@ -609,14 +616,14 @@ export default {
       window.location.href = require('path').join(__static, '游客信息导入模板.xlsx')
     },
     handleSuccess (response, file, fileList) {
-      if (response.resCode === 200) {
+      if (response.code === '200') {
         this.$message.success('上传成功')
         setTourist(this.touristData, -this.touristData.length) // 清空现有数组
-        setTourist(this.touristData, response.extraInfo.length) // 预先构建导入数组
+        setTourist(this.touristData, response.data.length) // 预先构建导入数组
         this.touristData.forEach((v, i) => { // 填充导入数据
-          v.guestName = response.extraInfo[i].guestName
-          v.guestIdentify = response.extraInfo[i].guestIdentify
-          v.guestIdentifyType = this.papersOption.find(v => v.label === response.extraInfo[i].guestIdentifyType).id
+          v.guestName = response.data[i].guestName
+          v.guestIdentify = response.data[i].guestIdentify
+          v.guestIdentifyType = this.papersOption.find(v => v.label === response.data[i].guestIdentifyType).id
           v.idKey = randomString()
         })
       } else {
@@ -649,9 +656,9 @@ export default {
       })
     },
     async getTicketNos () {
-      const { extraInfo } = await getTicketInStockByQrcodeAndNumber({ keyWords1: this.touristData[0].ticketNo, keyWords2: this.model.touristList.length })
+      const { data } = await getTicketInStockByQrcodeAndNumber({ keyWords1: this.touristData[0].ticketNo, keyWords2: this.model.touristList.length })
       this.touristData.forEach((v, i) => {
-        this.$set(v, 'ticketNo', extraInfo[i])
+        this.$set(v, 'ticketNo', data[i])
       })
     }
   },
@@ -679,8 +686,8 @@ export default {
   created () {
     const Store = require('electron-store')
     const localStore = new Store()
-    this.uploadUrl = localStore.get('serverUrl') + '/importMission/importTravelInfo'
-    this.showUpload = (this.$route.name === 'group' || this.$route.name === 'retail')
+    this.uploadUrl = localStore.get('serverUrl') + 'admin/util/importGuest'
+    // this.showUpload = (this.$route.name === 'group' || this.$route.name === 'retail')
     // 20230506 除了团体售票(group),散客售票(retail)现在也需要显示“下载模板”和“导入模板”
   },
   beforeDestroy () {

+ 1 - 1
src/pages/sellManage/preOrder/TouristList.vue

@@ -320,7 +320,7 @@ export default {
         }
       }),
       uploadUrl: '',
-      showUpload: false
+      showUpload: true
     }
   },
   methods: {