Browse Source

盘点计划失去焦点校验

hella_online_20240829
zhang_li 2 months ago
parent
commit
10d02eb2ac
  1. 528
      src/api/wms/business/inputBlur.ts
  2. 620
      src/components/BasicForm/src/BasicFormWmsCount.vue
  3. 2
      src/components/Form/src/Form.vue
  4. 12
      src/components/TableFormCountPlan/src/TableFormCountPlan.vue
  5. 35
      src/views/wms/countManage/count/countPlanMain/countPlanMain.data.ts

528
src/api/wms/business/inputBlur.ts

@ -25,231 +25,36 @@ const { t } = useI18n() // 国际化
export const tableFormBlurVer = async (headerItem, val, row, index, routeName, formRef, detailData, tableData, callback) => {
try {
if (headerItem?.tableForm?.searchPage && headerItem?.tableForm?.verificationParams) {
if (val && isString(val)) {
if (val.indexOf(',') > -1) {
message.alert('该输入框只能输入一条数据')
row[headerItem.field] = ''
return
}
// 校验
const params = ref({})
const filters: any[] = []
const searchCondition = headerItem.tableForm.searchCondition //获取data.ts参数信息
const verificationParams = headerItem.tableForm.verificationParams //获取data.ts参数信息
// 循环参数设置参数为key:value格式
if (searchCondition && searchCondition.length > 0) {
for (let i = 0; i < searchCondition.length; i++) {
if (searchCondition[i].isMainValue) {
params.value[searchCondition[i].key] = formRef.formModel[
searchCondition[i].value
]
? formRef.formModel[searchCondition[i].value]
: detailData
? detailData[searchCondition[i].value]
: row
? row[searchCondition[i].value]
: ''
// 是否含有空参数情况
let isNull = false
if (
params.value[searchCondition[i].key] == '' ||
params.value[searchCondition[i].key] == undefined
) {
isNull = true
}
if (isNull) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
row[headerItem.field] = ''
return
}
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: formRef.formModel[
searchCondition[i].value
]
? formRef.formModel[searchCondition[i].value]
: detailData
? detailData[searchCondition[i].value]
: row
? row[searchCondition[i].value]
: ''
})
} else if (searchCondition[i].isTableRowValue) {
if (searchCondition[i].required) {
if (row[searchCondition[i].value] == '' || row[searchCondition[i].value] == undefined) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
row[headerItem.field] = ''
return
}
}
//查询当前table表数据的值
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: row[searchCondition[i].value]
})
} else {
// 扩展 转换为筛选条件进行查询
if (searchCondition[i].isSearch) {
if (searchCondition[i].isFormModel) {
//用formModel中的值
if (searchCondition[i].required) {
if (
formRef.formModel[searchCondition[i].value] == '' ||
formRef.formModel[searchCondition[i].value] == undefined
) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
row[headerItem.field] = ''
return
}
}
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: formRef.formModel[searchCondition[i].value]
})
} else {
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: searchCondition[i].value
})
}
} else {
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: searchCondition[i].value
})
}
}
}
}
if (verificationParams && verificationParams.length > 0) {
// 转换筛选条件所需
for (let i = 0; i < verificationParams.length; i++) {
// 扩展 转换为筛选条件进行查询
if (verificationParams[i].isSearch) {
if (verificationParams[i].isFormModel) {
filters.push({
action: verificationParams[i].action,
column: verificationParams[i].key,
value: formRef.formModel[verificationParams[i].value]
? formRef.formModel[verificationParams[i].value]
: val.trim()
})
} else {
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: searchCondition[i].value
})
}
} else {
params[verificationParams[i].key] = verificationParams[i].value
}
}
}
// 判断改包装号是否已经添加
const seen = new Set()
const repeatCode = new Set()
const arr = tableData.map((item) => item[headerItem.field]?.trim())
arr.forEach((item) => {
if (item) {
if (seen.has(item)) {
repeatCode.add(item)
} else {
seen.add(item)
}
}
})
const arr1 = Array.from(repeatCode)
if (arr1.length > 0) {
message.warning(`${arr1.join(',')}${t('ts.已经存在')}`)
row[headerItem.field] = ''
return
}
if (filters.length > 0) {
params.value.isSearch = true
params.value.filters = filters
}
const obj = {
by: 'ASC',
pageNo: 1,
pageSize: 20
}
params.value = {
isSearch: params.value.isSearch,
filters: params.value.filters,
...obj
}
const list = ref()
// 调取包装接口
await headerItem.tableForm.searchPage(params.value).then(async (res) => {
list.value = res?.list?.length > 0 ? res.list.slice(0, 1) : []
// 只查一条数据,多条数据查询默认显示不存在
if (list.value?.length == 0) {
message.alert('代码' + row[headerItem.field] + '没有找到对应数据')
if (headerItem?.tableForm?.searchPage && headerItem?.tableForm?.verificationParams) {
if (val && isString(val)) {
if (val.indexOf(',') > -1) {
message.alert('该输入框只能输入一条数据')
row[headerItem.field] = ''
return
}
callback(list.value)
})
}
}
} catch {
message.warning('暂无数据')
row[headerItem.field] = ''
return
}
}
export const FormBlur = async (field, val, routeName, formRef, detailData, formSchema, callback) => {
const setV = {}
setV[field] = ''
try {
if (formSchema.searchPage && formSchema.verificationParams) {
//获取data.ts参数信息
const searchCondition = formSchema?.searchCondition || []
//获取失去焦点参数信息
const verificationParams = formSchema?.verificationParams ||
[]
console.log('走新方法啦')
// searchCondition = [...searchCondition, ...verificationParams]
if (val && isString(val)) {
let params = {}
const _searchCondition = {}
// 校验
const params = ref({})
const filters: any[] = []
const searchCondition = headerItem.tableForm.searchCondition //获取data.ts参数信息
const verificationParams = headerItem.tableForm.verificationParams //获取data.ts参数信息
// 循环参数设置参数为key:value格式
if (searchCondition && searchCondition.length > 0) {
// 转换筛选条件所需
for (let i = 0; i < searchCondition.length; i++) {
// searchCondition.forEach((item) => {
// 查询条件为主表某字段,需要赋值主表数据,数据来源是详情的,赋值需要从row中获取
if (searchCondition[i].isMainValue) {
_searchCondition[searchCondition[i].key] = formRef.formModel[
params.value[searchCondition[i].key] = formRef.formModel[
searchCondition[i].value
]
? formRef.formModel[searchCondition[i].value]
: detailData
? detailData[searchCondition[i].value]
: // : row
// ? row[searchCondition[i].value]
''
: row
? row[searchCondition[i].value]
: ''
// 是否含有空参数情况
let isNull = false
if (
_searchCondition[searchCondition[i].key] == '' ||
_searchCondition[searchCondition[i].key] == undefined
params.value[searchCondition[i].key] == '' ||
params.value[searchCondition[i].key] == undefined
) {
isNull = true
}
@ -257,30 +62,39 @@ export const FormBlur = async (field, val, routeName, formRef, detailData, formS
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
formRef.setValues(setV)
row[headerItem.field] = ''
return
}
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: formRef.formModel[searchCondition[i].value]
value: formRef.formModel[
searchCondition[i].value
]
? formRef.formModel[searchCondition[i].value]
: detailData
? detailData[searchCondition[i].value]
: row
? row[searchCondition[i].value]
: ''
})
}
// else if (searchCondition[i].isTableRowValue) {
// if (searchCondition[i].required) {
// if (row[searchCondition[i].value] == '' || row[searchCondition[i].value] == undefined) {
// message.warning(
// searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
// )
// return
// }
// }
// row[searchCondition[i].value]
// //查询当前table表数据的值
// _searchCondition[searchCondition[i].key] = row[searchCondition[i].value]
// }
else {
} else if (searchCondition[i].isTableRowValue) {
if (searchCondition[i].required) {
if (row[searchCondition[i].value] == '' || row[searchCondition[i].value] == undefined) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
row[headerItem.field] = ''
return
}
}
//查询当前table表数据的值
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: row[searchCondition[i].value]
})
} else {
// 扩展 转换为筛选条件进行查询
if (searchCondition[i].isSearch) {
if (searchCondition[i].isFormModel) {
@ -293,7 +107,7 @@ export const FormBlur = async (field, val, routeName, formRef, detailData, formS
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
formRef.setValues(setV)
row[headerItem.field] = ''
return
}
}
@ -334,48 +148,261 @@ export const FormBlur = async (field, val, routeName, formRef, detailData, formS
})
} else {
filters.push({
action: verificationParams[i].action,
column: verificationParams[i].key,
value: verificationParams[i].value
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: searchCondition[i].value
})
}
} else {
_searchCondition[verificationParams[i].key] = verificationParams[i].value
params[verificationParams[i].key] = verificationParams[i].value
}
}
}
console.log(filters)
// 判断改包装号是否已经添加
const seen = new Set()
const repeatCode = new Set()
const arr = tableData.map((item) => item[headerItem.field]?.trim())
arr.forEach((item) => {
if (item) {
if (seen.has(item)) {
repeatCode.add(item)
} else {
seen.add(item)
}
}
})
const arr1 = Array.from(repeatCode)
if (arr1.length > 0) {
message.warning(`${arr1.join(',')}${t('ts.已经存在')}`)
row[headerItem.field] = ''
return
}
if (filters.length > 0) {
_searchCondition.isSearch = true
_searchCondition.filters = filters
params.value.isSearch = true
params.value.filters = filters
}
console.log(4545, _searchCondition)
const obj = {
by: 'ASC',
pageNo: 1,
pageSize: 20
}
console.log(888, _searchCondition)
params = {
isSearch: _searchCondition.isSearch,
filters: _searchCondition.filters,
params.value = {
isSearch: params.value.isSearch,
filters: params.value.filters,
...obj
}
// console.log(333,params)
if (!formSchema?.multiple && val.indexOf(',') > -1) {
message.alert('该输入框只能输入一条数据')
formRef.setValues(setV)
return
const list = ref()
// 调取包装接口
await headerItem.tableForm.searchPage(params.value).then(async (res) => {
list.value = res?.list?.length > 0 ? res.list.slice(0, 1) : []
// 只查一条数据,多条数据查询默认显示不存在
if (list.value?.length == 0) {
message.alert('代码' + row[headerItem.field] + '没有找到对应数据')
row[headerItem.field] = ''
return
}
callback(list.value)
})
}
}
} catch {
message.warning('暂无数据')
row[headerItem.field] = ''
return
}
}
export const FormBlur = async (field, val, routeName, formRef, detailData, formSchema, callback) => {
const setV = {}
setV[field] = ''
try {
if (formSchema.searchPage && formSchema.verificationParams) {
if (!formSchema.multiple) {
//获取data.ts参数信息
const searchCondition = formSchema?.searchCondition || []
//获取失去焦点参数信息
const verificationParams = formSchema?.verificationParams ||
[]
console.log('走新方法啦')
// searchCondition = [...searchCondition, ...verificationParams]
if (val && isString(val)) {
let params = {}
const _searchCondition = {}
const filters: any[] = []
if (searchCondition && searchCondition.length > 0) {
// 转换筛选条件所需
for (let i = 0; i < searchCondition.length; i++) {
// searchCondition.forEach((item) => {
// 查询条件为主表某字段,需要赋值主表数据,数据来源是详情的,赋值需要从row中获取
if (searchCondition[i].isMainValue) {
_searchCondition[searchCondition[i].key] = formRef.formModel[
searchCondition[i].value
]
? formRef.formModel[searchCondition[i].value]
: detailData
? detailData[searchCondition[i].value]
: // : row
// ? row[searchCondition[i].value]
''
// 是否含有空参数情况
let isNull = false
if (
_searchCondition[searchCondition[i].key] == '' ||
_searchCondition[searchCondition[i].key] == undefined
) {
isNull = true
}
if (isNull) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
formRef.setValues(setV)
return
}
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: formRef.formModel[searchCondition[i].value]
})
}
// else if (searchCondition[i].isTableRowValue) {
// if (searchCondition[i].required) {
// if (row[searchCondition[i].value] == '' || row[searchCondition[i].value] == undefined) {
// message.warning(
// searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
// )
// return
// }
// }
// row[searchCondition[i].value]
// //查询当前table表数据的值
// _searchCondition[searchCondition[i].key] = row[searchCondition[i].value]
// }
else {
// 扩展 转换为筛选条件进行查询
if (searchCondition[i].isSearch) {
if (searchCondition[i].isFormModel) {
//用formModel中的值
if (searchCondition[i].required) {
if (
formRef.formModel[searchCondition[i].value] == '' ||
formRef.formModel[searchCondition[i].value] == undefined
) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
formRef.setValues(setV)
return
}
}
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: formRef.formModel[searchCondition[i].value]
})
} else {
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: searchCondition[i].value
})
}
} else {
filters.push({
action: searchCondition[i].action || '==',
column: searchCondition[i].key,
value: searchCondition[i].value
})
}
}
}
}
if (verificationParams && verificationParams.length > 0) {
// 转换筛选条件所需
for (let i = 0; i < verificationParams.length; i++) {
// 扩展 转换为筛选条件进行查询
if (verificationParams[i].isSearch) {
if (verificationParams[i].isFormModel) {
filters.push({
action: verificationParams[i].action,
column: verificationParams[i].key,
value: formRef.formModel[verificationParams[i].value]
? formRef.formModel[verificationParams[i].value]
: val.trim()
})
} else {
filters.push({
action: verificationParams[i].action,
column: verificationParams[i].key,
value: verificationParams[i].value
})
}
} else {
_searchCondition[verificationParams[i].key] = verificationParams[i].value
}
}
}
console.log(filters)
if (filters.length > 0) {
_searchCondition.isSearch = true
_searchCondition.filters = filters
}
const obj = {
by: 'ASC',
pageNo: 1,
pageSize: 20
}
params = {
isSearch: _searchCondition.isSearch,
filters: _searchCondition.filters,
...obj
}
// console.log(333,params)
if (!formSchema?.multiple && val.indexOf(',') > -1) {
message.alert('该输入框只能输入一条数据')
formRef.setValues(setV)
return
}
await formSchema.searchPage(params).then((res) => {
const arr1 = val.split(',')
const list = ref([])
list.value = res?.list?.length > 0 ? res.list.slice(0, 1) : []
if (list.value?.length == 0) {
message.alert('暂无数据')
formRef.setValues(setV)
return
}
if (arr1.length != list.value.length) {
const arr2 = list.value.map((item) => item.code)
const str = [
...arr1.filter((item) => !arr2.includes(item)),
...arr2.filter((item) => !arr1.includes(item))
].join(',')
message.alert('代码' + str + '没有找到对应数据')
formRef.setValues(setV)
return
}
callback(list.value)
})
}
await formSchema.searchPage(params).then((res) => {
} else {
if (val && isString(val)) {
await formSchema.verificationPage({
codes:val
}).then((res) => {
const arr1 = val.split(',')
const list = ref([])
list.value = res?.list?.length > 0 ? res.list.slice(0, 1) : []
list.value = res?.length > 0 ? res : []
if (list.value?.length == 0) {
message.alert('暂无数据')
formRef.setValues(setV)
return
}
console.log(arr1)
console.log(list.value)
if (arr1.length != list.value.length) {
const arr2 = list.value.map((item) => item.code)
const str = [
@ -388,6 +415,7 @@ export const FormBlur = async (field, val, routeName, formRef, detailData, formS
}
callback(list.value)
})
}
}
}
} catch {
@ -396,7 +424,7 @@ export const FormBlur = async (field, val, routeName, formRef, detailData, formS
return
}
}
// 根据下方输入框失去焦点校验信息
@ -511,7 +539,7 @@ export const getListByBottonInput = async (headerItem, val, row, routeName, form
return
}
}
callback(list.value)
})
return

620
src/components/BasicForm/src/BasicFormWmsCount.vue

@ -6,142 +6,155 @@
:close-on-click-modal="false"
:vLoading="formLoading"
>
<div
style="max-height: 60vh;overflow-y: auto;">
<Form
ref="formRef"
:rules="rules"
:schema="formSchema"
:is-col="true"
@opensearchTable="opensearchTable"
@hiddenFilterButton="hiddenSearchTableFilterButton"
@changeDialogWidth="changeDialogWidth"
@clearSearchInput="clearSearchInput"
@onChange="onChange"
@onBlur="onBlur"
@onEnter="onEnter"
>
<template #crontab="formSchema1" v-if="fromeWhere == 'countPlan'">
<crontab v-if="formSchema1.type=='CYCLE'" v-model="formSchema1.crontab" :disabled="formSchema?.find(item=>item.field == 'crontab')?.componentProps?.disabled "/>
</template>
<template #type="formSchema" v-if="fromeWhere == 'countPlan'">
<el-select
v-model="formSchema.type"
placeholder="选择盘点类型"
@change="selectChange('type', $event)"
v-if="!isDetail"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.COUNT_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<el-select
v-model="formSchema.type"
placeholder="选择盘点范围类型"
@change="selectChangeDetail('type', $event,formSchema)"
v-if="isDetail"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.COUNT_SCOPE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
<div style="max-height: 60vh; overflow-y: auto">
<Form
ref="formRef"
:rules="rules"
:schema="formSchema"
:is-col="true"
@opensearchTable="opensearchTable"
@hiddenFilterButton="hiddenSearchTableFilterButton"
@changeDialogWidth="changeDialogWidth"
@clearSearchInput="clearSearchInput"
@onChange="onChange"
@onBlur="onBlur"
@onEnter="onEnter"
@onFocus="onFocus"
>
<template #crontab="formSchema1" v-if="fromeWhere == 'countPlan'">
<crontab
v-if="formSchema1.type == 'CYCLE'"
v-model="formSchema1.crontab"
:disabled="
formSchema?.find((item) => item.field == 'crontab')?.componentProps?.disabled
"
/>
</el-select>
</template>
<template #value="formSchema" v-if="fromeWhere == 'countPlan'">
<el-select
v-model="formSchema.value"
placeholder="选择盘点范围值"
v-if="isDetail&& formTypeDetail =='Select'"
</template>
<template #type="formSchema" v-if="fromeWhere == 'countPlan'">
<el-select
v-model="formSchema.type"
placeholder="选择盘点类型"
@change="selectChange('type', $event)"
v-if="!isDetail"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.COUNT_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<el-select
v-model="formSchema.type"
placeholder="选择盘点范围类型"
@change="selectChangeDetail('type', $event, formSchema)"
v-if="isDetail"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.COUNT_SCOPE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</template>
<template #value="formSchema" v-if="fromeWhere == 'countPlan'">
<el-select
v-model="formSchema.value"
placeholder="选择盘点范围值"
v-if="isDetail && formTypeDetail == 'Select'"
>
<el-option
v-for="dict in countPlanAllList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<el-input v-model="formSchema.value" v-if="isDetail && formTypeDetail == 'InputString'" />
</template>
</Form>
<div class="table" v-if="isBusiness && formType == 'create' && fromeWhere != 'countPlan'">
<TableForm
ref="tableFormRef"
class="w-[100%]"
:maxHeight="490"
:tableFields="tableAllSchemas.tableFormColumns"
:tableData="tableData"
:tableFormRules="tableFormRules"
:isShowButton="isShowButton"
:isShowReduceButton="isShowReduceButton"
:isShowReduceButtonSelection="isShowReduceButtonSelection"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@tableSelectionChange="tableSelectionChange"
@tableSelectionDelete="tableSelectionDelete"
@extendedButtonsClick="extendedButtonsClick"
@formSelectChange="formSelectChange"
@formSelectvVisibleChange="formSelectvVisibleChange"
@tableSortChange="tableSortChange"
@selectCallback="selectCallback"
@handleTableSelect="handleTableSelect"
@inpuFocus="inpuFocus"
@buttonOperationClick="buttonOperationClick"
@inputStringBlur="inputStringBlur"
@inputNumberChange="inputNumberChange"
@tableFormSelectOnBlur="tableFormSelectOnBlur"
@formFormDateChange="formFormDateChange"
@clearInput="clearInput"
@inputFocusPlan="inputFocusPlan"
@inputStringFcous="inputStringFcous"
>
<el-option
v-for="dict in countPlanAllList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<el-input v-model="formSchema.value" v-if="isDetail && formTypeDetail =='InputString'"/>
</template>
</Form>
<div class="table" v-if="isBusiness && formType == 'create' && fromeWhere != 'countPlan'">
<TableForm
ref="tableFormRef"
class="w-[100%]"
:maxHeight = "490"
:tableFields="tableAllSchemas.tableFormColumns"
:tableData="tableData"
:tableFormRules="tableFormRules"
:isShowButton="isShowButton"
:isShowReduceButton="isShowReduceButton"
:isShowReduceButtonSelection="isShowReduceButtonSelection"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@tableSelectionChange="tableSelectionChange"
@tableSelectionDelete="tableSelectionDelete"
@extendedButtonsClick="extendedButtonsClick"
@formSelectChange="formSelectChange"
@formSelectvVisibleChange="formSelectvVisibleChange"
@tableSortChange="tableSortChange"
@selectCallback="selectCallback"
@handleTableSelect="handleTableSelect"
@inpuFocus="inpuFocus"
@buttonOperationClick="buttonOperationClick"
@inputStringBlur="inputStringBlur"
@inputNumberChange="inputNumberChange"
@tableFormSelectOnBlur="tableFormSelectOnBlur"
@formFormDateChange="formFormDateChange"
@clearInput='clearInput'
@inputFocusPlan='inputFocusPlan'
>
<template v-slot="{row}">
<slot :row="row"></slot>
</template>
</TableForm>
</div>
<div v-if="isBusiness && formType == 'create' && fromeWhere == 'countPlan'">
<TableFormCountPlan
:tableFields="tableAllSchemas.tableFormColumns"
:tableData="tableData"
:countScopeType="countScopeType"
:tableFormRules="tableFormRules"
ref="tableFormRef"
@tableFormChange="tableFormChange"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@inpuFocus="inpuFocus"
<template v-slot="{ row }">
<slot :row="row"></slot>
</template>
</TableForm>
</div>
<div v-if="isBusiness && formType == 'create' && fromeWhere == 'countPlan'">
<TableFormCountPlan
:tableFields="tableAllSchemas.tableFormColumns"
:tableData="tableData"
:countScopeType="countScopeType"
:tableFormRules="tableFormRules"
ref="tableFormRef"
@tableFormChange="tableFormChange"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@inpuFocus="inpuFocus"
@inputStringBlur="inputStringBlur"
@inputStringFcous="inputStringFcous"
/>
</div>
<Form
ref="formRef1"
:rules="rules"
:schema="CountPlanMain1FormAllSchemas"
:is-col="true"
style="margin-top: 20px"
@opensearchTable="opensearchTable1"
@hiddenFilterButton="hiddenSearchTableFilterButton"
@changeDialogWidth="changeDialogWidth"
@clearSearchInput="clearSearchInput"
@onChange="onChange"
@onBlur="onBlur"
@onEnter="onEnter"
@onFocus="onFocus"
/>
</div>
<Form
ref="formRef1"
:rules="rules"
:schema="CountPlanMain1FormAllSchemas"
:is-col="true"
style="margin-top:20px"
@opensearchTable="opensearchTable1"
@hiddenFilterButton="hiddenSearchTableFilterButton"
@changeDialogWidth="changeDialogWidth"
@clearSearchInput="clearSearchInput"
@onChange="onChange"
@onBlur="onBlur"
@onEnter="onEnter"
/>
</div>
<template #footer>
<ButtonBase :Butttondata="Butttondata" @button-base-click="buttonBaseClick" />
<ButtonBase :Butttondata="Butttondata" @button-base-click="buttonBaseClick" :key="count" />
</template>
</Dialog>
<SearchTable ref="searchTableRef" :showSearchTableQueryFields="showSearchTableQueryFields" @searchTableSuccess="searchTableSuccess" />
<SearchTable ref="searchTableRef1" :showSearchTableQueryFields="showSearchTableQueryFields" @searchTableSuccess="searchTableSuccess1" />
<SearchTable
ref="searchTableRef"
:showSearchTableQueryFields="showSearchTableQueryFields"
@searchTableSuccess="searchTableSuccess"
/>
<SearchTable
ref="searchTableRef1"
:showSearchTableQueryFields="showSearchTableQueryFields"
@searchTableSuccess="searchTableSuccess1"
/>
</template>
<script setup lang="ts">
import { SearchTable } from '@/components/SearchTable'
@ -151,6 +164,7 @@ import TableForm from '@/components/TableForm/src/TableForm.vue'
import TableFormCountPlan from '@/components/TableFormCountPlan/src/TableFormCountPlan.vue'
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { debounce } from 'lodash-es'
import { tableFormBlurVer, FormBlur, getListByBottonInput } from '@/api/wms/business/inputBlur'
const props = defineProps({
//
@ -164,9 +178,9 @@ const props = defineProps({
default: true
},
// --
isShowReduceButtonSelection:{
isShowReduceButtonSelection: {
type: Boolean,
default: false,
default: false
},
// tableForm
isShowReduceButton: {
@ -299,13 +313,13 @@ const props = defineProps({
default: null
},
//
isOpenSearchTable:{
isOpenSearchTable: {
type: Boolean,
required: false,
default: false
},
fieldTableColumn:{
fieldTableColumn: {
type: String,
required: false,
default: ''
@ -315,22 +329,22 @@ const props = defineProps({
formField:form中对应的field,
tableField:searchtable中对应的field,
}]*/
sumFormDataField:{
sumFormDataField: {
type: Array,
required: false,
default: null
},
sumFormDataByForm:{
type:Function,
sumFormDataByForm: {
type: Function,
required: false,
default: null
},
sumFormDataByTableCustom:{
type:Function,
sumFormDataByTableCustom: {
type: Function,
required: false,
default: null
},
showSearchTableQueryFields:{
showSearchTableQueryFields: {
type: Array,
required: false,
default: []
@ -363,7 +377,7 @@ const formSchema = ref(props.formAllSchemas?.formSchema)
const CountPlanMain1FormAllSchemas = ref(props.CountPlanMain1FormAllSchemas?.formSchema)
const tableAllSchemas = ref(props.tableAllSchemas)
const tableFormRules = ref(props.tableFormRules)
console.log(111,formSchema)
console.log(111, formSchema)
// -
// const buttondata = [
@ -373,9 +387,9 @@ console.log(111,formSchema)
// // -
// const buttonTableClick = async (val, row) => {
// if (val == 'edit') {
// } else if (val == 'delete') {
// } else {
// }
// }
@ -397,7 +411,7 @@ const opensearchTable = (
multiple,
type,
row,
isConcatDetailSchemas=false,
isConcatDetailSchemas = false,
searchDetailSchemas: any
) => {
const _searchCondition = {}
@ -405,8 +419,8 @@ const opensearchTable = (
if (searchCondition && searchCondition.length > 0) {
//
let filters: any[] = []
for (var i=0; i< searchCondition.length; i++ ) {
// searchCondition.forEach((item) => {
for (var i = 0; i < searchCondition.length; i++) {
// searchCondition.forEach((item) => {
// row
if (searchCondition[i].isMainValue) {
_searchCondition[searchCondition[i].key] = formRef.value.formModel[searchCondition[i].value]
@ -418,19 +432,26 @@ const opensearchTable = (
: ''
//
let isNull = false
if (_searchCondition[searchCondition[i].key] == '' || _searchCondition[searchCondition[i].key] == undefined) {
if (
_searchCondition[searchCondition[i].key] == '' ||
_searchCondition[searchCondition[i].key] == undefined
) {
isNull = true
}
if (isNull) {
message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!')
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
return
}
}else if(searchCondition[i].isTableRowValue){
if(searchCondition[i].required){
if (row[searchCondition[i].value] == '' ||row[searchCondition[i].value] == undefined) {
message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!')
return
}
} else if (searchCondition[i].isTableRowValue) {
if (searchCondition[i].required) {
if (row[searchCondition[i].value] == '' || row[searchCondition[i].value] == undefined) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
return
}
}
row[searchCondition[i].value]
//table
@ -440,10 +461,15 @@ const opensearchTable = (
if (searchCondition[i].isSearch) {
if (searchCondition[i].isFormModel) {
//formModel
if(searchCondition[i].required){
if (formRef.value.formModel[searchCondition[i].value] == '' ||formRef.value.formModel[searchCondition[i].value] == undefined) {
message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!')
return
if (searchCondition[i].required) {
if (
formRef.value.formModel[searchCondition[i].value] == '' ||
formRef.value.formModel[searchCondition[i].value] == undefined
) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
return
}
}
filters.push({
@ -451,14 +477,13 @@ const opensearchTable = (
column: searchCondition[i].key,
value: formRef.value.formModel[searchCondition[i].value]
})
}else{
} else {
filters.push({
action: searchCondition[i].action,
column: searchCondition[i].key,
value: searchCondition[i].value
})
}
} else {
_searchCondition[searchCondition[i].key] = searchCondition[i].value
}
@ -497,20 +522,22 @@ const opensearchTable1 = (
multiple,
type,
row,
isConcatDetailSchemas=false,
isConcatDetailSchemas = false,
searchDetailSchemas: any
) => {
console.log(formField,searchField,searchTitle,searchAllSchemas,searchPage)
console.log(formField, searchField, searchTitle, searchAllSchemas, searchPage)
const _searchCondition = {}
//
if (searchCondition && searchCondition.length > 0) {
//
let filters: any[] = []
for (var i=0; i< searchCondition.length; i++ ) {
// searchCondition.forEach((item) => {
for (var i = 0; i < searchCondition.length; i++) {
// searchCondition.forEach((item) => {
// row
if (searchCondition[i].isMainValue) {
_searchCondition[searchCondition[i].key] = formRef1.value.formModel[searchCondition[i].value]
_searchCondition[searchCondition[i].key] = formRef1.value.formModel[
searchCondition[i].value
]
? formRef1.value.formModel[searchCondition[i].value]
: props.detailData
? props.detailData[searchCondition[i].value]
@ -519,19 +546,26 @@ const opensearchTable1 = (
: ''
//
let isNull = false
if (_searchCondition[searchCondition[i].key] == '' || _searchCondition[searchCondition[i].key] == undefined) {
if (
_searchCondition[searchCondition[i].key] == '' ||
_searchCondition[searchCondition[i].key] == undefined
) {
isNull = true
}
if (isNull) {
message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!')
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
return
}
}else if(searchCondition[i].isTableRowValue){
if(searchCondition[i].required){
if (row[searchCondition[i].value] == '' ||row[searchCondition[i].value] == undefined) {
message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!')
return
}
} else if (searchCondition[i].isTableRowValue) {
if (searchCondition[i].required) {
if (row[searchCondition[i].value] == '' || row[searchCondition[i].value] == undefined) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
return
}
}
row[searchCondition[i].value]
//table
@ -541,10 +575,15 @@ const opensearchTable1 = (
if (searchCondition[i].isSearch) {
if (searchCondition[i].isFormModel) {
//formModel
if(searchCondition[i].required){
if (formRef1.value.formModel[searchCondition[i].value] == '' ||formRef1.value.formModel[searchCondition[i].value] == undefined) {
message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!')
return
if (searchCondition[i].required) {
if (
formRef1.value.formModel[searchCondition[i].value] == '' ||
formRef1.value.formModel[searchCondition[i].value] == undefined
) {
message.warning(
searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!'
)
return
}
}
filters.push({
@ -552,14 +591,13 @@ const opensearchTable1 = (
column: searchCondition[i].key,
value: formRef1.value.formModel[searchCondition[i].value]
})
}else{
} else {
filters.push({
action: searchCondition[i].action,
column: searchCondition[i].key,
value: searchCondition[i].value
})
}
} else {
_searchCondition[searchCondition[i].key] = searchCondition[i].value
}
@ -590,42 +628,52 @@ const opensearchTable1 = (
}
// searchTable
const changeDialogWidth = (width)=>{
const changeDialogWidth = (width) => {
searchTableRef.value.changeDialogWidth(width)
}
const hiddenSearchTableFilterButton = ()=>{
const hiddenSearchTableFilterButton = () => {
searchTableRef.value.hiddenFilterButton()
}
const clearSearchInput = (field)=>{
emit('clearSearchInput',field)
const clearSearchInput = (field) => {
emit('clearSearchInput', field)
}
const sumFormDataByTable = () => {
if(props.sumFormDataField){
if (props.sumFormDataField) {
const sumObject = {}
props.sumFormDataField.forEach(sumItem=>{
sumObject[sumItem?.formField]= props.tableData.reduce((prev, item) => prev + item[sumItem?.tableField],0)
props.sumFormDataField.forEach((sumItem) => {
sumObject[sumItem?.formField] = props.tableData.reduce(
(prev, item) => prev + item[sumItem?.tableField],
0
)
})
nextTick(()=>{
nextTick(() => {
formRef.value.setValues(sumObject)
})
}
}
watch(()=>props.tableData,() => {
sumFormDataByTable()
if(props?.sumFormDataByTableCustom&&unref(formRef)?.formModel&&props.tableData){
props?.sumFormDataByTableCustom(formRef,unref(formRef)?.formModel,props.tableData)
watch(
() => props.tableData,
() => {
sumFormDataByTable()
if (props?.sumFormDataByTableCustom && unref(formRef)?.formModel && props.tableData) {
props?.sumFormDataByTableCustom(formRef, unref(formRef)?.formModel, props.tableData)
}
},
{
deep: true
}
},{
deep:true
})
watch(()=>unref(formRef)?.formModel,() => {
if(props?.sumFormDataByForm&&unref(formRef)?.formModel){
props?.sumFormDataByForm(formRef,unref(formRef)?.formModel)
)
watch(
() => unref(formRef)?.formModel,
() => {
if (props?.sumFormDataByForm && unref(formRef)?.formModel) {
props?.sumFormDataByForm(formRef, unref(formRef)?.formModel)
}
},
{
deep: true
}
},{
deep:true
})
)
//
// val row
@ -636,11 +684,17 @@ const searchTableSuccess1 = (formField, searchField, val, type, row) => {
emit('searchTableSuccess', formField, searchField, val, formRef1.value, type, row)
}
/** 打开弹窗 */
const open = async (type: string, row?: any, masterParmas?: any, titleName?: any, alltitleName?: any) => {
const open = async (
type: string,
row?: any,
masterParmas?: any,
titleName?: any,
alltitleName?: any
) => {
dialogVisible.value = true
if(alltitleName){
if (alltitleName) {
dialogTitle.value = alltitleName
}else if (titleName) {
} else if (titleName) {
dialogTitle.value = t('action.' + titleName)
} else {
dialogTitle.value = t('action.' + type)
@ -667,8 +721,8 @@ const open = async (type: string, row?: any, masterParmas?: any, titleName?: any
} finally {
formLoading.value = false
}
}else{
if(row){
} else {
if (row) {
nextTick(() => {
formRef.value.setValues(row)
formRef1.value.setValues(row)
@ -678,22 +732,25 @@ const open = async (type: string, row?: any, masterParmas?: any, titleName?: any
}
//
const handleAddTable = () => {
if(props.isOpenSearchTable){
if (props.isOpenSearchTable) {
const tableFormKeys = {}
tableAllSchemas.value.tableFormColumns.forEach(item => {
tableAllSchemas.value.tableFormColumns.forEach((item) => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
if(props.fieldTableColumn!=''){
inpuFocus(tableAllSchemas.value.tableFormColumns.find(item=>item.field==props.fieldTableColumn),tableFormKeys,0)
if (props.fieldTableColumn != '') {
inpuFocus(
tableAllSchemas.value.tableFormColumns.find((item) => item.field == props.fieldTableColumn),
tableFormKeys,
0
)
}
}else{
} else {
emit('handleAddTable')
}
}
/** 弹窗按钮 */
let Butttondata:any = []
let Butttondata: any = []
if (props.isShowFooterButtton) {
Butttondata = [
defaultButtons.formSaveBtn(null), //
@ -708,9 +765,9 @@ if (props.footButttondata) {
const buttonBaseClick = (val) => {
//
if (props.footButttondata) {
emit('footButtonClick',val)
}
//
emit('footButtonClick', val)
}
//
else if (val == 'save') {
submitForm()
}
@ -748,7 +805,7 @@ const submitForm = async () => {
try {
const data = unref(formRef)?.formModel
const data1 = unref(formRef1)?.formModel
emit('submitForm', formType.value, {...data,...data1})
emit('submitForm', formType.value, { ...data, ...data1 })
} finally {
formLoading.value = false
}
@ -757,7 +814,7 @@ const submitForm = async () => {
try {
const data = unref(formRef)?.formModel
const data1 = unref(formRef1)?.formModel
emit('submitForm', formType.value, {...data})
emit('submitForm', formType.value, { ...data })
} finally {
formLoading.value = false
}
@ -817,8 +874,8 @@ const formSelectChange = (field, val, row) => {
emit('formSelectChange', field, val, row)
}
//
const formFormDateChange = (field, val,row, index) => {
emit('formFormDateChange', field, val,row, index)
const formFormDateChange = (field, val, row, index) => {
emit('formFormDateChange', field, val, row, index)
}
const formSelectvVisibleChange = (field, val, row) => {
emit('formSelectvVisibleChange', field, val, row)
@ -855,16 +912,15 @@ const handleTableSelect = (row, column, event) => {
//
const handleDeleteTable = (row, index) => {
emit('handleDeleteTable', row, index,formRef.value)
emit('handleDeleteTable', row, index, formRef.value)
}
const inputFocusPlan = (row)=>{
const inputFocusPlan = (row) => {
emit('inputFocusPlan', row)
}
//
const inpuFocus = (headerItem, row) => {
console.log(headerItem, row)
console.log(233, headerItem, row)
emit('inpuFocus', headerItem, row)
opensearchTable(
@ -882,7 +938,7 @@ const inpuFocus = (headerItem, row) => {
)
}
const clearInput = (field, row, index) => {
emit('clearInput',field, row, index)
emit('clearInput', field, row, index)
}
/**
* 监听改变事件
@ -892,48 +948,124 @@ const clearInput = (field, row, index) => {
const onChange = (field, cur) => {
emit('onChange', field, cur, formRef)
}
/**
* 监听失焦事件
* @param field 当前操作字段
* @param e
* @param e
*/
const onBlur = (field, e) => {
emit('onBlur', field, e)
const count = ref(0)
const onBlur = async (field, e) => {
let formSchemaObj = CountPlanMain1FormAllSchemas.value.find((item) => item.field == field)?.componentProps
if (formSchemaObj?.enterSearch) {
await FormBlur(field, e, null, formRef1.value, props.detailData, formSchemaObj, (list) => {
emit('searchTableSuccess', field, formSchemaObj.searchField, list, formRef.value, 'form')
})
if (props.isShowFooterButtton && !props.footButttondata) {
Butttondata = [
defaultButtons.formSaveBtn(null), //
defaultButtons.formCloseBtn(null) //
]
count.value++
}
} else {
emit('onBlur', field, e)
}
}
const inputStringBlur = async (headerItem, val, row, index) => {
headerItem.tableForm.searchPage = row?.searchTable?.searchPage
await tableFormBlurVer(
headerItem,
val,
row,
index,
null,
formRef.value,
props.detailData,
props.tableData,
(list) => {
emit(
'searchTableSuccess',
headerItem.field,
headerItem.tableForm.searchField,
list,
formRef.value,
'tableForm',
row,
'blur',
index
)
}
)
if (props.isShowFooterButtton && !props.footButttondata) {
Butttondata = [
defaultButtons.formSaveBtn(null), //
defaultButtons.formCloseBtn(null) //
]
count.value++
}
}
//
const onFocus = (field) => {
let formSchemaObj = CountPlanMain1FormAllSchemas.value.find((item) => item.field == field)?.componentProps
if (formSchemaObj?.enterSearch) {
if (props.isShowFooterButtton && !props.footButttondata) {
Butttondata = [
defaultButtons.formSaveBtn({ disabled: true }), //
defaultButtons.formCloseBtn(null) //
]
}
count.value++
}
}
const inputStringFcous = (headerItem) => {
if (headerItem?.tableForm?.searchPage && headerItem?.tableForm?.verificationParams) {
if (props.isShowFooterButtton && !props.footButttondata) {
Butttondata = [
defaultButtons.formSaveBtn({ disabled: true }), //
defaultButtons.formCloseBtn(null) //
]
}
count.value++
}
}
/**
* 回车事件
* @param field 当前操作字段
* @param e
* @param e
*/
const onEnter = (field,value, e) => {
emit('onEnter', field,value, e)
}
const onEnter = (field, value, e) => {
emit('onEnter', field, value, e)
}
//
const selectChange = (field, val) => {
emit('selectChange', field, val)
}
//
const selectChangeDetail = (field, val,formSchema) => {
const selectChangeDetail = (field, val, formSchema) => {
formSchema.value = ''
emit('selectChangeDetail', field, val)
}
const tableFormChange = (field, val, row) => {
emit('tableFormChange', field, val, row)
}
const buttonOperationClick = (row, label, index)=> {
emit("buttonOperationClick", row, label, index);
const buttonOperationClick = (row, label, index) => {
emit('buttonOperationClick', row, label, index)
}
const inputStringBlur = (headerItem, row, index)=> {
emit("inputStringBlur", headerItem, row, index);
}
defineExpose({ open, formRef, opensearchTable, dialogVisible, formLoading ,handleAddTable,changeDialogWidth}) // open
defineExpose({
open,
formRef,
opensearchTable,
dialogVisible,
formLoading,
handleAddTable,
changeDialogWidth
}) // open
</script>
<style lang="scss" scoped>
.table {
@ -962,8 +1094,8 @@ defineExpose({ open, formRef, opensearchTable, dialogVisible, formLoading ,handl
::v-deep(.el-icon) {
display: block;
}button
.button {
}
button .button {
> div {
display: flex;
align-items: center;

2
src/components/Form/src/Form.vue

@ -274,7 +274,7 @@ export default defineComponent({
emit('onEnter',item.field,formModel.value[item.field],event)
}
}}
onBlur={(e) => { onBlur(item.field, e) }}
onBlur={(e) => { onBlur(item.field,formModel.value[item.field]) }}
onFocus={(e) => { onFocus(item.field) }}
onChange={(e)=>{onChange(item.field, e)}}
v-slots={{

12
src/components/TableFormCountPlan/src/TableFormCountPlan.vue

@ -72,6 +72,8 @@
v-model="row.value"
:placeholder="tableFields[1].placeholder || '请输入' + tableFields[1].label"
:disabled = "row.disabled || false"
@blur="inputStringBlur(tableFields[1], row[tableFields[1].field], row, index)"
@focus="inputStringFcous(tableFields[1])"
/>
<el-button :key="'值button' + $index" @click="inpuFocus(tableFields[1], row)"
><Icon icon="ep:search" size="14"
@ -183,7 +185,7 @@ const validateForm = () => {
})
}
//
const emit = defineEmits(['handleAddTable', 'selectChange', 'tableFormChange', 'inpuFocus'])
const emit = defineEmits(['handleAddTable', 'selectChange', 'tableFormChange', 'inpuFocus','inputStringBlur','inputStringFcous'])
//
const selectChange = (field, val) => {
emit('selectChange', field, val)
@ -237,6 +239,14 @@ const inpuFocus = (headerItem, row) => {
console.log(111, headerItem, row)
emit('inpuFocus', headerItem, row)
}
// input
const inputStringBlur = (headerItem, val, row, index) => {
emit('inputStringBlur', headerItem, val, row, index)
}
//
const inputStringFcous = (headerItem) => {
emit('inputStringFcous', headerItem)
}
// setup
defineExpose({
TableBaseComponents_Ref,

35
src/views/wms/countManage/count/countPlanMain/countPlanMain.data.ts

@ -794,7 +794,15 @@ export const CountPlanDetail = useCrudSchemas(<CrudSchema[]>([
key: 'available',
value: 'TRUE',
isMainValue: false
}]
}],
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: 'true',
isFormModel: true
}], // 失去焦点校验参数
},
form: {
componentProps: {
@ -843,13 +851,23 @@ export const CountPlanMain1 = useCrudSchemas(reactive<CrudSchema[]>([
},
form: {
componentProps: {
enterSearch:true,
isSearchList: true, // 开启查询弹窗
multiple:true,//是否可以多选
searchListPlaceholder: '请选择物料忽略名单', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '物料信息', // 查询弹窗标题
searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类
searchPage: ItembasicApi.getItembasicPage // 查询弹窗所需分页方法
searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法
verificationPage: ItembasicApi.getItemListByCodes,
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: 'true',
isFormModel: true
}], // 失去焦点校验参数
}
}
},
@ -862,14 +880,23 @@ export const CountPlanMain1 = useCrudSchemas(reactive<CrudSchema[]>([
},
form: {
componentProps: {
enterSearch: true,
isSearchList: true, // 开启查询弹窗
multiple:true,//是否可以多选
searchListPlaceholder: '请选择库位忽略名单', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '库位信息', // 查询弹窗标题
searchAllSchemas: Location.allSchemas, // 查询弹窗所需类
searchPage: LocationApi.getLocationPage // 查询弹窗所需分页方法
searchPage: LocationApi.getLocationPage, // 查询弹窗所需分页方法
verificationPage: LocationApi.getLocationByCodes,
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: 'true',
isFormModel: true
}], // 失去焦点校验参数
}
}
},

Loading…
Cancel
Save