somewhere
This commit is contained in:
@@ -0,0 +1,621 @@
|
||||
<template>
|
||||
<div>
|
||||
<CustomSubHeader>
|
||||
<CBreadcrumb class="border-0 mb-0">{{ title }}</CBreadcrumb>
|
||||
<el-tag v-if="agent._updatedBy && agent._updatedBy.first_name" type="primary" class="ml-1">
|
||||
<span>ایجاد یا اصلاح کننده: </span>
|
||||
<span> {{ agent._updatedBy.first_name + ' ' + agent._updatedBy.last_name }} </span>
|
||||
</el-tag>
|
||||
<el-tag v-if="agent._revoked && agent._revokedBy.first_name" type="danger">
|
||||
<span>صلب امتیاز شده توسط: </span>
|
||||
<span> {{ agent._revokedBy.first_name + ' ' + agent._revokedBy.last_name }} </span>
|
||||
</el-tag>
|
||||
<CButton
|
||||
v-if="updatePermission && !agent._revoked"
|
||||
size="sm"
|
||||
color="warning"
|
||||
class="mr-auto"
|
||||
@click="goToUpdatePage"
|
||||
>
|
||||
<span style="color: #fff"> تغییر اطلاعات نماینده </span>
|
||||
</CButton>
|
||||
<CButton size="sm" color="danger" class="mr-1" @click="revoke">
|
||||
<span style="color: #fff">ابطال امتیاز نماینده</span>
|
||||
</CButton>
|
||||
<CButton
|
||||
size="sm"
|
||||
color="primary"
|
||||
:class="updatePermission && !agent._revoked ? 'mr-1' : 'mr-auto'"
|
||||
@click="$router.go(-1)"
|
||||
>برگشت به صفحه قبل</CButton
|
||||
>
|
||||
</CustomSubHeader>
|
||||
|
||||
<CRow>
|
||||
<CCol lg="12">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>گزارش کلی عملکرد نماینده:</h6>
|
||||
<CRow class="align-items-stretch mt-3">
|
||||
<CCol sm="6" md="4" class="mb-1">
|
||||
<div class="card" style="height: 100%">
|
||||
<div class="card-body d-flex align-items-center p-3">
|
||||
<div class="ml-3 text-white bg-warning p-3">
|
||||
<i class="fal fa-inbox"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-value text-info">{{ getAgentInboxCount('unread') }}</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold small">صندوق ورودی (دیده نشده)</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CCol>
|
||||
|
||||
<CCol sm="6" md="4" class="mb-1">
|
||||
<div class="card" style="height: 100%">
|
||||
<div class="card-body d-flex align-items-center p-3">
|
||||
<div class="ml-3 text-white bg-danger p-3">
|
||||
<i class="fal fa-inbox"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-value text-info">{{ getAgentInboxCount('ttl') }}</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold small">صندوق ورودی (در انتظار پذیرش)</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CCol>
|
||||
|
||||
<CCol sm="6" md="4" class="mb-1">
|
||||
<div class="card" style="height: 100%">
|
||||
<div class="card-body d-flex align-items-center p-3">
|
||||
<div class="ml-3 text-white bg-success p-3">
|
||||
<i class="fal fa-inbox"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-value text-info">{{ getAgentInboxCount('atl') }}</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold small">صندوق ورودی (پذیرش شده)</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CCol>
|
||||
|
||||
<CCol sm="6" md="4" class="mb-1">
|
||||
<div class="card" style="height: 100%">
|
||||
<div class="card-body d-flex align-items-center p-3">
|
||||
<div class="ml-3 text-white bg-primary p-3">
|
||||
<i class="fas fa-wrench"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-value text-info">{{ agentPr.length }}</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold small">درخواست قطعه</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CCol>
|
||||
|
||||
<CCol sm="6" md="4" class="mb-1">
|
||||
<div class="card" style="height: 100%">
|
||||
<div class="card-body d-flex align-items-center p-3">
|
||||
<div class="ml-3 text-white bg-primary p-3">
|
||||
<i class="fas fa-backpack"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-value text-info">{{ agentOpr.length }}</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold small">درخواست قطعه داغی</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CCol>
|
||||
|
||||
<CCol sm="6" md="4" class="mb-1">
|
||||
<div class="card" style="height: 100%">
|
||||
<div class="card-body d-flex align-items-center p-3">
|
||||
<div class="ml-3 text-white bg-primary p-3">
|
||||
<i class="fab fa-buffer"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-value text-info">{{ agentBr.length }}</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold small">درخواست کالای بافر</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CCol>
|
||||
</CRow>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="12">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>تغییر وضعیت آپلود مدارک</h6>
|
||||
<el-divider></el-divider>
|
||||
<CButtonGroup>
|
||||
<CButton :color="agent.upload ? 'primary' : 'light'" @click="updateStatus('uploadOn')">
|
||||
دسترسی آپلود
|
||||
</CButton>
|
||||
|
||||
<CButton :color="!agent.upload ? 'primary' : 'light'" @click="updateStatus('uploadOff')">
|
||||
عدم دسترسی آپلود
|
||||
</CButton>
|
||||
</CButtonGroup>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="12">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>دسترسی ویرایش اطلاعات نمایندگی</h6>
|
||||
<el-divider></el-divider>
|
||||
<CButtonGroup>
|
||||
<CButton :color="agent.editAccess ? 'primary' : 'light'" @click="updateStatus('editAccessOn')">
|
||||
دسترسی ویرایش
|
||||
</CButton>
|
||||
|
||||
<CButton :color="!agent.editAccess ? 'primary' : 'light'" @click="updateStatus('editAccessOff')">
|
||||
عدم دسترسی ویرایش
|
||||
</CButton>
|
||||
</CButtonGroup>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="6">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>مشخصات فردی نماینده:</h6>
|
||||
<el-divider></el-divider>
|
||||
<nuxt-link :to="{ name: 'admin-customers-customer', params: { customer: agent.user_id } }"
|
||||
>مشاهده اکانت کاربری</nuxt-link
|
||||
>
|
||||
<el-divider></el-divider>
|
||||
<CForm>
|
||||
<CInput label="نام مشتری" horizontal disabled :value="agent.full_name" />
|
||||
<CInput label="کد ملی" horizontal disabled :value="agent.national_code" />
|
||||
<CInput label="شماره شناسنامه" horizontal disabled :value="agent.id_number" />
|
||||
<CInput label="محل صدور" horizontal disabled :value="agent.place_of_issue" />
|
||||
<CInput label="تاریخ تولد" horizontal disabled :value="agent.birth_date" />
|
||||
<CInput label="نام پدر" horizontal disabled :value="agent.fathers_name" />
|
||||
<CInput label="میزان تحصیلات" horizontal disabled :value="agent.education_level" />
|
||||
<CInput label="وضعیت نظام وظیفه" horizontal disabled :value="agent.military_status" />
|
||||
<CTextarea label="گواهینامه های تخصصی اخذ شده" horizontal disabled rows="5" :value="agent.certificates" />
|
||||
</CForm>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="6">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>اطلاعات تماس:</h6>
|
||||
<el-divider></el-divider>
|
||||
|
||||
<CForm>
|
||||
<CInput label="استان" horizontal disabled :value="agent.province_name" />
|
||||
<CInput label="شهر" horizontal disabled :value="agent.city_name" />
|
||||
<CInput label="نام شرکت/تعمیرگاه" horizontal disabled :value="agent.store_name" />
|
||||
<CInput label="کد پستی" horizontal disabled :value="agent.postal_code" />
|
||||
<CInput label="تلفن همراه" horizontal disabled :value="agent.mobile_number" />
|
||||
<CInput label="تلفن شرکت/تعمیرگاه" horizontal disabled :value="agent.tel_number" />
|
||||
<CInput label="فکس شرکت/تعمیرگاه" horizontal disabled :value="agent.fax_number" />
|
||||
<CInput label="کد اقتصادی" horizontal disabled :value="agent.economic_code" />
|
||||
<CInput label="ایمیل" horizontal disabled :value="agent.email" />
|
||||
<CTextarea label="آدرس" horizontal disabled rows="5" :value="agent.address" />
|
||||
</CForm>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="6">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>مشخصات مکان نماینده:</h6>
|
||||
<el-divider></el-divider>
|
||||
<CForm>
|
||||
<CInput label="جواز کسب" horizontal disabled :value="business_license" />
|
||||
<CInput label="نوع مالکیت" horizontal disabled :value="ownership_type" />
|
||||
<CInput label="متراژ کل (متر)" horizontal disabled :value="agent.total_area" />
|
||||
<CInput label="متراژ محل تعمیرات (متر)" horizontal disabled :value="agent.repair_area" />
|
||||
<CInput label="متراژ انبار (متر)" horizontal disabled :value="agent.stock_area" />
|
||||
<CInput label="طبقه محل مراجعه مشتریان" horizontal disabled :value="agent.customer_reference_floor" />
|
||||
|
||||
<CInput label="موقعیت مکانی" horizontal disabled :value="place_location" />
|
||||
<CInput label="موقعیت جغرافیایی" horizontal disabled :value="geo_location" />
|
||||
<CInput label="تعداد و ابعاد تابلو" horizontal disabled :value="agent.banner_info" />
|
||||
<CInput label="تعداد تکنسین های تعمیرگاه" horizontal disabled :value="agent.repair_technicians" />
|
||||
<CInput label="تعداد استادکار تعمیرگاه" horizontal disabled :value="agent.repair_masters" />
|
||||
<CInput label="تعداد کارکنان اداری" horizontal disabled :value="agent.office_workers" />
|
||||
<CInput label="تعداد پیک موتوری" horizontal disabled :value="agent.bike_deliveries" />
|
||||
</CForm>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="6">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>آشنایی با آسان سرویس:</h6>
|
||||
<el-divider></el-divider>
|
||||
<CForm>
|
||||
<CInput label="نحوه آشنایی با شرکت" horizontal disabled :value="know_asanServ_from" />
|
||||
<CTextarea
|
||||
label="در صورتیکه معرف دارید مشخصات ایشان را ذکر کنید"
|
||||
horizontal
|
||||
disabled
|
||||
rows="5"
|
||||
:value="agent.introducer_info"
|
||||
/>
|
||||
|
||||
<CInput
|
||||
label="میزان آشنایی با محصولات آسان سرویس"
|
||||
horizontal
|
||||
disabled
|
||||
:value="asanServ_products_knowledge"
|
||||
/>
|
||||
<CInput
|
||||
label="آیا در زمینه فروش لوازم جانبی موبایل و کامپیوتر فعالیت دارید؟"
|
||||
horizontal
|
||||
disabled
|
||||
:value="computer_saling_exp"
|
||||
/>
|
||||
<CTextarea
|
||||
label="در صورت فعالیت فروش، نام شرکت و نوع محصول را نام ببرید"
|
||||
horizontal
|
||||
disabled
|
||||
rows="5"
|
||||
:value="agent.computer_saling_description"
|
||||
/>
|
||||
</CForm>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="6">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>سایر توضیحات:</h6>
|
||||
<el-divider></el-divider>
|
||||
<CForm>
|
||||
<CTextarea label="سایر توضیحات" horizontal disabled rows="5" :value="agent.more_descriptions" />
|
||||
</CForm>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="6">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>سابقه فعالیت:</h6>
|
||||
<el-divider></el-divider>
|
||||
<CForm>
|
||||
<CInput
|
||||
label="سابقه فعالیت در تعمیر ابزار جانبی موبایل و کامپیوتر (سال)"
|
||||
horizontal
|
||||
disabled
|
||||
:value="agent.computer_repair_exp"
|
||||
/>
|
||||
<CInput
|
||||
label="سابقه فعالیت در تعمیر لوزام صوتی و تصویری (سال)"
|
||||
horizontal
|
||||
disabled
|
||||
:value="agent.multimedia_repair_exp"
|
||||
/>
|
||||
<CInput label="سابقه در محل کسب (سال)" horizontal disabled :value="agent.business_exp" />
|
||||
</CForm>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol lg="12">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<h6>نمایندگی نشان تجاری دیگر:</h6>
|
||||
<el-divider></el-divider>
|
||||
<el-table :data="agent.other_representations" style="width: 100%">
|
||||
<el-table-column type="index" label="#"> </el-table-column>
|
||||
|
||||
<el-table-column prop="trademark" label="نشان تجاری" width=""> </el-table-column>
|
||||
|
||||
<el-table-column prop="company_name" label="نام شرکت" width=""> </el-table-column>
|
||||
|
||||
<el-table-column prop="cooperation_history" label="سابقه همکاری (سال)" width=""> </el-table-column>
|
||||
|
||||
<el-table-column prop="cooperation_start_year" label="سال شروع همکاری" width=""> </el-table-column>
|
||||
</el-table>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
|
||||
<CCol v-for="item in agentAssetCategories" :key="item.fieldName" lg="12">
|
||||
<CCard>
|
||||
<CCardBody>
|
||||
<CRow>
|
||||
<CCol>
|
||||
<h6>
|
||||
{{ item.title }}
|
||||
(عکس های آپلود شده)
|
||||
|
||||
<el-button
|
||||
size="small"
|
||||
:type="editFiles === item.fieldName ? 'success' : 'info'"
|
||||
@click="toggleEditFiles(item.fieldName)"
|
||||
>
|
||||
<span style="color: #fff"> ویرایش مدارک </span>
|
||||
</el-button>
|
||||
</h6>
|
||||
<el-divider></el-divider>
|
||||
|
||||
<template v-if="editFiles === item.fieldName">
|
||||
<RepresentationImageUploader
|
||||
:name="item.fieldName"
|
||||
:files-list="agent[item.fieldName] || []"
|
||||
:representation_code="agent.representation_code"
|
||||
is-admin
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-image
|
||||
v-for="image in agent[item.fieldName] || []"
|
||||
:key="image._id"
|
||||
style="width: 100px; height: 100px"
|
||||
:src="image.url"
|
||||
:preview-src-list="getImagePreviewList(agent[item.fieldName] || [])"
|
||||
fit="cover"
|
||||
class="ml-2"
|
||||
>
|
||||
</el-image>
|
||||
</template>
|
||||
</CCol>
|
||||
</CRow>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
</CCol>
|
||||
</CRow>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'AdminAgentDetails',
|
||||
layout: 'admin',
|
||||
async asyncData({ $axios, params, error }) {
|
||||
try {
|
||||
const allData = await Promise.all([
|
||||
// agent
|
||||
$axios.get(`/api/admin/agentDetails/${params.agent}`),
|
||||
// agentInbox
|
||||
$axios.get(`/api/admin/agentInbox/${params.agent}`),
|
||||
// agent buffer request
|
||||
$axios.get(`/api/admin/agentBr/${params.agent}`),
|
||||
// agent oldPiece request
|
||||
$axios.get(`/api/admin/agentOpr/${params.agent}`),
|
||||
// agent piece request
|
||||
$axios.get(`/api/admin/agentPr/${params.agent}`)
|
||||
])
|
||||
const agent = allData[0]
|
||||
const agentInbox = allData[1]
|
||||
const agentBr = allData[2]
|
||||
const agentOpr = allData[3]
|
||||
const agentPr = allData[4]
|
||||
|
||||
return {
|
||||
agent: agent.data,
|
||||
agentInbox: agentInbox.data,
|
||||
agentBr: agentBr.data,
|
||||
agentOpr: agentOpr.data,
|
||||
agentPr: agentPr.data
|
||||
}
|
||||
} catch (e) {
|
||||
error({ status: 404, message: 'Page not found' })
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: 'مشاهده درخواست نمایندگی',
|
||||
agent: null,
|
||||
agentInbox: null,
|
||||
agentBr: null,
|
||||
agentOpr: null,
|
||||
agentPr: null,
|
||||
editFiles: '',
|
||||
validation: {}
|
||||
}
|
||||
},
|
||||
head() {
|
||||
return {
|
||||
title: this.title
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters({
|
||||
agentAssetCategories: 'front/agentAssetCategories'
|
||||
}),
|
||||
updatePermission() {
|
||||
return this.$auth.user.permissions.includes('agentUpdate')
|
||||
},
|
||||
business_license() {
|
||||
if (this.agent.business_license) return 'دارد'
|
||||
else return 'ندارد'
|
||||
},
|
||||
ownership_type() {
|
||||
if (this.agent.ownership_type === 'owner') return 'مالک'
|
||||
else if (this.agent.ownership_type === 'rent') return 'استیجاری'
|
||||
else return 'سرقفلی'
|
||||
},
|
||||
place_location() {
|
||||
if (this.agent.place_location === 'tech_passage') return 'مرکز صنف موبایل و کامپیوتر'
|
||||
else return 'سایر'
|
||||
},
|
||||
geo_location() {
|
||||
if (this.agent.geo_location === 'main_street') return 'خیابان اصلی'
|
||||
else if (this.agent.geo_location === 'side_street') return 'خیابان فرعی'
|
||||
else if (this.agent.geo_location === 'alley') return 'کوچه'
|
||||
else if (this.agent.geo_location === 'inside_passage') return 'داخل پاساژ'
|
||||
else return 'بر پاساژ'
|
||||
},
|
||||
know_asanServ_from() {
|
||||
if (this.agent.know_asanServ_from === 'company_agents') return 'نماینده فروش'
|
||||
else if (this.agent.know_asanServ_from === 'website') return 'وب سایت'
|
||||
else if (this.agent.know_asanServ_from === 'company_workers') return 'پرسنل سازمان'
|
||||
else if (this.agent.know_asanServ_from === 'exhibition') return 'نمایشگاه'
|
||||
else if (this.agent.know_asanServ_from === 'introduced') return 'معرفی'
|
||||
else return 'سایر'
|
||||
},
|
||||
asanServ_products_knowledge() {
|
||||
if (this.agent.asanServ_products_knowledge === 4) return 'زیاد'
|
||||
else if (this.agent.asanServ_products_knowledge === 3) return 'نسبتاً خوب'
|
||||
else if (this.agent.asanServ_products_knowledge === 2) return 'متوسط'
|
||||
else if (this.agent.asanServ_products_knowledge === 1) return 'کم'
|
||||
else return 'خیلی کم'
|
||||
},
|
||||
computer_saling_exp() {
|
||||
if (this.agent.computer_saling_exp) return 'دارد'
|
||||
else return 'ندارد'
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
editFiles(newVal, oldVal) {
|
||||
this.$nuxt.refresh()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
goToUpdatePage() {
|
||||
const title = 'هشدار'
|
||||
const msg =
|
||||
'توجه داشته باشید با تغییر اطللاعات نماینده اطلاعات چاپی روی رسید پذیرش موقت مشتریان تحت تاثیر قرار خواهند گرفت.'
|
||||
this.$confirm(msg, title, {
|
||||
confirmButtonText: 'رفتن به صفحه ویرایش',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
this.$router.push({ name: 'admin-agentUpdate', query: { agent: this.agent._id } })
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: 'عملیات لغو شد'
|
||||
})
|
||||
})
|
||||
},
|
||||
getAgentInboxCount(status) {
|
||||
return this.agentInbox.filter(item => {
|
||||
if (status === 'unread') return !item.seen
|
||||
if (status === 'ttl') return !item.ItemReceptionTransNumber
|
||||
if (status === 'atl') return item.ItemReceptionTransNumber
|
||||
return false
|
||||
}).length
|
||||
},
|
||||
updateStatus(status) {
|
||||
if (status === this.agent.status) return
|
||||
const title = 'هشدار'
|
||||
function getMsg() {
|
||||
const msg1 = 'با تغییر وضعیت فرم به بررسی مدارک بلافاصله پیامک اطلاع رسانی برای متقاضی ارسال خواهد شد'
|
||||
const msg2 =
|
||||
'با تغییر وضعیت به رد شده یا تایید شده دیگر امکان تغییر وضعیت نخواهید داشت و پیامک تغییر وضعیت بلافاصله برای متقاضی ارسال خواهد شد، ادامه میدهید؟'
|
||||
const msg3 = 'پیامک ایجاد دسرترسی آپلود برای متقاضی ارسال خواهد شد، ادامه میدهید؟'
|
||||
const msg4 = 'با برداشتن دسترسی آپلود پیامکی برای متقاضی ارسال نخواهد شد'
|
||||
const msg5 = 'پیامک ایجاد دسرترسی ویرایش برای متقاضی ارسال خواهد شد، ادامه میدهید؟'
|
||||
const msg6 = 'با برداشتن دسترسی ویرایش پیامکی برای متقاضی ارسال نخواهد شد'
|
||||
|
||||
if (status === 'verification') return msg1
|
||||
else if (status === 'rejected' || status === 'accepted') return msg2
|
||||
else if (status === 'uploadOn') return msg3
|
||||
else if (status === 'uploadOff') return msg4
|
||||
else if (status === 'editAccessOn') return msg5
|
||||
else return msg6
|
||||
}
|
||||
|
||||
this.$confirm(getMsg(), title, {
|
||||
confirmButtonText: 'ادامه',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
this.$axios
|
||||
.put(`/api/admin/representationStatus/${this.agent._id}`, { status })
|
||||
.then(response => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: response.data.message
|
||||
})
|
||||
this.$nuxt.refresh()
|
||||
})
|
||||
.catch(err => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: err.response.data.message
|
||||
})
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: 'عملیات لغو شد'
|
||||
})
|
||||
})
|
||||
},
|
||||
getImagePreviewList(images) {
|
||||
return images.map(item => item.url)
|
||||
},
|
||||
async revoke() {
|
||||
try {
|
||||
const title1 = ' هشدار - مرحله اول'
|
||||
const title2 = ' هشدار - مرحله دوم'
|
||||
const title3 = ' هشدار - مرحله آخر'
|
||||
|
||||
const msg1 = 'امتیاز نمایندگی از این نماینده صلب خواهد شد!'
|
||||
const msg2 =
|
||||
'با ابطال امتیاز نمایندگی دیگر امکان تغییر وجود ندارد و در صورت نیاز به اعطای مجدد امتیاز نمایندگی به این کاربر نیاز به ثبت درخواست مجدد توسط خود کاربر خواهد بود. '
|
||||
const msg3 = 'ادامه میدهید؟'
|
||||
|
||||
/// first step
|
||||
await this.$confirm(msg1, title1, {
|
||||
confirmButtonText: 'ادامه',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
/// second step
|
||||
await this.$confirm(msg2, title2, {
|
||||
confirmButtonText: 'متوجه شدم ',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
/// the last confirmation and send request
|
||||
await this.$confirm(msg3, title3, {
|
||||
confirmButtonText: 'ابطال نمایندگی ',
|
||||
cancelButtonText: 'لغو',
|
||||
type: 'warning'
|
||||
})
|
||||
|
||||
/// send request
|
||||
this.$axios
|
||||
.post(`/api/admin/revokeAgent/${this.agent._id}`)
|
||||
.then(res => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.data.message
|
||||
})
|
||||
this.$router.push({ name: 'admin-agents', query: { agent: true } })
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: 'مشکلی در روند انجام عملیات پیش آمده'
|
||||
})
|
||||
})
|
||||
} catch (e) {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: 'عملیات لغو شد'
|
||||
})
|
||||
}
|
||||
},
|
||||
toggleEditFiles(fieldName) {
|
||||
this.editFiles === fieldName ? (this.editFiles = '') : (this.editFiles = fieldName)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,194 @@
|
||||
<template>
|
||||
<div>
|
||||
<CustomSubHeader>
|
||||
<CBreadcrumb class="border-0 mb-0">{{ title }}</CBreadcrumb>
|
||||
<CButton size="sm" color="success" class="mr-auto" @click="addAgentModal = true">
|
||||
<span style="color: #fff"> افزودن نماینده </span>
|
||||
</CButton>
|
||||
</CustomSubHeader>
|
||||
|
||||
<CCard>
|
||||
<CCardHeader>
|
||||
<slot name="header">
|
||||
<i class="fas fa-filter"></i>
|
||||
<b>فیلتر ها</b>
|
||||
</slot>
|
||||
</CCardHeader>
|
||||
|
||||
<CCardBody>
|
||||
<CRow>
|
||||
<CCol sm="12">
|
||||
<h4>جستجو در لیست:</h4>
|
||||
<el-input
|
||||
v-model="filterText"
|
||||
clearable
|
||||
placeholder="کد نماینده - شماره موبایل - استان - شهر"
|
||||
style="display: inline-block; max-width: 500px; margin-top: 8px"
|
||||
></el-input>
|
||||
</CCol>
|
||||
</CRow>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
|
||||
<CCard>
|
||||
<CCardHeader>
|
||||
<slot name="header">
|
||||
<CIcon name="cil-grid" />
|
||||
{{ list_title }}
|
||||
</slot>
|
||||
</CCardHeader>
|
||||
|
||||
<CCardBody>
|
||||
<el-table :data="filteredItems" style="width: 100%">
|
||||
<el-table-column type="index" label="#"> </el-table-column>
|
||||
|
||||
<el-table-column prop="full_name" label="نام" width=""> </el-table-column>
|
||||
|
||||
<el-table-column prop="mobile_number" label="شماره موبایل" width=""> </el-table-column>
|
||||
|
||||
<el-table-column label="نوع نماینده" width="300">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.representation_type === 'both'">نماینده هر دو نوع لوازم</span>
|
||||
<span v-if="scope.row.representation_type === 'verity'">نماینده لوازم جانبی کامپیوتر و موبایل</span>
|
||||
<span v-if="scope.row.representation_type === 'panatech'">نماینده لوازم صوتی تصویری خودرو</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="agent_code" label="کد نماینده" width=""> </el-table-column>
|
||||
|
||||
<el-table-column prop="province_name" label="استان" width=""> </el-table-column>
|
||||
|
||||
<el-table-column prop="city_name" label="شهر" width=""> </el-table-column>
|
||||
|
||||
<el-table-column label="مشاهده" width="70" align="center">
|
||||
<template slot-scope="scope">
|
||||
<CButton
|
||||
:key="scope.row._id"
|
||||
color="success"
|
||||
variant="outline"
|
||||
:to="{ name: 'admin-agents-agent', params: { agent: scope.row._id }, query: { ...$route.query } }"
|
||||
>
|
||||
<i class="fal fa-eye"></i>
|
||||
</CButton>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</CCardBody>
|
||||
</CCard>
|
||||
|
||||
<el-dialog :visible.sync="addAgentModal">
|
||||
<el-select v-model="selectedUserForNewAgent" style="width: 100%" label="کاربر را انتخاب کنید" filterable>
|
||||
<el-option
|
||||
v-for="item in users"
|
||||
:key="item._id"
|
||||
:label="item.first_name + ' ' + item.last_name + ' (' + item.national_code + ')'"
|
||||
:value="item._id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
<br />
|
||||
<br />
|
||||
<el-button type="success" :disabled="!selectedUserForNewAgent" @click="addAgent">
|
||||
<span style="color: #fff">افزودن</span>
|
||||
</el-button>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'AdminAgentsList',
|
||||
layout: 'admin',
|
||||
async asyncData({ $axios, query, error }) {
|
||||
try {
|
||||
let agents
|
||||
if (query?.revoked) {
|
||||
agents = await $axios.get('/api/admin/revokedAgents')
|
||||
} else {
|
||||
agents = await $axios.get('/api/public/agents')
|
||||
}
|
||||
|
||||
return {
|
||||
agents: agents.data
|
||||
}
|
||||
} catch (err) {
|
||||
error({ status: 404, message: 'There is a problem here' })
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list_title: 'لیست',
|
||||
agents: null,
|
||||
users: [],
|
||||
filterText: '',
|
||||
addAgentModal: false,
|
||||
selectedUserForNewAgent: null
|
||||
}
|
||||
},
|
||||
head() {
|
||||
return {
|
||||
title: this.title
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
revokedAgentsList() {
|
||||
return this.$route.query?.revoked
|
||||
},
|
||||
title() {
|
||||
if (this.revokedAgentsList) return 'لیست نمایندگان صلب امتیاز شده'
|
||||
else return 'لیست نمایندگان'
|
||||
},
|
||||
filteredItems() {
|
||||
const filterText = this.filterText.toLowerCase()
|
||||
if (!filterText.length) return this.agents
|
||||
else
|
||||
return this.agents.filter(item => {
|
||||
return (
|
||||
item.agent_code.toLowerCase().includes(filterText) ||
|
||||
item.full_name.toLowerCase().includes(filterText) ||
|
||||
item.mobile_number.toLowerCase().includes(filterText) ||
|
||||
item.province_name.toLowerCase().includes(filterText) ||
|
||||
item.city_name.toLowerCase().includes(filterText)
|
||||
)
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
revokedAgentsList(newVal, oldVal) {
|
||||
this.$nuxt.refresh()
|
||||
},
|
||||
addAgentModal(newVal, oldVal) {
|
||||
this.selectedUserForNewAgent = null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$axios.$get('/api/admin/users').then(res => {
|
||||
this.users = res
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
addAgent() {
|
||||
if (!this.selectedUserForNewAgent) {
|
||||
return this.$message({
|
||||
type: 'error',
|
||||
message: 'ابتدا کاربر مورد نظر را انتخاب نمایید'
|
||||
})
|
||||
}
|
||||
this.$axios
|
||||
.$post('/api/admin/addAgentByAdmin', { user: this.selectedUserForNewAgent })
|
||||
.then(res => {
|
||||
this.$router.push({
|
||||
name: 'admin-agents-agent',
|
||||
params: { agent: res.representationId },
|
||||
query: { ...this.$route.query }
|
||||
})
|
||||
})
|
||||
.catch(err => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: err.response.data.message
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user