demo-sps-web/src/models/search.js
2024-12-16 13:42:31 +08:00

116 lines
3.5 KiB
JavaScript

import * as appService from '../services/search'
export default {
namespace: 'search',
state: {
btnEntities: [],
// 共享以及记忆查询
shareData: {
// 存储每个 shareKey 对应的查询条件
// 数据结构如下
// 'shareKey': [
// { field: '', value: '', defaultValue: '' }
// ]
},
shareIns: {
// 存储每个 Search 组件实例
// 数据结构如下:
// 'shareKey': [
// {
// insRef: '', // 每个 Search 组件的名字
// instance: '', // Search 组件的实例
// }
// ]
},
// 导出功能,用于导出的 excel 插入标题
fieldConfigs: {
// 存储每个 formCode 对应的查询条件
// 数据结构如下:
// PF001: [
// { field: '', value: '', defaultValue: '' }
// ]
},
relatedFieldConfigs: {
// 存储每个 formCode 对应相关联的其他 formCode 的查询条件
// 数据结构如下:
// PF001: {
// relatedTo: 'PF002',
// extraRows: ['插入行']
// }
}
},
effects: {
*getSysFields ({ payload, onlyData, ignoreThrottle = true }, { call }) {
return yield call(appService.getSysFields, payload, onlyData, ignoreThrottle)
},
*getUserFields ({ payload, onlyData, ignoreThrottle = true }, { call }) {
return yield call(appService.getUserFields, payload, onlyData, ignoreThrottle)
},
*getUserConfig ({ payload }, { call }) {
return yield call(appService.getUserConfig, payload)
},
*getQueryFields ({ payload }, { call }) {
return yield call(appService.getQueryFields, payload)
},
*deleteUserConfig ({ payload }, { call }) {
return yield call(appService.deleteUserConfig, payload)
},
*saveUserConfig ({ payload }, { call }) {
return yield call(appService.saveUserConfig, payload)
},
*updateUserConfigIsDefault ({ payload }, { call }) {
return yield call(appService.updateUserConfigIsDefault, payload)
},
*saveUserConfigFeildDefaultValue ({ payload }, { call }) {
return yield call(appService.saveUserConfigFeildDefaultValue, payload)
},
},
reducers: {
save (state, action) {
return { ...state, ...action.payload }
},
setShareData (state, { payload }) {
const { shareData } = state
const { key, data } = payload
shareData[key] = data
return { ...state }
},
setShareIns (state, { payload }) {
const { shareIns } = state
const { key, insRef, instance } = payload
if (shareIns[key]) {
const target = shareIns[key].find(item => item.insRef === insRef)
!target && shareIns[key].push({ insRef, instance })
} else {
shareIns[key] = [{ insRef, instance }]
}
return { ...state }
},
cleanShareIns (state, { payload }) {
const { shareIns } = state
const { key, insRef } = payload
if (shareIns[key]) {
const targetIndex = shareIns[key].findIndex(item => item.insRef === insRef)
targetIndex !== -1 && shareIns[key].splice(targetIndex, 1)
}
return { ...state }
},
setFieldConfigs (state, { payload }) {
const { fieldConfigs } = state
const { key, data } = payload
fieldConfigs[key] = data
return { ...state }
},
setRelatedFieldConfigs (state, { payload }) {
const { relatedFieldConfigs } = state
const { code, relatedTo, extraRows } = payload
relatedFieldConfigs[code] = {
relatedTo,
extraRows
}
return { ...state }
}
}
}