Xiao_123 4 hónapja
szülő
commit
21140979b6

+ 17 - 17
src/router/modules/components/recruit/enterprise.js

@@ -371,22 +371,22 @@ const enterprise = [
       }
     ]
   },
-  // {
-  //   path: '/recruit/enterprise/newlyAppointed',
-  //   component: Layout,
-  //   name: 'Newly Appointed',
-  //   meta: {
-  //     title: '门墩儿新任命',
-  //     enName: 'Newly Appointed',
-  //     icon: 'mdi-new-box'
-  //   },
-  //   children: [
-  //     {
-  //       path: '/recruit/enterprise/newlyAppointed',
-  //       show: true,
-  //       component: () => import('@/views/recruit/enterprise/newlyAppointed/index.vue')
-  //     }
-  //   ]
-  // }
+  {
+    path: '/recruit/enterprise/newlyAppointed',
+    component: Layout,
+    name: 'Newly Appointed',
+    meta: {
+      title: '门墩儿新任命',
+      enName: 'Newly Appointed',
+      icon: 'mdi-new-box'
+    },
+    children: [
+      {
+        path: '/recruit/enterprise/newlyAppointed',
+        show: true,
+        component: () => import('@/views/recruit/enterprise/newlyAppointed/index.vue')
+      }
+    ]
+  }
 ]
 export default enterprise

+ 20 - 20
src/router/modules/components/recruit/personCenter.js

@@ -190,27 +190,27 @@ const personCenter = [
             ]
           },
           // 收货地址
-          // {
-          //   path: '/recruit/personal/personalCenter/shippingAddress',
-          //   name: 'Shipping Address',
-          //   component: () => import('@/views/recruit/personal/PersonalCenter/shippingAddress/index.vue'),
-          //   meta: {
-          //     title: '收货地址',
-          //     enName: 'Shipping Address',
-          //     icon: 'mdi-map-marker-outline'
-          //   }
-          // },
+          {
+            path: '/recruit/personal/personalCenter/shippingAddress',
+            name: 'Shipping Address',
+            component: () => import('@/views/recruit/personal/PersonalCenter/shippingAddress/index.vue'),
+            meta: {
+              title: '收货地址',
+              enName: 'Shipping Address',
+              icon: 'mdi-map-marker-outline'
+            }
+          },
           // 我的奖品
-          // {
-          //   path: '/recruit/personal/personalCenter/myPrizes',
-          //   name: 'My Prizes',
-          //   component: () => import('@/views/recruit/personal/PersonalCenter/myPrizes/index.vue'),
-          //   meta: {
-          //     title: '我的奖品',
-          //     enName: 'My Prizes',
-          //     icon: 'mdi-star-four-points-outline'
-          //   }
-          // },
+          {
+            path: '/recruit/personal/personalCenter/myPrizes',
+            name: 'My Prizes',
+            component: () => import('@/views/recruit/personal/PersonalCenter/myPrizes/index.vue'),
+            meta: {
+              title: '我的奖品',
+              enName: 'My Prizes',
+              icon: 'mdi-star-four-points-outline'
+            }
+          },
         ]
       }
     ]

+ 1 - 1
src/views/mall/components/GoodsItem/index.vue

@@ -12,7 +12,7 @@
           <span v-if="item.count" class="color-999 font-size-13 ml-1">x {{ item.count }}</span>
         </p>
         <p v-if="lottery && lottery.length" class="font-size-14 color-primary text-decoration-underline" @click.stop="router.push('/recruit/personal/personalCenter/myPrizes')">
-          品:{{ lottery.map(e => e.prize.name).join('、') }}
+          品:{{ lottery.map(e => e.prize.name).join('、') }}
         </p>
       </div>
       <div v-if="[10, 20, 30].includes(orderStatus) && item.extend && item.extend?.fileUrls && item.extend?.fileUrls?.length" class="d-flex" style="max-width: 160px;">

+ 1 - 1
src/views/mall/components/confirm_order/index.vue

@@ -83,7 +83,7 @@ let closeConfirm = false // 关闭路由拦截
 const paySuccess = (e) => {
   closeConfirm = true
   closeConfirm = true
-  router.replace({ path: '/mall/payOver', query: { price: e.price, orderId: orderId.value, spuId } })
+  router.replace({ path: '/mall/payOver', query: { price: e.price, orderId: orderId.value, spuId, type: JSON.parse(skuInfo.value).city?.length ? 'luck' : 'normal' } })
   // setTimeout(() => { router.replace('/recruit/personal/personalCenter/tradeOrder?key=1') }, 500);
 }
 const payCancel = () => {

+ 8 - 7
src/views/mall/components/prizeDraw.vue

@@ -2,12 +2,12 @@
   <div class="prizeDrawBox">
     <div class="d-flex flex-column align-center">
       <div class="numberBox mb-5">房券抽奖</div>
-      <gridPage v-if="props.type === '1'" :lotteryId="props.lotteryId" :disabled="disabled" @end="endCallback"></gridPage>
-      <slotMachinePage v-if="props.type === '2'" :lotteryId="props.lotteryId" height="120" :disabled="disabled" @end="endCallback"></slotMachinePage>
+      <gridPage v-if="props.type === '1'" :lotteryId="props.lotteryId" :disabled="disabled" @start="disabled = true" @end="endCallback"></gridPage>
+      <slotMachinePage v-if="props.type === '2'" :lotteryId="props.lotteryId" height="120" :class="{'mb-3': disabled}" :disabled="disabled" @start="disabled = true" @end="endCallback"></slotMachinePage>
 
-      <v-card min-height="300" width="600" class="mt-5 pa-5">
+      <v-card min-height="300" width="600" class="pa-5" :class="{'mt-3': !disabled}" style="position: relative;">
         <div v-if="showDialog">
-          <p v-for="(k, i) in prizeData" :key="i">{{ k.prize.prompt }}</p>
+          <p v-for="(k, i) in prizeData" :key="i" class="color-primary">{{ k.prize.prompt }}</p>
           <p>凭此房券在规定有效期内可享受免费住宿一晚。</p>
           <p class="mb-5">请提供收货地址,以便安排房券派送。</p>
 
@@ -47,6 +47,7 @@
             </div>
           </div>
         </div>
+        <div v-else class="color-warning text-center" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">请先进行抽奖</div>
       </v-card>
     </div>
   </div>
@@ -126,9 +127,9 @@ if (props.orderId) getRecord()
 
 const showDialog = ref(false)
 const endCallback = () => {
-  if (!prizeData.value.length) return Snackbar.warning('您已经抽过奖了哦')
+  // if (!prizeData.value.length) return Snackbar.warning('您已经抽过奖了哦')
   showDialog.value = true
-  disabled.value = true
+  // disabled.value = true
 }
 
 function checkValue(obj) {
@@ -148,7 +149,7 @@ const handleSubmit = async () => {
     query = newAddress.value
   } else query = address.value.find(item => item.id === addressSelect.value)
   await luckyLotteryRecordReceive({ id: prizeData.value[0].record.id, receiveInfo: JSON.stringify(query) })
-  Snackbar.success('领取成功,待商家发货')
+  Snackbar.success('奖品领取成功,待商家发货')
   router.push('/recruit/personal/personalCenter/tradeOrder?key=1')
 }
 </script>

+ 5 - 5
src/views/mall/components/prizeDraw/slotMachine.vue

@@ -1,6 +1,6 @@
 <!-- 老虎机 -->
 <template>
-  <div class="mb-n5" v-if="prizes?.length">
+  <div v-if="prizes?.length">
     <SlotMachine
       ref="myLucky"
       width="300px"
@@ -16,6 +16,7 @@
       @end="endCallback"
     />
     <v-img
+      v-if="!disabled"
       class="cursor-pointer"
       src="https://img1.baidu.com/it/u=3949019928,2138080900&fm=253&fmt=auto&app=138&f=PNG?w=300&h=300"
       :width="100"
@@ -28,7 +29,7 @@
 <script setup>
 defineOptions({name: 'prizeDraw-LuckyGrid'})
 import { getPrizeByLotteryId } from '@/api/mall/prize'
-import Snackbar from '@/plugins/snackbar'
+// import Snackbar from '@/plugins/snackbar'
 import { ref } from 'vue'
 
 const emit = defineEmits(['start', 'end'])
@@ -50,7 +51,7 @@ const defaultConfig = {
   rowSpacing: '10px',
   colSpacing: '10px',
   accelerationTime: 1000, // 开始旋转时间
-  decelerationTime: 5000, // 缓慢停止时间
+  decelerationTime: 3000, // 缓慢停止时间
 }
 
 // 根据活动id获取奖品列表
@@ -74,13 +75,12 @@ const getPrizeData = async (lotteryId) => {
 if (props.lotteryId) getPrizeData()
 
 const startCallback = () => {
-  if (props.disabled) return Snackbar.warning('您已经参与过该抽奖活动了哦')
+  // if (props.disabled) return Snackbar.warning('您已经参与过该抽奖活动了哦')
   emit('start')
   // 调用抽奖组件的play方法开始游戏
   myLucky.value.play()
   // 模拟调用接口异步抽奖
   setTimeout(() => {
-    // 假设后端返回的中奖索引是0
     const index = 3
     // 调用stop停止旋转并传递中奖索引
     myLucky.value.stop(index)

+ 3 - 4
src/views/mall/payOver/index.vue

@@ -13,22 +13,21 @@ defineOptions({name: 'payOver-index'})
 import { ref } from 'vue'
 import showText from './components/show.vue'
 import prizeDraw from '@/views/mall/components/prizeDraw.vue'
-import { useRoute, useRouter } from 'vue-router'
+import { useRoute } from 'vue-router'
 import { getPrizeByGoodsId } from '@/api/mall/prize'
 
-const { spuId, orderId } = useRoute().query
+const { spuId, orderId, type } = useRoute().query
 const showPrizeDraw = ref(false)
 const lotteryId = ref('')
 const getLottery = async () => {
   if (!spuId) return
   const data = await getPrizeByGoodsId(spuId)
-  showPrizeDraw.value = data && Object.keys(data).length > 0
+  showPrizeDraw.value = data && Object.keys(data).length > 0 && type === 'luck'
 
   lotteryId.value = data.id
 }
 getLottery()
 
-const router = useRouter()
 const handleReceive = () => {
 }
 </script>

+ 17 - 8
src/views/recruit/personal/PersonalCenter/myPrizes/index.vue

@@ -18,14 +18,22 @@
         <div class="ml-1">{{ item.prize.name }}</div>
       </div>
     </template>
-    <template #deliverInfo="{ item }">
-      {{ item.record.deliverInfo ? JSON.parse(item.record.deliverInfo).name + '-' + JSON.parse(item.record.deliverInfo).no  : ''}}
-    </template>
     <template #receiveInfo="{ item }">
-      {{ orderReceiveInfo(item) }}
+      <div class="ellipsis" style="max-width: 200px;">
+        {{ orderReceiveInfo(item) }}
+        <v-tooltip activator="parent" location="top">{{ orderReceiveInfo(item) }}</v-tooltip>
+      </div>
+    </template>
+    <template #deliverInfo="{ item }">
+      <div class="ellipsis" style="max-width: 200px;">
+        {{ item.record.deliverInfo ? JSON.parse(item.record.deliverInfo).name + '-' + JSON.parse(item.record.deliverInfo).no  : ''}}
+        <v-tooltip activator="parent" location="top">{{ item.record.deliverInfo ? JSON.parse(item.record.deliverInfo).name + '-' + JSON.parse(item.record.deliverInfo).no  : ''}}</v-tooltip>
+      </div>
     </template>
     <template #actions="{ item }">
-      <v-btn v-if="!item.record.isReceive && !item.record.receiveInfo" color="primary" @click.stop="handleReceive(item)" variant="text">领取</v-btn>
+      <v-btn v-if="!item.record.isReceive && !item.record.receiveInfo" color="primary" @click.stop="handleReceive(item)" variant="outlined">领取</v-btn>
+      <span v-else-if="item.record.deliverInfo" class="color-success">已发货</span>
+      <span v-else class="color-warning">等待发货</span>
     </template>
   </CtTable>
 
@@ -42,6 +50,7 @@ import { ref, computed } from 'vue'
 import SelectAddress from '@/views/recruit/personal/PersonalCenter/shippingAddress/index.vue'
 import Snackbar from '@/plugins/snackbar'
 import { getLuckLotteryRecordPage, luckyLotteryRecordReceive } from '@/api/mall/prize'
+import { timesTampChange } from '@/utils/date'
 
 const queryParams = ref({
 	pageNo: 1,
@@ -51,11 +60,11 @@ const total = ref(0)
 const items = ref([])
 
 const headers = [
-  { title: '活动名称', key: 'lottery.name', sortable: false },
+  // { title: '活动名称', key: 'lottery.name', sortable: false },
   { title: '奖品信息', key: 'prize', sortable: false },
-  { title: '是否领取', key: 'isReceive', sortable: false, value: item => item.record.isReceive ? '是' : '否' },
   { title: '收货信息', key: 'receiveInfo', sortable: false },
-  { title: '快递信息', key: 'deliverInfo', sortable: false },
+  { title: '发货信息', key: 'deliverInfo', sortable: false },
+  { title: '中奖时间', key: 'record.createTime', sortable: false, value: item => timesTampChange(item.record.createTime) },
   { title: '操作', key: 'actions', sortable: false }
 ]
 

+ 1 - 1
src/views/recruit/personal/PersonalCenter/tradeOrder/components/detail.vue

@@ -23,7 +23,7 @@
           </template>
           <template #spuName="{ item }">
             <span class="color-primary cursor-pointer" @click="handleToGoodsDetail(item)">{{ item.spuName }}</span>
-            <p v-if="order.lottery && order.lottery.length" class="color-999 color-primary mt-1 cursor-pointer text-decoration-underline" @click.stop="router.push('/recruit/personal/personalCenter/myPrizes')">品:{{ order.lottery.map(e => e.prize.name).join('、') }}</p>
+            <p v-if="order.lottery && order.lottery.length" class="color-999 color-primary mt-1 cursor-pointer text-decoration-underline" @click.stop="router.push('/recruit/personal/personalCenter/myPrizes')">品:{{ order.lottery.map(e => e.prize.name).join('、') }}</p>
           </template>
           <template #actions="{ item }">
             <div v-if="[10, 20, 30].includes(order.status) && item.extend && item.extend.fileUrls && item.extend.fileUrls.length > 0">

+ 7 - 1
src/views/recruit/personal/PersonalCenter/tradeOrder/dynamic/pointExchangeRecord.vue

@@ -12,6 +12,12 @@
     itemKey="id"
     @pageHandleChange="handleChangePage"
   >
+    <template #contactAddress="{ item }">
+      <div class="ellipsis" style="max-width: 250px;">
+        {{ item.contactAddress }}
+        <v-tooltip activator="parent" location="top">{{ item.contactAddress }}</v-tooltip>
+      </div>
+    </template>
   </CtTable>
 </template>
 
@@ -27,7 +33,7 @@ const headers = [
   { title: '收货人姓名', key: 'contactName', sortable: false },
   { title: '联系电话/收货人电话', key: 'contactPhone', sortable: false },
   { title: '收货详细地址', key: 'contactAddress', sortable: false },
-  { title: '订单编号', key: 'orderNo', sortable: false }
+  { title: '发货订单编号', key: 'orderNo', sortable: false }
 ]
 const queryParams = ref({
   pageNo: 1,

+ 2 - 2
src/views/recruit/personal/PersonalCenter/tradeOrder/index.vue

@@ -18,8 +18,8 @@ import { useRoute } from 'vue-router'
 const tab = ref(0)
 const items = shallowRef([
   { label: '余额充值、购买会员订单', value: 0, path: RechargeVipOrder },
-  // { label: '商城交易订单', value: 1, path: MallOrder },
-  // { label: '积分兑换记录', value: 2, path: PointExchangeRecord }
+  { label: '商城交易订单', value: 1, path: MallOrder },
+  { label: '积分兑换记录', value: 2, path: PointExchangeRecord }
 ])
 const route = useRoute()
 const { key } = route.query