somewhere
This commit is contained in:
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user