perf: ticket list

This commit is contained in:
feng 2022-11-16 17:19:08 +08:00
parent 47006a2a88
commit c16ff3e894
6 changed files with 25 additions and 13 deletions

View File

@ -69,9 +69,12 @@ export default {
} }
}, },
{ {
prop: 'type_display', prop: 'type',
label: this.$t('tickets.type'), label: this.$t('tickets.type'),
width: '160px' width: '160px',
formatter: row => {
return row.type.label
}
}, },
{ {
prop: 'status', prop: 'status',
@ -80,7 +83,7 @@ export default {
width: '90px', width: '90px',
sortable: 'custom', sortable: 'custom',
formatter: row => { formatter: row => {
if (row.status === 'open') { if (row.status.value === 'open') {
return <el-tag type='primary' size='mini'> {this.$t('tickets.OpenStatus')}</el-tag> return <el-tag type='primary' size='mini'> {this.$t('tickets.OpenStatus')}</el-tag>
} else { } else {
return <el-tag type='danger' size='mini'> {this.$t('tickets.CloseStatus')}</el-tag> return <el-tag type='danger' size='mini'> {this.$t('tickets.CloseStatus')}</el-tag>
@ -102,7 +105,7 @@ export default {
{this.$t('tickets.Pending')} {this.$t('tickets.Pending')}
</el-tag> </el-tag>
} }
switch (row.state) { switch (row.state.value) {
case 'approved': case 'approved':
return <el-tag type='primary' size='mini'> return <el-tag type='primary' size='mini'>
{this.$t('tickets.Approved')} {this.$t('tickets.Approved')}

View File

@ -19,7 +19,7 @@ export default {
}, },
data() { data() {
return { return {
statusMap: this.object.status === 'open' ? STATUS_MAP['pending'] : STATUS_MAP[this.object.state], statusMap: this.object.status.value === 'open' ? STATUS_MAP['pending'] : STATUS_MAP[this.object.state.value],
imageUrl: require('@/assets/img/admin.png'), imageUrl: require('@/assets/img/admin.png'),
form: { form: {
comments: '' comments: ''

View File

@ -19,7 +19,7 @@ export default {
}, },
data() { data() {
return { return {
statusMap: this.object.status === 'open' ? STATUS_MAP['pending'] : STATUS_MAP[this.object.state], statusMap: this.object.status.value === 'open' ? STATUS_MAP['pending'] : STATUS_MAP[this.object.state.value],
imageUrl: require('@/assets/img/admin.png'), imageUrl: require('@/assets/img/admin.png'),
form: { form: {
comments: '' comments: ''

View File

@ -19,7 +19,7 @@ export default {
}, },
data() { data() {
return { return {
statusMap: this.object.status === 'open' ? STATUS_MAP['pending'] : STATUS_MAP[this.object.state], statusMap: this.object.status.value === 'open' ? STATUS_MAP['pending'] : STATUS_MAP[this.object.state.value],
imageUrl: require('@/assets/img/admin.png'), imageUrl: require('@/assets/img/admin.png'),
form: { form: {
comments: '' comments: ''

View File

@ -20,7 +20,7 @@
<Select2 v-model="requestForm.assets" v-bind="assetSelect2" style="width: 50% !important" /> <Select2 v-model="requestForm.assets" v-bind="assetSelect2" style="width: 50% !important" />
</el-form-item> </el-form-item>
<el-form-item :label="$tc('tickets.SystemUser')" :rules="isRequired"> <el-form-item :label="$tc('tickets.SystemUser')" :rules="isRequired">
<Select2 v-model="requestForm.accounts" style="width: 50% !important" /> <AccountFormatter v-model="requestForm.accounts" style="width: 50% !important" />
</el-form-item> </el-form-item>
<el-form-item :label="$tc('common.DateStart')" required> <el-form-item :label="$tc('common.DateStart')" required>
<el-date-picker <el-date-picker
@ -34,7 +34,15 @@
type="datetime" type="datetime"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$tc('assets.Action')" required /> <el-form-item :label="$tc('assets.Action')" required>
<el-tree
v-model="requestForm.actions"
:props="props"
:load="loadNode"
show-checkbox
@check-change="handleCheckChange"
/>
</el-form-item>
</el-form> </el-form>
</template> </template>
</IBox> </IBox>
@ -46,12 +54,13 @@ import { formatTime, getDateTimeStamp } from '@/utils/index'
import { toSafeLocalDateStr } from '@/utils/common' import { toSafeLocalDateStr } from '@/utils/common'
import { STATUS_MAP } from '../../const' import { STATUS_MAP } from '../../const'
import GenericTicketDetail from '@/views/tickets/components/GenericTicketDetail' import GenericTicketDetail from '@/views/tickets/components/GenericTicketDetail'
import AccountFormatter from '@/views/perms/AssetPermission/components/AccountFormatter'
import Select2 from '@/components/FormFields/Select2' import Select2 from '@/components/FormFields/Select2'
import IBox from '@/components/IBox' import IBox from '@/components/IBox'
export default { export default {
name: '', name: '',
components: { GenericTicketDetail, IBox, Select2 }, components: { GenericTicketDetail, IBox, Select2, AccountFormatter },
props: { props: {
object: { object: {
type: Object, type: Object,
@ -60,7 +69,7 @@ export default {
}, },
data() { data() {
return { return {
statusMap: this.object.status === 'open' ? STATUS_MAP['pending'] : STATUS_MAP[this.object.state], statusMap: this.object.status.value === 'open' ? STATUS_MAP['pending'] : STATUS_MAP[this.object.state.value],
requestForm: { requestForm: {
nodes: this.object.apply_nodes, nodes: this.object.apply_nodes,
assets: this.object.apply_assets, assets: this.object.apply_assets,

View File

@ -20,7 +20,7 @@ export default {
}, },
data() { data() {
return { return {
statusMap: this.object.status === 'open' ? STATUS_MAP['notified'] : STATUS_MAP[this.object.state], statusMap: this.object.status.value === 'open' ? STATUS_MAP['notified'] : STATUS_MAP[this.object.state.value],
imageUrl: require('@/assets/img/admin.png'), imageUrl: require('@/assets/img/admin.png'),
form: { form: {
comments: '' comments: ''
@ -38,7 +38,7 @@ export default {
}, },
{ {
key: this.$t('tickets.type'), key: this.$t('tickets.type'),
value: object.type_display value: object.type.lable
}, },
{ {
key: this.$t('tickets.status'), key: this.$t('tickets.status'),