Files
asan-service/pages/account/guarantee/index.vue
T
2023-08-17 13:05:51 +03:30

192 lines
6.2 KiB
Vue

<template>
<user-dashboard-container page-class="guarantee" panel-title="لیست گارانتی">
<div class="filter mb-5">
<h4 style="display: inline-block; margin-left: 15px">مشاهده لیست:</h4>
<button class="switchBtns btn" :class="type === 'ttl' && 'btn-primary'" @click="type = 'ttl'">
ارسال شده ها
</button>
<button class="switchBtns btn" :class="type === 'atl' && 'btn-primary'" @click="type = 'atl'">
پذیرش شده ها
</button>
</div>
<div v-loading="fetching" class="tableBox">
<table class="qaurantee" :class="type === 'atl' && 'atl'">
<thead>
<tr>
<th class="index-atl">ردیف</th>
<th>شماره پذیرش موقت</th>
<th>تاریخ ارسال فرم</th>
<template v-if="type === 'atl'">
<th>شماره پذیرش دائم</th>
<th>تاریخ پذیرش</th>
<th>شماره بیجک</th>
<th>نظر سنجی</th>
</template>
<th class="brand">نوع</th>
<th>جزئیات</th>
</tr>
</thead>
<tbody>
<template v-if="filteredList.length">
<tr v-for="(item, index) in filteredList" :key="item._id">
<td class="index-atl">
<span>{{ index + 1 }}</span>
</td>
<td>
<span>{{ item.TempReceiptTransNumber }}</span>
</td>
<td>
<span>{{ $jDate(item.TempReceiptTransDate) }}</span>
</td>
<template v-if="type === 'atl'">
<td>
<span>{{ item.ItemReceptionTransNumber }}</span>
</td>
<td>
<span>{{ $jDate(item.ItemReceptionTransDate) }}</span>
</td>
<td>
<span>{{ item.deliveryCode || '-' }}</span>
</td>
<td>
<span v-if="checkSurveys(item.ItemReceptionTransNumber)" style="color: green">نظر ثبت شده</span>
<span v-else>
<nuxt-link
:to="{ name: 'account-survey', query: { code: item.ItemReceptionTransNumber } }"
style="color: #065495; cursor: pointer"
>
ثبت نظر
</nuxt-link>
</span>
</td>
</template>
<td class="brand">
<i
v-if="item.db_name === 'verity'"
class="fas fa-phone-laptop"
title="لوازم جانبی کامپیوتر و موبایل"
></i>
<i v-if="item.db_name === 'panatech'" class="fas fa-photo-video" title="لوازم صوتی و تصویری خودرو"></i>
</td>
<td>
<nuxt-link
:to="{
name: 'account-guarantee-view',
query: {
ttn: item.TempReceiptTransNumber,
atn: item.ItemReceptionTransNumber || undefined,
host: item.host,
db_name: item.db_name
}
}"
class="btn btn-primary"
>
مشاهده
</nuxt-link>
</td>
</tr>
</template>
<tr v-else>
<td class="noItem">
<span>هیچ اطلاعاتی وجود ندارد</span>
</td>
</tr>
</tbody>
</table>
</div>
<table-notice />
</user-dashboard-container>
</template>
<script>
export default {
name: 'AccountGuaranteeList',
layout: 'user',
data() {
return {
verityTransactions: [],
panatechTransactions: [],
agentsTransactions: [],
surveys: [],
fetching: false
}
},
computed: {
type: {
get() {
return this.$route.query.type
},
set(val) {
this.$router.push({ name: 'account-guarantee', query: { type: val } })
}
},
totalItems() {
const totalArray = []
for (const item of this.verityTransactions) {
totalArray.push({ ...item, host: 'ar', db_name: 'verity' })
}
for (const item of this.panatechTransactions) {
totalArray.push({ ...item, host: 'ar', db_name: 'panatech' })
}
for (const item of this.agentsTransactions) {
totalArray.push({ ...item, host: 'as' })
}
return totalArray
},
filteredList() {
return this.totalItems
.filter(item => {
if (this.type === 'ttl') return !item.ItemReceptionTransNumber
else if (this.type === 'atl') return item.ItemReceptionTransNumber
return false
})
.reverse()
}
},
async mounted() {
try {
this.fetching = true
const user = this.$auth.user
const verityData = {
url: `/api/GetItemReceptionInfo?BusinessCode=${user.verity_businessCode}`,
db: 'verity'
}
const panatechData = {
url: `/api/GetItemReceptionInfo?BusinessCode=${user.panatech_businessCode}`,
db: 'panatech'
}
const allData = await Promise.all([
// fetch verityTransactions
this.$axios.post('/api/cross/getRouteManager', verityData),
// fetch panatechTransactions
this.$axios.post('/api/cross/getRouteManager', panatechData),
// fetch agentsTransactions
this.$axios.get('/api/user/transactions'),
// fetch all surveys
this.$axios.get('/api/user/surveys')
])
const verityTransactions = allData[0]
const panatechTransactions = allData[1]
const agentsTransactions = allData[2]
const surveys = allData[3]
this.verityTransactions = verityTransactions.data.data
this.panatechTransactions = panatechTransactions.data.data
this.agentsTransactions = agentsTransactions.data
this.surveys = surveys.data
this.fetching = false
} catch (e) {
this.$arpaError()
}
},
methods: {
checkSurveys(code) {
return this.surveys.find(item => item.code === code)
}
}
}
</script>