vue2-client 1.20.35 → 1.20.36

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/.eslintrc.js CHANGED
@@ -69,12 +69,6 @@ module.exports = {
69
69
  env: {
70
70
  jest: true
71
71
  }
72
- },
73
- {
74
- files: ['src/base-client/components/common/XReportGrid/XReport.vue'],
75
- rules: {
76
- 'vue/no-reserved-keys': 'off'
77
- }
78
72
  }
79
73
  ]
80
74
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.20.35",
3
+ "version": "1.20.36",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -2,32 +2,51 @@
2
2
  <a-card :bordered="false">
3
3
  <x-form-table
4
4
  title="示例表单"
5
- :queryParamsName="queryParamsName"
5
+ queryParamsName="scanCodeAndNFCRUD"
6
6
  :fixedAddForm="fixedAddForm"
7
7
  :externalSelectedRowKeys="selectedKeys"
8
+ :defaultPageSize="100"
9
+ :pageSizeArray="['100','200']"
8
10
  @action="action"
9
11
  @selectRow="selectRow"
10
12
  @columnClick="columnClick"
11
13
  @ceshi="ceshi"
12
- @rowDblClick="rowDblClick"
13
- :defaultPageSize="5"
14
- serviceName="af-revenue"
14
+ @startService="startService"
15
+ serviceName="af-safecheck"
15
16
  ref="xFormTable"
16
17
  :reserveSpaceForButtons="true"
17
- @addFormSubmit="addFormSubmit"
18
- ></x-form-table>
18
+ >
19
+ </x-form-table>
20
+ <a-modal
21
+ v-model="formModalVisible"
22
+ title="工单回访"
23
+ :zIndex="1002"
24
+ width="50vw"
25
+ :destroy-on-close="true"
26
+ @cancel="formModalVisible = false"
27
+ @ok="ok"
28
+ >
29
+ <x-add-native-form
30
+ ref="xForm"
31
+ />
32
+ </a-modal>
33
+ <button @click="backDealData">提交</button>
19
34
  </a-card>
20
35
  </template>
21
36
 
22
37
  <script>
23
38
  import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable.vue'
39
+ import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
24
40
  import { microDispatch } from '@vue2-client/utils/microAppUtils'
41
+ import {getConfigByNameAsync, runLogic} from '@vue2-client/services/api/common'
42
+
25
43
  export default {
26
44
  name: 'Demo',
27
45
  components: {
28
- XFormTable
46
+ XFormTable,
47
+ XAddNativeForm,
29
48
  },
30
- data() {
49
+ data () {
31
50
  return {
32
51
  // 查询配置文件名
33
52
  queryParamsName: 'ceshiCRUD',
@@ -43,26 +62,32 @@ export default {
43
62
  selectedKeys: [],
44
63
  selected: {
45
64
  keys: [],
46
- rows: []
47
- }
65
+ rows: [],
66
+ },
67
+ formModalVisible: false,
48
68
  }
49
69
  },
50
-
51
70
  methods: {
52
- handleCustomQuery() {
53
- this.$refs.xFormTable.queryTable({
54
- uf_f_alias: 'XianFeng',
55
- uf_f_card_id: '10500030'
71
+ backDealData () {
72
+ this.$refs.xFormTable.$refs.xForm.backDealData().then(data => {
73
+ console.log('backDealData', data)
74
+ console.log('selected', this.$refs.xFormTable.$refs.xForm?.form)
56
75
  })
57
76
  },
58
- rowDblClick(record) {
59
- console.log('rowDblClick', record)
60
- },
61
77
  // input框 行編輯參數傳遞
62
- ceshi(...args) {
78
+ ceshi (...args) {
63
79
  // attr, value, currentRecord, currentIndex, nextRecord, nextIndex
64
- const [attr, value, currentRecord, currentIndex, nextRecord, nextIndex] = args
65
- console.log('ceshi', attr, value, currentRecord, currentIndex, nextRecord, nextIndex)
80
+ const [attr, value, currentRecord, currentIndex, nextRecord, nextIndex] =
81
+ args
82
+ console.log(
83
+ 'ceshi',
84
+ attr,
85
+ value,
86
+ currentRecord,
87
+ currentIndex,
88
+ nextRecord,
89
+ nextIndex
90
+ )
66
91
  // 示例:当按下 Enter 键且有下一行时,跳转到下一行的同一列
67
92
  // 可以在这里执行业务逻辑(例如:保存数据)
68
93
  console.log('当前行:', currentIndex, '下一行:', nextIndex)
@@ -73,44 +98,61 @@ export default {
73
98
  // 跳转到下一行的同一列
74
99
  this.$refs.xFormTable.$refs.xTable.focusInput(nextIndex, attr.model)
75
100
  },
76
- test() {
101
+ test () {
77
102
  this.$refs.xFormTable.setTableData([])
78
103
  },
79
- defaultF() {
104
+ defaultF () {
80
105
  this.$refs.xFormTable.setTableSize('default')
81
106
  },
82
- middleF() {
107
+ middleF () {
83
108
  this.$refs.xFormTable.setTableSize('middle')
84
109
  },
85
- smallF() {
110
+ smallF () {
86
111
  this.$refs.xFormTable.setTableSize('small')
87
112
  },
88
- columnClick(key, value, record) {
113
+ columnClick (key, value, record) {
89
114
  microDispatch({
90
115
  type: 'v3route',
91
116
  path: '/bingliguanli/dianzibingliluru',
92
- props: { selected: arguments[0].his_f_admission_id }
117
+ props: { selected: arguments[0].his_f_admission_id },
93
118
  })
94
119
  },
95
- action(record, id, actionType) {
96
- this.detailVisible = true
97
- console.log('触发了详情操作', record, id, actionType)
120
+ startService (record, id, actionType) {
121
+ getConfigByNameAsync('测试Form', 'af-safecheck').then(config => {
122
+ this.formModalVisible = true
123
+ this.$nextTick(
124
+ () => {
125
+ this.formModalVisible = true
126
+ this.$refs.xForm.init({
127
+ formItems: config.formJson,
128
+ title: '工单回访',
129
+ businessType: '新增',
130
+ ...config,
131
+ modifyModelData: { data: { id: 1 } },
132
+ })
133
+ })
134
+ })
135
+ // this.detailVisible = true
136
+ // console.log('触发了详情操作', record, id, actionType)
137
+ },
138
+ async ok () {
139
+ const res = await this.$refs.xForm.asyncSubmit()
140
+ await runLogic('ceshwewei', res.realForm)
98
141
  },
99
- onClose() {
142
+ onClose () {
100
143
  this.detailVisible = false
101
144
  // 关闭详情之后重新查询表单
102
145
  this.$refs.xFormTable.refreshTable(true)
103
146
  },
104
- selectRow(selectedRowKeys, selectedRows) {
147
+ selectRow (selectedRowKeys, selectedRows) {
105
148
  this.selected = {
106
149
  keys: selectedRowKeys,
107
- rows: selectedRows
150
+ rows: selectedRows,
108
151
  }
152
+ console.log('selectedDemo', this.selected)
109
153
  },
110
- addFormSubmit(params, callback){
111
- callback()
112
- }
113
- }
154
+ },
155
+ computed: {},
114
156
  }
115
157
  </script>
116
158
 
@@ -92,23 +92,36 @@
92
92
  <div class="photos-header">
93
93
  <div class="photos-title">
94
94
  <a-icon type="picture" style="color: #1890FF;" />
95
- <span>整体安检照片</span>
95
+ <span>安检照片</span>
96
96
  </div>
97
- <div class="photos-count" v-if="inspectionData.attachments.photos && inspectionData.attachments.photos.length > 0">
98
- 共 {{ inspectionData.attachments.photos.length }} 张
97
+ <div class="photos-count" v-if="inspectionData.attachments.filePhotos && inspectionData.attachments.filePhotos.length > 0">
98
+ 共 {{ totalPhotos }} 张
99
99
  </div>
100
100
  </div>
101
101
  <div class="photos-content">
102
+ <div class="subsection-label"><a-icon type="home" />整体安检照片</div>
102
103
  <file-image-group
103
- :file-ids="inspectionData.attachments.photos || []"
104
+ :file-ids="inspectionData.attachments.filePhotos || []"
104
105
  :service-name="effectiveServiceName"
105
- :columns="3"
106
+ :columns="5"
106
107
  :image-size="60"
107
108
  :gap="10"
108
109
  alt-prefix="整体安检照片"
109
110
  empty-text="暂无整体安检照片"
110
111
  />
111
112
  </div>
113
+ <div class="photos-content">
114
+ <div class="subsection-label"><a-icon type="file-protect" />通知书照片</div>
115
+ <file-image-group
116
+ :file-ids="inspectionData.attachments.imagePhotos || []"
117
+ :service-name="effectiveServiceName"
118
+ :columns="5"
119
+ :image-size="60"
120
+ :gap="10"
121
+ alt-prefix="通知书照片"
122
+ empty-text="暂无通知书照片"
123
+ />
124
+ </div>
112
125
  </div>
113
126
  </div>
114
127
  </a-card>
@@ -220,7 +233,8 @@ export default {
220
233
  attachments: {
221
234
  signature: null,
222
235
  recordings: [],
223
- photos: []
236
+ filePhotos: [],
237
+ imagePhotos: []
224
238
  }
225
239
  },
226
240
  previewModal: { visible: false, images: [], current: 0 },
@@ -235,6 +249,11 @@ export default {
235
249
  },
236
250
  computed: {
237
251
  ...mapState('account', { currUser: 'user' }),
252
+ totalPhotos () {
253
+ const fileLen = this.inspectionData.attachments?.filePhotos?.length || 0;
254
+ const imageLen = this.inspectionData.attachments?.imagePhotos?.length || 0;
255
+ return fileLen + imageLen;
256
+ },
238
257
  /** 有效服务名:优先使用 serviceName prop */
239
258
  effectiveServiceName () {
240
259
  return this.serviceName || ''
@@ -277,7 +296,7 @@ export default {
277
296
  deviceList: [],
278
297
  checkItems: [],
279
298
  hazardList: [],
280
- attachments: { signature: null, recordings: [], photos: [] }
299
+ attachments: { signature: null, recordings: [], filePhotos: [], imagePhotos: [] }
281
300
  }
282
301
 
283
302
  this.showHistoryPanel = !params?.id && !!params?.f_userinfo_id
@@ -481,7 +500,7 @@ export default {
481
500
  deviceList: [],
482
501
  checkItems: [],
483
502
  hazardList: [],
484
- attachments: { signature: null, recordings: [], photos: [] }
503
+ attachments: { signature: null, recordings: [], filePhotos: [], imagePhotos: [] }
485
504
  }
486
505
  }
487
506
  }
@@ -601,4 +620,5 @@ export default {
601
620
  .history-panel { max-height: 200px; }
602
621
  .section-grid { grid-template-columns: 1fr; }
603
622
  }
623
+ .subsection-label { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #6b7280; font-weight: 500; margin-bottom: 12px; }
604
624
  </style>
@@ -464,7 +464,7 @@ class InspectionService {
464
464
  }
465
465
 
466
466
  extractAttachments (signatureForm) {
467
- const attachments = { signature: {}, recordings: [], photos: [], refusephotos: [] }
467
+ const attachments = { signature: {}, recordings: [], filePhotos: [], imagePhotos: [], refusephotos: [] }
468
468
  if (signatureForm?.signaturePhoto?.[0]?.url) {
469
469
  attachments.signature.imageUrl = signatureForm.signaturePhoto[0].url
470
470
  }
@@ -479,7 +479,12 @@ class InspectionService {
479
479
  .map((r, i) => ({ id: i + 1, name: r.photo_name || `录音 ${i + 1}`, url: r.url || '#' }))
480
480
  }
481
481
  if (signatureForm?.FilesId) {
482
- attachments.photos = signatureForm.FilesId
482
+ attachments.filePhotos = signatureForm.FilesId
483
+ .filter(p => p?.url)
484
+ .map((p, i) => ({ id: i + 1, url: p.url }))
485
+ }
486
+ if (signatureForm?.Images) {
487
+ attachments.imagePhotos = signatureForm.Images
483
488
  .filter(p => p?.url)
484
489
  .map((p, i) => ({ id: i + 1, url: p.url }))
485
490
  }