mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-11 13:39:48 +08:00
ref: Separate context info field in component. (#281)
This commit is contained in:
parent
d7aaa4fc00
commit
5e20b31640
111
src/components/ADempiere/Field/fieldContextInfo.vue
Normal file
111
src/components/ADempiere/Field/fieldContextInfo.vue
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
<template>
|
||||||
|
<span>
|
||||||
|
<el-popover
|
||||||
|
v-if="(contextInfo && contextInfo.isActive) || reference.zoomWindowList.length"
|
||||||
|
ref="contextInfoField"
|
||||||
|
placement="top"
|
||||||
|
width="300"
|
||||||
|
trigger="click"
|
||||||
|
>
|
||||||
|
<p
|
||||||
|
class="pre-formatted"
|
||||||
|
v-html="contextInfo.messageText.msgText"
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<span class="custom-tittle-popover">
|
||||||
|
{{ name }}
|
||||||
|
</span>
|
||||||
|
<template v-if="!isEmptyValue(help)">
|
||||||
|
: {{ help }}
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<template v-for="(zoomItem, index) in reference.zoomWindowList">
|
||||||
|
<el-button
|
||||||
|
:key="index"
|
||||||
|
type="text"
|
||||||
|
@click="redirect({ window: zoomItem })"
|
||||||
|
>
|
||||||
|
{{ $t('table.ProcessActivity.zoomIn') }}
|
||||||
|
{{ zoomItem.name }}
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
<span v-popover:contextInfoField>
|
||||||
|
{{ name }}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { showMessage } from '@/utils/ADempiere/notification'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'FieldContextInfo',
|
||||||
|
props: {
|
||||||
|
contextInfo: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
reference: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
columnName: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
default: undefined
|
||||||
|
},
|
||||||
|
help: {
|
||||||
|
type: String,
|
||||||
|
default: undefined
|
||||||
|
},
|
||||||
|
fieldValue: {
|
||||||
|
type: [Number, String, Boolean, Array, Object, Date],
|
||||||
|
default: undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: this.fieldValue
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
permissionRoutes() {
|
||||||
|
return this.$store.getters.permission_routes
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
fieldValue(value) {
|
||||||
|
this.value = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showMessage,
|
||||||
|
redirect({ window }) {
|
||||||
|
this.$store.dispatch('getWindowByUuid', {
|
||||||
|
routes: this.permissionRoutes,
|
||||||
|
windowUuid: window.uuid
|
||||||
|
})
|
||||||
|
const windowRoute = this.$store.getters.getWindowRoute(window.uuid)
|
||||||
|
if (windowRoute) {
|
||||||
|
this.$router.push({
|
||||||
|
name: windowRoute.name,
|
||||||
|
query: {
|
||||||
|
action: 'advancedQuery',
|
||||||
|
tabParent: 0,
|
||||||
|
[this.columnName]: this.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.showMessage({
|
||||||
|
type: 'error',
|
||||||
|
message: this.$t('notifications.noRoleAccess')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<!--
|
<!--
|
||||||
this v-show is to indicate that if the field is not shown,
|
this v-show is to indicate that if the field is not shown,
|
||||||
@ -15,43 +14,22 @@
|
|||||||
:xl="sizeFieldResponsive.xl"
|
:xl="sizeFieldResponsive.xl"
|
||||||
:class="classField"
|
:class="classField"
|
||||||
>
|
>
|
||||||
<!-- POPOVER FOR FIELD CONTEXT INFO -->
|
|
||||||
<el-popover
|
|
||||||
v-if="(field.contextInfo && field.contextInfo.isActive) || field.reference.zoomWindowList.length"
|
|
||||||
ref="contextOptions"
|
|
||||||
placement="top"
|
|
||||||
width="300"
|
|
||||||
trigger="click"
|
|
||||||
>
|
|
||||||
<p
|
|
||||||
class="pre-formatted"
|
|
||||||
v-html="field.contextInfo.messageText.msgText"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<span class="custom-tittle-popover">
|
|
||||||
{{ field.name }}
|
|
||||||
</span>
|
|
||||||
<template v-if="!isEmptyValue(field.help)">
|
|
||||||
: {{ field.help }}
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<template v-for="(zoomItem, index) in field.reference.zoomWindowList">
|
|
||||||
<el-button
|
|
||||||
:key="index"
|
|
||||||
type="text"
|
|
||||||
@click="redirect({ window: zoomItem, columnName: field.columnName, value: field.value })"
|
|
||||||
>
|
|
||||||
{{ $t('table.ProcessActivity.zoomIn') }}
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-popover>
|
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:required="isMandatory()"
|
:required="isMandatory()"
|
||||||
>
|
>
|
||||||
<template slot="label">
|
<template slot="label">
|
||||||
<span v-popover:contextOptions>
|
<field-context-info
|
||||||
|
v-if="(field.contextInfo && field.contextInfo.isActive) || field.reference.zoomWindowList.length"
|
||||||
|
:name="field.name"
|
||||||
|
:field-value="field.value"
|
||||||
|
:help="field.help"
|
||||||
|
:context-info="field.contextInfo"
|
||||||
|
:reference="field.reference"
|
||||||
|
:column-name="field.columnName"
|
||||||
|
/>
|
||||||
|
<template v-else>
|
||||||
{{ isFieldOnly() }}
|
{{ isFieldOnly() }}
|
||||||
</span>
|
</template>
|
||||||
<field-translated
|
<field-translated
|
||||||
v-if="field.isTranslated && !isAdvancedQuery"
|
v-if="field.isTranslated && !isAdvancedQuery"
|
||||||
:name="field.name"
|
:name="field.name"
|
||||||
@ -99,6 +77,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import FieldContextInfo from '@/components/ADempiere/Field/fieldContextInfo'
|
||||||
import FieldTranslated from '@/components/ADempiere/Field/fieldTranslated'
|
import FieldTranslated from '@/components/ADempiere/Field/fieldTranslated'
|
||||||
import { FIELD_ONLY } from '@/components/ADempiere/Field/references'
|
import { FIELD_ONLY } from '@/components/ADempiere/Field/references'
|
||||||
import { DEFAULT_SIZE } from '@/components/ADempiere/Field/fieldSize'
|
import { DEFAULT_SIZE } from '@/components/ADempiere/Field/fieldSize'
|
||||||
@ -113,6 +92,7 @@ import { recursiveTreeSearch } from '@/utils/ADempiere/valueUtils'
|
|||||||
export default {
|
export default {
|
||||||
name: 'Field',
|
name: 'Field',
|
||||||
components: {
|
components: {
|
||||||
|
FieldContextInfo,
|
||||||
FieldTranslated
|
FieldTranslated
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
@ -251,9 +231,6 @@ export default {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
},
|
|
||||||
permissionRoutes() {
|
|
||||||
return this.$store.getters.permission_routes
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@ -266,7 +243,6 @@ export default {
|
|||||||
this.field = this.metadataField
|
this.field = this.metadataField
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showMessage,
|
|
||||||
isDisplayed() {
|
isDisplayed() {
|
||||||
if (this.isAdvancedQuery) {
|
if (this.isAdvancedQuery) {
|
||||||
return this.field.isShowedFromUser
|
return this.field.isShowedFromUser
|
||||||
@ -316,7 +292,7 @@ export default {
|
|||||||
return this.field.isMandatory || this.field.isMandatoryFromLogic
|
return this.field.isMandatory || this.field.isMandatoryFromLogic
|
||||||
},
|
},
|
||||||
isFieldOnly() {
|
isFieldOnly() {
|
||||||
if (this.inTable || this.field.isFieldOnly || this.verifyIsFieldOnly(this.field.displayType)) {
|
if (this.inTable || this.field.isFieldOnly || this.verifyIsFieldOnly()) {
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
return this.field.name
|
return this.field.name
|
||||||
@ -324,12 +300,11 @@ export default {
|
|||||||
/**
|
/**
|
||||||
* TODO: Evaluate the current field with the only fields contained in the
|
* TODO: Evaluate the current field with the only fields contained in the
|
||||||
* constant FIELD_ONLY
|
* constant FIELD_ONLY
|
||||||
* @param {integer} id [identifier of the type of isDisplayed]
|
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
*/
|
*/
|
||||||
verifyIsFieldOnly(type) {
|
verifyIsFieldOnly() {
|
||||||
const field = FIELD_ONLY.find(itemField => {
|
const field = FIELD_ONLY.find(itemField => {
|
||||||
if (type === itemField.id) {
|
if (this.field.displayType === itemField.id) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user