Files
asan-service/pages/account/addTicket/index.vue
T
2023-08-17 13:05:51 +03:30

141 lines
4.3 KiB
Vue

<template>
<user-dashboard-container page-class="post" panel-title="افزودن تیکت">
<form class="form form_3" @submit.prevent="post">
<div class="formRow" :class="validation.title ? 'err' : null">
<label for="title">:عنوان تیکت</label>
<input id="title" v-model="ticket.title" type="text" />
<p v-if="validation.title">{{ validation.title.msg }}</p>
</div>
<div class="formRow">
<label>کد پذیرش:</label>
<el-select v-model="ticket.transaction_id" filterable :placeholder="tnPlaceholder" :loading="fetching">
<el-option-group :key="0" label="پذیرش موقت ها">
<el-option
v-for="(item, index) in ttns"
:key="index + '_getAll_tempTransactions_for_new_ticket'"
:value="item"
></el-option>
</el-option-group>
<el-option-group :key="1" label="پذیرش دائم ها">
<el-option
v-for="(item, index) in atns"
:key="index + '_getAll_transactions_for_new_ticket'"
:value="item"
></el-option>
</el-option-group>
</el-select>
</div>
<div class="btnRow">
<button class="btn btn-primary" type="submit">
<span>افزودن</span>
<i class="far fa-plus-circle"></i>
</button>
</div>
</form>
</user-dashboard-container>
</template>
<script>
export default {
name: 'AccountAddTicket',
layout: 'user',
data() {
return {
verityTransactions: [],
panatechTransactions: [],
agentsTransactions: [],
fetching: false,
ticket: {
title: '',
transaction_id: '',
user_id: this.$auth.user._id
},
validation: {}
}
},
computed: {
transactions() {
return [...this.verityTransactions, ...this.panatechTransactions, ...this.agentsTransactions]
},
ttns() {
const array = []
this.transactions.forEach(item => {
if (!item.ItemReceptionTransNumber) array.push(item.TempReceiptTransNumber)
})
return array
},
atns() {
const array = []
this.transactions.forEach(item => {
if (item.ItemReceptionTransNumber) array.push(item.ItemReceptionTransNumber)
})
return array
},
tnPlaceholder() {
if (this.fetching) return 'در حال بارگیری...'
else return 'اختیاری'
}
},
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')
])
const verityTransactions = allData[0]
const panatechTransactions = allData[1]
const agentsTransactions = allData[2]
this.verityTransactions = verityTransactions.data.data
this.panatechTransactions = panatechTransactions.data.data
this.agentsTransactions = agentsTransactions.data
this.fetching = false
} catch (e) {
this.$arpaError()
}
},
methods: {
post() {
this.validation = {}
this.$axios
.post('/api/user/addTicketConversation', this.ticket)
.then(res => {
this.$message({
type: 'success',
message: 'تیکت با موفقیت ثبت شد، پیام خودرا بنویسید.'
})
this.$router.push({ name: 'account-tickets-ticket', params: { ticket: res.data._id } })
})
.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)
})
}
}
}
</script>