vue2-client 1.15.78 → 1.15.80

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 (141) hide show
  1. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +0 -6
  2. package/package.json +1 -1
  3. package/public/index.html +1 -1
  4. package/src/base-client/components/common/Recording/Recording.vue +1 -1
  5. package/src/base-client/components/common/XButtons/XButtons.vue +203 -12
  6. package/src/base-client/components/common/XFormTable/XFormTable.vue +1 -1
  7. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +7 -7
  8. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  9. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  10. package/src/base-client/plugins/Recording.js +1 -1
  11. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +1 -1
  12. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +6 -1
  13. package/src/router/async/router.map.js +1 -2
  14. package/vue.config.js +1 -1
  15. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  16. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  17. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  18. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  19. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  20. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +0 -207
  21. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +0 -211
  22. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +0 -212
  23. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +0 -212
  24. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  25. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  26. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  27. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  28. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  29. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  30. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +0 -731
  31. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +0 -748
  32. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +0 -748
  33. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +0 -1071
  34. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +0 -1078
  35. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +0 -1077
  36. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +0 -1077
  37. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +0 -1077
  38. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  39. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  40. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  65. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  66. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  67. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  68. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  69. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  70. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  71. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  72. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  73. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  74. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  75. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  76. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  77. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  78. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  79. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  80. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  81. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  82. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  83. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  84. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  85. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  86. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  87. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  88. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  89. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  90. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  91. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  92. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  93. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  94. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  95. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  96. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  97. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  98. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  99. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  100. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  101. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  102. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  103. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  104. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  105. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  106. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  107. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  108. package/.history/src/base-client/components/his/XList/XList_20250704142024.vue +0 -495
  109. package/.history/src/base-client/components/his/XList/XList_20250704142033.vue +0 -495
  110. package/.history/src/base-client/components/his/XList/XList_20250704142040.vue +0 -494
  111. package/.history/src/base-client/components/his/XList/XList_20250704142211.vue +0 -494
  112. package/.history/src/base-client/components/his/XList/XList_20250704142214.vue +0 -494
  113. package/.history/src/base-client/components/his/XList/XList_20250704143010.vue +0 -495
  114. package/.history/src/base-client/components/his/XList/XList_20250704143203.vue +0 -495
  115. package/.history/src/base-client/components/his/XList/XList_20250707095101.vue +0 -492
  116. package/.history/src/base-client/components/his/XList/XList_20250707100152.vue +0 -492
  117. package/.history/src/base-client/components/his/XList/XList_20250707100200.vue +0 -485
  118. package/.history/src/base-client/components/his/XList/XList_20250707100208.vue +0 -485
  119. package/.history/src/base-client/components/his/XList/XList_20250707100259.vue +0 -488
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +0 -222
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +0 -183
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +0 -183
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +0 -183
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +0 -206
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +0 -209
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +0 -242
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +0 -242
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +0 -242
  129. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +0 -251
  130. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +0 -251
  131. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +0 -250
  132. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +0 -250
  133. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +0 -250
  134. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +0 -250
  135. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +0 -238
  136. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +0 -238
  137. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +0 -238
  138. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  139. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  140. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  141. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -54,7 +54,7 @@ routerResource.example = {
54
54
  path: 'example',
55
55
  name: '示例主页面',
56
56
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo2.vue'),
57
- // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
57
+ component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
58
58
  // component: () => import('@vue2-client/pages/addressSelect/addressDemo.vue'),
59
59
  // component: () => import('@vue2-client/base-client/components/common/XDescriptions/demo.vue'),
60
60
  // component: () => import('@vue2-client/base-client/components/common/XAddNativeForm/demo.vue'),
@@ -78,7 +78,6 @@ path: 'example',
78
78
  // component: () => import('@vue2-client/pages/LogicCallExample/index.vue'),
79
79
  // component: () => import('@vue2-client/components/FilePreview/FilePreviewDemo.vue'),
80
80
  // component: () => import('@vue2-client/pages/ReportGrid/index.vue'),
81
- component: () => import('@vue2-client/base-client/components/common/CitySelect/demo.vue'),
82
81
  }
83
82
  // routerResource.example = () =>
84
83
  // import('@vue2-client/pages/Example')
package/vue.config.js CHANGED
@@ -15,8 +15,8 @@ const v3Server = 'http://aote-office.8866.org:31567'
15
15
  // const gateway = 'http://192.168.50.67:31467'
16
16
  // const testUpload = 'http://123.60.214.109:8406'
17
17
  const OSSServerDev = 'http://192.168.50.67:30351'
18
- // const revenue = 'http://aote-office.8866.org:31567'
19
18
  const revenue = 'http://aote-office.8866.org:31567'
19
+ // const revenue = 'http://127.0.0.1:31467'
20
20
  // const OSSServerProd = 'http://192.168.50.67:31351'
21
21
  // const testUploadLocal = 'http://127.0.0.1:9001'
22
22
  // v3 铜川
@@ -1,51 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8"/>
5
- <link rel="shortcut icon" href="./favicon.svg" type="image/svg+xml"/>
6
- <link rel="stylesheet" href="./vender/jquery/zTreeStyle/zTreeStyle.css" type="text/css">
7
- <script src = "./vender/jquery/jquery.js"></script>
8
- <script src = "./vender/date97/WdatePicker.js"></script>
9
- <script src = "./vender/jquery/jquery.ztree.core.min.js"></script>
10
- <script src = "./vender/jquery/jquery.ztree.exedit.min.js"></script>
11
- <script src = "./vender/jquery/jquery.ztree.exhide.min.js"></script>
12
- <script src = "./vender/codemirror.js"></script>
13
- <script src = "./vender/fabric.js"></script>
14
- <script src="./vender/editor.js"></script>
15
- <script>
16
- $(function() {
17
- //配置项可以不设置,会使用默认设置
18
- let option = {
19
- license:'QO1pepfLYwDNqGvW21ensj0psE9CxBxf5MSRD1q2sCvclYGGtk6clTZEIth12i4SvvvDC04ZNcHe3uQuNtBUFcAk7sHUwAdYvffM2aZis/jpZqrm1rDGk1NHYsheD6DroF+m3jZ5Izh/LxRjzZJfaHHejfrn5InFoSqErfPm4gY=',
20
- mode:'form', //默认模式 form:表单模式,design:设计模式
21
- pdfUrl:'https://www.x-emr.cn/pdf/post', //pdf生成服务
22
- dictionary: [ //知识库
23
- {name: '体征', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=20', itemUrl:'https://www.x-emr.cn/dictitem'},
24
- {name: '症状', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=20', itemUrl:'https://www.x-emr.cn/dictitem'},
25
- {name: '卫生信息数据元', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=40', itemUrl:'https://www.x-emr.cn/dictitem'},
26
- {name: '电子病历数据集', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=50', itemUrl:'https://www.x-emr.cn/dictitem'},
27
- {name: '国家医保标准', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=80', itemUrl:'https://www.x-emr.cn/dictitem'},
28
- {name: '省数据平台标准', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=90', itemUrl:'https://www.x-emr.cn/dictitem'},
29
- ]
30
- }
31
-
32
- //从模块的Editor组件中获取mode,doc,lang属性 (该段代码可删除)
33
- let mode = window.frameElement.getAttribute('mode')
34
- let doc = window.frameElement.getAttribute('doc')
35
- let lang = window.frameElement.getAttribute('lang')
36
- mode? option.mode = mode: null
37
- lang? option.lang = lang: null
38
-
39
- //初始化编辑器(初始化代码可以放入组件的load事件中)
40
- editor.init(option).then(()=>{
41
- doc? editor.loadUrl(doc) : null
42
- })
43
-
44
- })
45
- </script>
46
- </head>
47
- <body>
48
- <!-- 默认id 为editor -->
49
- <div id="editor" style="width:100%; height:100%;"></div>
50
- </body>
51
- </html>
@@ -1,509 +0,0 @@
1
- <template>
2
- <div id="addressSearchCombobox" style="padding: 4px 0;">
3
- <div style="display: flex; width: 100%;">
4
- <a-input-group style="flex: 1; display: flex;padding-top: 1px;" compact>
5
- <a-input
6
- v-model="addressInput"
7
- :read-only="readOnly || !this.addressObj.address"
8
- @change="change"
9
- style="flex: 1; min-width: 0;"
10
- placeholder="请选择地址信息"/>
11
- <a-button
12
- v-if="attr?.inputOnAfterName && attr?.inputOnAfterFunc"
13
- style="min-width: 4rem; max-width: 6rem;"
14
- type="primary"
15
- @click="emitFunc(attr?.inputOnAfterFunc, addressInput)">
16
- {{ attr?.inputOnAfterName }}
17
- </a-button>
18
- </a-input-group>
19
- <a-button
20
- style="flex-shrink: 0; margin-left: 0.2rem;"
21
- :type="attr?.inputOnAfterName ? 'primary' : ''"
22
- @click="visible = true">
23
- <IcMapIcon/>
24
- 定位
25
- </a-button>
26
- </div>
27
- <a-modal
28
- v-model="visible"
29
- title="地址选择"
30
- @ok="selected"
31
- :zIndex="m_index"
32
- :destroyOnClose="true"
33
- width="70%"
34
- >
35
- <div class="certain-category-search-wrapper">
36
- <a-auto-complete
37
- style="right: 0px;width: 90%;z-index:2;margin-top:2%;"
38
- :disabled="!mapAutocomplete"
39
- class="certain-category-search"
40
- dropdown-class-name="certain-category-search-dropdown"
41
- option-label-prop="value"
42
- placeholder="输入地址关键字搜索"
43
- @search="fetchFunction"
44
- @select="onSelect"
45
- >
46
- <a-spin v-if="searching" slot="notFoundContent" size="small"/>
47
- <template slot="dataSource">
48
- <a-select-opt-group v-for="group in option" :key="group.title">
49
- <span
50
- slot="label">
51
- <a-icon type="bank"/> {{ group.title }}
52
- </span>
53
- <a-select-option
54
- v-for="address in group.children"
55
- :key="address.address+'['+address.label+']'+' <' + address.value + '>'"
56
- >
57
- <p class="addressName">
58
- <a-icon type="environment"/>
59
- <span v-html="highLight(address.label, address.word)"></span></p>
60
- <p v-if="address.address !== '[]'" class="addressRemark">
61
- {{ address.address }}
62
- </p>
63
- </a-select-option>
64
- </a-select-opt-group>
65
- </template>
66
- <a-input>
67
- <a-icon slot="suffix" class="certain-category-icon" type="search"/>
68
- </a-input>
69
- </a-auto-complete>
70
- </div>
71
- <div id="addressSearchCombobox_map"/>
72
- <a-descriptions
73
- bordered
74
- class="asc_descriptions"
75
- :column="{ xxl: 2, xl: 2, lg: 2, md: 2, sm: 1, xs: 1 }"
76
- >
77
- <a-descriptions-item label="坐标" span="2"><span>{{ addressObj.lng_lat }}</span></a-descriptions-item>
78
- <a-descriptions-item label="地址" span="2" v-if="attr.type != 'coordinateSearch'"><span>{{ addressObj.address }}</span></a-descriptions-item>
79
- </a-descriptions>
80
- </a-modal>
81
- </div>
82
- </template>
83
- <script>
84
-
85
- import { GetGDMap } from '@vue2-client/utils/map-utils'
86
- import { debounce } from 'ant-design-vue/lib/vc-table/src/utils'
87
- import { mapState } from 'vuex'
88
- import { runLogic } from '@vue2-client/services/api/common'
89
- import IcMapIcon from '@vue2-client/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue'
90
-
91
- export default {
92
- name: 'AddressSearchCombobox',
93
- components: { IcMapIcon },
94
- data () {
95
- // 检索去抖
96
- this.fetchFunction = debounce(this.fetchFunction, 300)
97
- return {
98
- // 地址搜索联想
99
- mapAutocomplete: undefined,
100
- // 检索结果
101
- option: [],
102
- // 最后检索版本
103
- lastFetchId: 0,
104
- // 检索中
105
- searching: false,
106
- addressObj: {
107
- lng_lat: '',
108
- address: '',
109
- },
110
- visible: false,
111
- map: null,
112
- m_index: 1002,
113
- positionPicker: null,
114
- addressInput: this.searchResult,
115
- // 选择地址返回的行政区域
116
- divisions: {},
117
- // 生成地址串中省市区街道信息禁止修改
118
- readOnlyDivisions: false,
119
- // cur 位置
120
- curPosition: [108.878703, 34.223701],
121
- searchFlag: false,
122
- }
123
- },
124
- computed: {
125
- ...mapState('setting', ['isMobile', 'gaode_key', 'gaode_secret_key'])
126
- },
127
- props: {
128
- attr: {
129
- type: Object,
130
- default: () => {
131
- }
132
- },
133
- emitFunc: {
134
- type: Function,
135
- default: () => {
136
- }
137
- },
138
- searchResult: {
139
- type: String,
140
- default: undefined
141
- },
142
- // 返回数据格式
143
- searchResultType: {
144
- type: String,
145
- default: 'Default'
146
- // default: 'Array'
147
- // default: 'Object'
148
- },
149
- // Object 返回格式时 可以自定义key
150
- resultKeys: {
151
- type: Object,
152
- default: () => {
153
- return { address: 'address', coords: 'coords' }
154
- }
155
- },
156
- readOnly: {
157
- type: Boolean,
158
- default: false
159
- },
160
- // 省市区是否可以修改
161
- divisionsChange: {
162
- type: Boolean,
163
- default: false
164
- },
165
- },
166
- created () {
167
- },
168
- mounted () {
169
- },
170
- methods: {
171
- change (value) {
172
- if (this.readOnlyDivisions && !this.divisionsChange) {
173
- // 如果省市区街道信息禁止修改
174
- if (this.addressInput.includes('省') && this.addressInput.includes('市') && this.divisions.str && !this.addressInput.startsWith(this.divisions.str)) {
175
- this.addressInput = this.addressObj.address
176
- this.$message.info('省市区街道信息请从选择新地址以变更')
177
- return
178
- }
179
- }
180
- debounce(() => {
181
- this.selected(null, this.addressInput)
182
- }, 200)()
183
- },
184
- initMap (aMap) {
185
- this.map = new (aMap).Map('addressSearchCombobox_map', { // 设置地图容器id
186
- resizeEnable: true, // 是否监控地图容器尺寸变化
187
- zoom: 10, // 初始化地图层级
188
- })
189
- this.geocoder = new (aMap).Geocoder({
190
- radius: 500 // 范围,默认:500
191
- })
192
- this.map.addControl(new (aMap).ToolBar()) // 初始化工具插件
193
-
194
- // 等待地图加载完成
195
- this.map.on('complete', () => {
196
- // 获取地图中心点
197
- const center = this.map.getCenter()
198
-
199
- // 创建标记对象 - 使用默认样式
200
- this.marker = new (aMap).Marker({
201
- position: [center.lng, center.lat], // 使用地图中心点作为初始位置
202
- map: this.map // 直接在地图创建时添加标记
203
- })
204
-
205
- // 获取中心点地址信息
206
- this.geocoder.getAddress(center, (status, result) => {
207
- if (status === 'complete' && result.info === 'OK') {
208
- const addressComponent = result.regeocode.addressComponent
209
- this.divisions.province = addressComponent.province
210
- this.divisions.city = addressComponent.city
211
- this.divisions.district = addressComponent.district
212
- this.divisions.township = addressComponent.township
213
- this.divisions.towncode = addressComponent.towncode
214
- this.divisions.street = addressComponent.street
215
-
216
- // 获取小区信息
217
- if (result.regeocode.aois && result.regeocode.aois.length) {
218
- this.divisions.area = result.regeocode.aois[0].name
219
- } else if (result.regeocode.pois && result.regeocode.pois.length) {
220
- this.divisions.area = result.regeocode.pois[0].name
221
- }
222
-
223
- this.divisions.str = `${addressComponent.province}${addressComponent.city}${addressComponent.district}${addressComponent.township}`
224
-
225
- if (this.divisions.str && result.regeocode.formattedAddress.startsWith(this.divisions.str)) {
226
- this.readOnlyDivisions = true
227
- }
228
-
229
- this.addressObj.address = result.regeocode.formattedAddress
230
- this.addressObj.lng_lat = `${center.lng},${center.lat}`
231
- }
232
- })
233
- })
234
-
235
- // 添加地图点击事件
236
- this.map.on('click', (e) => {
237
- const lnglat = e.lnglat
238
- this.curPosition = lnglat
239
-
240
- // 更新标记位置
241
- this.marker.setPosition([lnglat.lng, lnglat.lat])
242
-
243
- // 将地图中心移动到点击位置
244
- this.map.setCenter([lnglat.lng, lnglat.lat])
245
-
246
- // 获取点击位置的地址信息
247
- this.geocoder.getAddress(lnglat, (status, result) => {
248
- if (status === 'complete' && result.info === 'OK') {
249
- const addressComponent = result.regeocode.addressComponent
250
- this.divisions.province = addressComponent.province
251
- this.divisions.city = addressComponent.city
252
- this.divisions.district = addressComponent.district
253
- this.divisions.township = addressComponent.township
254
- this.divisions.towncode = addressComponent.towncode
255
- this.divisions.street = addressComponent.street
256
-
257
- // 获取小区信息
258
- if (result.regeocode.aois && result.regeocode.aois.length) {
259
- this.divisions.area = result.regeocode.aois[0].name
260
- } else if (result.regeocode.pois && result.regeocode.pois.length) {
261
- this.divisions.area = result.regeocode.pois[0].name
262
- }
263
-
264
- this.divisions.str = `${addressComponent.province}${addressComponent.city}${addressComponent.district}${addressComponent.township}`
265
-
266
- if (this.divisions.str && result.regeocode.formattedAddress.startsWith(this.divisions.str)) {
267
- this.readOnlyDivisions = true
268
- }
269
-
270
- if (!this.searchFlag) {
271
- this.addressObj.address = result.regeocode.formattedAddress
272
- this.addressObj.lng_lat = `${lnglat.lng},${lnglat.lat}`
273
- } else {
274
- this.searchFlag = false
275
- }
276
- }
277
- })
278
- })
279
- },
280
- onSelect (value) {
281
- // 选中地址后不触发更新坐标
282
- this.searchFlag = true
283
- const addressRegex = /^(.+?)\[/ // 匹配地址部分
284
- const labelRegex = /\[(.+?)\]/ // 匹配标签部分
285
- const coordinatesRegex = /<(.+?)>/ // 匹配坐标部分
286
-
287
- const addressMatch = value.match(addressRegex)
288
- const labelMatch = value.match(labelRegex)
289
- const coordinatesMatch = value.match(coordinatesRegex)
290
-
291
- this.addressObj.address = addressMatch ? addressMatch[1].trim() : null
292
- const label = labelMatch ? labelMatch[1].trim() : null
293
- this.addressObj.address = this.addressObj.address != null ? this.mergeAddressAndLabel(this.addressObj.address, label) : labelMatch[1].trim()
294
- this.addressObj.lng_lat = coordinatesMatch ? coordinatesMatch[1] : ''
295
-
296
- // 更新地图中心和标记位置
297
- const [lng, lat] = this.addressObj.lng_lat.split(',')
298
- this.map.setCenter([lng, lat])
299
- this.marker.setPosition([lng, lat])
300
- },
301
- mergeAddressAndLabel (address, label = '') {
302
- // 从地址的末尾开始匹配标签的开头部分
303
- for (let i = 0; i < label.length; i++) {
304
- const substring = label.substring(0, i + 1)
305
- if (address.endsWith(substring)) {
306
- // 找到最大匹配部分,拼接不重复的部分
307
- return address + label.substring(i + 1)
308
- }
309
- }
310
- // 如果没有重复部分,直接拼接
311
- return address + label
312
- },
313
- selected (_value, _addstr) {
314
- let result
315
- if (this.searchResultType !== 'Default') {
316
- if (this.searchResultType === 'Array') {
317
- result = [_addstr || this.addressObj.address, this.addressObj.lng_lat]
318
- } else {
319
- result = {}
320
- result[this.resultKeys.address] = _addstr || this.addressObj.address
321
- result[this.resultKeys.coords] = this.addressObj.lng_lat
322
- }
323
- }
324
- this.visible = false
325
- this.$emit('onSelect', JSON.stringify(result))
326
- // 如果传递了地址 是为了更新上级 不做省市区检验处理
327
- if (!_addstr) {
328
- this.addressInput = this.addressObj.address
329
- this.$emit('onDivisionsChange', Object.assign({}, result, { divisions: this.divisions, vm: this }))
330
- }
331
- },
332
- // 懒加载检索方法
333
- fetchFunction (value) {
334
- if (value && this.mapAutocomplete) {
335
- this.searching = true
336
- this.lastFetchId += 1
337
- const fetchId = this.lastFetchId
338
- this.mapAutocomplete.search(value, (status, result) => {
339
- if (fetchId !== this.lastFetchId) {
340
- return
341
- }
342
- if (status === 'complete') {
343
- this.option = []
344
- const addressMap = {}
345
- const addressDisMap = {}
346
- result.tips.forEach((res) => {
347
- if (res.location) {
348
- if (!Object.prototype.hasOwnProperty.call(addressMap, res.district)) {
349
- addressMap[res.district] = []
350
- }
351
- const msgData = {
352
- label: res.name,
353
- value: res.location.lng + ',' + res.location.lat,
354
- address: res.address + '',
355
- word: value
356
- }
357
- const p1 = [this.curPosition.lng, this.curPosition.lat]
358
- const p2 = [res.location.lng, res.location.lat]
359
- // 判断与当前位置的距离
360
- let dis = 0
361
- try {
362
- // eslint-disable-next-line
363
- dis = AMap.GeometryUtil.distance(p1, p2)
364
- } catch (e) {
365
- console.log(e)
366
- }
367
- addressDisMap[res.district] = {}
368
- addressDisMap[res.district].dis = dis
369
- addressMap[res.district].push(msgData)
370
- }
371
- })
372
- for (const key of Object.keys(addressMap)) {
373
- this.option.push({
374
- title: key,
375
- dis: addressDisMap[key].dis,
376
- children: addressMap[key]
377
- })
378
- }
379
- // 根据 dis 排序
380
- this.option.sort((a, b) => {
381
- return a.dis - b.dis
382
- })
383
- }
384
- this.searching = false
385
- })
386
- }
387
- },
388
- // 获取数据
389
- getData (value, callback) {
390
- if (value !== '') {
391
- const logicName = this.attr.keyName
392
- const logic = logicName.substring(6)
393
- runLogic(logic, value, 'af-system').then(res => {
394
- callback(res)
395
- })
396
- }
397
- },
398
- // 关键字高亮
399
- highLight (value, word) {
400
- // 如果标题中包含,关键字就替换一下
401
- if (value.includes(word)) {
402
- value = value.replace(word,
403
- // 这里是替换成html格式的数据,最好再加一个样式权重,保险一点
404
- '<span style="color:red!important;">' + word + '</span>'
405
- )
406
- return value
407
- // eslint-disable-next-line brace-style
408
- }
409
- // 不包含的话还用这个
410
- else {
411
- return value
412
- }
413
- }
414
- },
415
- watch: {
416
- 'visible' (val) {
417
- if (val) {
418
- this.$nextTick(() => {
419
- GetGDMap(this.gaode_secret_key, this.gaode_key).then(aMap => {
420
- this.initMap(aMap)
421
- this.mapAutocomplete = new (aMap).AutoComplete({
422
- city: '全国',
423
- dragEnable: true,
424
- animateEnable: false
425
- })
426
- })
427
- })
428
- }
429
- }
430
- }
431
- }
432
- </script>
433
-
434
- <style lang="less" scoped>
435
- #addressSearchCombobox_map {
436
- margin: 1% 0;
437
- width: 100%;
438
- height: 50vh;
439
- text-align: center
440
- }
441
-
442
- .address_btn_logo {
443
- width: 1rem;
444
- margin-right: 0.5rem
445
- }
446
-
447
- .asc_descriptions .ant-descriptions-item-content {
448
- width: 80%;
449
- }
450
-
451
- .certain-category-search-wrapper {
452
- margin-bottom: -4rem;
453
- text-align: center;
454
- }
455
-
456
- #addressSearchCombobox {
457
-
458
- .certain-category-search-dropdown .ant-select-dropdown-menu-item-group-title {
459
- color: #666;
460
- font-weight: bold;
461
- font-size: 14px;
462
- }
463
-
464
- .certain-category-search-dropdown .ant-select-dropdown-menu-item-group {
465
- border-bottom: 1px solid #f6f6f6;
466
- }
467
-
468
- .certain-category-search-dropdown .ant-select-dropdown-menu-item {
469
- padding-left: 16px;
470
- }
471
-
472
- .certain-category-search-dropdown .ant-select-dropdown-menu-item.show-all {
473
- text-align: center;
474
- cursor: default;
475
- }
476
-
477
- .certain-category-search-dropdown .ant-select-dropdown-menu {
478
- max-height: 300px;
479
- }
480
-
481
- .certain-category-search-wrapper .certain-search-item-count {
482
- position: absolute;
483
- color: #999;
484
- right: 16px;
485
- }
486
-
487
- .certain-category-search-wrapper .certain-category-search.ant-select-focused,
488
- .certain-category-icon {
489
- color: #108ee9;
490
- }
491
-
492
- .certain-category-search-wrapper .certain-category-icon {
493
- color: #6e6e6e;
494
- transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
495
- font-size: 16px;
496
- }
497
-
498
- .addressName {
499
- margin-bottom: 0;
500
- font-size: 14px;
501
- font-weight: bold;
502
- }
503
-
504
- .addressRemark {
505
- margin-bottom: 0;
506
- font-size: 12px;
507
- }
508
- }
509
- </style>