dct 7 ヶ月 前
コミット
6b89de8546

+ 32 - 47
src/components/ReaderInput/index.vue

@@ -1,58 +1,43 @@
 <template>
   <div>
-    <el-tooltip
-      :disabled="!tempValue"
-      transition="none"
-      :content="`${tempValue}${type==='ID'?'(${age}岁)':''}`"
-      placement="right">
-      <el-input
-        ref="input"
-        placeholder="读取卡号"
-        :class="deviceName!=='tecsun'?'readerInput':'readerInput2'"
-        :style="deviceName!=='tecsun'?{width: '310px'}:{width:'200px'}"
-        clearable
-        @blur="$emit('changePapersId')"
-        @change="handleChange"
-        v-model="tempValue">
+    <el-input
+      ref="input"
+      placeholder="读取卡号"
+      :class="deviceName!=='tecsun'?'readerInput':'readerInput2'"
+      :style="deviceName!=='tecsun'?{width: '310px'}:{width:'200px'}"
+      clearable
+      @blur="$emit('changePapersId')"
+      @change="handleChange"
+      v-model="tempValue">
+      <div
+        class="readCard"
+        :style="{right:deviceName!=='tecsun'&&type!=='IC'?'-5px':'-5px'}"
+        slot="suffix"
+        :class="[{active:active},{loading:loading}]"
+      >
         <div
-          class="readCard"
-          :style="{right:deviceName!=='tecsun'&&type!=='IC'?'48px':'-5px'}"
-          slot="suffix"
-          :class="[{active:active},{loading:loading}]"
-        >
+          class="inner"
+          @click="startRead">
+          <i
+            class="el-icon-loading svg-icon"
+            v-if="loading"></i>
+          <svg-icon
+            icon-class="idCard"
+            v-else /> {{ active?'停止':'读取' }}
+        </div>
+
+        <template v-if="type!=='IC'">
           <div
+            v-if="deviceName==='donsee-100R'"
             class="inner"
-            @click="startRead">
-            <i
-              class="el-icon-loading svg-icon"
-              v-if="loading"></i>
+            @click="getDonseeSBK">
             <svg-icon
               icon-class="idCard"
-              v-else /> {{ active?'停止':'读取' }}
+            /> 社保卡
           </div>
-
-          <template v-if="type!=='IC'">
-            <div
-              v-if="deviceName==='donsee-100R'"
-              class="inner"
-              @click="getDonseeSBK">
-              <svg-icon
-                icon-class="idCard"
-              /> 社保卡
-            </div>
-
-            <div
-              v-else-if="deviceName!=='tecsun'&&scenicName!=='仙门山'"
-              class="inner"
-              @click="$refs.SSCQrCodeReader.show()">
-              <svg-icon
-                icon-class="idCard"
-              /> 社保卡
-            </div>
-          </template>
-        </div>
-      </el-input>
-    </el-tooltip>
+        </template>
+      </div>
+    </el-input>
     <SSCQrCodeReader
       ref="SSCQrCodeReader"
       @getSSCList="getSSCList"></SSCQrCodeReader>

+ 34 - 0
src/const/index.js

@@ -178,3 +178,37 @@ export const orderStatusDic = [
     label: '已关闭'
   }
 ]
+
+export const checkTypeDic = [
+  {
+    value: 'qrcode',
+    label: '二维码'
+  },
+  {
+    value: 'idcard',
+    label: '证件号'
+  },
+  {
+    value: 'face',
+    label: '人脸'
+  },
+  {
+    value: 'card',
+    label: 'IC卡'
+  }
+]
+
+export const checkRuleDic = [
+  {
+    value: 1,
+    label: '人工,检票设备核销'
+  },
+  {
+    value: 2,
+    label: '取票即核销'
+  },
+  {
+    value: 3,
+    label: '购买即核销'
+  }
+]

+ 8 - 8
src/filters/index.js

@@ -9,14 +9,14 @@ export const ifNolimit = (input) => {
   return input === -1 ? '不限' : input
 }
 // 票大类团散客
-export const groupIndividual = (num) => {
-  switch (+num) {
-    case 1:
-      return '散客'
-    case 2:
-      return '团客'
-    case 3:
-      return '优惠折扣票'
+export const groupIndividual = (category) => {
+  switch (category) {
+    case 'ticket':
+      return '景区门票'
+    case 'batch':
+      return '场次售票'
+    case 'member':
+      return '年卡次卡'
   }
 }
 // 检票类型

+ 35 - 14
src/pages/sellManage/common/TicketInfo.vue

@@ -2,14 +2,8 @@
   <el-form
     inline
     class="dialog-info"
-    label-width="110px"
+    label-width="90px"
   >
-    <el-form-item label="票种分类">
-      {{ data.category | groupIndividual }}
-    </el-form-item>
-    <el-form-item label="助记符">
-      {{ data.shorthand }}
-    </el-form-item>
     <el-form-item label="销售价格">
       {{ data.price }} 元
     </el-form-item>
@@ -22,11 +16,11 @@
     <el-form-item label="可用日期">
       {{ data.useDateStart | formatDate }} - {{ data.useDateEnd | formatDate }}
     </el-form-item>
-    <el-form-item label="当日游玩时段">
-      {{ data.useDateStart + ' - '+ data.useDateEnd }}
+    <el-form-item label="核销规则">
+      {{ checkRules }}
     </el-form-item>
-    <el-form-item label="是否二次入园">
-      {{ data.check_second | yesOrNo }}
+    <el-form-item label="核销凭证">
+      {{ checkTypes }}
     </el-form-item>
     <div
       class="block-wrap">
@@ -36,10 +30,10 @@
       <ul class="pill-wrap">
         <li
           class="pill"
-          v-for="(item,index) in data.ticketTypeScenic"
+          v-for="(item,index) in ticketTypeScenicList"
           :key="index">
-          <span>{{ item.scenic.name }}</span>
-          <span>{{ data.check_type === 1 && data.scenic_checkTimes_type === 1 ? item.checkLimitTimes+' 次' : '不限次' }} </span>
+          <span>{{ item.scenicName }}</span>
+          <span>{{ item.checkLimitTimes !== -1 ? `${item.checkLimitTimes}次` : '不限次' }} </span>
         </li>
       </ul>
     </div>
@@ -47,6 +41,16 @@
 </template>
 
 <script>
+import { checkTypeDic, checkRuleDic } from '@/const'
+
+const matchItem = (value, dic) => {
+  const item = dic.find(item => `${item.value}` === `${value}`)
+  if (item) {
+    return item.label
+  }
+  return ''
+}
+
 export default {
   props: {
     data: {
@@ -54,6 +58,13 @@ export default {
       default: () => {}
     }
   },
+  data () {
+    return {
+      checkRules: [],
+      checkTypes: [],
+      ticketTypeScenicList: []
+    }
+  },
   filters: {
     complicatedCheckType (arr) {
       switch (arr[0]) {
@@ -77,6 +88,16 @@ export default {
           return ''
       }
     }
+  },
+  watch: {
+    data: {
+      handler (val) {
+        this.checkRules = val.checkRule ? val.checkRule.split(',').map(item => matchItem(item, checkRuleDic)).join('&') : ''
+        this.checkTypes = val.checkType ? val.checkType.split(',').map(item => matchItem(item, checkTypeDic)).join('&') : ''
+        this.ticketTypeScenicList = val.ticketTypeScenicList || []
+      },
+      immediate: true
+    }
   }
 }
 </script>

+ 1 - 1
src/pages/sellManage/common/TicketList.vue

@@ -139,7 +139,7 @@
 
     <ElDialog
       :title="ticketDetail.name"
-      width="600px"
+      width="650px"
       v-model="ticketInfoVisible">
       <TicketInfo :data="ticketDetail"></TicketInfo>
     </ElDialog>

+ 0 - 4
src/pages/sellManage/common/orderItemMixin.js

@@ -57,10 +57,6 @@ export default {
       this.formData = this.$parent.$parent.$refs.formInfo.form
       this.formData.remark = this.remark
       this.formData.pictureRemarks = this.pictureRemarks
-      this.formData.buyerName = this.tickets[0]?.guestName || ''
-      this.formData.buyerPhone = this.tickets[0]?.guestPhone || ''
-      this.formData.buyerIdentify = this.tickets[0]?.guestIdentify || ''
-      this.formData.buyerIdentifyType = this.tickets[0]?.guestIdentifyType || ''
 
       if (this.formData.checkWay === 3) {
         if (this.tickets.some(i => !i.guestIdentify)) {

+ 1 - 21
src/pages/sellManage/retail.vue

@@ -21,24 +21,8 @@
       </div>
 
       <div>
-        <!-- 铭投山庄定制的按订单总价打折 -->
-        <OrderInfoMingtou
-          v-if="['铭投山庄','大陈岛景区'].includes(scenicName)"
-          style="margin-bottom:10px"
-          @clear="handleClear"
-          ref="orderInfo"
-          v-model="orderItems"></OrderInfoMingtou>
-        <!-- 昭苏定制的按每张票打x折 -->
-        <OrderInfoZhaosu
-          v-else-if="['昭苏'].includes(scenicName)"
-          style="margin-bottom:10px"
-          @clear="handleClear"
-          ref="orderInfo"
-          :current-ticket="currentTicket"
-          v-model="orderItems"></OrderInfoZhaosu>
         <!-- 其他景点保持原样 -->
         <OrderInfo
-          v-else
           style="margin-bottom:10px"
           @clear="handleClear"
           ref="orderInfo"
@@ -57,8 +41,6 @@ import TickList from './common/TicketList'
 import QuickType from './common/QuickType'
 import FormInfo from './retail/FormInfo'
 import OrderInfo from './retail/OrderInfo'
-import OrderInfoMingtou from './retail/OrderInfoMingtou'
-import OrderInfoZhaosu from './retail/OrderInfoZhaosu'
 // import OrderRecord from './common/OrderRecord'
 import handleKeyBind from './common/keyBind'
 
@@ -74,9 +56,7 @@ export default {
     TickList,
     FormInfo,
     QuickType,
-    OrderInfo,
-    OrderInfoMingtou,
-    OrderInfoZhaosu
+    OrderInfo
   },
   computed: {
     scenicName () {

+ 27 - 32
src/pages/sellManage/retail/FormInfo.vue

@@ -45,24 +45,24 @@
           verify
           can-be-empty
           label="顾客姓名"
-          prop="guestName">
+          prop="buyerName">
           <el-input
-            v-model="form.guestName"></el-input>
+            v-model="form.buyerName"></el-input>
         </el-form-item>
         <el-form-item
           can-be-empty
           :verify="verifyPhone"
           label="顾客电话"
-          prop="guestPhone">
+          prop="buyerPhone">
           <el-input
-            v-model="form.guestPhone"></el-input>
+            v-model="form.buyerPhone"></el-input>
         </el-form-item>
         <el-form-item
           label="证件类型"
-          prop="guestIdentifyType">
+          prop="buyerIdentifyType">
           <el-select
             :disabled="identifyLockCheckStyle"
-            v-model="form.guestIdentifyType"
+            v-model="form.buyerIdentifyType"
             placeholder="请选择">
             <el-option
               v-for="(item, idx) in papersType"
@@ -77,24 +77,24 @@
             锁定
           </el-checkbox>
         </el-form-item>
-        <el-form-item
+        <!-- <el-form-item
           key="id1"
-          :verify="form.guestIdentifyType === 0 ? verifyId : ''"
+          :verify="form.buyerIdentifyType === 0 ? verifyId : ''"
           can-be-empty
-          v-if="form.guestIdentifyType === 0 || form.guestIdentifyType === 'YONGJIUJULIU'"
+          v-if="form.buyerIdentifyType === 0"
           label="证件号码"
-          prop="guestIdentify">
+          prop="buyerIdentify">
           <ReaderInput
             type="ID"
-            @change="form.guestName = $event.Name,Certificate=$event"
-            v-model="form.guestIdentify"></ReaderInput>
-        </el-form-item>
+            @change="form.buyerName = $event.Name,Certificate=$event"
+            @input="form.buyerIdentify = $event"
+            v-model="form.buyerIdentify"></ReaderInput>
+        </el-form-item> -->
         <el-form-item
-          v-else
           key="id2"
           label="证件号码"
-          prop="guestIdentify">
-          <el-input v-model="form.guestIdentify"></el-input>
+          prop="buyerIdentify">
+          <el-input v-model="form.buyerIdentify"></el-input>
         </el-form-item>
         <el-form-item
           v-if="Certificate.Nation"
@@ -225,7 +225,7 @@ import { verifyId, verifyPhone } from '@/utils/validate'
 import { checkWayList } from '@/assets/staticData'
 import { setTourist } from '@/pages/common'
 import TouristList from '../common/TouristList'
-import ReaderInput from '@/components/ReaderInput'
+// import ReaderInput from '@/components/ReaderInput'
 import moment from 'moment'
 import { IDENTIFY_TYPES } from '@/const'
 import { getTeamList } from '@/api/checker'
@@ -242,8 +242,8 @@ export default {
     }
   },
   components: {
-    TouristList,
-    ReaderInput
+    TouristList
+    // ReaderInput
   },
   computed: {
     category () {
@@ -295,10 +295,10 @@ export default {
         lock: false // 是否可编辑
       }],
       form: {
-        guestIdentify: '',
-        guestName: '',
-        guestIdentifyType: 0,
-        guestPhone: '',
+        buyerIdentify: '',
+        buyerName: '',
+        buyerIdentifyType: 0,
+        buyerPhone: '',
         groupIndividual: 1,
         count: this.$localStore.get('initNum') === '空' ? undefined : 1,
         payChannel: '现金',
@@ -324,7 +324,6 @@ export default {
   created () {
     if (this.isTeam) {
       getTeamList({ pageSize: -1, pageNum: 1 }).then(res => {
-        console.log(res)
         this.teamList = res.data.records || []
       })
     }
@@ -420,11 +419,8 @@ export default {
       this.$refs.form.validate((valid) => {
         if (valid) {
           this.syncTouristList()
-
-          const { guestName, guestIdentify, guestIdentifyType, guestPhone, playDateBegin, playDateEnd } = this.form
-
+          const { playDateBegin, playDateEnd } = this.form
           const { id, name, checkCount, selectBatch, isUseDateLimit } = this.currentTicket
-
           const price = this.currentPrice
 
           if (this.isTeam) {
@@ -461,13 +457,10 @@ export default {
 
           let tickets = this.touristList.map(item => {
             return {
+              ...item,
               ticketTypeId: id,
               checkNum: checkCount,
               price: this.currentPrice,
-              guestName,
-              guestPhone,
-              guestIdentify,
-              guestIdentifyType,
               ticketNo: item.ticketNo,
               batchConfigId: selectBatch?.id || '',
               face: item.face,
@@ -490,11 +483,13 @@ export default {
           })
 
           if (existItem) {
+            Object.assign(existItem, this.form)
             existItem.tickets = existItem.tickets.concat(tickets)
             existItem.count = existItem.tickets.length
             existItem.total = this.$NP.plus(existItem.total, this.totalPrice)
           } else {
             this.orderItems.push({
+              ...this.form,
               keyId: randomString(), // 唯一标识
               id, // 票种Id
               ticketName: name,

+ 4 - 0
src/pages/ticketSetting/ticket/Dialog.vue

@@ -390,6 +390,10 @@
                 label="face">
                 人脸
               </el-checkbox>
+              <el-checkbox
+                label="card">
+                IC卡
+              </el-checkbox>
             </el-checkbox-group>
           </el-form-item>
 

+ 1 - 1
src/router/index.js

@@ -396,7 +396,7 @@ let routerMap = [
       {
         path: 'teamManage',
         name: 'teamManage',
-        component: require('@/pages/checkerManage/termManage').default,
+        component: require('@/pages/checkerManage/teamManage').default,
         meta: { title: '团队管理', permissionName: 'ticket_check:team' }
       },
       {