somewhere

This commit is contained in:
Swift
2023-08-17 13:05:51 +03:30
parent 30c7eb0e7b
commit 53843207cc
429 changed files with 117489 additions and 1 deletions
+203
View File
@@ -0,0 +1,203 @@
<template>
<user-dashboard-container page-class="factor" panel-title="فاکتور">
<div id="factor-layout">
<div class="pageHeader">
<div class="row1">
<h2>
<span>سیستم جاری</span>
<br />
<span>فاکتور گارانتی</span>
</h2>
</div>
<div class="row2">
<p>
<span>شماره حواله: </span>
<span>{{ factorInfo.TransNumber }}</span>
</p>
<p>
<span>تاریخ حواله: </span>
<span>{{ $jDate(factorInfo.TransDate) }}</span>
</p>
</div>
</div>
<div class="factor">
<div class="factorInfo">
<div class="row1">
<p>
<span>کد شخص: </span>
<span>{{ userBusinessCode }}</span>
</p>
<p>
<span>طرف حساب: </span>
<span>{{ user.first_name + ' ' + user.last_name }}</span>
</p>
<p>
<span>شماره پذیرش: </span>
<span>{{ $route.query.atn }}</span>
</p>
</div>
<div class="row2">
<p>
<span>آدرس: </span>
<span>{{ factorInfo.cAddress1 }}</span>
</p>
</div>
<div class="row3">
<p>
<span>شماره تماس: </span>
<span>{{ factorInfo.cTel1 }}</span>
</p>
</div>
<div class="row4">
<p>
<span>شرح حواله: </span>
<span>{{ factorInfo.Description || '---' }}</span>
</p>
</div>
</div>
<div class="table">
<table>
<thead>
<tr>
<th>ردیف</th>
<th>نام کالا</th>
<th>تعداد کل</th>
<th>مرجوع از فروش</th>
<th>مرجوعی/آسیب فیزیکی</th>
<th>مرجوعی/سالم</th>
<th>تعویض</th>
<th>تعمير با هزينه شخصی</th>
<th>تعمير با هزينه شرکت</th>
<th>مانده</th>
<th>توضیحات</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in factor" :key="index + '_tableItems_q_ar'">
<td>{{ index + 1 }}</td>
<td>{{ item.ItemName }}</td>
<td>{{ item.ItemReceptionNQty }}</td>
<td>{{ item.SaleReturn || '-' }}</td>
<td>{{ item.Return_Damaged || '-' }}</td>
<td>{{ item.Return_Healthy || '-' }}</td>
<td>{{ item.Replacement || '-' }}</td>
<td>{{ item.Repair_Self || '-' }}</td>
<td>{{ item.Repair_Company || '-' }}</td>
<td>{{ residual(item) }}</td>
<td>{{ item.ItemReplacementNames || '-' }}</td>
</tr>
<!-- table footer -->
<tr>
<td colspan="2">جمع</td>
<td>{{ sum('ItemReceptionNQty') }}</td>
<td>{{ sum('SaleReturn') }}</td>
<td>{{ sum('Return_Damaged') }}</td>
<td>{{ sum('Return_Healthy') }}</td>
<td>{{ sum('Replacement') }}</td>
<td>{{ sum('Repair_Self') }}</td>
<td>{{ sum('Repair_Company') }}</td>
<td>{{ residualSum() }}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<table-notice />
<button class="btn btn-primary mt-3" @click="print('factor-layout')">چاپ فاکتور</button>
</user-dashboard-container>
</template>
<script>
export default {
name: 'AccountGuaranteeFactor',
layout: 'user',
async asyncData({ $axios, $auth, query, error }) {
try {
const acceptedTN = query.atn
const host = query.host
const db_name = query.db_name
const user = $auth.user
function businessCode() {
if (db_name === 'verity') return user.verity_businessCode
else if (db_name === 'panatech') return user.panatech_businessCode
else return null
}
if (host === 'ar') {
const factorData = {
url: `/api/GetItemReceptionDetails?BusinessCode=${businessCode()}&ItemReceptionTransNumber=${acceptedTN}`,
db: db_name
}
const factor = await $axios.post('/api/cross/getRouteManager', factorData)
if (factor.data.error || !factor.data.data.length) throw new Error('invalid params')
return {
factor: factor.data.data
}
} else if (host === 'as') {
/// fuctions go here
} else throw new Error('invalid params')
} catch (e) {
error({ status: 404, message: 'Page not found' })
}
},
data() {
return {
transactionItems: null,
factor: null
}
},
computed: {
user() {
return this.$auth.user
},
userBusinessCode() {
const db_name = this.$route.query.db_name
if (db_name === 'verity') return this.user.verity_businessCode
else if (db_name === 'panatech') return this.user.panatech_businessCode
else return '-'
},
factorInfo() {
return this.factor[0]
}
},
methods: {
print(id) {
$(`#${id}`).print()
},
residual(item) {
return (
Number(item.ItemReceptionNQty) -
Number(item.SaleReturn) -
Number(item.Return_Damaged) -
Number(item.Return_Healthy) -
Number(item.Replacement) -
Number(item.Repair_Self) -
Number(item.Repair_Company)
)
},
sum(param) {
let sum = 0
let index = -1
for (const item of this.factor) {
index++
sum += Number(item[param])
if (index === this.factor.length - 1) return sum
}
},
residualSum() {
let sum = 0
let index = -1
for (const item of this.factor) {
index++
sum += Number(this.residual(item))
if (index === this.factor.length - 1) return sum
}
}
}
}
</script>
+191
View File
@@ -0,0 +1,191 @@
<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>
@@ -0,0 +1,202 @@
<template>
<user-dashboard-container page-class="factor" panel-title="فاکتور">
<div id="factor-layout">
<div class="pageHeader">
<div class="row1">
<h2>
<span>سیستم جاری</span>
<br />
<span>فاکتور تعمیرات</span>
</h2>
</div>
<div class="row2">
<p>
<span>شماره حواله: </span>
<span>{{ factorInfo.TransNumber }}</span>
</p>
<p>
<span>تاریخ حواله: </span>
<span>{{ $jDate(factorInfo.TransDate) }}</span>
</p>
</div>
</div>
<div class="factor">
<div class="factorInfo">
<div class="row1">
<p>
<span>کد شخص: </span>
<span>{{ userBusinessCode }}</span>
</p>
<p>
<span>طرف حساب: </span>
<span>{{ user.first_name + ' ' + user.last_name }}</span>
</p>
<p>
<span>شماره پذیرش: </span>
<span>{{ $route.query.atn }}</span>
</p>
</div>
<div class="row2">
<p>
<span>آدرس: </span>
<span>{{ factorInfo.cAddress1 }}</span>
</p>
</div>
<div class="row3">
<p>
<span>شماره تماس: </span>
<span>{{ factorInfo.cTel1 }}</span>
</p>
</div>
<div class="row4">
<p>
<span>شرح حواله: </span>
<span>{{ factorInfo.Description || '---' }}</span>
</p>
</div>
</div>
<div class="table">
<table>
<thead>
<tr>
<th>ردیف</th>
<th>کد کالا</th>
<th>نام کالا</th>
<th>تعداد کالا</th>
<th>مبلغ اجرت (ريال)</th>
<th>مبلغ کل (ريال)</th>
<th>معایب</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in factor" :key="index + '_tableItem_g_ar_f'">
<td>{{ index + 1 }}</td>
<td>{{ item.ItemCode }}</td>
<td>{{ item.ItemName }}</td>
<td>{{ item.Repair_Self }}</td>
<td>{{ item.TASPrice.toLocaleString() || '-' }}</td>
<td>{{ totalPrice(item).toLocaleString() }}</td>
<td>{{ item.Note || '-' }}</td>
</tr>
<!-- table footer -->
<tr>
<td colspan="3">جمع</td>
<td>{{ sum('Repair_Self') }}</td>
<!-- <td>{{ sum('TASPrice').toLocaleString() }}</td>-->
<td>-</td>
<td>{{ totalPriceSum().toLocaleString() }}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<table-notice />
<button class="btn btn-primary mt-3" @click="print('factor-layout')">چاپ فاکتور</button>
</user-dashboard-container>
</template>
<script>
export default {
name: 'AccountGuaranteePaymentFactor',
layout: 'user',
async asyncData({ $axios, $auth, query, error }) {
try {
const acceptedTN = query.atn
const host = query.host
const db_name = query.db_name
const user = $auth.user
function businessCode() {
if (db_name === 'verity') return user.verity_businessCode
else if (db_name === 'panatech') return user.panatech_businessCode
else return null
}
if (host === 'ar') {
const guaranteeFactorData = {
url: `/api/GetItemReceptionDetails?BusinessCode=${businessCode()}&ItemReceptionTransNumber=${acceptedTN}`,
db: db_name
}
const factorData = {
url: `/api/GetCustomizedRepairInfo?BusinessCode=${businessCode()}&TransNumber=${acceptedTN}`,
db: db_name
}
const allData = await Promise.all([
// fetch guaranteeFactor
$axios.post('/api/cross/getRouteManager', guaranteeFactorData),
// fetch factor
$axios.post('/api/cross/getRouteManager', factorData)
])
const guaranteeFactor = allData[0]
const factor = allData[1]
// validate data
if (guaranteeFactor.data.error || !guaranteeFactor.data.data.length) throw new Error('invalid params')
if (factor.data.error || !factor.data.data.length) throw new Error('invalid params')
return {
factor: factor.data.data,
guaranteeFactor: guaranteeFactor.data.data
}
} else if (host === 'as') {
/// functions go here
} else throw new Error('invalid params')
} catch (e) {
error({ status: 404, message: 'Page not found' })
}
},
data() {
return {
transactionItems: null,
factor: null,
guaranteeFactor: null
}
},
computed: {
user() {
return this.$auth.user
},
userBusinessCode() {
const db_name = this.$route.query.db_name
if (db_name === 'verity') return this.user.verity_businessCode
else if (db_name === 'panatech') return this.user.panatech_businessCode
else return '-'
},
factorInfo() {
return this.guaranteeFactor[0]
}
},
methods: {
print(id) {
$(`#${id}`).print()
},
totalPrice(item) {
return Number(item.TASPrice) * Number(item.Repair_Self)
},
sum(param) {
let sum = 0
let index = -1
for (const item of this.factor) {
index++
sum += Number(item[param])
if (index === this.factor.length - 1) return sum
}
},
totalPriceSum() {
let sum = 0
let index = -1
for (const item of this.factor) {
index++
sum += Number(this.totalPrice(item))
if (index === this.factor.length - 1) return sum
}
}
}
}
</script>
+252
View File
@@ -0,0 +1,252 @@
<template>
<user-dashboard-container page-class="post-receipt" panel-title="رسید ارسال برای گارانتی">
<div class="note">
<h2 class="mb-2">توجه:</h2>
<p>
*این رسید به منزله ی دریافت کالا توسط واحد خدمات پس از فروش نمیباشد و در صورت دریافت کالاهای مندرج در این رسید
توسط واحد پذیرش، رسید پذیرش قطعی صادر میگردد.
</p>
</div>
<div class="box-face-receipt">
<div class="receipt">
<div class="receipt-head">
<logo />
<p>بیجک چاپی</p>
</div>
<div class="title">
<p>برای ارسال این بیجک چاپی را روی بسته ارسال بچسبانید.</p>
</div>
<div id="box-face-receipt">
<div class="receipt-body">
<div class="senderInfo">
<div class="row">
<div class="col-12 col-lg-8 order-1 order-lg-0">
<h2>فرستنده:</h2>
<div class="infoRow">
<p>
نام و نام خانوادگی:
{{ user.first_name + ' ' + user.last_name }}
</p>
</div>
<div class="infoRow">
<p>آدرس: {{ transactionInfo.cAddress1 }}</p>
</div>
<div class="infoRow">
<p>شماره تماس: {{ transactionInfo.cTel1 }}</p>
</div>
</div>
<div class="col-12 col-lg-4 order-0 order-lg-1 d-flex justify-content-end flex-wrap align-items-start">
<div class="topLeft">
<b v-if="host === 'ar'">تاریخ صدور: {{ $jDate(transactionInfo.TransDate) }}</b>
<b v-if="host === 'as'">تاریخ صدور: {{ $jDate(transactionInfo.TempReceiptTransDate) }}</b>
</div>
<div class="topLeft">
<b>شماره پذیرش موقت: {{ $route.query.ttn }}</b>
</div>
</div>
</div>
</div>
<hr />
<div class="receiverInfo">
<div class="row">
<div class="col-12 col-lg-8 order-1 order-lg-0">
<h2>گیرنده:</h2>
<div class="infoRow">
<p>نام: {{ receiverInfo.name }}</p>
</div>
<div class="infoRow">
<p>آدرس: {{ receiverInfo.address }}</p>
</div>
<div class="infoRow">
<p>کدپستی: {{ receiverInfo.postalCode }}</p>
</div>
<div class="infoRow">
<p>شماره تماس: {{ receiverInfo.phone }}</p>
</div>
</div>
<div class="col-12 col-lg-4 order-0 order-lg-1 d-flex justify-content-end">
<div class="topLeft" :class="host">
<div>
<logo />
</div>
<dir v-if="host === 'ar'">
<img src="/assets/img/tipaxQR.jpg" alt="tipaxQR Code" />
<p>
<b>1111642</b>
</p>
</dir>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="print-btn">
<button class="btn btn-primary" @click="print('box-face-receipt')">چاپ</button>
</div>
</div>
<div class="box-inner-receipt">
<div class="receipt">
<div class="receipt-head">
<logo />
<p>فهرست اقلام پذیرش موقت شده</p>
</div>
<div class="title">
<p>این فرم را داخل بسته ارسالی برای گارانتی قرار دهید.</p>
</div>
<div id="box-inner-receipt">
<div class="receipt-body">
<div class="topBar row">
<div class="col-12 col-lg-6 logo-side">
<logo />
</div>
<div class="col-12 col-lg-6 d-flex justify-content-end align-items-center">
<div class="topLeft">
<b v-if="host === 'ar'">تاریخ صدور: {{ $jDate(transactionInfo.TransDate) }}</b>
<b v-if="host === 'as'">تاریخ صدور: {{ $jDate(transactionInfo.TempReceiptTransDate) }}</b>
</div>
<div class="topLeft">
<b>شماره پذیرش موقت: {{ $route.query.ttn }}</b>
</div>
</div>
</div>
<hr />
<div class="stuff-list">
<div class="tableBox">
<table>
<thead>
<tr>
<th>ردیف</th>
<th style="min-width: 250px">نام کالا</th>
<th style="">تعداد</th>
<th style="min-width: 150px">سریال گارانتی</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in items" :key="index + '_RecieptItem'">
<td>{{ index + 1 }}</td>
<td v-if="host === 'ar'">{{ item.ItemName }}</td>
<td v-if="host === 'as'">{{ getItemName(item.ItemID) || 'درحال بارگیری ...' }}</td>
<td v-if="host === 'ar'">{{ item.NQty }}</td>
<td v-if="host === 'as'">{{ item.MjQty }}</td>
<td>{{ item.SerialNo1 || '-' }}</td>
</tr>
</tbody>
</table>
</div>
<table-notice />
</div>
</div>
</div>
</div>
<div class="print-btn">
<button class="btn btn-primary" @click="print('box-inner-receipt')">چاپ</button>
</div>
</div>
</user-dashboard-container>
</template>
<script>
if (process.client) require('static/assets/js/jQuery.print.min')
export default {
name: 'AccountGuaranteePostReciept',
layout: 'user',
async asyncData({ $axios, $auth, query, error }) {
try {
const tempTN = query?.ttn
const host = query?.host
const db_name = query?.db_name
const user = $auth.user
function businessCode() {
if (db_name === 'verity') return user.verity_businessCode
else if (db_name === 'panatech') return user.panatech_businessCode
else return null
}
if (host === 'ar') {
const transactionItemsData = {
url: `/api/GetTransactionDetails?BusinessCode=${businessCode()}&TransNumber=${tempTN}&DocAliasID=144&WithSerials=1`,
db: db_name
}
const transactionItems = await $axios.post('/api/cross/getRouteManager', transactionItemsData)
if (transactionItems.data.error || !transactionItems.data.data.length) throw new Error('invalid values')
return {
transactionItems: transactionItems.data.data
}
} else if (host === 'as') {
const transaction = await $axios.get(`/api/user/transaction/${tempTN}`)
return {
transaction: transaction.data
}
} else throw new Error('invalid values')
} catch (e) {
error({ status: 404, message: 'Page not found' })
}
},
data() {
return {
transactionItems: null,
transaction: null
}
},
computed: {
user() {
return this.$auth.user
},
receiverInfo() {
const host = this.host
const main = {
name: this.$config.recieverName,
address: this.$config.recieverAddress,
postalCode: this.$config.recieverPostalCode,
phone: this.$config.recieverPhone
}
if (host === 'ar') return main
else {
const agent = this.transaction.agent_id
return {
name: agent?.full_name + ' (نمایندگی ' + agent.city_name + ')',
address: agent?.province_name + '، ' + agent?.city_name + '، ' + agent?.address,
postalCode: agent?.postal_code,
phone: agent?.tel_number + ' - ' + agent?.mobile_number
}
}
},
products() {
if (this.$route.query.db_name === 'verity') return this.$store.state.front.verityProducts
else if (this.$route.query.db_name === 'panatech') return this.$store.state.front.panatechProducts
else return []
},
host() {
return this.$route.query?.host
},
items() {
if (this.host === 'ar') return this.transactionItems
else if (this.host === 'as') return this.transaction.items
else return []
},
transactionInfo() {
if (this.host === 'ar') return this.transactionItems[0]
else if (this.host === 'as') return this.transaction
else return {}
}
},
methods: {
getItemName(ItemID) {
return this.products.find(item => item.ItemID === ItemID)?.ItemName
},
print(id) {
$(`#${id}`).print()
}
}
}
</script>
+240
View File
@@ -0,0 +1,240 @@
<template>
<user-dashboard-container page-class="guarantee-details" panel-title="جزئیات">
<form action="" class="form form_3">
<div class="userInfo">
<div class="formRow">
<label v-if="$route.query.atn">کد پذیرش دائم:</label>
<label v-else>کد پذیرش موقت:</label>
<input type="text" disabled :value="$route.query.atn || $route.query.ttn" />
</div>
<div class="formRow">
<label>شماره تماس:</label>
<input type="text" disabled :value="transactionInfo.cTel1" />
</div>
<div class="formRow">
<label>تاریخ ارسال فرم:</label>
<input
type="text"
disabled
:value="$jDate(host === 'ar' ? transactionInfo.TransDate : transactionInfo.TempReceiptTransDate)"
/>
</div>
</div>
<div class="formRow">
<label>آدرس:</label>
<textarea name="" rows="3" disabled :value="transactionInfo.cAddress1"></textarea>
</div>
<div class="formRow">
<label>توضیحات فرم:</label>
<textarea name="" rows="3" disabled :value="transactionInfo.Description"></textarea>
</div>
</form>
<hr />
<div class="tableBox">
<table class="formItems">
<thead>
<tr>
<th class="index">ردیف</th>
<th class="itemName">نام کالا</th>
<th class="quantity">تعداد</th>
<th class="itemSerial">سریال گارانتی</th>
<th class="date">تاریخ اتمام گارانتی</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in items" :key="index + '_guaranteeItemsList'" :title="item.ItemName">
<td class="index">
<span>{{ index + 1 }}</span>
</td>
<td class="itemName">
<span v-if="host === 'ar'" class="singleLineTxt">{{ item.ItemName }}</span>
<span v-if="host === 'as'" class="singleLineTxt">{{
getItemName(item.ItemID) || 'درحال بارگیری ...'
}}</span>
</td>
<td class="quantity">
<span v-if="host === 'ar'">{{ item.NQty }}</span>
<span v-if="host === 'as'">{{ item.MjQty }}</span>
</td>
<td class="itemSerial">
<span>{{ item.SerialNo1 || '-' }}</span>
</td>
<td class="date">
<span>{{ item.GEndDate || '-' }}</span>
</td>
</tr>
</tbody>
</table>
</div>
<table-notice />
<hr />
<div class="buttons">
<nuxt-link
:to="{
name: 'account-guarantee-receipt',
query: { ttn: $route.query.ttn, host: host, db_name: $route.query.db_name }
}"
class="btn btn-primary"
>مشاهده رسید ها</nuxt-link
>
<nuxt-link
v-if="factor && factor.length"
:to="{
name: 'account-guarantee-factor',
query: { atn: $route.query.atn, host: host, db_name: $route.query.db_name }
}"
class="btn btn-primary"
style="margin-right: 5px"
>
مشاهده فاکتور
</nuxt-link>
</div>
<template v-if="paymentFactor && paymentFactor.length">
<hr />
<div class="paymentFactorBtn mb-5">
<strong
>*در موارد ارسالی شما کالا بدون گارانتی وجود دارد و تعمیرات شامل هزینه میشود.برای مشاهده فاکتور هزینه ها روی
دکمه زیر کلیک کنید و پس از پرداخت هزینه عکس فیش پرداختی را در تیکت برای ادمین بفرستید.(شماره پذیرش مربوطه را
در تیکت مشخص کنید)</strong
>
<nuxt-link
:to="{
name: 'account-guarantee-paymentFactor',
query: { atn: $route.query.atn, host: host, db_name: $route.query.db_name }
}"
class="btn btn-primary"
>مشاهده فاکتور تعمیرات
</nuxt-link>
</div>
</template>
</user-dashboard-container>
</template>
<script>
export default {
name: 'AccountGuaranteeDetails',
layout: 'user',
async asyncData({ $axios, $auth, query, error }) {
try {
const tempTN = query?.ttn
const acceptedTN = query?.atn
const host = query?.host
const db_name = query?.db_name
const user = $auth.user
function businessCode() {
if (db_name === 'verity') return user.verity_businessCode
else if (db_name === 'panatech') return user.panatech_businessCode
else return null
}
if (host === 'ar') {
// fetch data from arpa
const transactionItemsData = {
url: `/api/GetTransactionDetails?BusinessCode=${businessCode()}&TransNumber=${
acceptedTN || tempTN
}&DocAliasID=${acceptedTN ? 63 : 144}&WithSerials=1`,
db: db_name
}
const transactionItems = await $axios.post('/api/cross/getRouteManager', transactionItemsData)
if (transactionItems.data.error || !transactionItems.data.data.length) throw new Error('invalid params')
return {
transactionItems: transactionItems.data.data
}
} else if (host === 'as') {
// fetch data from asan-service
const transaction = await $axios.get(`/api/user/transaction/${tempTN}`)
return {
transaction: transaction.data
}
} else throw new Error('invalid params')
} catch (e) {
error({ status: 404, message: 'Page not found' })
}
},
data() {
return {
transactionItems: null,
transaction: null,
factor: null,
paymentFactor: null
}
},
computed: {
products() {
if (this.$route.query.db_name === 'verity') return this.$store.state.front.verityProducts
else if (this.$route.query.db_name === 'panatech') return this.$store.state.front.panatechProducts
else return []
},
host() {
return this.$route.query?.host
},
items() {
if (this.host === 'ar') return this.transactionItems
else if (this.host === 'as') return this.transaction.items
else return []
},
transactionInfo() {
if (this.host === 'ar') return this.transactionItems[0]
else if (this.host === 'as') return this.transaction
else return {}
}
},
mounted() {
const host = this.host
const user = this.$auth.user
const db_name = this.$route.query?.db_name
const acceptedTN = this.$route.query?.atn
if (host === 'ar') {
// fetch data from arpa
const paymentData = {
url: `/api/GetCustomizedRepairInfo?BusinessCode=${
db_name === 'verity' ? user.verity_businessCode : db_name === 'panatech' ? user.panatech_businessCode : ''
}&TransNumber=${acceptedTN}`,
db: db_name
}
const factorData = {
url: `/api/GetItemReceptionDetails?BusinessCode=${
db_name === 'verity' ? user.verity_businessCode : db_name === 'panatech' ? user.panatech_businessCode : ''
}&ItemReceptionTransNumber=${acceptedTN}`,
db: db_name
}
if (acceptedTN) {
this.$axios
.post('/api/cross/getRouteManager', factorData)
.then(res => {
this.factor = res.data.data
})
.catch(err => {
console.log(err)
})
this.$axios
.post('/api/cross/getRouteManager', paymentData)
.then(res => {
this.paymentFactor = res.data.data
})
.catch(err => {
console.log(err)
})
}
} else if (host === 'as') {
// fetch data from asan-service
}
},
methods: {
getItemName(ItemID) {
return this.products.find(item => item.ItemID === ItemID)?.ItemName
}
}
}
</script>