somewhere
This commit is contained in:
@@ -0,0 +1,233 @@
|
||||
<template>
|
||||
<el-dialog :title="title" :visible.sync="showModal">
|
||||
<div v-loading="fetchingDrafts">
|
||||
<template v-if="!addingStuff">
|
||||
<h3 class="mb-3">پیشنویس مورد نظر جهت افزودن اقلام انتخاب شده را انتخاب کنید:</h3>
|
||||
|
||||
<div class="tableBox">
|
||||
<table class="drafts-modal">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="index">ردیف</th>
|
||||
<th class="description">توضیحات</th>
|
||||
<th class="brand">نوع</th>
|
||||
<th class="quantity">تعداد کالاها</th>
|
||||
<th class="details">افزودن</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<template v-if="filteredDrafts.length">
|
||||
<tr v-for="(item, index) in filteredDrafts" :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="brand">
|
||||
<!-- <img src="/assets/img/verity-small.png" alt="verity" v-if="item.db_name === 'verity'" />
|
||||
<img src="/assets/img/panatech-small.png" alt="panatech" v-if="item.db_name === 'panatech'" /> -->
|
||||
<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 class="quantity">
|
||||
<span>{{ totalItemsCount(item) }}</span>
|
||||
</td>
|
||||
|
||||
<td class="details">
|
||||
<button class="btn btn-primary" @click="addStuffToDraft(item._id)">
|
||||
<i class="fas fa-link"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
<tr v-else>
|
||||
<td class="noItem">
|
||||
<span>هیچ اطلاعاتی وجود ندارد</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
<el-progress
|
||||
class="mb-3"
|
||||
:text-inside="true"
|
||||
:stroke-width="20"
|
||||
:percentage="addProgress"
|
||||
:status="addProgressStatus"
|
||||
></el-progress>
|
||||
<div class="tableBox">
|
||||
<table class="drafts-modal">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="index">ردیف</th>
|
||||
<th class="name">نام</th>
|
||||
<th class="quantity">تعداد کالاها</th>
|
||||
<th class="brand">شماره سریال</th>
|
||||
<th class="addStatus">وضعیت</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(item, index) in addedStuff" :key="index + '_addedStuff_modal_itemStatus'">
|
||||
<td class="index">
|
||||
<span>{{ index + 1 }}</span>
|
||||
</td>
|
||||
|
||||
<td class="name">
|
||||
<span class="singleLineTxt" :title="getItemName(item.ItemID)">{{ getItemName(item.ItemID) }}</span>
|
||||
</td>
|
||||
|
||||
<td class="quantity">
|
||||
<span>{{ item.MjQty }}</span>
|
||||
</td>
|
||||
|
||||
<td class="brand">
|
||||
<span> {{ item.SerialNo1 || '-' }} </span>
|
||||
</td>
|
||||
|
||||
<td class="addStatus">
|
||||
<i
|
||||
v-if="item.status"
|
||||
class="el-icon-success"
|
||||
style="color: rgb(19, 206, 102)"
|
||||
:title="item.statusTxt"
|
||||
></i>
|
||||
<i v-else class="el-icon-info" style="color: orange" :title="item.statusTxt"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'AddUserItemsToAgentDraft',
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
db_name: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
items: {
|
||||
type: Array,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fetchingDrafts: false,
|
||||
addingStuff: false,
|
||||
addProgress: 0,
|
||||
addProgressStatus: 'success',
|
||||
transactionDrafts: [],
|
||||
addedStuff: [],
|
||||
validation: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
showModal: {
|
||||
get() {
|
||||
return this.show
|
||||
},
|
||||
set(value) {
|
||||
this.$emit('closeModal')
|
||||
}
|
||||
},
|
||||
title() {
|
||||
if (this.db_name === 'panatech') return 'افزودن کالاهای صوتی تصویری به فرم'
|
||||
if (this.db_name === 'verity') return 'افزودن کالاهای لوازم جانبی به فرم'
|
||||
else return ''
|
||||
},
|
||||
filteredDrafts() {
|
||||
return this.transactionDrafts.filter(item => item.db_name === this.db_name)
|
||||
},
|
||||
products() {
|
||||
if (this.db_name === 'verity') return this.$store.state.front.verityProducts
|
||||
else if (this.db_name === 'panatech') return this.$store.state.front.panatechProducts
|
||||
else return []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
showModal(newVal, oldVal) {
|
||||
if (newVal) {
|
||||
this.fetchingDrafts = true
|
||||
this.$axios
|
||||
.get('/api/user/transactionDrafts')
|
||||
.then(res => {
|
||||
this.transactionDrafts = res.data
|
||||
this.fetchingDrafts = false
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: 'مشکلی در دریافت اطلاعات پیش آمده'
|
||||
})
|
||||
this.showModal = false
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
totalItemsCount(draft) {
|
||||
const items = draft.items
|
||||
let count = 0
|
||||
items.forEach(item => (count += item.MjQty))
|
||||
return count
|
||||
},
|
||||
getItemName(ItemID) {
|
||||
return this.products.find(item => item.ItemID === ItemID)?.ItemName
|
||||
},
|
||||
async addStuffToDraft(draftId) {
|
||||
this.addingStuff = true
|
||||
|
||||
try {
|
||||
let index = 1
|
||||
for await (const item of this.items) {
|
||||
this.addProgress = Number(((index * 100) / this.items.length).toFixed(0))
|
||||
await new Promise((resolve, reject) => {
|
||||
index++
|
||||
this.$axios
|
||||
.put(`/api/user/transactionDraftItemAdd/${draftId}`, item, { progress: false })
|
||||
.then(res => {
|
||||
this.addedStuff.push({ ...item, status: true, statusTxt: res.data.message })
|
||||
resolve()
|
||||
})
|
||||
.catch(err => {
|
||||
this.addedStuff.push({ ...item, status: false, statusTxt: err.response.data.message })
|
||||
this.addProgressStatus = 'warning'
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
}
|
||||
} catch (e) {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: 'مشکلی در ثبت اطلاعات پیش آمده'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user