somewhere
This commit is contained in:
@@ -0,0 +1,341 @@
|
||||
<template>
|
||||
<user-dashboard-container page-class="post agent-requests-details" panel-title="فرم گزارش عملکرد گارانتی">
|
||||
<el-alert v-if="guaranteeReport.status === 'temp'" :title="alertMsg" class="mb-3" type="warning"> </el-alert>
|
||||
<form class="form form_3">
|
||||
<div class="userInfo">
|
||||
<div class="formRow">
|
||||
<label for="customer_name">نام و نام خانوادگی:</label>
|
||||
<input id="customer_name" type="text" :value="guaranteeReport.agent_id.full_name" disabled />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="customer_code">کد نمایندگی:</label>
|
||||
<input id="customer_code" type="text" :value="guaranteeReport.agent_id.agent_code" disabled />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="mobile">شماره موبایل:</label>
|
||||
<input id="mobile" type="text" :value="guaranteeReport.agent_id.mobile_number" disabled />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="fax">شماره فکس:</label>
|
||||
<input id="fax" type="text" :value="guaranteeReport.agent_id.fax_number" disabled />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="province">استان:</label>
|
||||
<input id="province" type="text" :value="guaranteeReport.agent_id.province_name" disabled />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="city">شهر:</label>
|
||||
<input id="city" type="text" :value="guaranteeReport.agent_id.city_name" disabled />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="formRow">
|
||||
<label>آدرس:</label>
|
||||
<textarea name="description" cols="30" rows="5" disabled :value="guaranteeReport.agent_id.address"></textarea>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="formRow">
|
||||
<label v-if="guaranteeReport.status === 'temp'" for="description">توضیحات فرم (اختیاری):</label>
|
||||
<label v-else for="description">توضیحات فرم:</label>
|
||||
<el-tooltip
|
||||
v-model="descriptionTooltip"
|
||||
class="item"
|
||||
effect="dark"
|
||||
content="میتوانید توضیحات را در هر زمان تغییر دهید"
|
||||
placement="top-start"
|
||||
:disabled="guaranteeReport.status !== 'temp'"
|
||||
>
|
||||
<textarea
|
||||
id="description"
|
||||
v-model="guaranteeReport.description"
|
||||
name="description"
|
||||
:disabled="guaranteeReport.status !== 'temp'"
|
||||
:placeholder="descriptionPlaceHolder"
|
||||
cols="30"
|
||||
rows="10"
|
||||
@blur="updateDescription"
|
||||
></textarea>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="notes">
|
||||
<h3>توجه:</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<p>مدارک گارانتی فقط تا سه ماه بعد از تاریخ پذیرش دستگاه اعتبار دارد.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>هر سه ماه یک بار مدارک گارانتی خود را جهت تسویه حساب به همراه داغی قطعات ارسال نمایید.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="add-list">
|
||||
<h2>لیست قطعات درخواستی:</h2>
|
||||
<div class="tableBox">
|
||||
<table class="report-items">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="index">ردیف</th>
|
||||
|
||||
<th class="customerName">نام مشتری</th>
|
||||
<th class="customerTel">تلفن مشتری</th>
|
||||
<th class="itemName">نام کالا</th>
|
||||
<th class="itemSerial">سریال گارانتی</th>
|
||||
|
||||
<th class="productIssue">ایراد کالا</th>
|
||||
<th class="usedPieces">قطعات مصرفی</th>
|
||||
|
||||
<th class="recieveDate">تاریخ دریافت</th>
|
||||
<th class="deliverDate">تاریخ تحویل</th>
|
||||
<th v-if="guaranteeReport.status === 'temp'" class="removeBtn">حذف</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr
|
||||
v-for="(item, index) in guaranteeReport.items"
|
||||
:key="item.ItemID + index + '_gr_reports'"
|
||||
:title="item.ItemName + ' - ' + item.pieceName"
|
||||
>
|
||||
<td class="index">
|
||||
<span>{{ index + 1 }}</span>
|
||||
</td>
|
||||
|
||||
<td class="customerName">
|
||||
<span>{{ item.customerName }}</span>
|
||||
</td>
|
||||
|
||||
<td class="customerTel">
|
||||
<span>{{ item.customerTel }}</span>
|
||||
</td>
|
||||
|
||||
<td class="itemName">
|
||||
<span>{{ item.ItemName }}</span>
|
||||
</td>
|
||||
|
||||
<td class="itemSerial">
|
||||
<span>{{ item.SerialNo1 || '-' }}</span>
|
||||
</td>
|
||||
|
||||
<td class="productIssue">
|
||||
<span> {{ item.productIssue }} </span>
|
||||
</td>
|
||||
|
||||
<td class="usedPieces">
|
||||
<span> {{ item.usedPieces }} </span>
|
||||
</td>
|
||||
|
||||
<td class="recieveDate">
|
||||
<span> {{ $jDate(item.recieveDate) }} </span>
|
||||
</td>
|
||||
<td class="deliverDate">
|
||||
<span> {{ $jDate(item.deliverDate) }} </span>
|
||||
</td>
|
||||
|
||||
<td v-if="guaranteeReport.status === 'temp'" class="removeBtn">
|
||||
<button class="trashIcon-btn" title="حذف پیشنویس" @click="removeItemFromList(item._id)">
|
||||
<i class="fal fa-trash-alt"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr v-if="!guaranteeReport.items.length" class="odd">
|
||||
<td class="noItem" colspan="5">
|
||||
<p style="color: #000">هنوز هیچ آیتمی اضافه نکردید.</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr v-if="guaranteeReport.status === 'temp'" class="addStuffBtn" @click="reportModal = true">
|
||||
<td colspan="5">
|
||||
<button>
|
||||
<span>افزودن گزارش</span>
|
||||
<i class="far fa-plus"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<table-notice />
|
||||
|
||||
<hr />
|
||||
|
||||
<div v-if="guaranteeReport.status === 'temp'" class="btnRow">
|
||||
<button class="btn btn-primary" @click="sendForm">ارسال به آسان سرویس</button>
|
||||
<button class="btn btn-danger" @click="removeGR">حذف این فرم</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template #body>
|
||||
<AddReportToGuaranteeReportForm
|
||||
:key="reportModalKey"
|
||||
:show="reportModal"
|
||||
:gr-id="guaranteeReport._id"
|
||||
@closeModal="closeReportModal"
|
||||
/>
|
||||
</template>
|
||||
</user-dashboard-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'AccountAgentGrDetails',
|
||||
layout: 'user',
|
||||
async asyncData({ $axios, params, error }) {
|
||||
try {
|
||||
const guaranteeReport = await $axios.get(`/api/agent/gr/${params.gr}`)
|
||||
return {
|
||||
guaranteeReport: guaranteeReport.data
|
||||
}
|
||||
} catch (e) {
|
||||
error({ status: 404, message: 'There is a problem here' })
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
guaranteeReport: null,
|
||||
validation: {},
|
||||
reportModal: false,
|
||||
reportModalKey: 0,
|
||||
descriptionTooltip: false,
|
||||
alertMsg:
|
||||
'این فرم گزارش عملکرد در پیشنویس ها ذخیره شده و هنوز در پایگاه داده شرکت آسان سرویس ثبت نگردیده. شما میتوانید گزارش ها را در هر زمان به این فرم اضافه یا از فرم حذف کنید سپس نسبت به ارسال نهایی اقدام کنید.'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
grId() {
|
||||
return this.$route.params.gr
|
||||
},
|
||||
descriptionPlaceHolder() {
|
||||
if (this.guaranteeReport.status === 'temp') return 'توضیحات راجع به فرم گزارش را میتوانید اینجا بنویسید'
|
||||
else return 'بدون توضیحات'
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
setTimeout(() => {
|
||||
if (this.guaranteeReport.status === 'temp') this.descriptionTooltip = true
|
||||
}, 1000)
|
||||
},
|
||||
methods: {
|
||||
closeReportModal() {
|
||||
this.reportModal = false
|
||||
this.reportModalKey = Math.random()
|
||||
},
|
||||
removeItemFromList(id) {
|
||||
if (this.guaranteeReport.status !== 'temp') return
|
||||
this.$confirm('این مورد حذف شود؟', 'هشدار', {
|
||||
confirmButtonText: 'بله',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
this.$axios
|
||||
.delete(`/api/agent/removeGrItems/${id}`)
|
||||
.then(res => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.message
|
||||
})
|
||||
this.$nuxt.refresh()
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: 'مشکلی در انجام عملیات پیش آمده'
|
||||
})
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: 'عملیات لغو شد'
|
||||
})
|
||||
})
|
||||
},
|
||||
updateDescription() {
|
||||
if (this.guaranteeReport.status !== 'temp') return
|
||||
const data = { description: this.guaranteeReport.description }
|
||||
this.$axios
|
||||
.put(`/api/agent/grDescription/${this.grId}`, data)
|
||||
.then(res => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.message
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: 'مشکلی در ثبت اطلاعات پیش آمده'
|
||||
})
|
||||
})
|
||||
},
|
||||
sendForm() {
|
||||
this.$confirm('فرم گزارش عملکرد گارانتی به آسان سرویس ارسال شود؟', 'هشدار', {
|
||||
confirmButtonText: 'بله',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
this.$axios
|
||||
.post(`/api/agent/sendGr/${this.grId}`)
|
||||
.then(res => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.message
|
||||
})
|
||||
this.$router.push({ name: 'account-agents-guaranteeReports', query: { type: 'sent' } })
|
||||
})
|
||||
.catch(err => {
|
||||
let msg = 'مشکلی در ارسال گزارش پیش آمده'
|
||||
if (err.response.status === 406) msg = err.response.data.message
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: msg
|
||||
})
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: 'عملیات لغو شد'
|
||||
})
|
||||
})
|
||||
},
|
||||
removeGR() {
|
||||
this.$confirm('این فرم از پیشنویس ها حذف شود؟', 'هشدار', {
|
||||
confirmButtonText: 'بله',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
this.$axios
|
||||
.delete(`/api/agent/gr/${this.grId}`)
|
||||
.then(res => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.message
|
||||
})
|
||||
this.$router.push({ name: 'account-agents-guaranteeReports', query: { type: 'temp' } })
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: 'مشکلی در حذف پیشنویس پیش آمده'
|
||||
})
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: 'عملیات لغو شد'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,220 @@
|
||||
<template>
|
||||
<user-dashboard-container page-class="agent-requests" panel-title="لیست گزارش عملکرد گارانتی">
|
||||
<div class="filter mb-5">
|
||||
<h4 style="display: inline-block; margin-left: 15px">مشاهده لیست:</h4>
|
||||
<button class="switchBtns btn" :class="type === 'temp' && 'btn-primary'" @click="type = 'temp'">
|
||||
پیشنویس ها
|
||||
</button>
|
||||
<button class="switchBtns btn" :class="type === 'sent' && 'btn-primary'" @click="type = 'sent'">
|
||||
ارسال شده ها
|
||||
</button>
|
||||
<div v-if="type === 'sent'" class="search mt-3" :class="serachBoxClass">
|
||||
<el-input v-model="searchInput" clearable placeholder="جستجو در لیست با کد پیگیری" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="tableBox">
|
||||
<table class="agent-requests" :class="type !== 'temp' && 'extended'">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="index">ردیف</th>
|
||||
<th class="description">توضیحات</th>
|
||||
<th class="createDate">تاریخ ایجاد</th>
|
||||
<template v-if="type === 'sent' || type === 'delivered'">
|
||||
<th class="sendDate">تاریخ ارسال</th>
|
||||
<th class="trackingCode">کد پیگیری</th>
|
||||
<th class="status">وضعیت</th>
|
||||
</template>
|
||||
<th class="quantity">تعداد گزارش</th>
|
||||
<th class="details">جزئیات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<template v-if="filteredList.length">
|
||||
<tr v-for="(item, index) in filteredList" :key="item._id" :title="item.description">
|
||||
<td class="index">
|
||||
<span>{{ index + 1 }}</span>
|
||||
</td>
|
||||
|
||||
<td class="description">
|
||||
<span v-if="item.description" class="singleLineTxt">{{ item.description }}</span>
|
||||
<span v-else style="color: gray">بدون توضیحات</span>
|
||||
</td>
|
||||
|
||||
<td class="createDate">
|
||||
<span> {{ $jDate(item.createDate) }} </span>
|
||||
</td>
|
||||
|
||||
<template v-if="type === 'sent' || type === 'delivered'">
|
||||
<td class="sendDate">
|
||||
<span>{{ $jDate(item.sendDate) }}</span>
|
||||
</td>
|
||||
<td class="trackingCode">
|
||||
<span>{{ item.trackingCode }}</span>
|
||||
</td>
|
||||
<td class="status">
|
||||
<span v-if="item.status === 'sent'">ارسال شده</span>
|
||||
<!-- <span v-if="item.status === 'ongoing'">در دست اقدام</span>
|
||||
<span v-if="item.status === 'waiting'">در انتظار قطعه</span>
|
||||
<span v-if="item.status === 'delivered'">تحویل شده</span> -->
|
||||
</td>
|
||||
</template>
|
||||
|
||||
<td class="quantity">
|
||||
<span>{{ totalItemsCount(item.items) }}</span>
|
||||
</td>
|
||||
|
||||
<td class="details">
|
||||
<template v-if="item.status === 'temp'">
|
||||
<button class="trashIcon-btn" title="حذف پیشنویس" @click="removeGR(item._id)">
|
||||
<i class="fal fa-trash-alt"></i>
|
||||
</button>
|
||||
<nuxt-link
|
||||
:to="{
|
||||
name: 'account-agents-guaranteeReports-gr',
|
||||
params: {
|
||||
gr: item._id
|
||||
}
|
||||
}"
|
||||
class="btn btn-primary"
|
||||
>
|
||||
تکمیل فرم
|
||||
</nuxt-link>
|
||||
</template>
|
||||
<nuxt-link
|
||||
v-else
|
||||
:to="{
|
||||
name: 'account-agents-guaranteeReports-gr',
|
||||
params: {
|
||||
gr: item._id
|
||||
}
|
||||
}"
|
||||
class="btn btn-primary"
|
||||
>
|
||||
مشاهده
|
||||
</nuxt-link>
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
<tr v-else>
|
||||
<td class="noItem">
|
||||
<span>هیچ اطلاعاتی وجود ندارد</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="type === 'temp'" class="addStuffBtn" @click="addGuaranteeReport">
|
||||
<td colspan="5">
|
||||
<button>
|
||||
<span>افزودن فرم گزارش</span>
|
||||
<i class="far fa-plus"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<table-notice />
|
||||
</user-dashboard-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'AccountAgentGrList',
|
||||
layout: 'user',
|
||||
async asyncData({ $axios, $auth, error }) {
|
||||
try {
|
||||
const guaranteeReports = await $axios.get('/api/agent/grList')
|
||||
return {
|
||||
guaranteeReports: guaranteeReports.data
|
||||
}
|
||||
} catch (e) {
|
||||
error({ status: 404, message: 'There is a problem here' })
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
guaranteeReports: null,
|
||||
searchInput: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
type: {
|
||||
get() {
|
||||
return this.$route.query.type
|
||||
},
|
||||
set(val) {
|
||||
this.$router.push({ name: 'account-agents-guaranteeReports', query: { type: val } })
|
||||
}
|
||||
},
|
||||
serachBoxClass() {
|
||||
if (this.searchInput && this.filteredList.length) return 'success'
|
||||
if (this.searchInput && !this.filteredList.length) return 'error'
|
||||
return null
|
||||
},
|
||||
filteredList() {
|
||||
let filteredBySearch
|
||||
if (!this.searchInput || this.type === 'temp') filteredBySearch = this.guaranteeReports
|
||||
else {
|
||||
filteredBySearch = this.guaranteeReports.filter(item =>
|
||||
item.trackingCode?.toLowerCase().includes(this.searchInput.toLowerCase())
|
||||
)
|
||||
}
|
||||
return filteredBySearch.filter(item => {
|
||||
if (this.type === 'temp') return item.status === 'temp'
|
||||
if (this.type === 'sent') return item.status !== 'temp'
|
||||
return false
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
addGuaranteeReport() {
|
||||
this.$axios
|
||||
.post('/api/agent/gr')
|
||||
.then(res => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: 'فرم گزارش جدید افزوده شد'
|
||||
})
|
||||
this.$nuxt.refresh()
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: 'مشکلی در افزودن گزارش پیش آمده'
|
||||
})
|
||||
})
|
||||
},
|
||||
totalItemsCount(items) {
|
||||
return items.length
|
||||
},
|
||||
removeGR(id) {
|
||||
this.$confirm('این گزارش از پیشنویس ها حذف شود؟', 'هشدار', {
|
||||
confirmButtonText: 'بله',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
this.$axios
|
||||
.delete(`/api/agent/gr/${id}`)
|
||||
.then(res => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.message
|
||||
})
|
||||
this.$nuxt.refresh()
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: 'مشکلی در حذف گزارش پیش آمده'
|
||||
})
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: 'عملیات لغو شد'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user