vue2-client 1.22.39 → 1.22.46

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 (39) hide show
  1. package/.env.iot +1 -0
  2. package/.idea/af-vue2-client.iml +2 -3
  3. package/.idea/inspectionProfiles/Project_Default.xml +17 -0
  4. package/1yarn.lock +11850 -0
  5. package/logs/afgit.config.log +12 -0
  6. package/logs/afgit.config.log.2026-02-27 +7 -0
  7. package/logs/afgit.config_error.log +6 -0
  8. package/logs/afgit.config_error.log.2026-02-27 +3 -0
  9. package/package.json +1 -1
  10. package/pnpm-workspace.yaml +4 -0
  11. package/public/his/editor/mock/bind_data_with_images.html +78 -0
  12. package/public/his/editor/mock/blank.html +645 -0
  13. package/src/assets/img/80359c35a5465167cb25ff87bab49035d041a65558b35-YJOr3x.png +0 -0
  14. package/src/assets/img/hisLogo.png +0 -0
  15. package/src/assets/svg/unknown-icon.svg +3 -3
  16. package/src/base-client/components/common/AfMap/InfoWindowComponent.vue +141 -141
  17. package/src/base-client/components/common/AfMap/demo.vue +492 -492
  18. package/src/base-client/components/common/HIS/HButtons/HButtons.vue +89 -1
  19. package/src/base-client/components/common/HIS/HButtons/HButtonsSuffixDemo.vue +141 -0
  20. package/src/base-client/components/common/Upload/Upload.vue +2 -2
  21. package/src/base-client/components/common/XInspectionDetailDrawer/components/DeviceStatus.vue +1 -1
  22. package/src/base-client/components/his/XHisEditor/ImageReportDemo.vue +156 -0
  23. package/src/base-client/components/his/XHisEditor/XDocTree.vue +529 -529
  24. package/src/base-client/plugins/GetLoginInfoService.js +26 -1
  25. package/src/components/ImagePreview/ImagePreview.vue +323 -323
  26. package/src/constants/crypto.js +9 -1
  27. package/src/pages/login/Login.vue +107 -3
  28. package/src/router/async/router.map.js +6 -1
  29. package/src/services/user.js +7 -3
  30. package/src/utils/EncryptUtil.js +7 -2
  31. package/src/utils/login.js +29 -14
  32. package/src/utils/request.js +14 -3
  33. package/src/utils/util.js +27 -4
  34. package/vue.config.js +10 -0
  35. package/.idea/MarsCodeWorkspaceAppSettings.xml +0 -7
  36. package/.idea/deployment.xml +0 -14
  37. package/.idea/encodings.xml +0 -6
  38. package/.idea/gradle.xml +0 -7
  39. package/.idea/misc.xml +0 -6
@@ -1,141 +1,141 @@
1
- <template>
2
- <div class="info-window-content">
3
- <!-- 关闭按钮 -->
4
- <div class="info-window-header">
5
- <h3>{{ title }}</h3>
6
- <button class="close-btn" @click="handleClose">×</button>
7
- </div>
8
-
9
- <!-- 数据展示 -->
10
- <div class="info-window-body">
11
- <div v-if="data">
12
- {{ data }}
13
- </div>
14
- <div v-else class="no-data">
15
- 暂无数据
16
- </div>
17
- </div>
18
- </div>
19
- </template>
20
-
21
- <script>
22
- export default {
23
- name: 'InfoWindowComponent',
24
- props: {
25
- data: {
26
- type: [Object, Array],
27
- default: null
28
- },
29
- title: {
30
- type: String,
31
- default: '巡检计划详情'
32
- }
33
- },
34
- computed: {
35
- // 格式化数据,只显示简单类型(避免显示复杂对象)
36
- formattedData() {
37
- if (!this.data) return {}
38
-
39
- const result = {}
40
- const dataObj = Array.isArray(this.data) ? this.data[0] || {} : this.data
41
-
42
- Object.entries(dataObj).forEach(([key, value]) => {
43
- // 只显示简单类型(字符串、数字、布尔值)
44
- if (typeof value !== 'object' || value === null) {
45
- result[key] = value
46
- } else if (Array.isArray(value)) {
47
- result[key] = `数组(${value.length}项)`
48
- } else {
49
- result[key] = '对象'
50
- }
51
- })
52
-
53
- return result
54
- }
55
- },
56
- methods: {
57
- handleClose() {
58
- // 触发父组件传递的 close 事件
59
- this.$emit('close')
60
- }
61
- }
62
- }
63
- </script>
64
-
65
- <style scoped>
66
- .info-window-content {
67
- background: white;
68
- border-radius: 8px;
69
- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
70
- min-width: 200px;
71
- max-width: 300px;
72
- overflow: hidden;
73
- }
74
-
75
- .info-window-header {
76
- display: flex;
77
- justify-content: space-between;
78
- align-items: center;
79
- padding: 12px 16px;
80
- background: linear-gradient(135deg, #1890ff, #096dd9);
81
- color: white;
82
- }
83
-
84
- .info-window-header h3 {
85
- margin: 0;
86
- font-size: 16px;
87
- font-weight: 500;
88
- }
89
-
90
- .close-btn {
91
- background: none;
92
- border: none;
93
- color: white;
94
- font-size: 20px;
95
- cursor: pointer;
96
- width: 24px;
97
- height: 24px;
98
- line-height: 24px;
99
- text-align: center;
100
- border-radius: 50%;
101
- transition: background-color 0.3s;
102
- }
103
-
104
- .close-btn:hover {
105
- background: rgba(255, 255, 255, 0.2);
106
- }
107
-
108
- .info-window-body {
109
- padding: 16px;
110
- max-height: 400px;
111
- overflow-y: auto;
112
- }
113
-
114
- .data-item {
115
- margin-bottom: 8px;
116
- padding-bottom: 8px;
117
- border-bottom: 1px solid #f0f0f0;
118
- }
119
-
120
- .data-item:last-child {
121
- margin-bottom: 0;
122
- border-bottom: none;
123
- }
124
-
125
- .data-key {
126
- font-weight: 600;
127
- color: #666;
128
- margin-right: 8px;
129
- }
130
-
131
- .data-value {
132
- color: #333;
133
- word-break: break-all;
134
- }
135
-
136
- .no-data {
137
- text-align: center;
138
- color: #999;
139
- padding: 20px 0;
140
- }
141
- </style>
1
+ <template>
2
+ <div class="info-window-content">
3
+ <!-- 关闭按钮 -->
4
+ <div class="info-window-header">
5
+ <h3>{{ title }}</h3>
6
+ <button class="close-btn" @click="handleClose">×</button>
7
+ </div>
8
+
9
+ <!-- 数据展示 -->
10
+ <div class="info-window-body">
11
+ <div v-if="data">
12
+ {{ data }}
13
+ </div>
14
+ <div v-else class="no-data">
15
+ 暂无数据
16
+ </div>
17
+ </div>
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ export default {
23
+ name: 'InfoWindowComponent',
24
+ props: {
25
+ data: {
26
+ type: [Object, Array],
27
+ default: null
28
+ },
29
+ title: {
30
+ type: String,
31
+ default: '巡检计划详情'
32
+ }
33
+ },
34
+ computed: {
35
+ // 格式化数据,只显示简单类型(避免显示复杂对象)
36
+ formattedData() {
37
+ if (!this.data) return {}
38
+
39
+ const result = {}
40
+ const dataObj = Array.isArray(this.data) ? this.data[0] || {} : this.data
41
+
42
+ Object.entries(dataObj).forEach(([key, value]) => {
43
+ // 只显示简单类型(字符串、数字、布尔值)
44
+ if (typeof value !== 'object' || value === null) {
45
+ result[key] = value
46
+ } else if (Array.isArray(value)) {
47
+ result[key] = `数组(${value.length}项)`
48
+ } else {
49
+ result[key] = '对象'
50
+ }
51
+ })
52
+
53
+ return result
54
+ }
55
+ },
56
+ methods: {
57
+ handleClose() {
58
+ // 触发父组件传递的 close 事件
59
+ this.$emit('close')
60
+ }
61
+ }
62
+ }
63
+ </script>
64
+
65
+ <style scoped>
66
+ .info-window-content {
67
+ background: white;
68
+ border-radius: 8px;
69
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
70
+ min-width: 200px;
71
+ max-width: 300px;
72
+ overflow: hidden;
73
+ }
74
+
75
+ .info-window-header {
76
+ display: flex;
77
+ justify-content: space-between;
78
+ align-items: center;
79
+ padding: 12px 16px;
80
+ background: linear-gradient(135deg, #1890ff, #096dd9);
81
+ color: white;
82
+ }
83
+
84
+ .info-window-header h3 {
85
+ margin: 0;
86
+ font-size: 16px;
87
+ font-weight: 500;
88
+ }
89
+
90
+ .close-btn {
91
+ background: none;
92
+ border: none;
93
+ color: white;
94
+ font-size: 20px;
95
+ cursor: pointer;
96
+ width: 24px;
97
+ height: 24px;
98
+ line-height: 24px;
99
+ text-align: center;
100
+ border-radius: 50%;
101
+ transition: background-color 0.3s;
102
+ }
103
+
104
+ .close-btn:hover {
105
+ background: rgba(255, 255, 255, 0.2);
106
+ }
107
+
108
+ .info-window-body {
109
+ padding: 16px;
110
+ max-height: 400px;
111
+ overflow-y: auto;
112
+ }
113
+
114
+ .data-item {
115
+ margin-bottom: 8px;
116
+ padding-bottom: 8px;
117
+ border-bottom: 1px solid #f0f0f0;
118
+ }
119
+
120
+ .data-item:last-child {
121
+ margin-bottom: 0;
122
+ border-bottom: none;
123
+ }
124
+
125
+ .data-key {
126
+ font-weight: 600;
127
+ color: #666;
128
+ margin-right: 8px;
129
+ }
130
+
131
+ .data-value {
132
+ color: #333;
133
+ word-break: break-all;
134
+ }
135
+
136
+ .no-data {
137
+ text-align: center;
138
+ color: #999;
139
+ padding: 20px 0;
140
+ }
141
+ </style>