@bytenew/bn-bus-ui 1.1.462 → 1.1.463

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 (167) hide show
  1. package/install.js +134 -0
  2. package/package.json +20 -4
  3. package/packages/BnAddress/index.vue +141 -0
  4. package/packages/BnAddressParse/index.vue +75 -0
  5. package/packages/BnAdvancedFilter/BnFilterView.vue +145 -0
  6. package/packages/BnAdvancedFilter/index.vue +345 -0
  7. package/packages/BnAdvancedFilter/util.js +171 -0
  8. package/packages/BnCascader/BnCascader.vue +543 -0
  9. package/packages/BnCascader/BnCascaderPanel.vue +1331 -0
  10. package/packages/BnCascader/cascaderDisplay.js +102 -0
  11. package/packages/BnCheck/BnCheck.vue +253 -0
  12. package/packages/BnColumnConfig/columnConfigDialog.vue +134 -0
  13. package/packages/BnColumnConfig/component/childrenFormSetting/assocTable.vue +143 -0
  14. package/packages/BnColumnConfig/component/childrenFormSetting/assocTableSearch.vue +314 -0
  15. package/packages/BnColumnConfig/component/childrenFormSetting/index.vue +243 -0
  16. package/packages/BnColumnConfig/component/defaultSet/defaultSet.vue +114 -0
  17. package/packages/BnColumnConfig/component/defaultSet/stringDefault.vue +210 -0
  18. package/packages/BnColumnConfig/component/funcExprDialog/funcExprDialog.vue +126 -0
  19. package/packages/BnColumnConfig/component/packageFilter/index.vue +141 -0
  20. package/packages/BnColumnConfig/component/paraExplainSet/index.vue +156 -0
  21. package/packages/BnColumnConfig/component/setOption/setOption.vue +321 -0
  22. package/packages/BnColumnConfig/component/setRelationOption/ConditionList.vue +277 -0
  23. package/packages/BnColumnConfig/component/setRelationOption/LevelHeader.vue +144 -0
  24. package/packages/BnColumnConfig/component/setRelationOption/setRelationOption.vue +642 -0
  25. package/packages/BnColumnConfig/data.js +129 -0
  26. package/packages/BnColumnConfig/index.scss +23 -0
  27. package/packages/BnColumnConfig/index.vue +309 -0
  28. package/packages/BnCondVal/BnCondVal.vue +112 -0
  29. package/packages/BnCondVal/itemVal/dateRegVal.vue +39 -0
  30. package/packages/BnCondVal/itemVal/dateVal.vue +39 -0
  31. package/packages/BnCondVal/itemVal/numRegVal.vue +67 -0
  32. package/packages/BnCondVal/itemVal/numVal.vue +44 -0
  33. package/packages/BnCondVal/itemVal/relationVal.vue +73 -0
  34. package/packages/BnCondVal/itemVal/selectColumnVal.vue +58 -0
  35. package/packages/BnCondVal/itemVal/selectVal.vue +59 -0
  36. package/packages/BnCondVal/itemVal/stringVal.vue +156 -0
  37. package/packages/BnCondition/index.vue +551 -0
  38. package/packages/BnCondition/util.js +232 -0
  39. package/packages/BnDatePicker/BnDatePicker.vue +194 -0
  40. package/packages/BnDrop/BnDrop.vue +917 -0
  41. package/packages/BnEmptyTip/BnEmptyTip.vue +107 -0
  42. package/packages/BnExportOrder/BnExportOrder.vue +241 -0
  43. package/packages/BnExportOrder/validatorCode.vue +94 -0
  44. package/packages/BnFileView/BnFileView.vue +271 -0
  45. package/packages/BnFileView/FileDetail.vue +125 -0
  46. package/packages/BnFileView/videoPreview.vue +70 -0
  47. package/packages/BnFilterOption/BnFilterOption.vue +160 -0
  48. package/packages/BnFunExpr/BnFunExpr.vue +608 -0
  49. package/packages/BnImportOrder/BnImportOrder.vue +323 -0
  50. package/packages/BnImportTemplate/BnImportTemplate.vue +866 -0
  51. package/packages/BnImportTemplate/assets/merge_tip_img.png +0 -0
  52. package/packages/BnImportTemplate/assets/sheet_tip.png +0 -0
  53. package/packages/BnImportTemplate/assets/xls.png +0 -0
  54. package/packages/BnImportTemplate/components/ImportTemplateTrigger.vue +198 -0
  55. package/packages/BnImportTemplate/components/TemplateEditDialog.vue +340 -0
  56. package/packages/BnImportTemplate/components/TemplateFieldsConfig.vue +401 -0
  57. package/packages/BnImportTemplate/components/TemplateListDialog.vue +297 -0
  58. package/packages/BnInpNum/BnInpNum.vue +165 -0
  59. package/packages/BnMenus/BnMenus.vue +502 -0
  60. package/packages/BnMenus/MenuItem.vue +321 -0
  61. package/packages/BnOrderCard/BnOrderCard.vue +389 -0
  62. package/packages/BnOrderCard/orderRemark.vue +178 -0
  63. package/packages/BnOrderCard/util.js +94 -0
  64. package/packages/BnOrderDetail/BnOrderDetail.vue +338 -0
  65. package/packages/BnOrderDetail/filterLogByUser.vue +108 -0
  66. package/packages/BnOrderDetail/orderLogs.vue +53 -0
  67. package/packages/BnOrderDetail/showSubForm/index.vue +41 -0
  68. package/packages/BnOrderDetail/showSubForm/showChildTable.vue +61 -0
  69. package/packages/BnOrderDetail/showSubForm/showTimeLine.vue +131 -0
  70. package/packages/BnOrderDetail/showSubForm/tableCellCopy.vue +84 -0
  71. package/packages/BnOrderShare/index.vue +378 -0
  72. package/packages/BnOrderShare/shareUrlInp.vue +54 -0
  73. package/packages/BnRadio/BnRadio.vue +181 -0
  74. package/packages/BnRelation/BnRelation.vue +120 -0
  75. package/packages/BnSelect/BnSelect.vue +485 -0
  76. package/packages/BnSmartForm/BnBatchForm.vue +334 -0
  77. package/packages/BnSmartForm/BnBatchFormDialog.vue +423 -0
  78. package/packages/BnSmartForm/BnSmartElf/elfLog/index.vue +57 -0
  79. package/packages/BnSmartForm/BnSmartElf/index.vue +95 -0
  80. package/packages/BnSmartForm/BnSmartFormPsychic.js +629 -0
  81. package/packages/BnSmartForm/BnSmartFormUtil.js +524 -0
  82. package/packages/BnSmartForm/addressForm/index.vue +73 -0
  83. package/packages/BnSmartForm/checkboxForm/index.vue +99 -0
  84. package/packages/BnSmartForm/childrenForm/childFormFile.vue +237 -0
  85. package/packages/BnSmartForm/childrenForm/childrenFormBody.vue +260 -0
  86. package/packages/BnSmartForm/childrenForm/index.vue +110 -0
  87. package/packages/BnSmartForm/childrenForm/searchInventory.vue +115 -0
  88. package/packages/BnSmartForm/chooseAssocTable/chooseAssocTable.vue +451 -0
  89. package/packages/BnSmartForm/chooseAssocTable/chooseChildGood.vue +229 -0
  90. package/packages/BnSmartForm/chooseAssocTable/tableCellCopy.vue +84 -0
  91. package/packages/BnSmartForm/chooseChildOrder/chooseChildOrder.vue +158 -0
  92. package/packages/BnSmartForm/chooseIPaasData/chooseIPaasData.vue +307 -0
  93. package/packages/BnSmartForm/chooseIPaasData/tableCellCopy.vue +84 -0
  94. package/packages/BnSmartForm/choosePackage/choosePackage.vue +361 -0
  95. package/packages/BnSmartForm/dateDualForm/index.vue +37 -0
  96. package/packages/BnSmartForm/dateForm/index.vue +38 -0
  97. package/packages/BnSmartForm/fileForm/fileFormData.js +50 -0
  98. package/packages/BnSmartForm/fileForm/index.vue +240 -0
  99. package/packages/BnSmartForm/formItemFooter/formItemFooter.vue +38 -0
  100. package/packages/BnSmartForm/formItemTop/formItemTop.vue +42 -0
  101. package/packages/BnSmartForm/index.vue +1201 -0
  102. package/packages/BnSmartForm/numberForm/index.vue +63 -0
  103. package/packages/BnSmartForm/radioForm/index.vue +72 -0
  104. package/packages/BnSmartForm/receiveForm/index.vue +112 -0
  105. package/packages/BnSmartForm/relationForm/index.vue +82 -0
  106. package/packages/BnSmartForm/scoreForm/index.vue +39 -0
  107. package/packages/BnSmartForm/selectForm/index.vue +55 -0
  108. package/packages/BnSmartForm/showValForm/index.vue +42 -0
  109. package/packages/BnSmartForm/showValForm/showValFormTable.vue +104 -0
  110. package/packages/BnSmartForm/smartFormsCommon.scss +43 -0
  111. package/packages/BnSmartForm/stringForm/index.vue +170 -0
  112. package/packages/BnVirtPopover/index.vue +319 -0
  113. package/packages/BnWebLog/BnWebLog.vue +140 -0
  114. package/packages/BnWorkSettingDrop/advancedOptions.js +112 -0
  115. package/packages/BnWorkSettingDrop/benBenAIUtil.js +89 -0
  116. package/packages/BnWorkSettingDrop/index.vue +292 -0
  117. package/packages/font/iconfont.css +243 -0
  118. package/packages/font/iconfont.ttf +0 -0
  119. package/packages/font/iconfont.woff +0 -0
  120. package/packages/font/iconfont.woff2 +0 -0
  121. package/utils/addressParse-old.js +645 -0
  122. package/utils/addressParse.js +735 -0
  123. package/utils/config.js +68 -0
  124. package/utils/index.js +1171 -0
  125. package/dist/assocTableSearch-CmzOXI5w.js +0 -349
  126. package/dist/assocTableSearch.css +0 -1
  127. package/dist/bn-bus-ui.es.js +0 -65
  128. package/dist/bn-bus-ui.umd.js +0 -49
  129. package/dist/chooseIPaasData-jkTJEMKT.js +0 -391
  130. package/dist/chooseIPaasData.css +0 -1
  131. package/dist/defaultSet-CiYuSOzT.js +0 -297
  132. package/dist/defaultSet.css +0 -1
  133. package/dist/fileFormData-D_Q1vylE.js +0 -53
  134. package/dist/formItemFooter-BpnVUUgV.js +0 -108
  135. package/dist/formItemFooter.css +0 -1
  136. package/dist/funcExprDialog-BMc-n5FL.js +0 -139
  137. package/dist/funcExprDialog.css +0 -1
  138. package/dist/index-8GQJARcF.js +0 -44
  139. package/dist/index-8apT0r8m.js +0 -66
  140. package/dist/index-BOFu3qAH.js +0 -183
  141. package/dist/index-BSKXuSid.js +0 -89
  142. package/dist/index-BhYvDd_Q.js +0 -45
  143. package/dist/index-BhqkeVFc.js +0 -45
  144. package/dist/index-CK7_Ou7F.js +0 -89
  145. package/dist/index-Cfb8D3Fg.js +0 -58
  146. package/dist/index-D1fGD0mX.js +0 -51
  147. package/dist/index-DE_eQGbT.js +0 -746
  148. package/dist/index-DfgiBqzS.js +0 -221
  149. package/dist/index-Dobi0ms9.js +0 -66
  150. package/dist/index-DuyQNxe0.js +0 -118
  151. package/dist/index-DxpJkrN7.js +0 -64
  152. package/dist/index-FGHeG46m.js +0 -109
  153. package/dist/index-P2M7CUTe.js +0 -178
  154. package/dist/index-xCz2zysE.js +0 -135
  155. package/dist/index.css +0 -1
  156. package/dist/index2.css +0 -1
  157. package/dist/index3.css +0 -1
  158. package/dist/index4.css +0 -1
  159. package/dist/index5.css +0 -1
  160. package/dist/index6.css +0 -1
  161. package/dist/index7.css +0 -1
  162. package/dist/install--7IU60oV.js +0 -23103
  163. package/dist/install.css +0 -1
  164. package/dist/setOption-DehYZpZr.js +0 -329
  165. package/dist/setOption.css +0 -1
  166. package/dist/setRelationOption-BL-AFUoF.js +0 -5217
  167. package/dist/setRelationOption.css +0 -1
@@ -0,0 +1,67 @@
1
+ <template>
2
+ <div class="w-default-wrap numReg clearFix">
3
+ <div class="numReg-item">
4
+ <BnInpNum class="numReg-item-input" @change="$forceUpdate();" :precision="precision" :disabled="disabled"
5
+ placeholder="开始" v-model="val.value.start" controls-position="right"/>
6
+ </div>
7
+ <div class="numReg-text">
8
+
9
+ </div>
10
+ <div class="numReg-item">
11
+ <BnInpNum class="numReg-item-input" @change="$forceUpdate();" :precision="precision" :disabled="disabled"
12
+ placeholder="结束" v-model="val.value.end" controls-position="right"/>
13
+ </div>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ export default {
19
+ name: "numRegVal",
20
+ props: {
21
+ modelValue: Object,
22
+ disabled: {
23
+ type: Boolean,
24
+ default: function () {
25
+ return false
26
+ }
27
+ },
28
+ // 小数位数精确到多少位
29
+ precision: {
30
+ type: Number,
31
+ default: 0
32
+ }
33
+ },
34
+ computed: {
35
+ val: {
36
+ get() {
37
+ return this.modelValue;
38
+ },
39
+ set(val) {
40
+ this.$emit("update:modelValue", val);
41
+ },
42
+ },
43
+ }
44
+ }
45
+ </script>
46
+ <style scoped>
47
+ .numReg-item {
48
+ position: relative;
49
+ width: calc(50% - 15px);
50
+ float: left;
51
+ }
52
+
53
+ .numReg-item-input {
54
+ width: 100%;
55
+ }
56
+
57
+ .numReg-text {
58
+ float: left;
59
+ width: 30px;
60
+ height: 32px;
61
+ text-align: center;
62
+ line-height: 32px;
63
+ font-size: 14px;
64
+ color: #999;
65
+ }
66
+
67
+ </style>
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <BnInpNum v-model="val[optionProps.value]"
3
+ :disabled="[9,10,14,15].includes(parseInt(val[optionProps.searchType]))"
4
+ @change="change('number')"></BnInpNum>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ inheritAttrs: false,
10
+ name: "numVal",
11
+ props: {
12
+ modelValue: Object,
13
+ optionProps: Object,
14
+ },
15
+ methods: {
16
+ /**
17
+ * 输入框change事件
18
+ * */
19
+ change(val) {
20
+ this.$emit('onChange', 'string')
21
+ }
22
+ },
23
+ computed: {
24
+ val: {
25
+ get() {
26
+ return this.modelValue;
27
+ },
28
+ set(val) {
29
+ this.$emit("update:modelValue", val);
30
+ },
31
+ },
32
+ }
33
+ }
34
+ </script>
35
+ <style lang="scss" scoped>
36
+ .bnAdvance-numRatio:after {
37
+ content: '%';
38
+ position: absolute;
39
+ right: 8px;
40
+ top: calc(50% - 8px);
41
+ color: #C0C4CC;
42
+ font-weight: bold;
43
+ }
44
+ </style>
@@ -0,0 +1,73 @@
1
+ <template>
2
+ <!-- <BnCascader @change="change" style="width: 100%"-->
3
+ <!-- v-model="val[optionProps.value]" collapseTags-->
4
+ <!-- :postFunc="postFunc" :postData="postData" :pathUrl="pathUrl" remote-mode="tree"-->
5
+ <!-- :optionProps="propsData" :label-in-value="false"-->
6
+ <!-- :disabled="[9,10,14,15].includes(parseInt(val[optionProps.searchType]))"-->
7
+ <!-- :options="options" :multiple="multiple" clearable/>-->
8
+ <BnRelation @change="change" :options="options" style="width: 100%" filterable
9
+ :props="propsData" v-model="val[optionProps.value]" :multiple="multiple"
10
+ :disabled="[9,10,14,15].includes(parseInt(val[optionProps.searchType]))"
11
+ :postFunc="postFunc" :postData="postData" :pathUrl="pathUrl"></BnRelation>
12
+ <!-- {{val[optionProps.value]}}-->
13
+ </template>
14
+
15
+ <script>
16
+
17
+ export default {
18
+ name: "relationVal",
19
+ props: {
20
+ modelValue: Object,
21
+ optionProps: Object,
22
+ columnInfo: Object,
23
+ postData: Object,
24
+ pathUrl: String,
25
+ postFunc: Function,
26
+ },
27
+ methods: {
28
+ /**
29
+ * 输入框change事件
30
+ * */
31
+ change(val) {
32
+ this.$emit('onChange', 'relation')
33
+ }
34
+ },
35
+ computed: {
36
+ //拷贝value的值,这样就可以避免直接修改props
37
+ val: {
38
+ get() {
39
+ return this.modelValue;
40
+ },
41
+ set(val) {
42
+ this.$emit("update:modelValue", val);
43
+ },
44
+ },
45
+ multiple(){
46
+ if(this.columnInfo.behaviorType == 20){
47
+ return true;
48
+ }else{
49
+ return [3,4,5,6,7].includes(parseInt(this.modelValue[this.optionProps.searchType]))
50
+ }
51
+ },
52
+ propsData(){
53
+ let options = {
54
+ checkStrictly:true,value:'code',label:'title'
55
+ };
56
+ if(this.columnInfo.pathUrl && this.columnInfo.pathUrl.indexOf('address')>=0){
57
+ options.value = 'id'
58
+ }
59
+ return options
60
+ },
61
+ options(){
62
+ if(this.columnInfo.pathUrl && this.columnInfo.pathUrl.indexOf('address')>=0){
63
+ return addressData || []
64
+ }
65
+ let options = [];
66
+ if(this.columnInfo.moduleDefinition && this.columnInfo.moduleDefinition.optionList){
67
+ options = this.columnInfo.moduleDefinition.optionList;
68
+ }
69
+ return options
70
+ }
71
+ }
72
+ }
73
+ </script>
@@ -0,0 +1,58 @@
1
+ <template>
2
+ <BnSelect v-model="val[optionProps.value]" :optionProps="otherColumnProps"
3
+ :options="otherColumns" :disabled="[9,10,14,15].includes(parseInt(val[optionProps.searchType]))"
4
+ :valueProps="valueProps"
5
+ @change="change('select')" clearable filterable placeholder="请选择"></BnSelect>
6
+ </template>
7
+
8
+ <script>
9
+ export default {
10
+ name: "selectColumnVal",
11
+ props: {
12
+ modelValue: Object,
13
+ otherColumns: {
14
+ type: Array,
15
+ default() {
16
+ return []
17
+ }
18
+ },
19
+ // 选择其他组件时,约束他们的value格式
20
+ otherColumnProps: {
21
+ default() {
22
+ return {value:'columnCode',label:'name'}
23
+ }
24
+ },
25
+ optionProps: Object,
26
+ columnInfo: Object,
27
+ postData: Object,
28
+ pathUrl: String,
29
+ postFunc: Function,
30
+ },
31
+ methods: {
32
+ /**
33
+ * 输入框change事件
34
+ * */
35
+ change(val) {
36
+ this.$emit('onChange', 'string')
37
+ }
38
+ },
39
+ computed: {
40
+ //拷贝value的值,这样就可以避免直接修改props
41
+ val: {
42
+ get() {
43
+ return this.modelValue;
44
+ },
45
+ set(val) {
46
+ this.$emit("update:modelValue", val);
47
+ },
48
+ },
49
+ valueProps(){
50
+ let p = []
51
+ for(let key in this.otherColumnProps){
52
+ p.push(this.otherColumnProps[key])
53
+ }
54
+ return p.length?[...p,'parentCode','id','parentId']:['columnCode','name','parentCode','id','parentId']
55
+ }
56
+ }
57
+ }
58
+ </script>
@@ -0,0 +1,59 @@
1
+ <template>
2
+ <BnSelect v-model="val[optionProps.value]" :optionProps="valueOptionProps"
3
+ :pageProps="{pageNum: 'pageNo',pageSize: 'pageSize',}" :options="columnInfo.moduleDefinition"
4
+ :postFunc="postFunc" :postData="postData" :pathUrl="pathUrl" :valueProps="valueProps"
5
+ :multiple="['3','4','5','6','7'].includes(val[optionProps.searchType]) || val.behaviorType==5"
6
+ :disabled="[9,10,14,15].includes(parseInt(val[optionProps.searchType]))"
7
+ @change="change('select')" clearable filterable placeholder="请选择"></BnSelect>
8
+ </template>
9
+
10
+ <script>
11
+ export default {
12
+ name: "selectVal",
13
+ props: {
14
+ modelValue: Object,
15
+ optionProps: Object,
16
+ // value的value如果是下拉或者多选这些,约束他们的value格式
17
+ valueOptionProps: {
18
+ default() {
19
+ return {value:'code',label:'title'}
20
+ }
21
+ },
22
+ columnInfo:Object,
23
+ postData:Object,
24
+ pathUrl:String,
25
+ postFunc:Function,
26
+ },
27
+ data() {
28
+ return {
29
+ open: false,
30
+ }
31
+ },
32
+ methods: {
33
+ /**
34
+ * 输入框change事件
35
+ * */
36
+ change(val) {
37
+ this.$emit('onChange', 'string')
38
+ }
39
+ },
40
+ computed: {
41
+ //拷贝value的值,这样就可以避免直接修改props
42
+ val: {
43
+ get() {
44
+ return this.modelValue;
45
+ },
46
+ set(val) {
47
+ this.$emit("update:modelValue", val);
48
+ },
49
+ },
50
+ valueProps(){
51
+ let p = []
52
+ for(let key in this.valueOptionProps){
53
+ p.push(this.valueOptionProps[key])
54
+ }
55
+ return p.length?[...p,'id']:['code','title','id']
56
+ }
57
+ }
58
+ }
59
+ </script>
@@ -0,0 +1,156 @@
1
+ <template>
2
+ <el-autocomplete
3
+ v-if="isUrlType"
4
+ v-model="val[optionProps.value]"
5
+ :fetch-suggestions="querySearch"
6
+ clearable
7
+ class="w-50"
8
+ :type="['5','6','28','29'].includes(val[optionProps.searchType]) ? 'textarea' : 'text'" resize="none" :maxlength="200000"
9
+ :rows="['5','6','28','29'].includes(val[optionProps.searchType])? 3 : 1"
10
+ :placeholder="['5','6','28','29'].includes(val[optionProps.searchType])?'回车换行可插入多条':'请输入'"
11
+ @select="handleSelect"
12
+ />
13
+ <el-input v-else class="filterInput" type="textarea" resize="none" :maxlength="200000" @focus="open = true"
14
+ @blur="open = false"
15
+ :placeholder="['5','6','28','29'].includes(val[optionProps.searchType])?'回车换行可插入多条':'请输入'"
16
+ @change="change('string')" :rows="open && ['5','6'].includes(val[optionProps.searchType])? 3 : 1"
17
+ :disabled="[9,10,14,15].includes(parseInt(val[optionProps.searchType]))"
18
+ v-model="val[optionProps.value]" show-word-limit/>
19
+ </template>
20
+
21
+ <script>
22
+ export default {
23
+ inheritAttrs: false,
24
+ name: "stringVal",
25
+ props: {
26
+ modelValue: Object,
27
+ optionProps: Object,
28
+ },
29
+ data() {
30
+ return {
31
+ open: false,
32
+ lastQueryValue: null,
33
+ lastQueryResults: [],
34
+ /** 最近一次 fetch 时的完整输入;null 表示尚未走过 querySearch */
35
+ suggestionFullText: null,
36
+ }
37
+ },
38
+ computed: {
39
+ //拷贝value的值,这样就可以避免直接修改props
40
+ val: {
41
+ get() {
42
+ return this.modelValue;
43
+ },
44
+ set(val) {
45
+ this.$emit("update:modelValue", val);
46
+ },
47
+ },
48
+ parsedDataExtra() {
49
+ const dataExtra = this.modelValue?.extraInfo?.dataExtra || '';
50
+ if (!dataExtra) return null;
51
+ try {
52
+ return JSON.parse(dataExtra);
53
+ } catch (e) {
54
+ return null;
55
+ }
56
+ },
57
+ isUrlType() {
58
+ return !!this.parsedDataExtra?.searchUrl;
59
+ },
60
+ dataExtraUrl() {
61
+ return this.parsedDataExtra?.searchUrl || '';
62
+ }
63
+ },
64
+ methods: {
65
+ /**
66
+ * 输入框change事件
67
+ * */
68
+ change() {
69
+ // 去除开始和结尾的空格以及换行符
70
+ this.val[this.optionProps.value] = this.val[this.optionProps.value].trim();
71
+ this.$emit('onChange', 'string')
72
+ },
73
+ /**
74
+ * 远程搜索建议
75
+ */
76
+ querySearch(queryString, cb) {
77
+ // 每次拉建议时都记下完整文本,供 handleSelect 合并最后一行(不能读 v-model,选中后已被组件改成单项)
78
+ this.suggestionFullText = queryString == null ? '' : String(queryString);
79
+ // 多行模式:只取最后一行作为搜索关键词
80
+ const lines = (queryString || '').split('\n');
81
+ const keyword = lines[lines.length - 1].trim();
82
+ if (!keyword) {
83
+ this.lastQueryValue = null;
84
+ this.lastQueryResults = [];
85
+ cb([]);
86
+ return;
87
+ }
88
+ if (this.lastQueryValue === keyword) {
89
+ cb(this.lastQueryResults);
90
+ return;
91
+ }
92
+ const postData = {
93
+ ...(this.modelValue.postData || {}),
94
+ column: this.modelValue.columnCode,
95
+ keyword: keyword,
96
+ pageNo: 1,
97
+ pageSize: 50
98
+ };
99
+ const url = this.dataExtraUrl;
100
+ fetch(url, {
101
+ method: 'POST',
102
+ headers: { 'Content-Type': 'application/json' },
103
+ body: JSON.stringify(postData)
104
+ }).then(r => r.json()).then(res => {
105
+ this.applySuggestionResults(res, keyword, cb);
106
+ }).catch(() => {
107
+ this.lastQueryValue = keyword;
108
+ this.lastQueryResults = [];
109
+ cb([]);
110
+ });
111
+ },
112
+ /** 与接口约定一致:code 假值 + data.results */
113
+ applySuggestionResults(res, keyword, cb) {
114
+ if (!res.code && res.data?.results) {
115
+ const list = res.data.results.map(i => ({
116
+ value: i.value || i.title || i.label || '',
117
+ ...i,
118
+ }));
119
+ this.lastQueryValue = keyword;
120
+ this.lastQueryResults = list;
121
+ cb(list);
122
+ } else {
123
+ this.lastQueryValue = keyword;
124
+ this.lastQueryResults = [];
125
+ cb([]);
126
+ }
127
+ },
128
+
129
+ /**
130
+ * 选中下拉项
131
+ */
132
+ handleSelect(item) {
133
+ // 多行:只换最后一行。选中时组件会先把 v-model 整段改成 item.value,故用 querySearch 里存的全文快照
134
+ const current =
135
+ this.suggestionFullText != null
136
+ ? String(this.suggestionFullText)
137
+ : String(this.val[this.optionProps.value] || '');
138
+ const lines = current.split('\n');
139
+ if (!lines.length) lines.push('');
140
+ lines[lines.length - 1] = item.value ?? '';
141
+ const merged = lines.join('\n');
142
+ this.$nextTick(() => {
143
+ this.val[this.optionProps.value] = merged;
144
+ this.$emit('onChange', 'string');
145
+ });
146
+ }
147
+ },
148
+ }
149
+ </script>
150
+ <style lang="scss" scoped>
151
+ .filterInput {
152
+ :deep(.el-textarea__inner) {
153
+ min-height: 32px !important;
154
+ }
155
+ }
156
+ </style>