vue2-client 1.16.43 → 1.16.45

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.16.43",
3
+ "version": "1.16.45",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -68,6 +68,7 @@
68
68
  width="60vw"
69
69
  :dialogStyle="{ top: '20px' }"
70
70
  wrapClassName="image-preview-modal"
71
+ :zIndex="1010"
71
72
  >
72
73
  <div class="image-preview-container">
73
74
  <img
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div>
2
+ <div class="x-collapse-wrapper" :class="wrapperClassObject">
3
3
  <a-collapse
4
4
  :activeKey="activeKey"
5
5
  @change="handleChange"
@@ -36,10 +36,20 @@
36
36
  <span>{{ item.value }}</span>
37
37
  </span>
38
38
  </template>
39
- <!-- 当有 title3 数据时显示时间项 -->
39
+ <!-- 当有 title3 数据时显示时间项(与 title2 一致:支持数组/单项) -->
40
+ <template v-if="panel.title3 && Array.isArray(panel.title3) && panel.title3.length">
41
+ <span
42
+ v-for="(item, t3Index) in panel.title3"
43
+ :key="t3Index"
44
+ :class="['time-item', { 'time-first': t3Index === 0 }]"
45
+ :style="config.title3Style">
46
+ <span v-if="item.showTitle">{{ item.key }}:</span>
47
+ <span>{{ item.value }}</span>
48
+ </span>
49
+ </template>
40
50
  <span
41
- v-if="panel.title3"
42
- class="time-item"
51
+ v-else-if="panel.title3"
52
+ class="time-item time-first"
43
53
  :style="config.title3Style">
44
54
  {{ panel.title3 }}
45
55
  </span>
@@ -77,6 +87,8 @@
77
87
  :countVisible="false"
78
88
  :env="env"
79
89
  :style="config.componentStyle || ''"
90
+ v-bind="panel.attrs || {}"
91
+ :class="panel.className"
80
92
  :ipanelIndex="panelIndex"
81
93
  @deleteData="deleteData"
82
94
  @add="add"
@@ -151,6 +163,24 @@ export default {
151
163
  this.getData(this.queryParamsName, this.parameter)
152
164
  },
153
165
  beforeDestroy () {},
166
+ computed: {
167
+ // 基于 $attrs 的样式类开关(与 XHDescriptions.vue 思路一致)
168
+ wrapperClassObject () {
169
+ const attrs = this.$attrs || {}
170
+ const classes = {}
171
+ const booleanStyleKeys = [
172
+ 'style1'
173
+ ]
174
+ booleanStyleKeys.forEach(key => {
175
+ const val = attrs[key]
176
+ const truthy = val === true || val === '' || val === 'true'
177
+ if (truthy) classes[`xcollapse-${key}`] = true
178
+ })
179
+ const size = attrs.size
180
+ if (size && typeof size === 'string') classes[`xcollapse-size-${size}`] = true
181
+ return classes
182
+ }
183
+ },
154
184
  methods: {
155
185
  handleMounted (instance) {
156
186
  this.sonInstances.push(instance)
@@ -200,12 +230,13 @@ export default {
200
230
  console.warn(this.config)
201
231
  runLogic(res.mainLogic, parameter, 'af-his').then(result => {
202
232
  this.config.showData = result
233
+ console.log('result', result)
203
234
  // 更具timeType更改时间类型
204
235
  if (this.config.timeType && this.config.timeType === '.') {
205
236
  this.config.showData.forEach(panel => {
206
- if (panel.title3) {
207
- panel.title3 = this.convertToCustomFormat(panel.title3)
208
- }
237
+ // if (panel.title3) {
238
+ // panel.title3 = this.convertToCustomFormat(panel.title3)
239
+ // }
209
240
  })
210
241
  this.$forceUpdate()
211
242
  }
@@ -256,7 +287,7 @@ export default {
256
287
  }
257
288
  </script>
258
289
 
259
- <style scoped>
290
+ <style scoped lang="less">
260
291
  .header-content {
261
292
  display: flex;
262
293
  align-items: center;
@@ -353,4 +384,77 @@ export default {
353
384
  text-align: center;
354
385
  margin: 20px 0;
355
386
  }
387
+
388
+ // 基于根容器类进行样式整合:x-collapse-wrapper.xcollapse-style1
389
+ .x-collapse-wrapper {
390
+ &.xcollapse-style1 {
391
+ .header-content {
392
+ gap: 6px; // 圆点与title1更紧凑的基础间距
393
+ }
394
+ .blue-circle-icon {
395
+ margin-right: 0px !important; // 图标与标题更紧凑
396
+ }
397
+ .header-text {
398
+ font-family: "Source Han Sans";
399
+ font-size: 18px;
400
+ font-weight: 700;
401
+ line-height: normal;
402
+ letter-spacing: 0em;
403
+ color: #313131;
404
+ // 额外拉开与 title2 的距离(在小gap基础上单独增大)
405
+ margin-right: 25px !important;
406
+ }
407
+
408
+ .info-item {
409
+ font-family: "Source Han Sans";
410
+ font-size: 18px;
411
+ font-weight: 700;
412
+ line-height: normal;
413
+ text-align: right;
414
+ color: #313131;
415
+ letter-spacing: 0em
416
+ }
417
+
418
+ .time-item {
419
+ font-family: "Source Han Sans";
420
+ font-size: 18px;
421
+ font-weight: 400;
422
+ line-height: normal;
423
+ text-align: right;
424
+ color: #313131;
425
+ letter-spacing: 0em;
426
+ }
427
+
428
+ // 让每个面板成为独立卡片:去掉 antd 默认的分隔线,增加间距与圆角
429
+ :deep(.ant-collapse) {
430
+ background: transparent;
431
+ border: 0;
432
+ }
433
+
434
+ :deep(.ant-collapse > .ant-collapse-item) {
435
+ width: 550px;
436
+ height: 410px;
437
+ margin: 16px 0; // 面板之间留白
438
+ border-radius: 6px; // 分离的圆角
439
+ overflow: hidden; // 保持圆角
440
+ background: #FFFFFF; // 独立白底
441
+ box-sizing: border-box;
442
+ border: 1px solid #E5E9F0; // 每个面板自身边框
443
+ }
444
+
445
+ :deep(.ant-collapse > .ant-collapse-item:first-child) { margin-top: 0; }
446
+ :deep(.ant-collapse > .ant-collapse-item:last-child) { margin-bottom: 0; }
447
+
448
+ :deep(.ant-collapse-content > .ant-collapse-content-box) { background: #FFFFFF; }
449
+
450
+ // 表头:恢复合适的上下内边距,去掉顶部额外空白
451
+ :deep(.ant-collapse-header) {
452
+ background: #FFFFFF;
453
+ padding: 12px 16px; // 恢复上下内边距
454
+ align-items: center;
455
+ color: #262626;
456
+ border-bottom: none !important; // 移除标题处下边线,避免与外边框连为一体
457
+ }
458
+ }
459
+ }
356
460
  </style>
@@ -153,7 +153,9 @@ export default {
153
153
  const classes = {}
154
154
 
155
155
  const booleanStyleKeys = [
156
- 'description', 'no-padding'
156
+ 'description',
157
+ 'no-padding',
158
+ 'medical-history'
157
159
  ]
158
160
  booleanStyleKeys.forEach(key => {
159
161
  const val = attrs[key]
@@ -455,6 +457,7 @@ export default {
455
457
  border-bottom: 1px dashed rgba(0, 0, 0, 0.15);
456
458
  }
457
459
  /* 加边框 */
460
+ /* 加边框 */
458
461
  .xhdesc-description {
459
462
  padding: 4px 4px 4px 4px;
460
463
 
@@ -479,4 +482,139 @@ export default {
479
482
  .xhdesc-no-padding {
480
483
  padding: 0px;
481
484
  }
485
+ /* 医疗病史样式开关:通过 wrapperClassObject 添加类 xhdesc-medical-history */
486
+ .patient-info-descriptions.xhdesc-medical-history {
487
+ /* 移除右侧空白(本模式不需要详情按钮预留空间) */
488
+ .descriptions-container {
489
+ padding-right: 0;
490
+ padding-left: 12px;
491
+ }
492
+
493
+ /* 保持原有的自适应布局样式 */
494
+ .flex-descriptions {
495
+ gap: 4px 16px;
496
+ }
497
+
498
+ .description-item {
499
+ padding: 2px 4px;
500
+ width: 100%;
501
+ align-items: flex-start;
502
+ display: flex;
503
+ flex-direction: column;
504
+ }
505
+
506
+ /* 只修改布局,保持原有字体样式 */
507
+ .label-wrapper {
508
+ font-family: "Source Han Sans";
509
+ font-size: 18px;
510
+ font-weight: 600;
511
+ line-height: 24px;
512
+ text-align: justify;
513
+ letter-spacing: 0em;
514
+ white-space: nowrap;
515
+ margin-right: 8px;
516
+ margin-bottom: 0;
517
+ display: inline;
518
+ }
519
+
520
+ .content-wrapper {
521
+ font-family: "Source Han Sans";
522
+ font-size: 18px;
523
+ font-weight: 400;
524
+ line-height: 24px;
525
+ letter-spacing: 0em;
526
+ margin-left: 0;
527
+ max-width: none;
528
+ overflow: visible;
529
+ text-overflow: initial;
530
+ white-space: normal;
531
+ word-break: break-word;
532
+ display: inline;
533
+ }
534
+
535
+ /* 修复Ant Design描述列表的布局,保持字体样式 */
536
+ :deep(.ant-descriptions-item) {
537
+ display: block !important;
538
+ white-space: nowrap;
539
+ width: 100% !important;
540
+ margin-bottom: 8px;
541
+ margin-right: 0;
542
+ }
543
+
544
+ :deep(.ant-descriptions-item-container) {
545
+ display: inline !important;
546
+ white-space: nowrap;
547
+ width: auto !important;
548
+ align-items: start !important;
549
+ }
550
+
551
+ :deep(.ant-descriptions-item-label) {
552
+ display: inline !important;
553
+ white-space: nowrap !important;
554
+ min-width: auto !important;
555
+ padding-right: 1px !important;
556
+ /* 保持原有字体样式 */
557
+ font-family: "Source Han Sans" !important;
558
+ font-size: 18px !important;
559
+ font-weight: 600 !important;
560
+ line-height: 24px !important;
561
+ text-align: justify !important;
562
+ letter-spacing: 0em !important;
563
+ }
564
+
565
+ :deep(.ant-descriptions-item-content) {
566
+ display: inline !important;
567
+ white-space: normal !important;
568
+ word-break: break-word !important;
569
+ margin-left: 0 !important;
570
+ overflow: visible !important;
571
+ /* 保持原有字体样式 */
572
+ font-family: "Source Han Sans" !important;
573
+ font-size: 18px !important;
574
+ font-weight: 400 !important;
575
+ line-height: 24px !important;
576
+ letter-spacing: 0em !important;
577
+ }
578
+
579
+ :deep(.ant-descriptions-item-colon) {
580
+ margin-right: 2px !important;
581
+ display: inline !important;
582
+ }
583
+
584
+ /* 确保内部元素正确对齐 */
585
+ :deep(.ant-descriptions-item-label .label-wrapper) {
586
+ display: inline !important;
587
+ white-space: nowrap !important;
588
+ width: auto !important;
589
+ gap: 0 !important;
590
+ margin: 0 !important;
591
+ padding: 0 !important;
592
+ line-height: 24px !important;
593
+ }
594
+
595
+ :deep(.ant-descriptions-row) {
596
+ display: block !important;
597
+ white-space: nowrap;
598
+ width: 100%;
599
+ }
600
+
601
+ /* 移除所有可能冲突的布局属性 */
602
+ :deep(.ant-descriptions-item),
603
+ :deep(.ant-descriptions-item-container) {
604
+ float: none !important;
605
+ flex: none !important;
606
+ flex-direction: row !important;
607
+ align-items: flex-start !important;
608
+ }
609
+
610
+ /* 确保表格布局正确 */
611
+ :deep(.ant-descriptions-view) {
612
+ white-space: nowrap;
613
+ table-layout: auto !important;
614
+ }
615
+
616
+ :deep(.ant-descriptions-table) {
617
+ table-layout: auto !important;
618
+ }
619
+ }
482
620
  </style>
@@ -1,203 +1,225 @@
1
- <template>
2
- <div id="beingProcessed">
3
- <x-form-table
4
- title="我的工单"
5
- ref="xFormTable"
6
- :queryParamsName="queryParamsName"
7
- :fixed-query-form="{
8
- users_f_handler_id: currUser.id,
9
- }"
10
- @action="toDetail">
11
- <template #leftButton>
12
- <a-button @click="addApply">
13
- <a-icon type="plus"/>
14
- 发起报建
15
- </a-button>
16
- </template>
17
- </x-form-table>
18
- <a-modal
19
- v-model="applyAddFlag"
20
- :footer="null"
21
- :dialog-style="{ top: '5rem' }"
22
- :z-index="1001"
23
- title="发起报建"
24
- :destroyOnClose="true">
25
- <x-add-native-form ref="xForm" @onSubmit="applySubmit"/>
26
- </a-modal>
27
- <WorkflowDetail
28
- ref="workFlow"
29
- @success="success"
30
- @nextClick="nextClick"
31
- @x-form-item-emit-func="handleFormItemEvent"
32
- >
33
- </WorkflowDetail>
34
- <!-- 地址选择器 -->
35
- <address-select ref="addressSelect" @setAddress="setForm"></address-select>
36
- </div>
37
- </template>
38
-
39
- <script>
40
- import WorkflowDetail from '@vue2-client/pages/WorkflowDetail/WorkflowDetail.vue'
41
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
42
- import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
43
- import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
44
- import { mapState } from 'vuex'
45
- import AddressSelect from '@vue2-client/pages/addressSelect/index.vue'
46
- import XFormGroup from '@vue2-client/base-client/components/common/XFormGroup'
47
-
48
- export default {
49
- name: 'Apply',
50
- components: {
51
- XFormTable,
52
- XAddNativeForm,
53
- WorkflowDetail,
54
- AddressSelect,
55
- XFormGroup,
56
- },
57
- // 透传给子组件的方法(目前XFormTable接了)
58
- provide () {
59
- return {
60
- generalFunction: {
61
- setCancel: this.setCancel,
62
- chargeAdd: this.chargeAdd,
63
- addUser: this.addUser,
64
- editUser: this.editUser,
65
- addContract: this.addContract,
66
- addcharge: this.addcharge,
67
- updateFormData: this.updateFormData,
68
- chargeCancel: this.chargeCancel,
69
- chargeBatchRefund: this.chargeBatchRefund,
70
- }
71
- }
72
- },
73
- data () {
74
- return {
75
- // 查询配置文件名
76
- queryParamsName: 'ApplyProcessCRUD',
77
- // 发起报建弹框控制
78
- applyAddFlag: false,
79
- // 提交加载动画
80
- confirmLoading: false,
81
- refreshFn: null,
82
- chargeVisible: false
83
- }
84
- },
85
- computed: {
86
- ...mapState('account', { currUser: 'user' }),
87
- },
88
- methods: {
89
- addApply () {
90
- console.log('打开了吗')
91
- this.applyAddFlag = true
92
- this.$nextTick(
93
- () => {
94
- getConfigByName('addApplyForm', 'af-apply', (res) => {
95
- this.$refs.xForm.init({
96
- businessType: '新增',
97
- title: '发起报建',
98
- ...res
99
- })
100
- })
101
- }
102
- )
103
- },
104
- applySubmit (formData) {
105
- runLogic('addApply', formData).then(
106
- res => {
107
- this.$message.success('发起报建成功')
108
- this.$refs.xFormTable.refreshTable(true)
109
- this.applyAddFlag = false
110
- }
111
- ).catch(() => {
112
- this.applyAddFlag = false
113
- })
114
- },
115
- success () {
116
- console.log('完工')
117
- },
118
- toDetail (record, id) {
119
- this.$refs.workFlow.init({
120
- workflowId: record.ab_f_workflow_id
121
- })
122
- },
123
- handleFormItemEvent (func, data, value) {
124
- console.log('打印一下:', func, data, value)
125
- if (func === 'selectAddress') {
126
- this.$refs.addressSelect.setFormShow()
127
- }
128
- },
129
- setForm (record) {
130
- this.$refs.workFlow.setFormValue({ address: record.f_address, address_id: record.f_address_id })
131
- },
132
- nextClick ({ form, formStep, workflowId }) {
133
- console.log('success', form, formStep, workflowId)
134
- const data = {
135
- workflowId,
136
- form,
137
- formStep
138
- }
139
- runLogic('applySubmitAfter', data, 'af-apply').then(
140
- res => {
141
- if (res) {
142
- // this.$message.success('提交成功!')
143
- this.$refs.xFormTable.refreshTable(true)
144
- }
145
- }
146
- )
147
- },
148
- // 协议作废
149
- setCancel (record, refreshFn) {
150
- this.$refs.cancelContract.setCancel(record, refreshFn)
151
- },
152
- // 增值收费新增
153
- chargeAdd (refreshFn) {
154
- this.$refs.addCharge.chargeAdd(this.$refs.workFlow.workflowId, refreshFn)
155
- },
156
- // 协议新增
157
- addContract (refreshFn) {
158
- this.$refs.addContract.addContract(this.$refs.workFlow.workflowId, refreshFn)
159
- },
160
- // 新增用户
161
- addUser (refreshFn) {
162
- if (this.$refs.workFlow.$refs.baseInformation.details.f_workflow_define_name != '团购报建流程') {
163
- this.$message.success('只有团购报建流程才可以新增用户信息!')
164
- return
165
- }
166
- this.$refs.addUser.addUser(this.$refs.workFlow.workflowId, refreshFn)
167
- },
168
- // 编辑用户
169
- editUser (record, refreshFn) {
170
- this.$refs.addUser.editUser(record, refreshFn)
171
- },
172
- // 新增收费
173
- addcharge (refreshFn) {
174
- this.$refs.addApplyCharge.addcharge(this.$refs.workFlow.workflowId, refreshFn)
175
- },
176
- // 报装缴费页面初始化
177
- updateFormData (workflowId) {
178
- if (this.$refs.workFlow.$refs.baseInformation.details.f_sub_state == '报装缴费') {
179
- runLogic('getApplyBusinessrecode', { f_workflow_id: workflowId }, 'af-apply').then((res) => {
180
- this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm(res)
181
- })
182
- } else if (this.$refs.workFlow.$refs.baseInformation.details.f_sub_state == '合同签订') {
183
- runLogic('queryAgreementAmount', { workflowId: workflowId }, 'af-apply').then((res) => {
184
- this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm({ add_amount: res[0].f_contract_money })
185
- })
186
- }
187
- },
188
- // 增值收费单个数据的撤销功能
189
- chargeCancel (record, refreshFn) {
190
- this.$refs.cancel.chargeCancel(record, refreshFn)
191
- },
192
- // 批量撤销(退费)
193
- chargeBatchRefund (selectedRowKeys, selectedRows, refreshFn) {
194
- if (selectedRowKeys.length === 0 || selectedRows.length === 0) {
195
- this.$message.warn('请选择要退费的记录', 5)
196
- return
197
- }
198
- const workflowId = this.$refs.workFlow.workflowId
199
- this.$refs.batchRefund.selectRow(selectedRowKeys, selectedRows, refreshFn, workflowId)
200
- }
201
- }
202
- }
203
- </script>
1
+ <template>
2
+ <div id="beingProcessed">
3
+ <x-form-table
4
+ title="我的工单"
5
+ ref="xFormTable"
6
+ :queryParamsName="queryParamsName"
7
+ :fixed-query-form="{
8
+ users_f_handler_id: currUser.id,
9
+ }"
10
+ @action="toDetail">
11
+ <template #leftButton>
12
+ <a-button @click="addApply">
13
+ <a-icon type="plus"/>
14
+ 发起报建
15
+ </a-button>
16
+ </template>
17
+ </x-form-table>
18
+ <a-modal
19
+ v-model="applyAddFlag"
20
+ :footer="null"
21
+ :dialog-style="{ top: '5rem' }"
22
+ :z-index="1001"
23
+ title="发起报建"
24
+ :destroyOnClose="true">
25
+ <x-add-native-form ref="xForm" @onSubmit="applySubmit"/>
26
+ </a-modal>
27
+ <WorkflowDetail
28
+ ref="workFlow"
29
+ @success="success"
30
+ @nextClick="nextClick"
31
+ @x-form-item-emit-func="handleFormItemEvent"
32
+ >
33
+ </WorkflowDetail>
34
+ <!-- 地址选择器 -->
35
+ <address-select ref="addressSelect" @setAddress="setForm"></address-select>
36
+ <!-- 协议新增功能 -->
37
+ <add-contract
38
+ ref="addContract"
39
+ table="报建流程"
40
+ @upFormData="upFormData"
41
+ ></add-contract>
42
+ <!-- 协议作废功能 -->
43
+ <cancel-contract ref="cancelContract"></cancel-contract>
44
+ <!-- 增值收费新增 -->
45
+ <add-charge ref="addCharge"></add-charge>
46
+ <!-- 新增/编辑 用户信息 -->
47
+ <add-user ref="addUser"></add-user>
48
+ <!-- 新增 收费信息 -->
49
+ <add-apply-charge ref="addApplyCharge"></add-apply-charge>
50
+ <!-- 增值收费撤销 -->
51
+ <cancel ref="cancel"></cancel>
52
+ <!-- 增值收费批量撤销 -->
53
+ <batch-refund ref="batchRefund"></batch-refund>
54
+ </div>
55
+ </template>
56
+
57
+ <script>
58
+ import WorkflowDetail from '@vue2-client/pages/WorkflowDetail/WorkflowDetail.vue'
59
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
60
+ import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
61
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
62
+ import { mapState } from 'vuex'
63
+ import AddressSelect from '@vue2-client/pages/addressSelect/index.vue'
64
+ import XFormGroup from '@vue2-client/base-client/components/common/XFormGroup'
65
+
66
+ export default {
67
+ name: 'Apply',
68
+ components: {
69
+ XFormTable,
70
+ XAddNativeForm,
71
+ WorkflowDetail,
72
+ AddressSelect,
73
+ XFormGroup,
74
+ },
75
+ // 透传给子组件的方法(目前XFormTable接了)
76
+ provide () {
77
+ return {
78
+ generalFunction: {
79
+ setCancel: this.setCancel,
80
+ chargeAdd: this.chargeAdd,
81
+ addUser: this.addUser,
82
+ editUser: this.editUser,
83
+ addContract: this.addContract,
84
+ addcharge: this.addcharge,
85
+ updateFormData: this.updateFormData,
86
+ chargeCancel: this.chargeCancel,
87
+ chargeBatchRefund: this.chargeBatchRefund,
88
+ updateContractFormData: this.updateContractFormData,
89
+ }
90
+ }
91
+ },
92
+ data () {
93
+ return {
94
+ // 查询配置文件名
95
+ queryParamsName: 'ApplyProcessCRUD',
96
+ // 发起报建弹框控制
97
+ applyAddFlag: false,
98
+ // 提交加载动画
99
+ confirmLoading: false,
100
+ refreshFn: null,
101
+ chargeVisible: false
102
+ }
103
+ },
104
+ computed: {
105
+ ...mapState('account', { currUser: 'user' }),
106
+ },
107
+ methods: {
108
+ addApply () {
109
+ console.log('打开了吗')
110
+ this.applyAddFlag = true
111
+ this.$nextTick(
112
+ () => {
113
+ getConfigByName('addApplyForm', 'af-apply', (res) => {
114
+ this.$refs.xForm.init({
115
+ businessType: '新增',
116
+ title: '发起报建',
117
+ ...res
118
+ })
119
+ })
120
+ }
121
+ )
122
+ },
123
+ applySubmit (formData) {
124
+ runLogic('addApply', formData).then(
125
+ res => {
126
+ this.$message.success('发起报建成功')
127
+ this.$refs.xFormTable.refreshTable(true)
128
+ this.applyAddFlag = false
129
+ }
130
+ ).catch(() => {
131
+ this.applyAddFlag = false
132
+ })
133
+ },
134
+ success () {
135
+ console.log('完工')
136
+ },
137
+ toDetail (record, id) {
138
+ this.$refs.workFlow.init({
139
+ workflowId: record.ab_f_workflow_id,
140
+ stepId: record.ws_f_step_id
141
+ })
142
+ },
143
+ handleFormItemEvent (func, data, value) {
144
+ console.log('打印一下:', func, data, value)
145
+ if (func === 'selectAddress') {
146
+ this.$refs.addressSelect.setFormShow()
147
+ }
148
+ },
149
+ setForm (record) {
150
+ this.$refs.workFlow.setFormValue({ address: record.f_address, address_id: record.f_address_id })
151
+ },
152
+ nextClick ({ form, formStep, workflowId }) {
153
+ console.log('success', form, formStep, workflowId)
154
+ // const data = {
155
+ // workflowId,
156
+ // form,
157
+ // formStep
158
+ // }
159
+ // runLogic('applySubmitAfter', data, 'af-apply').then(
160
+ // res => {
161
+ // if (res) {
162
+ // // this.$message.success('提交成功!')
163
+ // this.$refs.xFormTable.refreshTable(true)
164
+ // }
165
+ // }
166
+ // )
167
+ },
168
+ // 协议作废
169
+ setCancel (record, refreshFn) {
170
+ this.$refs.cancelContract.setCancel(record, refreshFn)
171
+ },
172
+ // 增值收费新增
173
+ chargeAdd (refreshFn) {
174
+ this.$refs.addCharge.chargeAdd(this.$refs.workFlow.workflowId, refreshFn)
175
+ },
176
+ // 协议新增
177
+ addContract (refreshFn) {
178
+ this.$refs.addContract.addContract(this.$refs.workFlow.workflowId, refreshFn)
179
+ },
180
+ // 新增用户
181
+ addUser (refreshFn) {
182
+ if (this.$refs.workFlow.$refs.baseInformation.details.f_workflow_define_name != '团购报建流程') {
183
+ this.$message.success('只有团购报建流程才可以新增用户信息!')
184
+ return
185
+ }
186
+ this.$refs.addUser.addUser(this.$refs.workFlow.workflowId, refreshFn)
187
+ },
188
+ // 编辑用户
189
+ editUser (record, refreshFn, showForm) {
190
+ this.$refs.addUser.editUser(record, refreshFn, showForm)
191
+ },
192
+ // 新增收费
193
+ addcharge (refreshFn) {
194
+ this.$refs.addApplyCharge.addcharge(this.$refs.workFlow.workflowId, refreshFn)
195
+ },
196
+ // 报装缴费页面初始化
197
+ updateFormData (workflowId) {
198
+ runLogic('getApplyBusinessrecode', { f_workflow_id: workflowId }, 'af-apply').then((res) => {
199
+ this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm(res)
200
+ })
201
+ },
202
+ // 合同签订页面初始化
203
+ updateContractFormData (param) {
204
+ this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm(param)
205
+ },
206
+ // 补充协议回更表单数据
207
+ upFormData (record) {
208
+ this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm(record)
209
+ },
210
+ // 增值收费单个数据的撤销功能
211
+ chargeCancel (record, refreshFn) {
212
+ this.$refs.cancel.chargeCancel(record, refreshFn)
213
+ },
214
+ // 批量撤销(退费)
215
+ chargeBatchRefund (selectedRowKeys, selectedRows, refreshFn) {
216
+ if (selectedRowKeys.length === 0 || selectedRows.length === 0) {
217
+ this.$message.warn('请选择要退费的记录', 5)
218
+ return
219
+ }
220
+ const workflowId = this.$refs.workFlow.workflowId
221
+ this.$refs.batchRefund.selectRow(selectedRowKeys, selectedRows, refreshFn, workflowId)
222
+ }
223
+ }
224
+ }
225
+ </script>
@@ -60,15 +60,12 @@ path: 'example',
60
60
  // component: () => import('@vue2-client/base-client/components/common/XAddNativeForm/demo.vue'),
61
61
  // component: () => import('@vue2-client/base-client/components/common/XFormGroup/demo.vue'),
62
62
  // component: () => import('@vue2-client/base-client/components/common/XReport/XReportDemo.vue'),
63
- // component: () => import('@vue2-client/base-client/components/common/HIS/demo.vue'),
64
- // component: () => import('@vue2-client/base-client/components/common/XFormTable/demo.vue'),
63
+ component: () => import('@vue2-client/base-client/components/common/HIS/demo.vue'),
65
64
  // component: () => import('@vue2-client/base-client/components/common/XDatePicker/demo.vue'),
66
65
  // component: () => import('@vue2-client/base-client/components/common/XTab/XTabDemo.vue'),
67
66
  // component: () => import('@vue2-client/base-client/components/common/XRate/demo.vue'),
68
- component: () => import('@vue2-client/base-client/components/common/XReport/XReportHospitalizationDemo.vue'),
69
67
  // component: () => import('@vue2-client/base-client/components/common/XForm/demo.vue'),
70
68
  // component: () => import('@vue2-client/base-client/components/his/XTimeSelect/XTimeSelectDemo.vue'),
71
- // component: () => import('@vue2-client/base-client/components/his/XCharge/XChargeDemo.vue'),
72
69
  // component: () => import('@vue2-client/base-client/components/his/XImportExcelButton/XFrontImportExcelDemo.vue'),
73
70
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
74
71
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
@@ -1,45 +0,0 @@
1
- <template>
2
- <div id="xreport-hosp-demo">
3
- <a-space style="margin-bottom: 12px;">
4
- <a-button type="primary" @click="doInit">手动初始化</a-button>
5
- </a-space>
6
- <XReport
7
- ref="reportRef"
8
- :edit-mode="true"
9
- :show-save-button="true"
10
- :show-img-in-cell="false"
11
- :use-oss-for-img="false"
12
- server-name="af-his"
13
- @updateImg="onUpdateImg"/>
14
- </div>
15
- </template>
16
-
17
- <script setup>
18
- import { ref } from 'vue'
19
- import XReport from '@vue2-client/base-client/components/common/XReport'
20
-
21
- const reportRef = ref(null)
22
-
23
- const payload = {
24
- arr: [
25
- { BQ: '病房区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
26
- { BQ: '感染科', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
27
- { BQ: '骨科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
28
- { BQ: '呼吸科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
29
- { BQ: '急症科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
30
- { BQ: '内科二病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 }
31
- ]
32
- }
33
-
34
- const doInit = async () => {
35
- if (!reportRef.value || !reportRef.value.init) return
36
- await reportRef.value.init({
37
- configName: 'hospitalizationStatsReport',
38
- configData: payload
39
- })
40
- }
41
-
42
- const onUpdateImg = data => {
43
- console.warn('updateImg:', data)
44
- }
45
- </script>
@@ -1,149 +0,0 @@
1
- // 测试配置 - 用于演示混合支付功能
2
- export const testChargeConfig = {
3
- "amountFields": [
4
- {
5
- "field": 'f_amount',
6
- "disabled": false,
7
- "label": '费用总额'
8
- },
9
- {
10
- "field": 'f_insurance_amount',
11
- "disabled": true,
12
- "label": '医保支付'
13
- },
14
- {
15
- "field": 'f_self_amount',
16
- "disabled": true,
17
- "label": '自费金额'
18
- },
19
- {
20
- "field": 'out_of_pocket_amount',
21
- "disabled": true,
22
- "label": '自付金额'
23
- },
24
- {
25
- "field": 'biscount_amount',
26
- "disabled": true,
27
- "label": '折扣金额'
28
- },
29
- {
30
- "field": 'billing_amount',
31
- "disabled": true,
32
- "label": '记账金额'
33
- }
34
- ],
35
- "paymentMethods": [
36
- {
37
- "key": '医保卡',
38
- "label": '医保卡'
39
- },
40
- {
41
- "key": '微信/支付宝',
42
- "label": '微信/支付宝'
43
- },
44
- {
45
- "key": '银行卡',
46
- "label": '银行卡'
47
- },
48
- {
49
- "key": '现金',
50
- "label": '现金'
51
- }
52
- ],
53
- "bottomFields": [
54
- {
55
- "field": 'f_balance',
56
- "label": '账户余额',
57
- "disabled": false
58
- },
59
- {
60
- "field": 'received',
61
- "label": '实收',
62
- "disabled": false
63
- },
64
- {
65
- "field": 'change',
66
- "label": '找零',
67
- "disabled": false
68
- }
69
- ],
70
- "actionButtons": [
71
- {
72
- "key": 'charge',
73
- "label": '收费',
74
- "icon": 'check'
75
- },
76
- {
77
- "key": 'refund',
78
- "label": '退费',
79
- "icon": 'undo'
80
- },
81
- {
82
- "key": 'print',
83
- "label": '打印',
84
- "icon": 'printer'
85
- }
86
- ],
87
- "enableMixedPayment": true, // 启用混合支付
88
- // 可配置事件名,参考 fronImport 风格
89
- "eventNames": {
90
- "method": 'method',
91
- "methods": 'methods',
92
- "totalPaymentAmount": 'totalPaymentAmount',
93
- "action": 'action'
94
- },
95
- "dataSourceConfig": 'testChargeLogic'
96
- }
97
-
98
- // 单选模式测试配置
99
- export const testSingleChargeConfig = {
100
- "amountFields": [
101
- {
102
- "field": 'f_amount',
103
- "disabled": false,
104
- "label": '费用总额'
105
- },
106
- {
107
- "field": 'f_insurance_amount',
108
- "disabled": true,
109
- "label": '医保支付'
110
- }
111
- ],
112
- "paymentMethods": [
113
- {
114
- "key": '医保卡',
115
- "label": '医保卡'
116
- },
117
- {
118
- "key": '现金',
119
- "label": '现金'
120
- }
121
- ],
122
- "bottomFields": [
123
- {
124
- "field": 'received',
125
- "label": '实收',
126
- "disabled": false
127
- },
128
- {
129
- "field": 'change',
130
- "label": '找零',
131
- "disabled": false
132
- }
133
- ],
134
- "actionButtons": [
135
- {
136
- "key": 'charge',
137
- "label": '收费',
138
- "icon": 'check'
139
- }
140
- ],
141
- "enableMixedPayment": false, // 禁用混合支付(单选模式)
142
- "eventNames": {
143
- "method": 'method',
144
- "methods": 'methods',
145
- "totalPaymentAmount": 'totalPaymentAmount',
146
- "action": 'action'
147
- },
148
- "dataSourceConfig": 'testChargeLogic'
149
- }