vue2-client 1.16.48 → 1.16.49

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/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145434.vue +641 -0
  2. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145453.vue +641 -0
  3. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145610.vue +647 -0
  4. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145629.vue +647 -0
  5. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145901.vue +645 -0
  6. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145907.vue +651 -0
  7. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145920.vue +651 -0
  8. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926150047.vue +651 -0
  9. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926151820.vue +646 -0
  10. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926151827.vue +646 -0
  11. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152115.vue +646 -0
  12. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152212.vue +653 -0
  13. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152215.vue +653 -0
  14. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152337.vue +657 -0
  15. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152341.vue +657 -0
  16. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152826.vue +657 -0
  17. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152828.vue +646 -0
  18. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153121.vue +654 -0
  19. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153242.vue +654 -0
  20. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153318.vue +646 -0
  21. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153415.vue +646 -0
  22. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153435.vue +655 -0
  23. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153606.vue +655 -0
  24. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153653.vue +655 -0
  25. package/package.json +1 -1
  26. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +1178 -1178
  27. package/src/base-client/components/common/XDataCard/XDataCard.vue +44 -18
  28. package/src/base-client/components/common/XDataCard/test.vue +367 -0
  29. package/src/pages/WorkflowDetail/WorkFlowDemo3.vue +225 -203
  30. package/src/router/async/router.map.js +1 -4
  31. package/src/services/api/common.js +2 -0
  32. package/src/assets/img/paymentMethod/icon1.png +0 -0
  33. package/src/assets/img/paymentMethod/icon2.png +0 -0
  34. package/src/assets/img/paymentMethod/icon3.png +0 -0
  35. package/src/assets/img/paymentMethod/icon4.png +0 -0
  36. package/src/assets/img/paymentMethod/icon5.png +0 -0
  37. package/src/assets/img/paymentMethod/icon6.png +0 -0
  38. package/src/base-client/components/common/XReport/XReportHospitalizationDemo.vue +0 -45
  39. package/src/base-client/components/his/XCharge/testConfig.js +0 -149
@@ -6,6 +6,7 @@
6
6
  :key="'card' + itemIndex"
7
7
  class="data-card"
8
8
  :class="{ 'card-clicked': card.isClicked }"
9
+ :headStyle="{ backgroundColor: '#f9f9f9' }"
9
10
  >
10
11
  <div
11
12
  v-if="config && card[config.ribbon]"
@@ -56,7 +57,7 @@
56
57
  <div class="progress-done" :style="'width:' + card[item.key] * 100 + '%;backgroundColor: ' + determineRatioColor(card[item.key] * 100)"></div>
57
58
  </div>
58
59
  </div>
59
- <div class="progress-num">{{ card[item.key] * 100 }}%</div>
60
+ <a-progress :percent="card[item.key]" :stroke-color="{ '0%': '#108ee9', '100%': '#87d068' }" strokeWidth="10" :style="{ width: '95%' }" />
60
61
  </template>
61
62
  <template v-else-if="item.type === 'custom' && tableColumns">
62
63
  <!-- 根据 tableColumns 显示自定义内容 -->
@@ -75,7 +76,7 @@
75
76
  </span>
76
77
  </template>
77
78
  <template v-else>
78
- <span class="body-item-value">{{ card[item.key] }}</span>
79
+ <span class="body-item-value" style="float: right;">{{ card[item.key] }}</span>
79
80
  </template>
80
81
  </div>
81
82
  <a-divider
@@ -87,23 +88,19 @@
87
88
  </div>
88
89
  <!-- 下方按钮 -->
89
90
  <template #actions>
90
- <a-row align="middle" class="custom-actions" v-if="config && config.footer && config.footer.length > 0">
91
+ <div class="custom-actions" v-if="config && config.footer && config.footer.length > 0">
91
92
  <template v-for="(item, footerIndex) in config.footer">
92
- <a-col :key="'footer_' + footerIndex" class="footer-item" :span="11" @click="clickFooter(card, item.emit, itemIndex)">
93
- <span>
94
- <a-icon :type="item.icon" class="footer-icon" />
95
- <span>{{ item.label }}</span>
96
- </span>
97
- </a-col>
98
- <a-col
93
+ <div :key="'footer_' + footerIndex" class="footer-item" @click="clickFooter(card, item.emit, itemIndex)">
94
+ <a-icon :type="item.icon" class="footer-icon" />
95
+ <span>{{ item.label }}</span>
96
+ </div>
97
+ <a-divider
99
98
  v-if="footerIndex !== config.footer.length - 1"
100
- :span="1"
101
99
  :key="'footer_' + footerIndex + 'after'"
102
- class="footer-item-split">
103
- |
104
- </a-col>
100
+ type="vertical"
101
+ class="footer-item-split" />
105
102
  </template>
106
- </a-row>
103
+ </div>
107
104
  </template>
108
105
  </a-card>
109
106
  </template>
@@ -428,16 +425,25 @@ export default {
428
425
  overflow-x: hidden;
429
426
  max-height: 85vh;
430
427
  .data-card {
431
- width: 100%;
432
- max-width: 300px;
428
+ flex: 0 0 20%;
429
+ max-width: 20%;
430
+ box-sizing: border-box;
433
431
  border: 2px solid rgb(244,244,244);
434
432
  border-radius: 5px;
435
- margin: 2px;
433
+ margin: 0;
436
434
  overflow: hidden;
437
435
 
438
436
  ::v-deep .ant-card-body {
439
437
  padding: 15px !important; // 使用 !important 确保样式覆盖
440
438
  }
439
+ ::v-deep .ant-card-head {
440
+ padding: 0 8px !important; // 收紧左右内边距,贴近边框
441
+ }
442
+ ::v-deep .ant-card-head-title {
443
+ padding: 10px 0 !important; // 仅上下留白
444
+ margin: 0 !important;
445
+ }
446
+ ::v-deep .ant-card-head-wrapper { padding: 0 !important; }
441
447
 
442
448
  .header {
443
449
  width: 100%;
@@ -526,6 +532,7 @@ export default {
526
532
  display: flex;
527
533
  align-items: center;
528
534
  gap: 12px;
535
+ padding-left: 0; // 取消额外左缩进,进一步贴边
529
536
 
530
537
  &:hover {
531
538
  cursor: pointer;
@@ -568,6 +575,9 @@ export default {
568
575
  margin-left: 6px;
569
576
  color: #808080;
570
577
  }
578
+ .title-name {
579
+ font-weight: bold;
580
+ }
571
581
  .title-title3 {
572
582
  color: #808080;
573
583
  }
@@ -599,6 +609,10 @@ export default {
599
609
  }
600
610
 
601
611
  .custom-actions {
612
+ display: flex;
613
+ align-items: center;
614
+ justify-content: space-between;
615
+ width: 100%;
602
616
  .footer-icon {
603
617
  margin-right: 5px;
604
618
  }
@@ -610,12 +624,24 @@ export default {
610
624
  .footer-item {
611
625
  color: rgba(117, 117, 117, 0.8);
612
626
  font-size: 1em;
627
+ white-space: nowrap;
628
+ display: inline-flex;
629
+ align-items: center;
630
+ justify-content: center;
631
+ flex: 1 1 0;
632
+ min-width: 0;
613
633
  }
614
634
 
615
635
  .footer-item:hover {
616
636
  color: rgb( 24,144,255 );
617
637
  cursor: pointer;
618
638
  }
639
+ :deep(.ant-divider-vertical) {
640
+ height: 24px;
641
+ border-left: 1px solid rgba(220, 220, 220, 0.59);
642
+ top: 0;
643
+ margin: 0 8px;
644
+ }
619
645
  }
620
646
  }
621
647
 
@@ -0,0 +1,367 @@
1
+ <template>
2
+ <a-card>
3
+ <div>
4
+ <XFormTable
5
+ :custom-add="true"
6
+ :customEdit="true"
7
+ @add="handleAdd"
8
+ @edit="change"
9
+ title="计划管理"
10
+ :queryParamsName="queryParamsName"
11
+ :fixedQueryForm="{ f_operator_id: this.currUser.id }"
12
+ service-name="af-safecheck"
13
+ ref="x_form_table"
14
+ @plan="userEdit"
15
+ @planIssued="planIssued"
16
+ />
17
+ </div>
18
+ <!-- 新增修改弹出框-->
19
+ <a-modal
20
+ :visible="visible"
21
+ :bodyStyle="{height:'70vh'}"
22
+ title="计划管理"
23
+ :confirm-loading="confirmLoading"
24
+ @ok="submitForm"
25
+ @cancel="handleCancel"
26
+ width="85vw">
27
+ <x-form-group ref="x_form_group"></x-form-group>
28
+ </a-modal>
29
+ <!-- 修改安检册抽屉 -->
30
+ <a-drawer
31
+ :title="drawerTitle"
32
+ width="80%"
33
+ :destroyOnClose="true"
34
+ @ok="handleDrawerOk"
35
+ @close="handleDrawerOk"
36
+ :zIndex="999"
37
+ :visible="showUserEditDrawer">
38
+ <XFormTable
39
+ :one-of-two-x-form-table-in-one-row="true"
40
+ service-name="af-safecheck"
41
+ :query-params-name="drawerQueryParamName"
42
+ :customAdd="true"
43
+ :customDelete="true"
44
+ @add="activeInnerEditor"
45
+ @del="deletePlanUser"
46
+ :fixed-query-form="XFormTableLFixedQueryForm"
47
+ ref="XFormTableL"/>
48
+ </a-drawer>
49
+ <!-- 用户列表弹窗 -->
50
+ <a-modal
51
+ :visible="showUserTableModal"
52
+ title="用户列表"
53
+ width="80vw"
54
+ :bodyStyle="{height:'70vh'}"
55
+ @ok="unregisterAdd"
56
+ @cancel="closeUserTableModal"
57
+ :destroyOnClose="true"
58
+ :zIndex="1000"
59
+ >
60
+ <XFormTable
61
+ :one-of-two-x-form-table-in-one-row="true"
62
+ :fixed-query-form="fixedQueryForm"
63
+ service-name="af-safecheck"
64
+ :query-params-name="XFormTableRQueryParamsName"
65
+ @afterQuery="userModalAfterQuery"
66
+ ref="XFormTableUserModal"
67
+ >
68
+ <template #button>
69
+ <div style="display: flex; align-items: center">
70
+ <a-select
71
+ :value="selectUserMode"
72
+ style="width: 120px"
73
+ :get-popup-container="triggerNode => triggerNode.parentNode"
74
+ @change="handleSelectUserModeChange"
75
+ >
76
+ <a-select-option value="selected">
77
+ 勾选用户
78
+ </a-select-option>
79
+ <a-select-option value="eligible">
80
+ 条件选择
81
+ </a-select-option>
82
+ </a-select>
83
+ </div>
84
+ </template>
85
+ </XFormTable>
86
+ </a-modal>
87
+ </a-card>
88
+ </template>
89
+
90
+ <script>
91
+ import XFormTable from '../XFormTable/XFormTable.vue'
92
+ import { mapState } from 'vuex'
93
+ import { logicPost, runLogic, getConfigByName } from '@vue2-client/services/api/common'
94
+ import { post } from '@vue2-client/services/api/restTools'
95
+ import XFormGroup from '../XFormGroup/XFormGroup.vue'
96
+ export default {
97
+ name: 'PlanManagement',
98
+ components: {
99
+ XFormTable,
100
+ XFormGroup,
101
+ },
102
+ data () {
103
+ return {
104
+ // 修改选中的数据
105
+ changeNum: 0,
106
+ // 是修改还是添加
107
+ addOrEdit: '添加',
108
+ // 是否显示加载等待转圈圈
109
+ confirmLoading: false,
110
+ // 是否弹出添加框
111
+ visible: false,
112
+ // 查询配置文件名
113
+ queryParamsName: 'checkPlanListCRUD',
114
+ // 控制新增弹框渲染
115
+ showAddMenu: true,
116
+ drawerTitle: '',
117
+ showUserEditDrawer: false,
118
+ // 新增:控制用户表格弹窗显示
119
+ showUserTableModal: false,
120
+ // 计划内调整
121
+ XFormTableLFixedQueryForm: {},
122
+ XFormTableRQueryParamsName: 'checkPlanUserDetailCRUD',
123
+ // 所有安检员
124
+ allCheckers: [],
125
+ // 未注册小区 or 未注册用户
126
+ unregisterType: 'user',
127
+ fixedQueryForm: {},
128
+ // XFormTable选择的计划ID
129
+ editingPlanId: undefined,
130
+ drawerQueryParamName: 'planItemCRUD',
131
+ // 选择用户模式(selected/eligible)
132
+ selectUserMode: 'selected',
133
+ userModalConditionParams: {}
134
+ }
135
+ },
136
+ methods: {
137
+ // 提交新增修改表单
138
+ submitForm () {
139
+ this.confirmLoading = true
140
+ this.$refs.x_form_group.onSubmit().then(res => {
141
+ if (this.addOrEdit === '修改') {
142
+ res.checkListDetail.id = this.$refs.x_form_table.table_selectedRows[0].c_id
143
+ }
144
+ const detail = {
145
+ ...res.checkListDetail,
146
+ // f_create_time: moment(),
147
+ f_operator: this.currUser.username,
148
+ f_operator_id: this.currUser.id,
149
+ f_filiale_id: this.currUser.orgid,
150
+ f_filiale: this.currUser.orgs,
151
+ f_plan_type: '专项计划',
152
+ }
153
+ const data = {
154
+ type: this.addOrEdit,
155
+ checkListDetail: detail,
156
+ checkerList: res.checkerList
157
+ }
158
+ post('/api/af-safecheck/logic/createCheckList', data, null).then(() => {
159
+ this.$message.success(`操作成功!`)
160
+ this.$refs.x_form_table.refreshTable(false)
161
+ this.visible = false
162
+ }).catch(() => {
163
+ this.$message.error(`操作失败!`)
164
+ })
165
+ }).finally(
166
+ this.confirmLoading = false
167
+ )
168
+ },
169
+ // 取消提交表单
170
+ handleCancel () {
171
+ this.visible = false
172
+ },
173
+ // 修改表单内容
174
+ change () {
175
+ post('/api/af-safecheck/logic/queryPlanList', { id: this.$refs.x_form_table.table_selectedRows[0].c_id }, null).then(dataRes => {
176
+ getConfigByName('CreateCheckPlanFromGroup', 'af-safecheck', (res) => {
177
+ this.visible = true
178
+ this.addOrEdit = '修改'
179
+ this.$nextTick(() => {
180
+ this.$refs.x_form_group.init({
181
+ ...res,
182
+ serviceName: 'af-safecheck',
183
+ modifyModelData: dataRes,
184
+ showLeftTab: true
185
+ })
186
+ })
187
+ })
188
+ }).catch(() => {
189
+ this.$message.success(`操作失败!`)
190
+ })
191
+ },
192
+ closeUserTableModal () {
193
+ this.showUserTableModal = false
194
+ this.selectUserMode = 'selected'
195
+ },
196
+ userModalAfterQuery (res, conditionParams) {
197
+ this.userModalConditionParams = conditionParams
198
+ },
199
+ unregisterAdd () {
200
+ let selectedRows = []
201
+ if (this.selectUserMode === 'selected') {
202
+ // 获取选择的数据
203
+ if (this.$refs.XFormTableUserModal.table_selectedRows.length === 0) {
204
+ return this.$message.error('请选择数据后再进行操作!')
205
+ }
206
+ selectedRows = this.$refs.XFormTableUserModal.table_selectedRows
207
+ } else {
208
+ // 查询条件查询数据
209
+ }
210
+ const rows = []
211
+ selectedRows.forEach(item => {
212
+ rows.push(item.ui_f_userinfo_id)
213
+ })
214
+ logicPost('addAreaAndUserToPlan', {
215
+ selectType: this.selectUserMode,
216
+ userModalConditionParams: {
217
+ querySummary: false,
218
+ pageNo: 1,
219
+ pageSize: -1,
220
+ conditionParams: this.userModalConditionParams,
221
+ queryParamsName: 'checkPlanUserDetailCRUD',
222
+ },
223
+ checkPlanId: this.editingPlanId,
224
+ rows: rows,
225
+ type: this.unregisterType,
226
+ filialeid: this.currUser.orgid
227
+ }).then(res => {
228
+ if (res.code === 200) {
229
+ this.$message.success(`添加成功,本次操作添加用户数 ${res.data.successCon}`)
230
+ this.$refs.XFormTableL.refreshTable()
231
+ this.$refs.x_form_table.refreshTable()
232
+ this.closeUserTableModal()
233
+ } else {
234
+ this.$message.error('给当前计划添加数据失败!')
235
+ }
236
+ }).catch((err) => {
237
+ this.$message.error('请求失败,请稍后再试!')
238
+ console.error(err)
239
+ })
240
+ },
241
+ // 新增
242
+ activeInnerEditor () {
243
+ this.fixedQueryForm = {
244
+ ui_f_filialeid: this.currUser.orgid,
245
+ f_plan_id: this.editingPlanId
246
+ }
247
+ this.showUserTableModal = true
248
+ },
249
+ deletePlanUser (data, callback) {
250
+ for (let i = 0; i < data.length; i++) {
251
+ if (data[i].cpi_f_state === '已检') {
252
+ this.$message.error('已检用户不能删除!')
253
+ callback()
254
+ return
255
+ }
256
+ }
257
+ runLogic('deletePlanUser', {
258
+ deleteUser: data,
259
+ checkPlanId: this.editingPlanId
260
+ }).then(() => {
261
+ callback()
262
+ this.$message.success('删除成功')
263
+ this.$refs.XFormTableL.refreshTable()
264
+ this.$refs.x_form_table.refreshTable()
265
+ }).catch(() => {
266
+ this.$message.error('删除失败')
267
+ })
268
+ },
269
+ // 点击新增
270
+ handleAdd () {
271
+ this.visible = true
272
+ this.addOrEdit = '添加'
273
+ getConfigByName('CreateCheckPlanFromGroup', 'af-safecheck', (res) => {
274
+ this.$refs.x_form_group.init({
275
+ ...res,
276
+ serviceName: 'af-safecheck',
277
+ showLeftTab: true
278
+ })
279
+ })
280
+ },
281
+ // 计划详情
282
+ userEdit (data) {
283
+ this.drawerQueryParamName = 'planItemCRUD'
284
+ if (data.c_f_issued === '是' && data.c_f_plan_type !== '专项计划') {
285
+ this.drawerQueryParamName = 'issuePlanItemCRUD'
286
+ }
287
+ this.drawerTitle = '计划名称:' + data.c_f_plan_name
288
+ this.editingPlanId = data.c_id
289
+ this.XFormTableLFixedQueryForm = { cpi_f_plan_id: data.c_id }
290
+ this.showUserEditDrawer = true
291
+ },
292
+ // 下发计划
293
+ planIssued (data) {
294
+ logicPost('planIssued', {
295
+ id: data.c_id,
296
+ issueUserName: this.currUser.name,
297
+ issueUserId: this.currUser.id
298
+ }).then(() => {
299
+ this.$message.success('下发成功')
300
+ this.$refs.x_form_table.refresh()
301
+ })
302
+ },
303
+ // 关闭抽屉
304
+ handleDrawerOk () {
305
+ this.showUserEditDrawer = false
306
+ },
307
+ // 处理用户选择模式变化
308
+ handleSelectUserModeChange (value) {
309
+ if (value === 'eligible') {
310
+ // 如果当前有选中的用户数据,弹出确认提示
311
+ if (this.$refs.XFormTableUserModal && this.$refs.XFormTableUserModal.table_selectedRows.length > 0) {
312
+ this.$confirm({
313
+ title: '提示',
314
+ content: '选中【条件选择】将清空你勾选的用户数据',
315
+ onOk: () => {
316
+ // 确认后更新下拉菜单值
317
+ this.selectUserMode = 'eligible'
318
+ // 清空数据, 并且禁用选择
319
+ this.$refs.XFormTableUserModal.clearRowKeys()
320
+ this.$refs.XFormTableUserModal.$refs.xTable.selectRowMode = 'disabled'
321
+ },
322
+ onCancel: () => {
323
+ // 取消时恢复原来的值
324
+ this.selectUserMode = 'selected'
325
+ },
326
+ zIndex: 2000
327
+ })
328
+ } else {
329
+ // 没有选中数据时直接更新
330
+ this.selectUserMode = 'eligible'
331
+ // 清空数据, 并且禁用选择
332
+ this.$refs.XFormTableUserModal.clearRowKeys()
333
+ this.$refs.XFormTableUserModal.$refs.xTable.selectRowMode = 'disabled'
334
+ }
335
+ } else {
336
+ // 选择"勾选用户"时直接更新
337
+ this.selectUserMode = value
338
+ // 启用选择
339
+ this.$refs.XFormTableUserModal.$refs.xTable.selectRowMode = 'listView'
340
+ }
341
+ },
342
+ },
343
+ mounted () {
344
+ // 获取当前组织ID
345
+ // 获取所有安检员,用于下拉框
346
+ logicPost('getAllCheckerByOrgId', { orgId: this.currUser.orgid }).then(res => {
347
+ res.forEach(checker => {
348
+ this.allCheckers.push({
349
+ id: checker.id,
350
+ name: checker.ename
351
+ })
352
+ })
353
+ })
354
+ // 获取所有安检模板名,用于下拉框
355
+ logicPost('getAllCheckTemplate').then(res => {
356
+ this.allCheckTemplate = res
357
+ })
358
+ },
359
+ computed: {
360
+ ...mapState('account', { currUser: 'user' }),
361
+ }
362
+ }
363
+
364
+ </script>
365
+
366
+ <style scoped>
367
+ </style>