|
@@ -19,7 +19,7 @@
|
|
|
v-model="search"
|
|
v-model="search"
|
|
|
:placeholder="$utils.isNotEmpty(queryName) ? '请输入' + queryName : ''"
|
|
:placeholder="$utils.isNotEmpty(queryName) ? '请输入' + queryName : ''"
|
|
|
show-action
|
|
show-action
|
|
|
- @search="onSearch"
|
|
|
|
|
|
|
+ @search="() => onSearch()"
|
|
|
>
|
|
>
|
|
|
<template
|
|
<template
|
|
|
v-if="$utils.isNotEmpty(queryColumns) && queryColumns.length > 1"
|
|
v-if="$utils.isNotEmpty(queryColumns) && queryColumns.length > 1"
|
|
@@ -220,6 +220,7 @@
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
|
<ibps-more-search
|
|
<ibps-more-search
|
|
|
|
|
+ ref="searchForm"
|
|
|
:show="popupShow"
|
|
:show="popupShow"
|
|
|
:search-forms="searchForms"
|
|
:search-forms="searchForms"
|
|
|
@callback="onSearch"
|
|
@callback="onSearch"
|
|
@@ -256,7 +257,10 @@
|
|
|
size="large"
|
|
size="large"
|
|
|
>
|
|
>
|
|
|
<template #right-icon>
|
|
<template #right-icon>
|
|
|
- <van-checkbox :name="item.name" />
|
|
|
|
|
|
|
+ <van-checkbox
|
|
|
|
|
+ :name="item.name"
|
|
|
|
|
+ :disabled="item.isTitle === 'Y'"
|
|
|
|
|
+ />
|
|
|
</template>
|
|
</template>
|
|
|
<!-- <van-checkbox :name="item.name">{{ item.name }}</van-checkbox> -->
|
|
<!-- <van-checkbox :name="item.name">{{ item.name }}</van-checkbox> -->
|
|
|
</van-cell>
|
|
</van-cell>
|
|
@@ -269,7 +273,7 @@
|
|
|
ref="formrender"
|
|
ref="formrender"
|
|
|
:visible="dialogFormVisible"
|
|
:visible="dialogFormVisible"
|
|
|
:params="formrenderParams"
|
|
:params="formrenderParams"
|
|
|
- :addDataCont="addDataCont"
|
|
|
|
|
|
|
+ :add-data-cont="addDataCont"
|
|
|
@callback="onRefreshCallback"
|
|
@callback="onRefreshCallback"
|
|
|
@close="(visible) => (dialogFormVisible = visible)"
|
|
@close="(visible) => (dialogFormVisible = visible)"
|
|
|
/>
|
|
/>
|
|
@@ -277,7 +281,7 @@
|
|
|
</template>
|
|
</template>
|
|
|
<script>
|
|
<script>
|
|
|
import {
|
|
import {
|
|
|
- queryDataByKey,
|
|
|
|
|
|
|
+ queryDataTable,
|
|
|
removeFormData
|
|
removeFormData
|
|
|
} from '@/api/platform/data/dataTemplate'
|
|
} from '@/api/platform/data/dataTemplate'
|
|
|
import {
|
|
import {
|
|
@@ -309,7 +313,7 @@ import DataTemplateFormrenderDialog from '@/business/platform/data/form/dialog'
|
|
|
import IbpsPickerToolbar from '@/components/ibps-picker-toolbar'
|
|
import IbpsPickerToolbar from '@/components/ibps-picker-toolbar'
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
- name: 'template-list',
|
|
|
|
|
|
|
+ name: 'TemplateList',
|
|
|
components: {
|
|
components: {
|
|
|
// DropMenu,
|
|
// DropMenu,
|
|
|
SearchField,
|
|
SearchField,
|
|
@@ -384,11 +388,15 @@ export default {
|
|
|
defaultManages: [],
|
|
defaultManages: [],
|
|
|
isInitialization: false,
|
|
isInitialization: false,
|
|
|
columnsAttrs: [],
|
|
columnsAttrs: [],
|
|
|
|
|
+ pkKey: 'id_',
|
|
|
loadData: () => {},
|
|
loadData: () => {},
|
|
|
// 表单
|
|
// 表单
|
|
|
dialogFormVisible: false,
|
|
dialogFormVisible: false,
|
|
|
formrenderParams: {},
|
|
formrenderParams: {},
|
|
|
- defaultFilterListCol: ['di_dian_']
|
|
|
|
|
|
|
+ defaultFilterListCol: ['di_dian_'],
|
|
|
|
|
+ nameParams: {},
|
|
|
|
|
+ format: {},
|
|
|
|
|
+ datePrefix: 'daterange-prefix'
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
computed: {
|
|
computed: {
|
|
@@ -410,8 +418,8 @@ export default {
|
|
|
return this.$store.getters.mainPosition
|
|
return this.$store.getters.mainPosition
|
|
|
? this.$store.getters.mainPosition
|
|
? this.$store.getters.mainPosition
|
|
|
: this.$store.getters.position
|
|
: this.$store.getters.position
|
|
|
- ? this.$store.getters.position[0]
|
|
|
|
|
- : { id: '' }
|
|
|
|
|
|
|
+ ? this.$store.getters.position[0]
|
|
|
|
|
+ : { id: '' }
|
|
|
},
|
|
},
|
|
|
toolbarButtons() {
|
|
toolbarButtons() {
|
|
|
return this.toolbars.length > 4
|
|
return this.toolbars.length > 4
|
|
@@ -606,9 +614,16 @@ export default {
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
if (this.$utils.isNotEmpty(fieldsList)) {
|
|
if (this.$utils.isNotEmpty(fieldsList)) {
|
|
|
|
|
+ let flag = false
|
|
|
this.fieldsList = fieldsList.map((i) => {
|
|
this.fieldsList = fieldsList.map((i) => {
|
|
|
- return { name: i.label }
|
|
|
|
|
|
|
+ if (i.isTitle === 'Y') {
|
|
|
|
|
+ flag = true
|
|
|
|
|
+ }
|
|
|
|
|
+ return { name: i.label, isTitle: i.isTitle }
|
|
|
})
|
|
})
|
|
|
|
|
+ if (!flag) {
|
|
|
|
|
+ this.fieldsList[0].isTitle = 'Y'
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
this.$toast('显示字段不能为空!请在PC端中配置。')
|
|
this.$toast('显示字段不能为空!请在PC端中配置。')
|
|
|
}
|
|
}
|
|
@@ -674,7 +689,8 @@ export default {
|
|
|
columns[match.index] = match.data
|
|
columns[match.index] = match.data
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- const titleCol = columns.find((t) => t.isTitle === 'Y')
|
|
|
|
|
|
|
+ console.log('columns--->')
|
|
|
|
|
+ const titleCol = columns.find((t) => t && t.isTitle === 'Y')
|
|
|
// 列表标题无设置则默认第一列
|
|
// 列表标题无设置则默认第一列
|
|
|
this.labelField = titleCol || columns[0]
|
|
this.labelField = titleCol || columns[0]
|
|
|
this.columnsAttrs = columns
|
|
this.columnsAttrs = columns
|
|
@@ -706,7 +722,7 @@ export default {
|
|
|
return fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date']
|
|
return fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date']
|
|
|
},
|
|
},
|
|
|
onSearch(params = {}) {
|
|
onSearch(params = {}) {
|
|
|
- // console.log('params===>', params)
|
|
|
|
|
|
|
+ console.log('params===>', params)
|
|
|
this.stateActive = false
|
|
this.stateActive = false
|
|
|
ActionUtils.initListData(this)
|
|
ActionUtils.initListData(this)
|
|
|
this.checkedIds = []
|
|
this.checkedIds = []
|
|
@@ -810,8 +826,8 @@ export default {
|
|
|
// params['Q^bian_zhi_bu_men_^SL'] = this.ownsDeptInfo.id
|
|
// params['Q^bian_zhi_bu_men_^SL'] = this.ownsDeptInfo.id
|
|
|
// params['Q^shi_fou_guo_shen_^SL'] = '待处理'
|
|
// params['Q^shi_fou_guo_shen_^SL'] = '待处理'
|
|
|
// 加载数据
|
|
// 加载数据
|
|
|
-
|
|
|
|
|
- queryDataByKey(ActionUtils.formatParams(params, this.pagination))
|
|
|
|
|
|
|
+ console.log('this.getFormatParams()==>', this.getFormatParams())
|
|
|
|
|
+ queryDataTable(this.getFormatParams())
|
|
|
.then((response) => {
|
|
.then((response) => {
|
|
|
const responseData = response.data
|
|
const responseData = response.data
|
|
|
if (this.isTree) {
|
|
if (this.isTree) {
|
|
@@ -829,8 +845,6 @@ export default {
|
|
|
} else {
|
|
} else {
|
|
|
if (!this.finished) {
|
|
if (!this.finished) {
|
|
|
// 如果又自定义对话框
|
|
// 如果又自定义对话框
|
|
|
- if (customDialogCols.length > 0) {
|
|
|
|
|
- }
|
|
|
|
|
// 处理数据
|
|
// 处理数据
|
|
|
ActionUtils.handleListData(this, responseData)
|
|
ActionUtils.handleListData(this, responseData)
|
|
|
}
|
|
}
|
|
@@ -840,9 +854,133 @@ export default {
|
|
|
ActionUtils.handleErrorData(this, e)
|
|
ActionUtils.handleErrorData(this, e)
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取格式化参数
|
|
|
|
|
+ */
|
|
|
|
|
+ getFormatParams() {
|
|
|
|
|
+ let formParams = this.getSearcFormData()
|
|
|
|
|
+ console.log('formParams--===>', formParams)
|
|
|
|
|
+ const responseData = JSON.parse(JSON.stringify(this.template))
|
|
|
|
|
+ responseData.datasetKey = this.dataTemplate.datasetKey
|
|
|
|
|
+ responseData.unique = this.pkKey
|
|
|
|
|
+ // todo
|
|
|
|
|
+ responseData['dynamic_params'] = null
|
|
|
|
|
+ formParams['response_data'] = JSON.stringify(responseData)
|
|
|
|
|
+ formParams['filter_condition_key'] = this.checkFilter
|
|
|
|
|
+ return ActionUtils.formatParams(formParams, this.pagination, [])
|
|
|
|
|
+ },
|
|
|
|
|
+ /**
|
|
|
|
|
+ *{
|
|
|
|
|
+ "relation": "AND",
|
|
|
|
|
+ "parameters": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "relation": "OR",
|
|
|
|
|
+ "parameters": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "key": "Q^shi_fou_guo_shen_^SL",
|
|
|
|
|
+ "value": "待处理",
|
|
|
|
|
+ "param": "6eece135-665b-41b5-8728-7815368eac10"
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ */
|
|
|
|
|
+ /**
|
|
|
|
|
+ * {
|
|
|
|
|
+ "key": "arg",
|
|
|
|
|
+ "value": {
|
|
|
|
|
+ "relation": "AND",
|
|
|
|
|
+ "parameters": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "relation": "AND",
|
|
|
|
|
+ "parameters": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "key": "Q^shi_fou_guo_shen_^SL",
|
|
|
|
|
+ "value": "待处理",
|
|
|
|
|
+ "param": "77270486-245b-4b6b-b203-60ee853f86dc"
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ */
|
|
|
|
|
+ getSearcFormData() {
|
|
|
|
|
+ let { searchParams: params, nameParams, datePrefix, format } = this
|
|
|
|
|
+ params = JSON.parse(JSON.stringify(params))
|
|
|
|
|
+ // console.log('params-=-->', params)
|
|
|
|
|
+ if (this.$utils.isNotEmpty(this.search) && this.queryKey) {
|
|
|
|
|
+ params[this.queryKey] = this.search
|
|
|
|
|
+ }
|
|
|
|
|
+ // params[this.queryKey] = this.search
|
|
|
|
|
+ // 剔除params里相同字段既有日期的筛选条件,又有重复的模糊查询条件,只保留日期的
|
|
|
|
|
+ for (const i of Object.keys(params)) {
|
|
|
|
|
+ const slic = i.slice(2)
|
|
|
|
|
+ const name = slic.substring(0, slic.indexOf('^'))
|
|
|
|
|
+ const hadName = Object.keys(params).filter((item) => {
|
|
|
|
|
+ return item.indexOf(name) > -1
|
|
|
|
|
+ })
|
|
|
|
|
+ if (name && hadName.length > 2) {
|
|
|
|
|
+ delete params[`Q^${name}^SL`]
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ const formattedForm = {
|
|
|
|
|
+ arg: {
|
|
|
|
|
+ relation: 'AND',
|
|
|
|
|
+ parameters: []
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ Object.keys(params).forEach((v) => {
|
|
|
|
|
+ if (v && v.indexOf(datePrefix) === -1) {
|
|
|
|
|
+ const val = format[v] ? format[v](params[v], v) : params[v]
|
|
|
|
|
+ if (this.$utils.isNotEmpty(val)) {
|
|
|
|
|
+ const key = nameParams[v] || v
|
|
|
|
|
+ if (!Array.isArray(val)) {
|
|
|
|
|
+ const valArr = val.split(',')
|
|
|
|
|
+ if (valArr.length > 1) {
|
|
|
|
|
+ const parameters = valArr.map((i) => ({
|
|
|
|
|
+ key,
|
|
|
|
|
+ value: i,
|
|
|
|
|
+ param: this.$utils.guid()
|
|
|
|
|
+ }))
|
|
|
|
|
+ formattedForm.arg.parameters.push({
|
|
|
|
|
+ relation: 'OR',
|
|
|
|
|
+ parameters
|
|
|
|
|
+ })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const o = {
|
|
|
|
|
+ relation: 'AND',
|
|
|
|
|
+ parameters: [
|
|
|
|
|
+ {
|
|
|
|
|
+ key,
|
|
|
|
|
+ value: val,
|
|
|
|
|
+ param: this.$utils.guid()
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ formattedForm.arg.parameters.push(o)
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const parameters = val.map((i) => ({
|
|
|
|
|
+ key,
|
|
|
|
|
+ value: i,
|
|
|
|
|
+ param: this.$utils.guid()
|
|
|
|
|
+ }))
|
|
|
|
|
+ formattedForm.arg.parameters.push({
|
|
|
|
|
+ relation: 'OR',
|
|
|
|
|
+ parameters
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ return formattedForm.arg.parameters.length ? formattedForm : {}
|
|
|
|
|
+ },
|
|
|
// 默认显示字段列表
|
|
// 默认显示字段列表
|
|
|
initOptions(list) {
|
|
initOptions(list) {
|
|
|
list.forEach((val, index) => {
|
|
list.forEach((val, index) => {
|
|
|
|
|
+ console.log('tttt==>', val)
|
|
|
if (this.configKey === '') {
|
|
if (this.configKey === '') {
|
|
|
this.chooseResult.push(val.label)
|
|
this.chooseResult.push(val.label)
|
|
|
}
|
|
}
|
|
@@ -1231,6 +1369,7 @@ export default {
|
|
|
})
|
|
})
|
|
|
console.log('this.slotForms====>', this.slotForms)
|
|
console.log('this.slotForms====>', this.slotForms)
|
|
|
this.searchForms.forms = columns
|
|
this.searchForms.forms = columns
|
|
|
|
|
+ this.buildSearchParams(columns)
|
|
|
// 顶部查询条件
|
|
// 顶部查询条件
|
|
|
this.queryColumns = queryColumnsData || []
|
|
this.queryColumns = queryColumnsData || []
|
|
|
const queryColumn = this.$utils.isNotEmpty(this.queryColumns)
|
|
const queryColumn = this.$utils.isNotEmpty(this.queryColumns)
|
|
@@ -1240,6 +1379,64 @@ export default {
|
|
|
this.queryName = queryColumn.label || ''
|
|
this.queryName = queryColumn.label || ''
|
|
|
this.fieldType = queryColumn.fieldType || ''
|
|
this.fieldType = queryColumn.fieldType || ''
|
|
|
},
|
|
},
|
|
|
|
|
+ buildSearchParams(forms) {
|
|
|
|
|
+ const datePrefix = 'daterange-prefix'
|
|
|
|
|
+ const selectOptionPrefix = 'select-option-prefix'
|
|
|
|
|
+ const dataObj = {
|
|
|
|
|
+ selectOptions: {}
|
|
|
|
|
+ }
|
|
|
|
|
+ console.log('forms====>', forms)
|
|
|
|
|
+ const params = {}
|
|
|
|
|
+ const nameParams = {}
|
|
|
|
|
+ const format = {}
|
|
|
|
|
+ forms.forEach((v, i) => {
|
|
|
|
|
+ const propType = typeof v.prop
|
|
|
|
|
+ if (propType === 'string') {
|
|
|
|
|
+ v.modelValue = v.prop
|
|
|
|
|
+ params[v.prop] = v.value || ''
|
|
|
|
|
+ if (v.name) {
|
|
|
|
|
+ nameParams[v.prop] = v.name
|
|
|
|
|
+ }
|
|
|
|
|
+ if (v.format) {
|
|
|
|
|
+ format[v.prop] = v.format
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if (
|
|
|
|
|
+ propType === 'object' &&
|
|
|
|
|
+ Object.prototype.toString.call(v.prop) === '[object Array]'
|
|
|
|
|
+ ) {
|
|
|
|
|
+ v.prop.forEach((vv, j) => {
|
|
|
|
|
+ params[vv] = vv.value || ''
|
|
|
|
|
+ if (v.name) {
|
|
|
|
|
+ nameParams[vv] = v.name[j]
|
|
|
|
|
+ }
|
|
|
|
|
+ if (v.format) {
|
|
|
|
|
+ format[vv] = v.format
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ if (
|
|
|
|
|
+ v.fieldType === 'yearrange' ||
|
|
|
|
|
+ v.fieldType === 'monthrange' ||
|
|
|
|
|
+ v.fieldType === 'daterange' ||
|
|
|
|
|
+ v.fieldType === 'datetimerange' ||
|
|
|
|
|
+ v.fieldType === 'timerange' ||
|
|
|
|
|
+ v.fieldType === 'numberRange'
|
|
|
|
|
+ ) {
|
|
|
|
|
+ params[datePrefix + i] = v.fieldType === 'numberRange' ? [] : ''
|
|
|
|
|
+ v.modelValue = datePrefix + i
|
|
|
|
|
+ } else if (v.fieldType === 'select' && (v.selectFetch || v.selectUrl)) {
|
|
|
|
|
+ const dataKey = selectOptionPrefix + i
|
|
|
|
|
+ dataObj.selectOptions[dataKey] = []
|
|
|
|
|
+ if (!v.selectMethod) {
|
|
|
|
|
+ v.selectMethod = 'get'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ this.params = params
|
|
|
|
|
+ this.nameParams = nameParams
|
|
|
|
|
+ this.datePrefix = datePrefix
|
|
|
|
|
+ this.format = format
|
|
|
|
|
+ },
|
|
|
/**
|
|
/**
|
|
|
* 组合判断queryColumn最终形态
|
|
* 组合判断queryColumn最终形态
|
|
|
* @param queryColumn queryColumn 列表查询区域的表单框集合
|
|
* @param queryColumn queryColumn 列表查询区域的表单框集合
|
|
@@ -1602,6 +1799,7 @@ export default {
|
|
|
},
|
|
},
|
|
|
changeQuery(val, data) {
|
|
changeQuery(val, data) {
|
|
|
this.queryName = data['label']
|
|
this.queryName = data['label']
|
|
|
|
|
+ this.search = ''
|
|
|
},
|
|
},
|
|
|
/**
|
|
/**
|
|
|
* 初始化脚本
|
|
* 初始化脚本
|