174 lines
5.6 KiB
Vue
174 lines
5.6 KiB
Vue
<template>
|
|
<div>
|
|
<CustomSubHeader>
|
|
<CBreadcrumb class="border-0 mb-0"> دستگاه ها</CBreadcrumb>
|
|
<CButton size="sm" color="success" class="mr-auto" @click="download">خروجی اکسل</CButton>
|
|
</CustomSubHeader>
|
|
|
|
<CRow>
|
|
<CCol xl="8">
|
|
<CCard>
|
|
<CCardBody>
|
|
<CRow>
|
|
<CCol xl="8">
|
|
<h3>اضافه کردن یا به روزرسانی با فایل اکسل</h3>
|
|
<el-divider></el-divider>
|
|
<input ref="file" type="file" class="d-block" />
|
|
<el-button type="success" class="mt-3" size="small" @click="post">افزودن</el-button>
|
|
</CCol>
|
|
<CCol xl="4">
|
|
<h3>دستور عمل</h3>
|
|
<el-divider></el-divider>
|
|
<p>
|
|
برای اضافه کردن دستگاه جدید فقط کافی است فایل نمونه رو دانلود کنید و به ترتیب مقادیر رو وارد کنید .
|
|
<br />
|
|
برای به روزرسانی یک دستگاه به صورت تکی یا عمده داخل فایل نمونه IMEI را قرار داده و مقادیر جدید آن را
|
|
ثبت کنید و آپلود کنید
|
|
</p>
|
|
<a
|
|
download
|
|
target="_blank"
|
|
title="برای دانلود کلیک کنید"
|
|
href="/example.xlsx"
|
|
style="color: blue; display: block; direction: ltr !important; text-align: right"
|
|
>
|
|
فایل نمونه
|
|
</a>
|
|
</CCol>
|
|
</CRow>
|
|
</CCardBody>
|
|
</CCard>
|
|
</CCol>
|
|
<CCol xl="4">
|
|
<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>
|
|
</CCol>
|
|
</CRow>
|
|
|
|
<CCard>
|
|
<CCardHeader>
|
|
<slot name="header">
|
|
<CIcon name="cil-grid" />
|
|
دستگاه ها
|
|
</slot>
|
|
</CCardHeader>
|
|
|
|
<CCardBody>
|
|
<el-table :data="filteredItems" style="width: 100%">
|
|
<el-table-column type="index" label="#"> </el-table-column>
|
|
|
|
<el-table-column prop="model" label="مدل" width="150px"> </el-table-column>
|
|
<el-table-column prop="IMEI" label=" IMEI" width="150px"> </el-table-column>
|
|
|
|
<!-- <el-table-column prop="tomanPrice" label="قیمت دستگاه(تومان)" width=""> </el-table-column> -->
|
|
<!-- <el-table-column prop="dollarProfit" label="سود دلاری فروشنده" width=""> </el-table-column> -->
|
|
<el-table-column prop="score" label="امتیاز فروش" width=""> </el-table-column>
|
|
<!-- <el-table-column prop="renewalProfit" label="سود تمدید" width=""> </el-table-column> -->
|
|
|
|
<el-table-column prop="profit" label="سود تومانی فروشنده" width=""> </el-table-column>
|
|
|
|
<el-table-column label="وضعیت" width="">
|
|
<template slot-scope="scope">
|
|
<el-tag v-if="scope.row.status == 1" type="success">نصب شده</el-tag>
|
|
<el-tag v-else type="danger"> نصب نشده</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</CCardBody>
|
|
</CCard>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import FileDownload from 'js-file-download'
|
|
export default {
|
|
name: 'AdminGpsDevicesList',
|
|
layout: 'admin',
|
|
async asyncData({ $axios, error, query }) {
|
|
try {
|
|
const { data } = await $axios.get('/api/admin/gps/device')
|
|
|
|
return {
|
|
devices: data
|
|
}
|
|
} catch (error) {
|
|
console.log(error)
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
devices: [],
|
|
device: {},
|
|
filterText: ''
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
config() {
|
|
return this.$config
|
|
},
|
|
filteredItems() {
|
|
const filterText = this.filterText
|
|
if (!this.filterText.length) return this.devices
|
|
else {
|
|
return this.devices.filter(item => {
|
|
return item.IMEI.includes(filterText) || item.model.includes(filterText)
|
|
})
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
post() {
|
|
this.validation = {}
|
|
const data = new FormData()
|
|
data.append('file', this.$refs.file.files[0])
|
|
this.$axios
|
|
.post('/api/admin/gps/device/exel', data)
|
|
.then(res => {
|
|
console.log('🚀 ~ file: index.vue ~ line 108 ~ post ~ res', res)
|
|
this.$message({
|
|
type: 'success',
|
|
message: 'فایل با موفقیت ارسال شد'
|
|
})
|
|
this.$refs.file.value = null
|
|
this.$nuxt.refresh()
|
|
})
|
|
.catch(err => {
|
|
if (err.response.data.status === 401) {
|
|
return this.$message({
|
|
type: 'warning',
|
|
message: 'لطفا دوباره وارد حساب خود شوید'
|
|
})
|
|
}
|
|
if (err.response.status === 422) this.validation = err.response.data.validation
|
|
else console.log(err)
|
|
})
|
|
},
|
|
async download() {
|
|
const x = await this.$axios.get('/api/admin/gps/device/exel')
|
|
FileDownload(x.data, 'device.csv')
|
|
}
|
|
}
|
|
}
|
|
</script>
|