|
|
@@ -8,22 +8,20 @@
|
|
|
:readonly="true"
|
|
|
/>
|
|
|
<!-- 选择器 -->
|
|
|
- <ibps-selector
|
|
|
- v-else-if="
|
|
|
- newFieldType === 'selector' ||
|
|
|
- newFieldType === 'currentUser' ||
|
|
|
- newFieldType === 'currentOrg'
|
|
|
- "
|
|
|
- v-model="label"
|
|
|
- :store="newFieldOptions.store || 'id'"
|
|
|
- :type="newFieldOptions.selector_type || 'user'"
|
|
|
- :multiple="$utils.toBoolean(newFieldOptions.multiple, true)"
|
|
|
- :field-options="newFieldOptions"
|
|
|
- :filter="newFieldOptions.filter"
|
|
|
- :readonly="true"
|
|
|
- :islistShow="true"
|
|
|
- />
|
|
|
- <div v-else-if="hasCustomFormatter(descField.name)" v-html="customFormatter(descField.name, label, data, descField)" />
|
|
|
+ <template v-else-if="selectTypes.includes(this.newFieldType)">
|
|
|
+ <van-tag
|
|
|
+ v-for="(item,index) in selectorValue "
|
|
|
+ :key="item"
|
|
|
+ :color="'#D6EAFE'"
|
|
|
+ :text-color="'#3396FB'"
|
|
|
+ class="ibps-tag-span ibps-mr-8"
|
|
|
+ >
|
|
|
+ <template #default>
|
|
|
+ <div>{{ item }}</div>
|
|
|
+ </template>
|
|
|
+ </van-tag>
|
|
|
+ </template>
|
|
|
+ <div v-else-if="hasCustomFormatter(descField.name)" v-html="customFormatter(descField.name, label, data, descField)" ></div>
|
|
|
<span v-else class="ibps-data-template-data" v-html="label || '/'" />
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -37,6 +35,7 @@ import { get as getOrgById } from '@/api/platform/org/org'
|
|
|
import { get as getPositionById } from '@/api/platform/org/position'
|
|
|
import { get as getRoleById } from '@/api/platform/org/role'
|
|
|
import { get as getAttachmentById } from '@/api/platform/file/attachment'
|
|
|
+import { remoteRequest } from '@/utils/remote'
|
|
|
import {
|
|
|
transferByIds as getDataById,
|
|
|
queryLinkageData as getLinkDataByKey
|
|
|
@@ -50,6 +49,7 @@ var WorldDistricts = null
|
|
|
var DICTIONARY_CACHE = {}
|
|
|
var ATTACHMENT_CACHE = {}
|
|
|
var SELECTOR_CACHE = {}
|
|
|
+var LINK_CACHE = {}
|
|
|
|
|
|
// var DATA_KEY = {
|
|
|
// ID: '#id#',
|
|
|
@@ -71,6 +71,9 @@ export default {
|
|
|
type: Object,
|
|
|
default: () => {}
|
|
|
},
|
|
|
+ cacheData: {
|
|
|
+ type: Map
|
|
|
+ },
|
|
|
defaultValue: {
|
|
|
type: String,
|
|
|
default: ' '
|
|
|
@@ -91,7 +94,9 @@ export default {
|
|
|
userList,
|
|
|
label: '',
|
|
|
newFieldType: '',
|
|
|
- newFieldOptions: ''
|
|
|
+ newFieldOptions: '',
|
|
|
+ cachesData: new Map(),
|
|
|
+ selectTypes: ['selector', 'currentUser', 'currentOrg']
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
@@ -102,6 +107,14 @@ export default {
|
|
|
this.initData()
|
|
|
}
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ selectorValue() {
|
|
|
+ if (this.selectTypes.includes(this.newFieldType)) {
|
|
|
+ return this.label && this.label.split ? this.label.split(',') : []
|
|
|
+ }
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ },
|
|
|
mounted: function() {
|
|
|
this.initData()
|
|
|
},
|
|
|
@@ -124,20 +137,20 @@ export default {
|
|
|
const fieldOptions = this.descField.same === 'N' ? this.descField.field_options : this.fieldOptions
|
|
|
this.newFieldType = fieldType
|
|
|
this.newFieldOptions = fieldOptions
|
|
|
+ // console.log('fieldType====>', fieldType)
|
|
|
// 不转化值数组
|
|
|
// newFieldType === 'selector' ||
|
|
|
// newFieldType === 'currentUser' ||
|
|
|
// newFieldType === 'currentOrg'
|
|
|
- const noFormateValueTypes = ['selector', 'currentUser', 'currentOrg']
|
|
|
+ // const noFormateValueTypes = ['selector', 'currentUser', 'currentOrg']
|
|
|
if (
|
|
|
this.$utils.isEmpty(value) ||
|
|
|
this.$utils.isEmpty(fieldType) ||
|
|
|
- this.$utils.isEmpty(fieldOptions) ||
|
|
|
- noFormateValueTypes.includes(fieldType)
|
|
|
+ this.$utils.isEmpty(fieldOptions)
|
|
|
+ // noFormateValueTypes.includes(fieldType)
|
|
|
) {
|
|
|
console.log('===>', this.labelKey)
|
|
|
this.label = value
|
|
|
-
|
|
|
return
|
|
|
}
|
|
|
// 数据格式
|
|
|
@@ -277,9 +290,12 @@ export default {
|
|
|
'name'
|
|
|
)
|
|
|
} else {
|
|
|
- getDictionaryData({
|
|
|
- typeKey: key
|
|
|
+ remoteRequest('dataTemplate', {id}, () => {
|
|
|
+ return getDictionaryData({
|
|
|
+ typeKey: key
|
|
|
+ })
|
|
|
})
|
|
|
+
|
|
|
.then(response => {
|
|
|
const data = response.data
|
|
|
DICTIONARY_CACHE[key] = data
|
|
|
@@ -315,6 +331,7 @@ export default {
|
|
|
formatterSelectorData(id, type) {
|
|
|
var key = type + ':' + id
|
|
|
var nameKey = 'name'
|
|
|
+ // console.log('key====>', key)
|
|
|
if (SELECTOR_CACHE[key]) {
|
|
|
this.label = SELECTOR_CACHE[key]
|
|
|
} else {
|
|
|
@@ -328,8 +345,9 @@ export default {
|
|
|
})
|
|
|
this.label = lab.replace(/,$/, '')
|
|
|
if (!this.label) {
|
|
|
- getUserById({ employeeId: id })
|
|
|
- .then(response => {
|
|
|
+ remoteRequest('dataTemplate', {id}, () => {
|
|
|
+ return getUserById({ employeeId: id })
|
|
|
+ }).then(response => {
|
|
|
const data = response.data
|
|
|
data[nameKey] = data['name']
|
|
|
if (data) {
|
|
|
@@ -342,8 +360,9 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
} else if (type === 'org') {
|
|
|
- getOrgById({ orgId: id })
|
|
|
- .then(response => {
|
|
|
+ remoteRequest('dataTemplate', {id}, () => {
|
|
|
+ return getOrgById({ orgId: id })
|
|
|
+ }).then(response => {
|
|
|
const data = response.data
|
|
|
if (data) {
|
|
|
this.label = data[nameKey]
|
|
|
@@ -364,10 +383,11 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
this.label = lab.replace(/,$/, '')
|
|
|
- console.log()
|
|
|
+ // console.log()
|
|
|
if (!this.label) {
|
|
|
- getPositionById({ positionId: id })
|
|
|
- .then(response => {
|
|
|
+ remoteRequest('dataTemplate', {id}, () => {
|
|
|
+ return getPositionById({ positionId: id })
|
|
|
+ }) .then(response => {
|
|
|
const data = response.data
|
|
|
if (data) {
|
|
|
this.label = data[nameKey]
|
|
|
@@ -387,7 +407,9 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
if (!lab) {
|
|
|
- getRoleById({ roleId: id })
|
|
|
+ remoteRequest('dataTemplate', {id}, () => {
|
|
|
+ return getRoleById({ roleId: id })
|
|
|
+ })
|
|
|
.then(response => {
|
|
|
const data = response.data
|
|
|
if (data) {
|
|
|
@@ -439,7 +461,7 @@ export default {
|
|
|
* 格式化自定义对话框
|
|
|
*/
|
|
|
formatterCustomDialog(value, fieldOptions) {
|
|
|
- console.log('this.labelKey--->', this.labelKey)
|
|
|
+ // console.log('this.labelKey--->', this.labelKey)
|
|
|
const dialog = fieldOptions['dialog']
|
|
|
// const store = fieldOptions['store_mode'] || 'id'
|
|
|
|
|
|
@@ -522,6 +544,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
formatterLinkdata(value, fieldOptions) {
|
|
|
+ // console.log('fieldOptions===>', fieldOptions)
|
|
|
const linkConfig = fieldOptions['link_config'] || {}
|
|
|
const __key = fieldOptions['linkdata']
|
|
|
const __linkKey = linkConfig.id || 'id_'
|
|
|
@@ -533,25 +556,12 @@ export default {
|
|
|
return value
|
|
|
}
|
|
|
// TODO: 有问题
|
|
|
- getLinkDataByKey({
|
|
|
- key: key
|
|
|
+ remoteRequest('dataTemplate', {key}, () => {
|
|
|
+ return getLinkDataByKey({ key: key })
|
|
|
})
|
|
|
.then(response => {
|
|
|
const data = response.data
|
|
|
- if (this.$utils.isNotEmpty(data)) {
|
|
|
- const arrayValue = value.split(',')
|
|
|
- const rtn = []
|
|
|
- for (var d = 0; d < data.length; d++) {
|
|
|
- const item = data[d]
|
|
|
- const v = arrayValue.find(val => {
|
|
|
- return val === item[__linkKey]
|
|
|
- })
|
|
|
- if (v) {
|
|
|
- rtn.push(item[__linkText] || '')
|
|
|
- }
|
|
|
- }
|
|
|
- this.label += rtn.join(',')
|
|
|
- }
|
|
|
+ this.label = data[__linkText]
|
|
|
})
|
|
|
.catch(e => {
|
|
|
console.error(e)
|