jobsys-newbie 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,7 +40,8 @@ export default defineComponent({
40
40
  * @property {Array} [conditions] 搜索项的条件,可选项为不同类型的内置条件
41
41
  * @property {*} [defaultValue] 默认搜索值
42
42
  * @property {*} [defaultCondition] 默认搜索条件
43
- * @property {Function} [collectItem] 收集搜索项的内容[内部使用]
43
+ * @property {Function} [customRender] 自定义渲染搜索项, 接收 { item, queryForm, context } 作为参数,返回一个对象,包含 conditions, Component, displayValue, onComponentOpen 四个属性
44
+ * @property {Function} [collectItem] 收集搜索项的内容]
44
45
  * */
45
46
 
46
47
  /**
@@ -80,7 +81,7 @@ export default defineComponent({
80
81
  */
81
82
  "search",
82
83
  ],
83
- setup(props, { expose, emit }) {
84
+ setup(props, { expose, emit, slots }) {
84
85
  const searchProvider = inject(NEWBIE_SEARCH, () => {})
85
86
 
86
87
  const state = reactive({
@@ -333,7 +334,7 @@ export default defineComponent({
333
334
  state.searchLabels = []
334
335
 
335
336
  concat(state.fieldColumns, state.expandColumns).forEach((item) => {
336
- let { value, searchLabel } = item.collectItem ? item.collectItem() : {}
337
+ let { value, searchLabel } = item.collectItem ? item.collectItem({ queryForm: state.queryForm, item }) : {}
337
338
  const { condition, type } = state.queryForm[item.key]
338
339
 
339
340
  if (
@@ -369,7 +370,13 @@ export default defineComponent({
369
370
  */
370
371
  const setQueryForm = (fields) => {
371
372
  Object.keys(fields).forEach((key) => {
372
- state.queryForm[key].value = fields[key]
373
+ if (state.queryForm[key]) {
374
+ state.queryForm[key].value = fields[key]
375
+ } else {
376
+ state.queryForm[key] = {
377
+ value: fields[key],
378
+ }
379
+ }
373
380
  })
374
381
  }
375
382
 
@@ -398,6 +405,7 @@ export default defineComponent({
398
405
  return state.fieldColumns.map((item) =>
399
406
  createSearchItem(item, state.queryForm, searchState[item.key], {
400
407
  props,
408
+ slots,
401
409
  searchProvider,
402
410
  }),
403
411
  )
@@ -1,4 +1,4 @@
1
- import { find } from "lodash-es"
1
+ import { find, isFunction } from "lodash-es"
2
2
  import { computed, nextTick, ref, Transition, withModifiers } from "vue"
3
3
  import { Dropdown, Menu, MenuItem, TypographyText } from "ant-design-vue"
4
4
  import { DownOutlined } from "@ant-design/icons-vue"
@@ -16,29 +16,44 @@ import { useT } from "../../../hooks/index.js"
16
16
  * @return {JSX.Element}
17
17
  */
18
18
  const render = (item, queryForm, itemState, context) => {
19
- const { searchProvider, props } = context
19
+ const { searchProvider, props, slots } = context
20
20
 
21
21
  const panelRef = ref(null)
22
22
 
23
23
  let field = {}
24
24
 
25
- if (!item.type || item.type === "input") {
26
- field = Fields.createInput(item, queryForm, context)
27
- } else if (item.type === "number") {
28
- field = Fields.createNumber(item, queryForm, context)
29
- } else if (item.type === "select") {
30
- field = Fields.createSelect(item, queryForm, context)
31
- } else if (item.type === "textarea") {
32
- field = Fields.createTextarea(item, queryForm, context)
33
- } else if (item.type === "date") {
34
- field = Fields.createDate(item, queryForm, context)
35
- } else if (item.type === "cascade") {
36
- field = Fields.createCascader(item, queryForm, context)
37
- } else if (item.type === "switch") {
38
- field = Fields.createSwitch(item, queryForm, context)
25
+ if (item.customRender) {
26
+ field = item.customRender({ item, queryForm, context })
27
+ } else {
28
+ switch (item.type) {
29
+ case "number":
30
+ field = Fields.createNumber(item, queryForm, context)
31
+ break
32
+ case "select":
33
+ field = Fields.createSelect(item, queryForm, context)
34
+ break
35
+ case "textarea":
36
+ field = Fields.createTextarea(item, queryForm, context)
37
+ break
38
+ case "date":
39
+ field = Fields.createDate(item, queryForm, context)
40
+ break
41
+ case "cascade":
42
+ field = Fields.createCascader(item, queryForm, context)
43
+ break
44
+ case "switch":
45
+ field = Fields.createSwitch(item, queryForm, context)
46
+ break
47
+ default:
48
+ field = Fields.createInput(item, queryForm, context)
49
+ break
50
+ }
51
+ }
52
+ if (slots[item.key]) {
53
+ field.Component = slots[item.key]({ item, queryForm, context })
39
54
  }
40
55
 
41
- const { conditions, Component, displayValue, onComponentOpen } = field
56
+ const { conditions = [], Component, displayValue = "", onComponentOpen = null } = field
42
57
 
43
58
  /**
44
59
  * 选择条件
@@ -144,7 +159,7 @@ const render = (item, queryForm, itemState, context) => {
144
159
  </Dropdown>
145
160
  )}
146
161
  </div>
147
- <div class={"newbie-search-input-container"}>{Component}</div>
162
+ <div class={"newbie-search-input-container"}>{isFunction(Component) ? Component() : Component}</div>
148
163
  </div>
149
164
  ) : null}
150
165
  </Transition>
@@ -71,10 +71,15 @@ export default defineComponent({
71
71
  tableEvents: { type: Object, default: () => ({}) },
72
72
 
73
73
  /**
74
- * 原生 slot
74
+ * 原生 slots
75
75
  */
76
76
  tableSlots: { type: Object, default: () => ({}) },
77
77
 
78
+ /**
79
+ * NewbieSearch slots
80
+ */
81
+ searchSlots: { type: Object, default: () => ({}) },
82
+
78
83
  /**
79
84
  * 是否使用分页,为 Object 时时使用自定义分页
80
85
  */
@@ -682,7 +687,11 @@ export default defineComponent({
682
687
  filterableColumns={state.filterableColumns}
683
688
  sortableColumns={state.sortableColumns}
684
689
  onSearch={onSearch}
685
- ></NewbieSearch>,
690
+ >
691
+ {{
692
+ ...props.searchSlots,
693
+ }}
694
+ </NewbieSearch>,
686
695
  <Divider></Divider>,
687
696
  ]
688
697
  : null