@brms/ai-skills 0.1.0

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.
Files changed (90) hide show
  1. package/README.md +256 -0
  2. package/bin/brms-skills.mjs +411 -0
  3. package/package.json +30 -0
  4. package/skills/brms-prototype-generator/SKILL.md +129 -0
  5. package/skills/brms-prototype-generator/agents/openai.yaml +7 -0
  6. package/skills/brms-prototype-generator/examples/few-shot-examples.md +577 -0
  7. package/skills/brms-prototype-generator/references/01-list-query.md +444 -0
  8. package/skills/brms-prototype-generator/references/02-form-entry.md +129 -0
  9. package/skills/brms-prototype-generator/references/03-detail-display.md +125 -0
  10. package/skills/brms-prototype-generator/references/04-composite-page-package.md +339 -0
  11. package/skills/brms-prototype-generator/references/05-dialog-patterns.md +113 -0
  12. package/skills/brms-prototype-generator/references/06-backend-request-patterns.md +118 -0
  13. package/skills/brms-prototype-generator/references/resource-index.md +46 -0
  14. package/skills/brms-prototype-generator/references/system-prompt.md +242 -0
  15. package/skills/brms-prototype-generator/scripts/analyze-doc.mjs +554 -0
  16. package/skills/brms-prototype-generator/scripts/check-project.mjs +228 -0
  17. package/skills/brms-prototype-generator/scripts/discover-targets.mjs +158 -0
  18. package/skills/brms-prototype-generator/scripts/install-codex.mjs +74 -0
  19. package/skills/brms-prototype-generator/scripts/plan-pages.mjs +390 -0
  20. package/skills/brms-prototype-generator/scripts/validate-generated.mjs +838 -0
  21. package/skills/brms-prototype-generator/templates/user-input-template.md +182 -0
  22. package/skills/brms-vxe-plus-developer/SKILL.md +105 -0
  23. package/skills/brms-vxe-plus-developer/agents/openai.yaml +7 -0
  24. package/skills/brms-vxe-plus-developer/references/prototype-to-real.md +54 -0
  25. package/skills/brms-vxe-plus-developer/references/real-base-development.md +110 -0
  26. package/skills/brms-vxe-plus-developer/references/resource-index.md +43 -0
  27. package/skills/brms-vxe-plus-developer/references/review-checklist.md +49 -0
  28. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/01-mental-model.md +150 -0
  29. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/02-vxe-plus-form.md +302 -0
  30. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/03-vxe-plus-table.md +253 -0
  31. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/04-example-map.md +488 -0
  32. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/05-request-and-eiinfo.md +170 -0
  33. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/90-anti-patterns.md +137 -0
  34. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/README.md +43 -0
  35. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/README.md +21 -0
  36. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/A1/P0/A1P01601.vue +483 -0
  37. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/A1/P1/A1P11011.vue +444 -0
  38. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/AB/BP/ABBP0201.vue +1648 -0
  39. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/AM/AF/component/AMAF0601/Bidding/formConfig.ts +228 -0
  40. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/AM/AF/component/AMAF0601/Record/columns.ts +110 -0
  41. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/BM/BR/BMBR01.vue +130 -0
  42. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/BM/BR/component/BMBR01/columns.ts +94 -0
  43. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/BM/BR/component/BMBR01/formConfig.ts +108 -0
  44. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Change/formConfig.ts +123 -0
  45. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Change/index.vue +103 -0
  46. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Clause/columns.ts +48 -0
  47. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Clause/index.vue +202 -0
  48. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Correcte/formConfig.ts +117 -0
  49. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Correcte/index.vue +103 -0
  50. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Pay/Payment/formConfig.ts +90 -0
  51. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Pay/Payment/index.vue +42 -0
  52. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Pay/columns.ts +376 -0
  53. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Pay/index.vue +619 -0
  54. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Settle/Domestic/formConfig.ts +73 -0
  55. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Settle/Domestic/index.vue +47 -0
  56. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Settle/Foreign/formConfig.ts +141 -0
  57. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Settle/Foreign/index.vue +42 -0
  58. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Settle/columns.ts +123 -0
  59. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/Settle/index.vue +593 -0
  60. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Explain/index.vue +68 -0
  61. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Fee/columns.ts +150 -0
  62. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Fee/index.vue +235 -0
  63. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Files/columns.ts +63 -0
  64. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Files/index.vue +117 -0
  65. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Goods/columns.ts +327 -0
  66. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Goods/index.vue +790 -0
  67. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Base/Approve/formConfig.ts +341 -0
  68. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Base/Approve/index.vue +63 -0
  69. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Base/Approve2/formConfig.ts +232 -0
  70. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Base/Approve2/index.vue +27 -0
  71. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Base/Diff/columns.ts +46 -0
  72. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Base/Diff/index.vue +92 -0
  73. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Base/formConfig.ts +979 -0
  74. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Base/index.vue +62 -0
  75. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Other/formConfig.ts +179 -0
  76. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Other/index.vue +140 -0
  77. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Sign/formConfig.ts +118 -0
  78. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/Sign/index.vue +44 -0
  79. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Main/index.vue +168 -0
  80. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Party/Major/formConfig.ts +257 -0
  81. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Party/Major/index.vue +47 -0
  82. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Party/columns.ts +256 -0
  83. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Party/index.vue +738 -0
  84. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Price/formConfig.ts +174 -0
  85. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Price/index.vue +51 -0
  86. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/PM/PC/component/PMPC0101/Top/index.vue +924 -0
  87. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/SM/SW/SMSW0101.vue +567 -0
  88. package/skills/brms-vxe-plus-developer/references/vxe-plus-knowledge/sources/project/base/src/views/demo/index.vue +448 -0
  89. package/skills/brms-vxe-plus-developer/scripts/check-project.mjs +259 -0
  90. package/skills/brms-vxe-plus-developer/scripts/check-vxe-plus-page.mjs +137 -0
@@ -0,0 +1,47 @@
1
+ <!--
2
+ * @Author: 谢力
3
+ * @Date: 2025-06-26 15:30:28
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2025-08-20 15:50:40
6
+ -->
7
+ <template>
8
+ <VxePlusForm
9
+ ref="xForm"
10
+ :disabled="!editable"
11
+ :title-asterisk="editable"
12
+ :form-options="formConfig"
13
+ />
14
+ </template>
15
+
16
+ <script setup lang="ts">
17
+ import { inject, ref } from 'vue'
18
+ import { createFormConfig } from './formConfig'
19
+
20
+ const xForm = ref<any>(null)
21
+
22
+ const { editable } = inject('__PMPC0101__info__') as any
23
+
24
+ const { formData, formConfig, validator, validateField, getData } = createFormConfig()
25
+
26
+ function handleValidator(flag: boolean = true) {
27
+ return validator(xForm, flag)
28
+ }
29
+
30
+ function handleValidateField(field, flag: boolean = true) {
31
+ return validateField(xForm, field, flag)
32
+ }
33
+
34
+ function updateFormData(data) {
35
+ Object.assign(formData, data)
36
+ }
37
+
38
+ defineExpose({
39
+ formData,
40
+ getData,
41
+ validator: handleValidator,
42
+ validateField: handleValidateField,
43
+ updateFormData,
44
+ })
45
+ </script>
46
+
47
+ <style scoped></style>
@@ -0,0 +1,141 @@
1
+ import { computed, inject, reactive } from 'vue'
2
+ import { useForm } from '@/hooks/useForm'
3
+ import { isEmpty } from '@/utils/is'
4
+ import { compareData } from '@/utils'
5
+
6
+ export function createFormConfig() {
7
+ const { commonFormSelect, createFormRules, validator, validateField, getFormData } = useForm()
8
+
9
+ const { diffable, foreignList, foreignDiffList } = inject('__PMPC0101__info__') as any
10
+
11
+ const prefix = ['First', 'Adjust', 'Tail']
12
+ const keys = ['quantityConfirmCompany', 'qualityProvider', 'qualityConfirmCompany']
13
+
14
+ const defaultData = {
15
+ quantityConfirmCompanyFirst: 'BL',
16
+ qualityProviderFirst: 'SUPPLIER',
17
+ qualityConfirmCompanyFirst: 'LP',
18
+ quantityConfirmCompanyAdjust: 'LP',
19
+ qualityProviderAdjust: 'SURVEROR',
20
+ qualityConfirmCompanyAdjust: 'LP',
21
+ quantityConfirmCompanyTail: 'LP',
22
+ qualityProviderTail: 'SURVEROR',
23
+ qualityConfirmCompanyTail: 'LP',
24
+ }
25
+
26
+ const getSourceData = (data, flag?) => {
27
+ return prefix.reduce((ob, key) => {
28
+ const row = data.find(item => item.feeTypeCode === key.toUpperCase()) || {}
29
+ keys.forEach((field) => {
30
+ const uKey = `${field}${key}`
31
+ ob[uKey] = row[field] || ''
32
+ if (flag && isEmpty(ob[uKey])) {
33
+ ob[uKey] = defaultData[uKey] || ''
34
+ }
35
+ })
36
+ return ob
37
+ }, {})
38
+ }
39
+
40
+ const formData = reactive(getSourceData(foreignList.value, true))
41
+
42
+ const baseFields = computed(() => {
43
+ return [
44
+ {
45
+ field: 'quantityConfirmCompanyFirst',
46
+ title: '首款数量依据单证',
47
+ itemRender: commonFormSelect('brmerp.pm.quantityConfirmDesc'),
48
+ },
49
+ {
50
+ field: 'qualityProviderFirst',
51
+ title: '首款质量出具方名称',
52
+ itemRender: commonFormSelect('brmerp.pm.qualityProvider'),
53
+ },
54
+ {
55
+ field: 'qualityConfirmCompanyFirst',
56
+ title: '首款质量出具单证',
57
+ itemRender: commonFormSelect('brmerp.pm.quantityConfirmDescOther'),
58
+ },
59
+ {
60
+ field: 'quantityConfirmCompanyAdjust',
61
+ title: '调整款数量依据单证',
62
+ itemRender: commonFormSelect('brmerp.pm.quantityConfirmDescOther'),
63
+ },
64
+ {
65
+ field: 'qualityProviderAdjust',
66
+ title: '调整款质量出具方名称',
67
+ itemRender: commonFormSelect('brmerp.pm.qualityProvider'),
68
+ },
69
+ {
70
+ field: 'qualityConfirmCompanyAdjust',
71
+ title: '调整款质量出具单证',
72
+ itemRender: commonFormSelect('brmerp.pm.quantityConfirmDescOther'),
73
+ },
74
+ {
75
+ field: 'quantityConfirmCompanyTail',
76
+ title: '尾款数量依据单证',
77
+ itemRender: commonFormSelect('brmerp.pm.quantityConfirmDescOther'),
78
+ },
79
+ {
80
+ field: 'qualityProviderTail',
81
+ title: '尾款质量出具方名称',
82
+ itemRender: commonFormSelect('brmerp.pm.qualityProvider'),
83
+ },
84
+ {
85
+ field: 'qualityConfirmCompanyTail',
86
+ title: '尾款质量出具单证',
87
+ itemRender: commonFormSelect('brmerp.pm.quantityConfirmDescOther'),
88
+ },
89
+ ]
90
+ })
91
+
92
+ const getData = () => {
93
+ const data = [] as any
94
+ const count = prefix.length
95
+ const _formData = getFormData(baseFields.value, formData)
96
+ baseFields.value.forEach((item, i) => {
97
+ const index = Math.floor(i / count)
98
+ const j = i % count
99
+ data[index] = data[index] || {}
100
+ data[index].feeTypeCode = prefix[index].toUpperCase()
101
+ data[index][keys[j]] = _formData[item.field]
102
+ })
103
+ return data
104
+ }
105
+
106
+ const formRules = computed(() => createFormRules(baseFields.value))
107
+
108
+ const diffConfig = computed(() => {
109
+ const historyInfo = getSourceData(foreignDiffList.value)
110
+ const currentInfo = getSourceData(foreignList.value, true)
111
+ const historyData = Object.keys(historyInfo).reduce((ob, field) => {
112
+ if (!isEmpty(historyInfo[field])) {
113
+ ob[field] = historyInfo[field]
114
+ }
115
+ return ob
116
+ }, {})
117
+ const diffInfo = compareData(historyData, currentInfo)
118
+ const enabled = diffable.value && Object.keys(diffInfo).length > 0
119
+ return {
120
+ enabled,
121
+ data: diffInfo,
122
+ }
123
+ })
124
+
125
+ const formConfig = reactive({
126
+ data: formData,
127
+ items: baseFields,
128
+ titleWidth: 170,
129
+ rules: formRules,
130
+ diffConfig,
131
+ })
132
+
133
+ return {
134
+ formData,
135
+ formConfig,
136
+ getData,
137
+ validator,
138
+ validateField,
139
+ getSourceData,
140
+ }
141
+ }
@@ -0,0 +1,42 @@
1
+ <!--
2
+ * @Author: 谢力
3
+ * @Date: 2025-07-26 09:48:34
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2025-08-08 14:37:39
6
+ -->
7
+ <template>
8
+ <VxePlusForm
9
+ ref="xForm"
10
+ :disabled="!editable"
11
+ :title-asterisk="editable"
12
+ :form-options="formConfig"
13
+ />
14
+ </template>
15
+
16
+ <script setup lang="ts">
17
+ import { inject, ref } from 'vue'
18
+ import { createFormConfig } from './formConfig'
19
+
20
+ const xForm = ref<any>(null)
21
+
22
+ const { editable, foreignList } = inject('__PMPC0101__info__') as any
23
+
24
+ const { formData, formConfig, getData, validator, getSourceData } = createFormConfig()
25
+
26
+ function handleValidator(flag: boolean = true) {
27
+ return validator(xForm, flag)
28
+ }
29
+
30
+ function updateFormData() {
31
+ Object.assign(formData, getSourceData(foreignList.value))
32
+ }
33
+
34
+ defineExpose({
35
+ formData,
36
+ getData,
37
+ validator: handleValidator,
38
+ updateFormData,
39
+ })
40
+ </script>
41
+
42
+ <style scoped></style>
@@ -0,0 +1,123 @@
1
+ /*
2
+ * @Author: 谢力
3
+ * @Date: 2025-06-26 15:30:28
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2025-12-03 14:52:12
6
+ */
7
+ import { computed, inject } from 'vue'
8
+ import { useTable } from '@/hooks/useTable'
9
+ import { useValidator } from '@/hooks/useValidator'
10
+ import { useCodeSetStore } from '@/stores/modules/codeSet'
11
+
12
+ export function createTableColumns() {
13
+ const { createColumns, commonVxeInput, commonTableSelect, createEditRules, validator } = useTable()
14
+
15
+ const { validateNumber } = useValidator()
16
+
17
+ const { diffable } = inject('__PMPC0101__info__') as any
18
+
19
+ const { getCodeSetTextByCode } = useCodeSetStore()
20
+
21
+ const columns = computed(() => {
22
+ return createColumns([
23
+ // {
24
+ // type: 'seq',
25
+ // width: 60,
26
+ // },
27
+ {
28
+ field: 'operationType',
29
+ title: '变更状态',
30
+ editRender: commonTableSelect('BRMERP.ac.contractChangeStatus'),
31
+ visible: false,
32
+ },
33
+ {
34
+ field: 'pcContractSettleId',
35
+ title: '变更状态',
36
+ width: 100,
37
+ fixed: 'left',
38
+ formatter: ({ row }) => getCodeSetTextByCode('BRMERP.ac.contractChangeStatus', row.operationType),
39
+ visible: diffable.value,
40
+ },
41
+ {
42
+ field: 'operateType',
43
+ title: '操作类型',
44
+ width: 100,
45
+ fixed: 'left',
46
+ visible: diffable.value,
47
+ formatter: ({ row, cellValue }) => {
48
+ if (['U'].includes(row.operationType)) {
49
+ return cellValue
50
+ }
51
+ },
52
+ },
53
+ {
54
+ field: 'sortNum',
55
+ title: '序号',
56
+ width: 80,
57
+ editRender: commonVxeInput(),
58
+ validator: ({ itemValue }) => {
59
+ const result = validateNumber(itemValue)
60
+ if (!result.status) {
61
+ return Promise.reject(result.msg)
62
+ }
63
+ const sortNum = Number.parseFloat(itemValue)
64
+ if (sortNum <= 0) {
65
+ return Promise.reject('必须大于0')
66
+ }
67
+ return Promise.resolve(true)
68
+ },
69
+ },
70
+ {
71
+ field: 'feeTypeValue1',
72
+ title: '结算款项',
73
+ editRender: commonTableSelect('brmerp.pm.settleContentCode1', null, {
74
+ enabled: false,
75
+ }),
76
+ visible: false,
77
+ },
78
+ {
79
+ field: 'feeTypeValue2',
80
+ title: '结算款项',
81
+ editRender: commonTableSelect('brmerp.pm.settleContentCode2', null, {
82
+ enabled: false,
83
+ }),
84
+ visible: false,
85
+ },
86
+ {
87
+ field: 'feeTypeValue',
88
+ title: '结算款项',
89
+ width: 200,
90
+ slots: {
91
+ header: 'feeTypeValue_header',
92
+ },
93
+ required: true,
94
+ },
95
+ {
96
+ field: 'settleTerm',
97
+ title: '结算条款',
98
+ required: true,
99
+ },
100
+ ].map((col) => {
101
+ if (col.field !== 'seq') {
102
+ (col as any).slots = {
103
+ ...(col as any).slots,
104
+ default: `${col.field}_default`,
105
+ }
106
+ }
107
+ return {
108
+ ...col,
109
+ width: (col as any).width ?? '',
110
+ } as any
111
+ })).value
112
+ })
113
+
114
+ const tableValidator = (...args: any[]) => {
115
+ return (validator as any)(...args)
116
+ }
117
+
118
+ return {
119
+ columns,
120
+ editRules: computed(() => createEditRules(columns.value)),
121
+ tableValidator,
122
+ }
123
+ }