@zhijiancloud/bpm 0.0.6 → 0.0.7

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 (97) hide show
  1. package/components/api/batch-loader.js +61 -0
  2. package/components/api/index.js +108 -0
  3. package/components/css/bpmAudit.less +13 -0
  4. package/components/css/bpmMulFile.less +9 -5
  5. package/components/css/bpmSelectEntranceForm.less +62 -0
  6. package/components/css/bpmSelectHouseOwner.less +30 -0
  7. package/components/css/bpmSignature.less +40 -0
  8. package/components/css/bpmText.less +0 -10
  9. package/components/css/common.less +43 -0
  10. package/components/css/index.less +6 -1
  11. package/components/lib/bpmAudit/src/main.vue +35 -4
  12. package/components/lib/bpmAudit/src/part/auditor/audit-new.vue +534 -0
  13. package/components/lib/bpmAudit/src/part/auditor/audit-select.vue +127 -0
  14. package/components/lib/bpmAudit/src/part/auditor/audit-with-others.vue +634 -0
  15. package/components/lib/bpmAudit/src/part/auditor.vue +54 -0
  16. package/components/lib/bpmAudit/src/part/editor.vue +7 -5
  17. package/components/lib/bpmAudit/src/part/reader.vue +10 -9
  18. package/components/lib/bpmDateTime/src/part/editor.vue +3 -1
  19. package/components/lib/bpmField/src/main.vue +5 -150
  20. package/components/lib/bpmFieldsFilter/index.js +7 -0
  21. package/components/lib/bpmFieldsFilter/src/main.vue +324 -0
  22. package/components/lib/bpmFormField/index.js +7 -0
  23. package/components/lib/bpmFormField/src/lib/form_mixin.js +818 -0
  24. package/components/lib/bpmFormField/src/lib/mixin.js +245 -0
  25. package/components/lib/bpmFormField/src/main.vue +35 -0
  26. package/components/lib/bpmMulFile/src/main.vue +0 -1
  27. package/components/lib/bpmMulFile/src/part/editor.vue +1 -1
  28. package/components/lib/bpmMulFile/src/part/reader.vue +12 -33
  29. package/components/lib/bpmMulImage/src/main.vue +1 -2
  30. package/components/lib/bpmMulImage/src/part/editor.vue +5 -1
  31. package/components/lib/bpmMulImage/src/part/reader.vue +14 -4
  32. package/components/lib/bpmNumber/src/part/editor.vue +8 -9
  33. package/components/lib/bpmSelect/src/part/reader.vue +11 -2
  34. package/components/lib/bpmSelectCheckItem/src/part/editor.vue +3 -7
  35. package/components/lib/bpmSelectEntranceForm/index.js +7 -0
  36. package/components/lib/bpmSelectEntranceForm/src/main.vue +529 -0
  37. package/components/lib/bpmSelectFromField/src/main.vue +1 -0
  38. package/components/lib/bpmSelectFromField/src/part/editor.vue +27 -13
  39. package/components/lib/bpmSelectFromForm/src/part/editor.vue +2 -5
  40. package/components/lib/bpmSelectHouseOwner/index.js +7 -0
  41. package/components/lib/bpmSelectHouseOwner/src/main.vue +102 -0
  42. package/components/lib/bpmSelectHouseOwner/src/part/editor.vue +101 -0
  43. package/components/lib/bpmSelectHouseOwner/src/part/reader.vue +17 -0
  44. package/components/lib/bpmSelectIssue/index.js +7 -0
  45. package/components/lib/bpmSelectIssue/src/main.vue +180 -0
  46. package/components/lib/bpmSignature/index.js +7 -0
  47. package/components/lib/bpmSignature/src/main.vue +248 -0
  48. package/components/lib/bpmSubForm/src/main.vue +25 -3
  49. package/components/lib/bpmTime/src/part/editor.vue +3 -2
  50. package/components/lib/field-const.js +5 -2
  51. package/components/lib/index.ts +32 -2
  52. package/components/mixins/field_base_mixin.vue +188 -0
  53. package/components/vendor/draw.js +240 -0
  54. package/dist/bpmAudit.umd.js +1 -1
  55. package/dist/bpmDateTime.umd.js +1 -1
  56. package/dist/bpmField.umd.js +7 -1
  57. package/dist/bpmField.umd.js.LICENSE.txt +2 -0
  58. package/dist/bpmFieldsFilter.umd.js +8 -0
  59. package/dist/bpmFieldsFilter.umd.js.LICENSE.txt +1 -0
  60. package/dist/bpmFormField.umd.js +8 -0
  61. package/dist/bpmFormField.umd.js.LICENSE.txt +11 -0
  62. package/dist/bpmMulFile.umd.js +1 -1
  63. package/dist/bpmMulImage.umd.js +1 -1
  64. package/dist/bpmNumber.umd.js +1 -1
  65. package/dist/bpmSelect.umd.js +1 -1
  66. package/dist/bpmSelectCheckItem.umd.js +1 -1
  67. package/dist/bpmSelectEntranceForm.umd.js +8 -0
  68. package/dist/bpmSelectEntranceForm.umd.js.LICENSE.txt +1 -0
  69. package/dist/bpmSelectFromField.umd.js +1 -1
  70. package/dist/bpmSelectFromForm.umd.js +1 -1
  71. package/dist/bpmSelectHouseOwner.umd.js +1 -0
  72. package/dist/bpmSelectIssue.umd.js +1 -0
  73. package/dist/bpmSignature.umd.js +2 -0
  74. package/dist/bpmSignature.umd.js.LICENSE.txt +9 -0
  75. package/dist/bpmSubForm.umd.js +1 -1
  76. package/dist/bpmText.umd.js +1 -1
  77. package/dist/bpmTime.umd.js +1 -1
  78. package/dist/css/bpmAudit.css +1 -0
  79. package/dist/css/bpmMulFile.css +1 -1
  80. package/dist/css/bpmSelectEntranceForm.css +1 -0
  81. package/dist/css/bpmSelectHouseOwner.css +1 -0
  82. package/dist/css/bpmSignature.css +1 -0
  83. package/dist/css/bpmText.css +1 -1
  84. package/dist/css/common.css +1 -0
  85. package/dist/css/index.css +1 -1
  86. package/dist/demo.umd.js +1 -1
  87. package/dist/demo2.umd.js +1 -1
  88. package/dist/index.umd.js +7 -1
  89. package/dist/index.umd.js.LICENSE.txt +2 -0
  90. package/package.json +25 -18
  91. package/CHANGELOG.md +0 -27
  92. package/dist/bpmDateTime.umd.js.LICENSE.txt +0 -38
  93. package/dist/bpmNumber.umd.js.LICENSE.txt +0 -38
  94. package/dist/bpmSelect.umd.js.LICENSE.txt +0 -38
  95. package/dist/bpmSelectUser.umd.js +0 -1
  96. package/dist/bpmText.umd.js.LICENSE.txt +0 -38
  97. package/dist/bpmTime.umd.js.LICENSE.txt +0 -38
@@ -0,0 +1,529 @@
1
+ <template>
2
+ <div>
3
+ <div v-if="mode === 'view'" :title="value" @click="openOptionsModal" style="display: flex; max-width: 360px; cursor: pointer;">
4
+ <span style="flex: 1;">
5
+ {{ label || '--' }}
6
+ </span>
7
+ <i aria-hidden="true" class="fa fa-angle-right"></i>
8
+ </div>
9
+ <div v-else :title="value" @click="openOptionsModal" style="display: flex; max-width: 360px; cursor: pointer;">
10
+ <span style="flex: 1;">
11
+ {{ label || (loading ? '加载中' : `${$z('请选择', 'c.please_select')}${fieldConf.name}(多选)`) }}
12
+ <span v-show="loading" class="typing_loader"></span>
13
+ </span>
14
+ <i aria-hidden="true" class="fa fa-angle-right"></i>
15
+ </div>
16
+
17
+ <el-dialog
18
+ :title="fieldConf.name"
19
+ :visible.sync="optionsModalShow"
20
+ :width="'50%'"
21
+ top="10vh"
22
+ custom-class="bpm-select-entrance-form"
23
+ @close="handleClose">
24
+ <div :style="{
25
+ maxHeight: '70vh',
26
+ overflow: 'auto'
27
+ }" class="main-wrap">
28
+ <template v-if="mode === 'view'">
29
+ <el-card
30
+ v-for="item in items"
31
+ :key="item.form_id"
32
+ shadow="hover" :body-style="{ padding: '10px 20px' }"
33
+ class="select-option-card">
34
+ <div slot="header">
35
+ <span>{{ item.title }}</span>
36
+ </div>
37
+ <div class="card-body-content">
38
+ <div>
39
+ <span :style="{ background: getStatus(item.f_fields[statusField.id], 'color') }" class="bpm-status_tag-status">{{ getStatus(item.f_fields[statusField.id], 'label') }}</span>
40
+ </div>
41
+ <div v-for="field in descFields" :key="field.id">
42
+ <label class="label">{{ field.name }}</label>
43
+ <span>{{ item.f_fields[field.id] }}</span>
44
+ </div>
45
+ </div>
46
+ </el-card>
47
+ </template>
48
+ <template v-else>
49
+ <div class="search-wrap">
50
+ <el-input
51
+ v-if="enableSearchText"
52
+ :placeholder="$z('搜索', 'c.search_tip')"
53
+ v-model="keyword"
54
+ @input="debounceSearch">
55
+ <i slot="suffix" @click="debounceSearch" class="el-input__icon el-icon-search" style="cursor: pointer;"></i>
56
+ </el-input>
57
+ <el-button @click="filterModalShow = true" style="margin-left: 10px;">
58
+ <i class="fa fa-filter" aria-hidden="true"></i>
59
+ </el-button>
60
+ </div>
61
+ <ul v-infinite-scroll="loadMore" class="edit-list">
62
+ <el-checkbox-group v-model="selectedVals">
63
+ <li v-for="item in items" :key="item.form_id" class="edit-list-item">
64
+ <el-checkbox :label="item.id" class="checkbox">{{ }}</el-checkbox>
65
+ <el-card
66
+ :key="item.form_id"
67
+ shadow="hover" :body-style="{ padding: '10px 20px' }"
68
+ class="select-option-card">
69
+ <div slot="header">
70
+ <span>{{ item.title }}</span>
71
+ </div>
72
+ <div class="card-body-content">
73
+ <div>
74
+ <span :style="{ background: getStatus(item.f_fields[statusField.id], 'color') }" class="bpm-status_tag-status">{{ getStatus(item.f_fields[statusField.id], 'label') }}</span>
75
+ </div>
76
+ <div v-for="field in descFields" :key="field.id">
77
+ <label class="label">{{ field.name }}</label>
78
+ <span>{{ item.f_fields[field.id] }}</span>
79
+ </div>
80
+ </div>
81
+ </el-card>
82
+ </li>
83
+ </el-checkbox-group>
84
+ </ul>
85
+ </template>
86
+
87
+ <div v-show="optionsLoading" style="text-align: center; margin: 46px auto;">
88
+ <span class="typing_loader"></span>
89
+ </div>
90
+ <div v-if="!optionsLoading && !items.length">
91
+ {{ $z("暂无记录信息", "c.no_record") }}
92
+ </div>
93
+ </div>
94
+ <footer v-if="mode === 'edit'" slot="footer" class="footer">
95
+ <div>
96
+ <el-checkbox v-model="checkAll" :label="$z('全选', 'c.select_all')" @change="handleCheckAll"></el-checkbox>
97
+ <span v-if="selectedLabel" class="subtext">{{ selectedLabel }}</span>
98
+ </div>
99
+ <el-button type="primary" :disabled="!selectedVals.length" @click="onSubmit" class="width-button">{{ $z('保存', 'c.save') }}</el-button>
100
+ </footer>
101
+ </el-dialog>
102
+
103
+ <el-dialog
104
+ title="数据筛选"
105
+ :visible.sync="filterModalShow"
106
+ width="50%"
107
+ custom-class="bpm-select-entrance-form"
108
+ @close="filterModalShow = false">
109
+ <div style="max-height: 70vh; overflow: auto;">
110
+ <BpmFieldsFilter
111
+ ref="searchForm"
112
+ :searchSchema="searchSchema"
113
+ :verifySchema="verifySchema"
114
+ :orgInfo="orgInfo"
115
+ :formDefId="formSchema.id"
116
+ :showAll="true"
117
+ :queryExclude="true"
118
+ @search="handleFilterReady">
119
+ </BpmFieldsFilter>
120
+ </div>
121
+
122
+ <span slot="footer">
123
+ <el-button @click="handleResetFilter" class="width-button">{{ $z('重置', 'c.reset') }}</el-button>
124
+ <el-button type="primary" @click="handleSubmitFilter" class="width-button">{{ $z('查询', 'c.query') }}</el-button>
125
+ </span>
126
+ </el-dialog>
127
+ </div>
128
+ </template>
129
+ <script>
130
+ const VALUE_LABEL_COMPONENT_TYPES = [
131
+ 'Area', 'MulArea'
132
+ ]
133
+
134
+ import api from '../../../api/index.js'
135
+ import { isMobile } from '../../utils.js'
136
+ import BpmFieldsFilter from '../../bpmFieldsFilter/src/main.vue'
137
+
138
+ export default {
139
+ name: "BpmSelectEntranceForm",
140
+ components: {
141
+ BpmFieldsFilter
142
+ },
143
+ props: {
144
+ value: {
145
+ type: Array,
146
+ default () {
147
+ return []
148
+ }
149
+ },
150
+ type: {
151
+ type: String,
152
+ default: 'MulSelectEntranceForm'
153
+ },
154
+ fieldConf: {
155
+ type: Object,
156
+ default() {
157
+ return {}
158
+ },
159
+ },
160
+ mode: {
161
+ type: String,
162
+ default: 'view' // view, edit
163
+ },
164
+ uiType: {
165
+ type: String,
166
+ default: 'default' // default,table,form,search
167
+ },
168
+ formDefId: {
169
+ type: String,
170
+ default: ''
171
+ },
172
+ orgInfo: {
173
+ type: Object,
174
+ default () {
175
+ return {
176
+ level: 'group', // group,team,project
177
+ level_id: 0,
178
+ group_id: 0
179
+ }
180
+ }
181
+ },
182
+ formId: {
183
+ type: String,
184
+ default: ''
185
+ },
186
+ dm: {
187
+ type: Boolean,
188
+ default() {
189
+ return false
190
+ }
191
+ },
192
+ isMultiple: {
193
+ type: Boolean,
194
+ default() {
195
+ return true
196
+ },
197
+ },
198
+ },
199
+ data(){
200
+ return {
201
+ loading: false,
202
+ optionsModalShow: false,
203
+ items: [],
204
+ selectedItems: [],
205
+ selectedVals: [],
206
+ optionsLoading: false,
207
+ statusField: {},
208
+ descFields: [],
209
+ shouldTransLabelKeys: [],
210
+ formSchema: {},
211
+
212
+ pagination: {
213
+ action: 'first',
214
+ lastAt: null,
215
+ total: 0,
216
+ },
217
+ checkAll: false,
218
+ filterModalShow: false,
219
+ searchSchema: {
220
+ elements: []
221
+ },
222
+ verifySchema: {},
223
+ enableSearchText: true,
224
+ debounceSearch: _.debounce(_.bind(this.loadData, this), 300, {
225
+ trailing: true,
226
+ leading: false
227
+ }),
228
+ keyword: "",
229
+ filterParams: {},
230
+ }
231
+ },
232
+ computed: {
233
+ isMobile() {
234
+ return isMobile()
235
+ },
236
+ // edit确定选择后的,以及view的显示
237
+ label () {
238
+ const valueArr = this.value
239
+ if (!valueArr || !valueArr.length) return ''
240
+
241
+ let str = zj.z('已选择N条', 'c.number_is_selected')
242
+ return _.template(str)({
243
+ count: valueArr.length
244
+ })
245
+ },
246
+ // edit操作中的
247
+ selectedLabel () {
248
+ if (!this.selectedVals.length) return ''
249
+
250
+ let str = zj.z('选中N条', 'c.number_is_selected_2')
251
+ return _.template(str)({
252
+ count: this.selectedVals.length
253
+ })
254
+ }
255
+ },
256
+ methods: {
257
+ getStatus (value, attr) {
258
+ let rangeEnumMap = this.statusField.rangeEnumMap || {}
259
+ let obj = rangeEnumMap[value] || {}
260
+ return obj[attr]
261
+ },
262
+ async openOptionsModal () {
263
+ this.optionsModalShow = true
264
+ if (!this.formSchema.id) {
265
+ await this.loadSchema()
266
+ }
267
+ if (this.value && this.value.length) {
268
+ await this.loadListSelected()
269
+ }
270
+ if (this.mode === 'edit') {
271
+ if (!this.pagination.lastAt) { // 上一次无数据
272
+ // 筛选重置
273
+ this.handleResetFilter()
274
+ this.loadData()
275
+ }
276
+
277
+ this.selectedVals = this.value || []
278
+ }
279
+ },
280
+ handleClose () {
281
+ this.optionsModalShow = false
282
+
283
+ if (this.mode === 'edit') {
284
+ this.checkAll = false
285
+ this.selectedVals = []
286
+ // this.selectedItems = []
287
+ // 筛选重置
288
+ // this.handleResetFilter()
289
+ }
290
+ },
291
+
292
+ handleResetFilter () {
293
+ if (this.$refs.searchForm) this.$refs.searchForm.reset()
294
+ },
295
+ handleSubmitFilter () {
296
+ if (this.$refs.searchForm) this.$refs.searchForm.submit()
297
+ },
298
+ handleFilterReady (formData) {
299
+ this.filterParams = formData || {}
300
+ this.filterModalShow = false
301
+ this.loadData()
302
+ },
303
+
304
+ handleCheckAll (value) {
305
+ if (value) {
306
+ this.selectedVals = _.map(this.items, item => {
307
+ return item.id
308
+ })
309
+ } else {
310
+ this.selectedVals = []
311
+ }
312
+ },
313
+ onSubmit() {
314
+ const value = _.cloneDeep(this.selectedVals)
315
+ this.$emit('input', value)
316
+ this.$emit('change', value)
317
+
318
+ this.handleClose()
319
+ },
320
+
321
+ loadMore () {
322
+ if (this.items.length < this.pagination.total) {
323
+ this.loadData('next')
324
+ }
325
+ },
326
+ async loadData(action = 'first') {
327
+ let formDefId = this.formDefId
328
+ const fieldDefId = this.fieldConf.id
329
+ action = ['first', 'next', 'last', 'prev'].includes(action) ? action : 'first'
330
+
331
+ // 搜索与筛选
332
+ let filterFields = this.filterParams
333
+ if (this.keyword) {
334
+ filterFields['q__contains'] = this.keyword
335
+ }
336
+ this.optionsLoading = true
337
+ const res = await api.assistSelectEntranceForm.getOptions(this.$bpm, {
338
+ formDefId,
339
+ fieldDefId,
340
+ orgInfo: this.orgInfo,
341
+ isDm: this.dm
342
+ }, {
343
+ action: action,
344
+ limit: 20,
345
+ last_at: action === 'first' ? null : this.pagination.lastAt,
346
+ fields: JSON.stringify(filterFields)
347
+ })
348
+ const resData = res.data.data
349
+ console.log('assist_select_entrance_form data: ', resData)
350
+
351
+ const pageItems = _.map(resData.data, item => {
352
+ // 处理需转换值的字段
353
+ _.each(item.f_fields, async (value, key) => {
354
+ if (this.shouldTransLabelKeys.includes(key)) {
355
+ if (_.isArray(value)) {
356
+ const loader = api.assistField.getBatchLoader(this.$bpm, {
357
+ formDefId: this.formSchema.id,
358
+ fieldDefId: key,
359
+ orgInfo: this.orgInfo
360
+ })
361
+ let valueLabel = await loader.loads(...value)
362
+ item.f_fields[key] = valueLabel.join(zj.z(',', 'c.comma'))
363
+ } else {
364
+ const loader = api.assistField.getBatchLoader(this.$bpm, {
365
+ formDefId: this.formSchema.id,
366
+ fieldDefId: key,
367
+ orgInfo: this.orgInfo
368
+ })
369
+ let valueLabel = await loader.load(value)
370
+ item.f_fields[key] = valueLabel
371
+ }
372
+ }
373
+ })
374
+
375
+ return {
376
+ title: item.title,
377
+ id: item.form_id,
378
+ form_id: item.form_id,
379
+ f_fields: item.f_fields,
380
+ fields: _.map(item.f_fields, (value, key) => {
381
+ return {
382
+ key,
383
+ value
384
+ }
385
+ })
386
+ }
387
+ })
388
+
389
+ // 选中的放在最前面
390
+ let items = pageItems
391
+ if (this.selectedItems.length) {
392
+ let ids = _.map(this.selectedItems, item => item.id)
393
+ items = _.filter(pageItems, item => {
394
+ return !ids.includes(item.id)
395
+ })
396
+ }
397
+ if (action === 'next') {
398
+ this.items = _.concat(this.items, items)
399
+
400
+ } else {
401
+ this.items = _.concat(this.selectedItems, items)
402
+ }
403
+
404
+ this.pagination.action = action
405
+ this.pagination.lastAt = resData.last_at
406
+ this.pagination.total = resData.count
407
+ this.optionsLoading = false
408
+ },
409
+ async loadListSelected () {
410
+ let formId = this.formId
411
+ formId = encodeURIComponent(formId)
412
+ let formDefId = this.formDefId
413
+ const fieldDefId = this.fieldConf.id
414
+ this.optionsLoading = true
415
+
416
+ try {
417
+ const res = await api.assistSelectEntranceForm.getListSelected(this.$bpm, {
418
+ formDefId,
419
+ fieldDefId,
420
+ orgInfo: this.orgInfo,
421
+ isDm: this.dm
422
+ }, {
423
+ form_id: formId
424
+ })
425
+ const resData = res.data.data
426
+ console.log('assist_select_entrance_form list_selected: ', resData)
427
+
428
+ const selectedItems = _.map(resData.data, item => {
429
+ // 处理需转换值的字段
430
+ _.each(item.f_fields, async (value, key) => {
431
+ if (this.shouldTransLabelKeys.includes(key)) {
432
+ if (_.isArray(value)) {
433
+ const loader = api.assistField.getBatchLoader(this.$bpm, {
434
+ formDefId: this.formSchema.id,
435
+ fieldDefId: key,
436
+ orgInfo: this.orgInfo
437
+ })
438
+ let valueLabel = await loader.loads(...value)
439
+ item.f_fields[key] = valueLabel.join(zj.z(',', 'c.comma'))
440
+ } else {
441
+ const loader = api.assistField.getBatchLoader(this.$bpm, {
442
+ formDefId: this.formSchema.id,
443
+ fieldDefId: key,
444
+ orgInfo: this.orgInfo
445
+ })
446
+ let valueLabel = await loader.load(value)
447
+ item.f_fields[key] = valueLabel
448
+ }
449
+ }
450
+ })
451
+
452
+ return {
453
+ title: item.title,
454
+ id: item.form_id,
455
+ form_id: item.form_id,
456
+ f_fields: item.f_fields,
457
+ fields: _.map(item.f_fields, (value, key) => {
458
+ return {
459
+ key,
460
+ value
461
+ }
462
+ })
463
+ }
464
+ })
465
+
466
+ this.selectedItems = selectedItems
467
+ if (this.mode === 'view') this.items = selectedItems
468
+ } finally {
469
+ this.optionsLoading = false
470
+ }
471
+ },
472
+ async loadSchema () {
473
+ let formDefId = this.formDefId
474
+ const fieldDefId = this.fieldConf.id
475
+ const res = await api.assistSelectEntranceForm.getListDefinition(this.$bpm, {
476
+ formDefId,
477
+ fieldDefId,
478
+ orgInfo: this.orgInfo,
479
+ isDm: this.dm
480
+ })
481
+ const resData = res.data.data
482
+ console.log('assist_select_entrance_form definition: ', resData)
483
+ let statusField = {}
484
+ let descFields = []
485
+ let shouldTransLabelKeys = []
486
+ _.each(resData.definition.form.elements, (item) => {
487
+ if (item.type !== 'Status') {
488
+ descFields.push({
489
+ id: item.id,
490
+ name: item.name,
491
+ value_type: item.value_type,
492
+ type: item.type
493
+ })
494
+ } else {
495
+ let rangeEnumMap = {}
496
+ item.range_enum.forEach(sItem => {
497
+ rangeEnumMap[sItem[0]] = {
498
+ value: sItem[0],
499
+ label: sItem[1],
500
+ color: sItem[2]
501
+ }
502
+ })
503
+ statusField = {
504
+ id: item.id,
505
+ name: item.name,
506
+ value_type: item.value_type,
507
+ type: item.type,
508
+ rangeEnumMap
509
+ }
510
+ }
511
+
512
+ // 判断是否需要转换值
513
+ if (VALUE_LABEL_COMPONENT_TYPES.includes(item.type) || item.type.indexOf('Select') > -1) {
514
+ shouldTransLabelKeys.push(item.id)
515
+ }
516
+ })
517
+ this.descFields = descFields
518
+ this.statusField = statusField
519
+ this.shouldTransLabelKeys = shouldTransLabelKeys
520
+ this.formSchema = resData.definition.form
521
+
522
+ this.searchSchema = _.get(resData, 'definition.search', { elements: [] })
523
+ this.verifySchema = _.get(resData, 'schema.search', {})
524
+ const searchElm = this.searchSchema.elements ? _.find(this.searchSchema.elements, { id: 'q__contains' }) : false
525
+ this.enableSearchText = this.searchSchema.enable_search_text && searchElm
526
+ },
527
+ }
528
+ }
529
+ </script>
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <component
3
+ ref='inner-component'
3
4
  class="bpm-select-form-field"
4
5
  v-model="curVal"
5
6
  :is="curComponent"
@@ -24,7 +24,7 @@
24
24
  </template>
25
25
 
26
26
  <script>
27
- import _ from "lodash";
27
+ // import _ from "lodash";
28
28
 
29
29
  import Vue from "vue";
30
30
  import { Select, Option } from "element-ui";
@@ -43,38 +43,52 @@ export default {
43
43
  watch: {
44
44
  value() {
45
45
  this.curVal = this.value;
46
+ },
47
+ getSelectOptions: function(val) {
48
+ console.log("----selectOptions----",val);
49
+ this.options = _.map(val,item => {
50
+ return {
51
+ label:item[0],
52
+ value:item[1]
53
+ }
54
+ });
46
55
  }
47
56
  },
57
+ inject:["selectOptions"],
48
58
 
49
59
  computed: {
50
60
  placeholder() {
51
61
  return this.fieldConf.desc || this.fieldConf.name;
52
62
  },
63
+ getSelectOptions() {
64
+ return this.selectOptions()
65
+ }
53
66
  },
54
67
  created () {
55
68
  this.curVal = this.isMultiple ? [] : ""
56
69
  },
57
70
  mounted() {
58
- this.search();
71
+
72
+ //组件可见下,才去拉取下拉框
73
+ if(this.fieldConf && this.fieldConf.perm && this.fieldConf.perm.visible){
74
+ this.search();
75
+ }
76
+
59
77
  this.curVal = this.value;
60
78
  },
61
79
  methods: {
80
+
81
+
62
82
  async search(query = "") {
63
- let formName = this.formName;
83
+ let formName = this.formDefId;
64
84
  let fieldId = this.fieldConf.id;
65
- let result = await zj.net.w.noapi({
66
- url: `/app_flow/v1/papi/dm/assist_field/${formName}/${fieldId}/search_title/?q=${query}`,
67
- params: this.orgInfo,
68
- });
69
- this.options = _.map(result.data, (item) => {
70
- return {
71
- value: _.get(item, "0"),
72
- label: _.get(item, "1"),
73
- };
74
- });
85
+
86
+ this.options = await this.$bpm.searchSelectOpts(fieldId, query, formName, this, true, this.orgInfo)
87
+
75
88
  },
76
89
  onChange(curVal){
77
90
  this.$emit("input", curVal)
91
+ this.$emit("change", curVal)
78
92
  }
79
93
  },
80
94
  };
@@ -124,11 +124,8 @@ export default {
124
124
  let keyword = this.keyword;
125
125
  let formName = this.formName;
126
126
  let fieldId = _.get(this.fieldConf, "id");
127
- let result = await zj.net.w.noapi({
128
- url: `/app_flow/v1/papi/dm/assist_field/${formName}/${fieldId}/search_title/?q=${keyword}`,
129
- params: this.orgInfo,
130
- });
131
- let data = _.map(result.data, (item) => {
127
+ let result = await this.$bpm.searchSelectOpts(fieldId, keyword, formName, this, true, this.orgInfo)
128
+ let data = _.map(result, (item) => {
132
129
  return {
133
130
  title: item.title,
134
131
  id: item.form_id,
@@ -0,0 +1,7 @@
1
+ import BpmSelectHouseOwner from './src/main.vue'
2
+
3
+ BpmSelectHouseOwner.install = function(Vue) {
4
+ Vue.component(BpmSelectHouseOwner.name , BpmSelectHouseOwner);
5
+ }
6
+
7
+ export default BpmSelectHouseOwner