vue2-client 1.22.46 → 1.22.51

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Change Log
2
2
  > 所有关于本项目的变化都在该文档里。
3
+ >
4
+ **1.22.49 -2026-07-23 @宁栩阳**
5
+ - RecordingPlayer 组件新增录音文件下载按钮
6
+
3
7
 
4
8
  **1.20.41 -2026-04-10 @唐增辉**
5
9
  - 增加从系统参数管理获取数据
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.22.46",
3
+ "version": "1.22.51",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -20,6 +20,11 @@
20
20
  <div class="progress-handle" :style="{ left: progressPercent + '%' }"></div>
21
21
  </div>
22
22
  </div>
23
+ <div class="player-actions">
24
+ <a-button size="small" type="link" class="download-button" @click="handleDownload">
25
+ <a-icon type="download" />
26
+ </a-button>
27
+ </div>
23
28
  </div>
24
29
  <audio ref="audio" :src="recording.url" @loadedmetadata="onLoadedMetadata" @timeupdate="onTimeUpdate" @ended="onEnded" style="display: none;" />
25
30
  </div>
@@ -50,6 +55,14 @@ export default {
50
55
  }
51
56
  },
52
57
  methods: {
58
+ handleDownload () {
59
+ const a = document.createElement('a')
60
+ a.href = this.recording.url
61
+ a.download = this.recording.name || `录音_${this.recording.id}`
62
+ document.body.appendChild(a)
63
+ a.click()
64
+ document.body.removeChild(a)
65
+ },
53
66
  handleTogglePlay () {
54
67
  if (this.isPlaying) this.$emit('pause', this.recording)
55
68
  else this.$emit('play', this.recording)
@@ -90,9 +103,13 @@ export default {
90
103
  .play-button { width: 40px; height: 40px; border: none; border-radius: 50%; background: #3b82f6; color: white; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; }
91
104
  .play-button:hover { background: #2563eb; transform: scale(1.05); }
92
105
  .play-button.playing { background: #ef4444; }
93
- .player-info { flex: 1; min-width: 0; margin-right: 12px; }
106
+ .player-info { flex: 0 0 auto; min-width: 0; margin-right: 12px; max-width: 180px; }
107
+ .player-progress { flex: 1; min-width: 60px; margin-right: 12px; }
94
108
  .recording-title { font-size: 14px; font-weight: 600; color: #1f2937; margin-bottom: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
95
109
  .recording-duration { display: flex; align-items: center; gap: 4px; font-size: 12px; color: #6b7280; }
110
+ .player-actions { display: flex; align-items: center; }
111
+ .download-button { color: #9ca3af; font-size: 16px; padding: 4px; }
112
+ .download-button:hover { color: #3b82f6; }
96
113
  .progress-bar { position: relative; height: 6px; background: #e5e7eb; border-radius: 3px; cursor: pointer; }
97
114
  .progress-fill { height: 100%; background: linear-gradient(90deg, #3b82f6, #1d4ed8); border-radius: 3px; transition: width 0.1s ease; }
98
115
  .progress-handle { position: absolute; top: 50%; width: 14px; height: 14px; background: #3b82f6; border: 2px solid white; border-radius: 50%; transform: translateY(-50%) translateX(-7px); cursor: grab; opacity: 0; }
@@ -48,12 +48,7 @@ export default {
48
48
  this.$message.warning('请输入有效的安检 ID')
49
49
  return
50
50
  }
51
- this.$refs.detailDrawer.init({
52
- historyListParams: {
53
- f_content: '合规'
54
- },
55
- f_userinfo_id: 96448
56
- })
51
+ this.$refs.detailDrawer.init({ id })
57
52
  },
58
53
  handleRefresh () {
59
54
  this.$message.success('详情已刷新')
@@ -330,7 +330,7 @@ onMounted(() => {
330
330
  .x-title-container {
331
331
  :deep(.title-dot) {
332
332
  border-radius: 50%;
333
- background-color: #3362DA;
333
+ background-color: #d800fe;
334
334
  }
335
335
  }
336
336
  }
@@ -1,6 +1,7 @@
1
1
  import Vue from 'vue'
2
2
  import { SEARCH } from '@vue2-client/services/apiService'
3
3
  import { post } from '@vue2-client/services/api'
4
+ import { getSystemVersion } from '@vue2-client/utils/request'
4
5
 
5
6
  /**
6
7
  * 获取片区
@@ -153,7 +154,8 @@ function searchFun (fun, name) {
153
154
  const loginGen = async function (response, jwt) {
154
155
  Vue.$login.f = response
155
156
  const viewPermissions = resolveViewPermissions(response)
156
- if (viewPermissions !== null) {
157
+ const compatible = getSystemVersion()
158
+ if (viewPermissions !== null || compatible === 'V4') {
157
159
  // 响应已带界面权限,与 guards.js 中 r || permissions 逻辑一致
158
160
  Vue.$login.r = viewPermissions
159
161
  } else {
@@ -1249,7 +1249,7 @@ export default {
1249
1249
  // 如果一个都没匹配上,兼容旧逻辑:把原对象转成数组
1250
1250
  if (formDataArr.length === 0 && dataObj && typeof dataObj === 'object') {
1251
1251
  for (const key in dataObj) {
1252
- if (Object.prototype.hasOwnProperty.call(dataObj, key)) {
1252
+ if (key !== 'FilesId' && Object.prototype.hasOwnProperty.call(dataObj, key)) {
1253
1253
  formDataArr.push({ label: key, value: dataObj[key] })
1254
1254
  }
1255
1255
  }
@@ -57,7 +57,7 @@ routerResource.example = {
57
57
  path: 'example',
58
58
  name: '示例主页面',
59
59
  // component: () => import('@vue2-client/pages/LayoutTest/index.vue')
60
- // component: () => import('@vue2-client/base-client/components/common/XDescriptions/demo.vue')
60
+ component: () => import('@vue2-client/base-client/components/common/XDescriptions/demo.vue')
61
61
  // component: () => import('@vue2-client/base-client/components/his/HChart/demo.vue'),
62
62
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
63
63
  // component: () => import('@vue2-client/base-client/components/common/XFormTable/demo.vue')
@@ -94,11 +94,6 @@ routerResource.example = {
94
94
  // component: () => import('@vue2-client/pages/ReportGrid/index.vue'),
95
95
  // component: () => import('@vue2-client/base-client/components/common/HIS/demo.vue'),
96
96
  // component: () => import('@vue2-client/components/MarkdownEditor/demo.vue'),
97
- // component: () => import('@vue2-client/base-client/components/his/XHisEditor/ImageReportDemo.vue')
98
- // component: () => import('@vue2-client/components/MarkdownEditor/demo.vue'),
99
- component: () => import('@vue2-client/base-client/components/common/HIS/HButtons/HButtonsSuffixDemo.vue')
100
-
101
-
102
97
  }
103
98
  // routerResource.example = () =>
104
99
  // import('@vue2-client/pages/Example')
package/vue.config.js CHANGED
@@ -12,8 +12,7 @@ const isProd = process.env.NODE_ENV === 'production'
12
12
 
13
13
  // v4 产品演示
14
14
  const liuli = 'http://192.168.50.67:31567'
15
- // const v3Server = 'http://127.0.0.1:8077'
16
- const v3Server = 'http://192.168.50.67:31567'
15
+ const v3Server = 'http://127.0.0.1:8077'
17
16
  const geoserver = 'http://192.168.50.67:31567'
18
17
  // const gateway = 'http://192.168.50.67:31467'
19
18
  // const testUpload = 'http://123.60.214.109:8406'