@tongfun/tf-widget 0.1.18 → 0.1.22

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 (99) hide show
  1. package/README.md +49 -42
  2. package/lib/css/1.841c5d60.css +1 -0
  3. package/lib/tf-widget.common.1.js +9 -13
  4. package/lib/tf-widget.common.js +1102 -950
  5. package/lib/tf-widget.css +1 -1
  6. package/lib/tf-widget.umd.1.js +9 -13
  7. package/lib/tf-widget.umd.js +1102 -950
  8. package/lib/tf-widget.umd.min.1.js +1 -1
  9. package/lib/tf-widget.umd.min.js +4 -4
  10. package/package/svg-icon/index.js +8 -8
  11. package/package/svg-icon/src/SvgIcon.vue +59 -59
  12. package/package/t-data-list/index.js +6 -6
  13. package/package/t-data-list/main.vue +193 -192
  14. package/package/t-data-list/src/condition-input/basic.vue +31 -31
  15. package/package/t-data-list/src/condition-input/date.vue +106 -106
  16. package/package/t-data-list/src/condition-input/index.vue +100 -100
  17. package/package/t-data-list/src/condition-input/input.vue +31 -31
  18. package/package/t-data-list/src/condition-input/number.vue +115 -115
  19. package/package/t-data-list/src/condition-input/select.vue +86 -86
  20. package/package/t-data-list/src/js/fieldTypeEnum.js +10 -10
  21. package/package/t-data-list/src/js/operatorEnum.js +108 -109
  22. package/package/t-data-list/src/js/qureyParamsEnum.js +4 -4
  23. package/package/t-data-list/src/js/util.js +34 -34
  24. package/package/t-data-list/src/mixins/button-controll-mixin.js +93 -77
  25. package/package/t-data-list/src/pushdown/push-down.vue +158 -158
  26. package/package/t-data-list/src/t-list-search.vue +36 -32
  27. package/package/t-data-list/src/t-plan/condition-always-item.vue +143 -143
  28. package/package/t-data-list/src/t-plan/condition-mult-item.vue +222 -222
  29. package/package/t-data-list/src/t-plan/index.vue +195 -190
  30. package/package/t-data-list/src/t-plan/plan-content.vue +389 -396
  31. package/package/t-data-list/src/t-table/index.vue +129 -120
  32. package/package/t-data-list/src/t-table/table-group-item-edit.vue +238 -238
  33. package/package/t-data-list/src/t-table/table-group-item.vue +87 -87
  34. package/package/t-data-list/src/t-table/table-group.vue +180 -179
  35. package/package/t-data-list/src/t-table/table-records-header-popover.vue +246 -250
  36. package/package/t-data-list/src/t-table/table-records-selected.vue +159 -159
  37. package/package/t-data-list/src/t-table/table-records.vue +337 -324
  38. package/package/t-input/children/address.vue +101 -101
  39. package/package/t-input/children/basic-display.vue +41 -41
  40. package/package/t-input/children/basic.vue +253 -251
  41. package/package/t-input/children/date.vue +89 -89
  42. package/package/t-input/children/group-components/group-dialog.vue +344 -350
  43. package/package/t-input/children/group.vue +126 -126
  44. package/package/t-input/children/input.vue +72 -72
  45. package/package/t-input/children/number.vue +74 -74
  46. package/package/t-input/children/select.vue +89 -89
  47. package/package/t-input/children/tfile/fiile-enclosure.vue +233 -233
  48. package/package/t-input/index.js +7 -7
  49. package/package/t-input/index.vue +337 -337
  50. package/package/t-input/tInputCache.js +24 -24
  51. package/package/tf-icon-picker/README.md +7 -7
  52. package/package/tf-icon-picker/index.js +8 -8
  53. package/package/tf-icon-picker/src/tf-icon-picker.vue +266 -266
  54. package/package/tf-layout/README.md +115 -115
  55. package/package/tf-layout/index.js +8 -8
  56. package/package/tf-layout/src/components/tf-labelbar.vue +394 -382
  57. package/package/tf-layout/src/components/tf-menu.vue +180 -180
  58. package/package/tf-layout/src/components/tf-right-menu.vue +89 -89
  59. package/package/tf-layout/src/components/tf-rotate-box.vue +50 -50
  60. package/package/tf-layout/src/tf-layout.vue +140 -120
  61. package/package/tf-widget/index.js +8 -8
  62. package/package/tf-widget/src/assets/common-input.less +10 -10
  63. package/package/tf-widget/src/children/basic-data/basic-data.vue +361 -361
  64. package/package/tf-widget/src/children/basic-data/dependcy/basic-data-selector.vue +1087 -1087
  65. package/package/tf-widget/src/children/basic-data/dependcy/common-table.vue +750 -750
  66. package/package/tf-widget/src/children/basic-data/dependcy/condition-filter.vue +519 -519
  67. package/package/tf-widget/src/children/basic-data/dependcy/pagination.vue +93 -93
  68. package/package/tf-widget/src/children/basic-data/dependcy/table-control.vue +240 -240
  69. package/package/tf-widget/src/children/basic-data/dependcy/view-picture.vue +108 -108
  70. package/package/tf-widget/src/children/date-time.vue +103 -103
  71. package/package/tf-widget/src/children/date.vue +103 -103
  72. package/package/tf-widget/src/children/decimal.vue +115 -115
  73. package/package/tf-widget/src/children/integer.vue +104 -104
  74. package/package/tf-widget/src/children/property.vue +59 -59
  75. package/package/tf-widget/src/children/single-line-text.vue +82 -82
  76. package/package/tf-widget/src/children/small-pictures.vue +223 -223
  77. package/package/tf-widget/src/children/text-area.vue +74 -74
  78. package/package/tf-widget/src/children/tf-select.vue +113 -113
  79. package/package/tf-widget/src/tf-widget.vue +175 -175
  80. package/package.json +44 -43
  81. package/src/api/edit.js +97 -97
  82. package/src/api/file-enclosure.js +26 -26
  83. package/src/api/push-down.js +19 -19
  84. package/src/api/table.js +294 -294
  85. package/src/api/tableV3.js +166 -186
  86. package/src/assets/images/icons/index.js +9 -9
  87. package/src/assets/images/icons/svg/add.svg +5 -5
  88. package/src/assets/images/icons/svg/push-down.svg +1 -1
  89. package/src/assets/images/icons/svg/remove.svg +1 -1
  90. package/src/assets/styles/common-table.less +202 -202
  91. package/src/directives/debounce.js +24 -0
  92. package/src/index.js +31 -31
  93. package/src/mixins/t-data-query-mixin.js +290 -289
  94. package/src/utils/auth.js +22 -22
  95. package/src/utils/request.js +42 -42
  96. package/src/utils/stato-anormale.js +59 -59
  97. package/src/utils/utils.js +109 -109
  98. package/src/utils/validate.js +84 -84
  99. package/lib/css/1.920744ef.css +0 -1
@@ -1,251 +1,253 @@
1
- <template>
2
- <div class="basic-input">
3
- <!-- 输入控件 -->
4
- <el-autocomplete
5
- ref="basic"
6
- v-model="displayValue"
7
- placeholder=""
8
- :fetch-suggestions="getAdvice"
9
- :disabled="disabled"
10
- popper-class="basic-suggest-poper"
11
- :trigger-on-focus="false"
12
- @select="handleSelect"
13
- @keydown.delete.native="handleDeleteKeyDown"
14
- >
15
- <i slot="suffix" class="el-icon-search" style="cursor: pointer" @click="showDialog" />
16
- <template slot-scope="{item}">
17
- <div>{{ suggestDisplay(item) }}</div>
18
- </template>
19
- </el-autocomplete>
20
-
21
- <!-- 弹窗数据选择器 -->
22
- <el-dialog
23
- :visible.sync="dialogVisible"
24
- width="80%"
25
- :append-to-body="appendToBody"
26
- :close-on-click-modal="false"
27
- :close-on-press-escape="false"
28
- :modal-append-to-body="modalAppendToBody"
29
- @open="getTableData"
30
- >
31
- <div class="dataDialog">
32
- <Ttable
33
- class="t-table"
34
- is-selector
35
- :layout="tableLayout"
36
- :sum="tableSum"
37
- :data="tableData"
38
- enable-group
39
- :page-size="query.pageSize"
40
- :current-page="query.pageNum"
41
- update-in-dialog
42
- @condition-change="handleHeadChange"
43
- @groupChange="handleGroupChange"
44
- @size-change="handleSizeChange"
45
- @current-change="handleCurrentChange"
46
- @fastConfirm="handleFastSelect"
47
- />
48
- </div>
49
- <template v-slot:title>
50
- <div class="common-title">
51
- <TListSearch class="common-table-buttons-search" @search="handleSuggestMultiCondition($event,true)" />
52
- </div>
53
- </template>
54
- <span slot="footer" class="dialog-footer basic-selector-footer">
55
- <el-button class="common-header-button close" size="mini" type="primary" @click="dialogVisible = false">取 消</el-button>
56
- <el-button class="common-header-button" size="mini" type="primary" @click="handleDialogConfirm">确 定</el-button>
57
- </span>
58
- </el-dialog>
59
- </div>
60
- </template>
61
- <script>
62
- import TListSearch from '../../t-data-list/src/t-list-search.vue'
63
- import Ttable from '../../t-data-list/src/t-table/index'
64
- import dataQuery from '@/mixins/t-data-query-mixin.js'
65
- export default {
66
- components: {
67
- TListSearch,
68
- Ttable
69
- },
70
- mixins: [dataQuery],
71
- props: {
72
- value: {
73
- type: Object,
74
- default: () => {
75
- return { name: '', id: null }
76
- }
77
- },
78
- limitation: {
79
- type: Object,
80
- default: () => {}
81
- },
82
- disabled: {
83
- type: Boolean,
84
- default: false
85
- },
86
- appendToBody: {
87
- type: Boolean,
88
- default: true
89
- },
90
- modalAppendToBody: {
91
- type: Boolean,
92
- default: false
93
- }
94
- },
95
- inject: ['target', 'entity'],
96
- data () {
97
- return {
98
- dialogVisible: false,
99
- // 选中一个基础资料之后,基础资料控件显示的名称
100
- displayField: null,
101
- queryType: 'SELECTOR'
102
- }
103
- },
104
- computed: {
105
- displayValue: {
106
- set (value) {
107
- if (this.value.id) {
108
- return
109
- }
110
- this.value.name = value
111
- },
112
- get () {
113
- if (!this.value) {
114
- return
115
- }
116
- return this.value.name
117
- }
118
- }
119
- },
120
- created () {
121
- if (this.entity) {
122
- this.$nextTick(() => {
123
- this.$refs.basic.focus()
124
- })
125
- }
126
- this.getTableLayout()
127
- },
128
- methods: {
129
- /**
130
- * 弹窗和数据选择
131
- */
132
- // 展开弹窗
133
- showDialog () {
134
- if (this.disabled) {
135
- return
136
- }
137
- this.dialogVisible = true
138
- },
139
- // 点击弹窗确定按钮
140
- handleDialogConfirm () {
141
- if (!this.ids.length) {
142
- this.dialogVisible = false
143
- return
144
- }
145
-
146
- if (!this.entity && this.ids.length > 1) {
147
- return this.$message.error('单据头中只能选择一条数据')
148
- }
149
-
150
- if (!this.entity) {
151
- const name = this.selectedRows[0][this.displayField]
152
- const id = this.ids[0]
153
- this.$emit('input', { name, id })
154
- this.$emit('selected', this.selectedRows)
155
- } else {
156
- this.$emit('selected', this.selectedRows)
157
- }
158
- this.dialogVisible = false
159
- },
160
- // 双击选择数据
161
- handleFastSelect (row) {
162
- this.$emit('input', { name: row[this.displayField], id: row[this.idField] })
163
- this.$emit('selected', [row])
164
- this.dialogVisible = false
165
- },
166
- /**
167
- * 输入框相关逻辑
168
- */
169
- // 删除按键处理函数
170
- handleDeleteKeyDown () {
171
- if (this.value.id) {
172
- this.$emit('input', { name: '', id: null })
173
- this.$emit('delete')
174
- }
175
- },
176
- // 获取搜索建议
177
- // 此时的搜索建议也需要对限定范围条件进行拼接
178
- async getAdvice (queryString, callback) {
179
- let record = []
180
- if (!/^\s*$/g.test(queryString)) {
181
- this.handleSuggestMultiCondition(queryString, false)
182
- record = await this.getTableData(true, false)
183
- }
184
- callback(record)
185
- },
186
- // 搜索建议的显示格式
187
- suggestDisplay (item) {
188
- const valueList = []
189
- for (const fieldObj of this.suggestFieldList) {
190
- valueList.push(item[fieldObj.field])
191
- }
192
- return valueList.join('/')
193
- },
194
- // 搜索建议被选择
195
- handleSelect (item) {
196
- const name = item[this.displayField]
197
- const id = item[this.idField]
198
- this.$emit('input', { name, id })
199
- this.$emit('selected', [item])
200
- }
201
- }
202
- }
203
- </script>
204
-
205
- <style>
206
- .basic-suggest-poper {
207
- width:unset !important;
208
- }
209
- </style>
210
- <style lang="less" scoped>
211
- .el-autocomplete {
212
- ::v-deep .el-input__suffix {
213
- display:flex;
214
- align-items:center;
215
- }
216
- }
217
-
218
- /deep/.t-table{
219
- height: 59vh;
220
- .table-records{
221
- height: 100%;
222
- position: relative;
223
- .plTableBox .elx-table--body-wrapper{
224
- height: calc(59vh - 80px);
225
- }
226
- .el-pagination{
227
- right: 0;
228
- }
229
- }
230
- }
231
- /deep/.el-dialog__body{
232
- padding-top: 0;
233
- }
234
-
235
- .basic-selector-footer {
236
- .el-button {
237
- background-color: #0A5194;
238
- border:none;
239
- }
240
- }
241
-
242
- .common-title{
243
- // background-color: pink;
244
- display:flex;
245
- justify-content: right;
246
- .common-table-buttons-search{
247
- margin-right:50px;
248
- }
249
- }
250
-
251
- </style>
1
+ <template>
2
+ <div class="basic-input">
3
+ <!-- 输入控件 -->
4
+ <el-autocomplete
5
+ ref="basic"
6
+ v-model="displayValue"
7
+ placeholder=""
8
+ :fetch-suggestions="getAdvice"
9
+ :disabled="disabled"
10
+ popper-class="basic-suggest-poper"
11
+ :trigger-on-focus="false"
12
+ @select="handleSelect"
13
+ @keydown.delete.native="handleDeleteKeyDown"
14
+ >
15
+ <i slot="suffix" class="el-icon-search" style="cursor: pointer" @click="showDialog" />
16
+ <template slot-scope="{item}">
17
+ <div>{{ suggestDisplay(item) }}</div>
18
+ </template>
19
+ </el-autocomplete>
20
+
21
+ <!-- 弹窗数据选择器 -->
22
+ <el-dialog
23
+ :visible.sync="dialogVisible"
24
+ width="80%"
25
+ :append-to-body="appendToBody"
26
+ :close-on-click-modal="false"
27
+ :close-on-press-escape="false"
28
+ :modal-append-to-body="modalAppendToBody"
29
+ @open="getTableData"
30
+ >
31
+ <!-- {{ limitation }} -->
32
+ <div class="dataDialog">
33
+ <Ttable
34
+ class="t-table"
35
+ is-selector
36
+ :layout="tableLayout"
37
+ :sum="tableSum"
38
+ :data="tableData"
39
+ enable-group
40
+ :page-size="query.pageSize"
41
+ :current-page="query.pageNum"
42
+ update-in-dialog
43
+ @condition-change="handleHeadChange"
44
+ @groupChange="handleGroupChange"
45
+ @size-change="handleSizeChange"
46
+ @current-change="handleCurrentChange"
47
+ @fastConfirm="handleFastSelect"
48
+ />
49
+ </div>
50
+ <template v-slot:title>
51
+ <div class="common-title">
52
+ <TListSearch class="common-table-buttons-search" @search="handleSuggestMultiCondition($event,true)" />
53
+ </div>
54
+ </template>
55
+ <span slot="footer" class="dialog-footer basic-selector-footer">
56
+ <el-button class="common-header-button close" size="mini" type="primary" @click="dialogVisible = false">取 消</el-button>
57
+ <el-button class="common-header-button" size="mini" type="primary" @click="handleDialogConfirm">确 定</el-button>
58
+ </span>
59
+ </el-dialog>
60
+ </div>
61
+ </template>
62
+ <script>
63
+ import TListSearch from '../../t-data-list/src/t-list-search.vue'
64
+ import Ttable from '../../t-data-list/src/t-table/index'
65
+ import dataQuery from '@/mixins/t-data-query-mixin.js'
66
+ export default {
67
+ components: {
68
+ TListSearch,
69
+ Ttable
70
+ },
71
+ mixins: [dataQuery],
72
+ props: {
73
+ value: {
74
+ type: Object,
75
+ default: () => {
76
+ return { name: '', id: null }
77
+ }
78
+ },
79
+ limitation: {
80
+ type: Object,
81
+ default: () => {}
82
+ },
83
+ disabled: {
84
+ type: Boolean,
85
+ default: false
86
+ },
87
+ appendToBody: {
88
+ type: Boolean,
89
+ default: true
90
+ },
91
+ modalAppendToBody: {
92
+ type: Boolean,
93
+ default: false
94
+ }
95
+ },
96
+ inject: ['target', 'entity'],
97
+ data () {
98
+ return {
99
+ dialogVisible: false,
100
+ // 选中一个基础资料之后,基础资料控件显示的名称
101
+ displayField: null,
102
+ queryType: 'SELECTOR'
103
+ }
104
+ },
105
+ computed: {
106
+ displayValue: {
107
+ set (value) {
108
+ if (this.value.id) {
109
+ return
110
+ }
111
+ this.value.name = value
112
+ },
113
+ get () {
114
+ if (!this.value) {
115
+ return
116
+ }
117
+ return this.value.name
118
+ }
119
+ }
120
+ },
121
+ created () {
122
+ if (this.entity) {
123
+ this.$nextTick(() => {
124
+ this.$refs.basic.focus()
125
+ })
126
+ }
127
+ this.getTableLayout()
128
+ },
129
+ methods: {
130
+ /**
131
+ * 弹窗和数据选择
132
+ */
133
+ // 展开弹窗
134
+ showDialog () {
135
+ if (this.disabled) {
136
+ return
137
+ }
138
+ this.dialogVisible = true
139
+ },
140
+ // 点击弹窗确定按钮
141
+ handleDialogConfirm () {
142
+ if (!this.ids.length) {
143
+ this.dialogVisible = false
144
+ return
145
+ }
146
+
147
+ if (!this.entity && this.ids.length > 1) {
148
+ return this.$message.error('单据头中只能选择一条数据')
149
+ }
150
+
151
+ if (!this.entity) {
152
+ const name = this.selectedRows[0][this.displayField]
153
+ const id = this.ids[0]
154
+ this.$emit('input', { name, id })
155
+ this.$emit('selected', this.selectedRows)
156
+ } else {
157
+ this.$emit('selected', this.selectedRows)
158
+ }
159
+ this.dialogVisible = false
160
+ },
161
+ // 双击选择数据
162
+ handleFastSelect (row) {
163
+ this.$emit('input', { name: row[this.displayField], id: row[this.idField] })
164
+ this.$emit('selected', [row])
165
+ this.dialogVisible = false
166
+ },
167
+ /**
168
+ * 输入框相关逻辑
169
+ */
170
+ // 删除按键处理函数
171
+ handleDeleteKeyDown () {
172
+ if (this.value.id) {
173
+ this.$emit('input', { name: '', id: null })
174
+ this.$emit('delete')
175
+ }
176
+ },
177
+ // 获取搜索建议
178
+ // 此时的搜索建议也需要对限定范围条件进行拼接
179
+ async getAdvice (queryString, callback) {
180
+ let record = []
181
+ if (!/^\s*$/g.test(queryString)) {
182
+ this.handleSuggestMultiCondition(queryString, false)
183
+ record = await this.getTableData(true, false)
184
+ }
185
+ callback(record)
186
+ },
187
+ // 搜索建议的显示格式
188
+ suggestDisplay (item) {
189
+ const valueList = []
190
+ for (const fieldObj of this.suggestFieldList) {
191
+ valueList.push(item[fieldObj.field])
192
+ }
193
+ return valueList.join('/')
194
+ },
195
+ // 搜索建议被选择
196
+ handleSelect (item) {
197
+ const name = item[this.displayField]
198
+ const id = item[this.idField]
199
+ this.$emit('input', { name, id })
200
+ this.$emit('selected', [item])
201
+ }
202
+ }
203
+ }
204
+ </script>
205
+
206
+ <style>
207
+ .basic-suggest-poper {
208
+ width:unset !important;
209
+ }
210
+ </style>
211
+ <style lang="less" scoped>
212
+ .el-autocomplete {
213
+ ::v-deep .el-input__suffix {
214
+ display:flex;
215
+ align-items:center;
216
+ }
217
+ }
218
+
219
+ /deep/.t-table{
220
+ height: 59vh;
221
+ .table-records{
222
+ height: 100%;
223
+ position: relative;
224
+ .plTableBox .elx-table--body-wrapper{
225
+ height: calc(59vh - 80px);
226
+ overflow-x:scroll;
227
+ }
228
+ .el-pagination{
229
+ right: 0;
230
+ }
231
+ }
232
+ }
233
+ /deep/.el-dialog__body{
234
+ padding-top: 0;
235
+ }
236
+
237
+ .basic-selector-footer {
238
+ .el-button {
239
+ background-color: #0A5194;
240
+ border:none;
241
+ }
242
+ }
243
+
244
+ .common-title{
245
+ // background-color: pink;
246
+ display:flex;
247
+ justify-content: right;
248
+ .common-table-buttons-search{
249
+ margin-right:50px;
250
+ }
251
+ }
252
+
253
+ </style>