vue2-client 1.15.67 → 1.15.70

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 (138) hide show
  1. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +0 -10
  2. package/package.json +1 -1
  3. package/src/base-client/components/common/XFormTable/demo.vue +2 -2
  4. package/src/base-client/components/common/XTable/XTableWrapper.vue +1 -1
  5. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +43 -51
  6. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  7. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  8. package/src/router/async/router.map.js +2 -2
  9. package/src/utils/EncryptUtil.js +87 -0
  10. package/src/utils/request.js +12 -0
  11. package/vue.config.js +1 -1
  12. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  13. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  14. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  15. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  16. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  17. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +0 -207
  18. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +0 -211
  19. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +0 -212
  20. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +0 -212
  21. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  22. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  23. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  24. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  25. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  26. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  27. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +0 -731
  28. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +0 -748
  29. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +0 -748
  30. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +0 -1071
  31. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +0 -1078
  32. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +0 -1077
  33. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +0 -1077
  34. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +0 -1077
  35. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  36. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  37. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  38. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  39. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  40. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  65. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  66. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  67. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  68. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  69. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  70. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  71. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  72. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  73. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  74. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  75. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  76. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  77. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  78. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  79. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  80. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  81. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  82. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  83. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  84. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  85. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  86. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  87. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  88. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  89. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  90. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  91. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  92. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  93. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  94. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  95. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  96. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  97. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  98. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  99. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  100. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  101. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  102. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  103. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  104. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  105. package/.history/src/base-client/components/his/XList/XList_20250704142024.vue +0 -495
  106. package/.history/src/base-client/components/his/XList/XList_20250704142033.vue +0 -495
  107. package/.history/src/base-client/components/his/XList/XList_20250704142040.vue +0 -494
  108. package/.history/src/base-client/components/his/XList/XList_20250704142211.vue +0 -494
  109. package/.history/src/base-client/components/his/XList/XList_20250704142214.vue +0 -494
  110. package/.history/src/base-client/components/his/XList/XList_20250704143010.vue +0 -495
  111. package/.history/src/base-client/components/his/XList/XList_20250704143203.vue +0 -495
  112. package/.history/src/base-client/components/his/XList/XList_20250707095101.vue +0 -492
  113. package/.history/src/base-client/components/his/XList/XList_20250707100152.vue +0 -492
  114. package/.history/src/base-client/components/his/XList/XList_20250707100200.vue +0 -485
  115. package/.history/src/base-client/components/his/XList/XList_20250707100208.vue +0 -485
  116. package/.history/src/base-client/components/his/XList/XList_20250707100259.vue +0 -488
  117. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +0 -222
  118. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +0 -183
  119. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +0 -183
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +0 -183
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +0 -206
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +0 -209
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +0 -242
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +0 -242
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +0 -242
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +0 -251
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +0 -251
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +0 -250
  129. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +0 -250
  130. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +0 -250
  131. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +0 -250
  132. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +0 -238
  133. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +0 -238
  134. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +0 -238
  135. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  136. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  137. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  138. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -1,238 +0,0 @@
1
- <template>
2
- <a-table
3
- :columns="columns"
4
- :data-source="data"
5
- :rowSelection="rowSelection"
6
- :scroll="{ y: '70vh' }">
7
- <span slot="time" class="time-title">
8
- <span v-for="(item, index) in configData.timePeriod" :key="index">{{ item }}</span>
9
- </span>
10
- <div v-for="(item, index) in weekDays" :key="index" :slot="item.key" class="week_last_next_btn">
11
- <a-button slot="lastWeek" icon="left" size="large" @click="handleLastWeek" v-if="item.title == '周一'" />
12
- <div class="time-title">
13
- <span>{{item.title}}</span>
14
- <span>{{ currentWeekDates[index].toLocaleDateString() }}</span>
15
- </div>
16
- <a-button slot="nextWeek" icon="right" size="large" @click="handleNextWeek" v-if="item.title == '周日'"/>
17
- </div>
18
- <template :slot="day.key" slot-scope="text, record" v-for="day in shiftTable">
19
- <div class="time-title" :key="day.key">
20
- <a-button v-for="(item, index) in record[day.key]" :key="index" @click="handleShiftChange(day.key, index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
21
- </div>
22
- </template>
23
- <template slot="sk_limit" slot-scope="text, record">
24
- <a-input-number id="inputNumber" v-model="record.sk_limit" :min="configData.sk_limitMin" :max="configData.sk_limitMax" />
25
- </template>
26
- </a-table>
27
- </template>
28
- <script>
29
- import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
30
-
31
- export default {
32
- data () {
33
- return {
34
- data: [],
35
- // 列配置
36
- columns: [],
37
- // 列名
38
- columnNames: [],
39
- // 选中的行键值集合
40
- selectedRows: [],
41
- // 选中的行信息集合
42
- selectedRowKeys: [],
43
- // 原始数据备份
44
- originalData: [],
45
- // 配置参数
46
- configData: {},
47
- // 当前显示的周次日期
48
- currentWeekDates: [],
49
- weekDays: [...['周一', '周二', '周三', '周四', '周五', '周六', '周日'].map((title, index) => {
50
- const key = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'][index]
51
- return { title, key }
52
- })],
53
- // 排班时间表
54
- shiftTable: [...['周一', '周二', '周三', '周四', '周五', '周六', '周日'].map((title, index) => {
55
- const key = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'][index]
56
- return {
57
- key, dataIndex: key, scopedSlots: { customRender: key }, slots: { title: key }, align: 'center', width: key === 'Monday' || key === 'Sunday' ? 150 : 120
58
- }
59
- }),
60
- {
61
- title: '排班数',
62
- key: 'sk_limit',
63
- dataIndex: 'sk_limit',
64
- scopedSlots: { customRender: 'sk_limit' },
65
- align: 'center'
66
- }
67
- ]
68
- }
69
- },
70
- props: {
71
- // 配置名
72
- queryParamsName: {
73
- type: String,
74
- default: ''
75
- },
76
- // 服务名
77
- serviceName: {
78
- type: String,
79
- default: 'af-his'
80
- }
81
- },
82
- computed: {
83
- rowSelection () {
84
- return {
85
- selectedRowKeys: this.selectedRowKeys,
86
- onChange: (selectedRowKeys, selectedRows) => {
87
- this.onSelectChange(selectedRowKeys, selectedRows)
88
- }
89
- }
90
- }
91
- },
92
- mounted () {
93
- this.initWeekDates()
94
- },
95
- methods: {
96
- handleShiftChange (day, index, record) {
97
- // 找到当前记录在data中的索引
98
- const dataIndex = this.data.findIndex(item => item.id === record.id)
99
- if (dataIndex === -1) return
100
- // 获取当前状态
101
- const currentValue = record[day][index]
102
- const newValue = currentValue === 1 || currentValue === '1' ? 0 : 1
103
- // 更新按钮显示
104
- this.$set(record[day], index, newValue)
105
- // 同步更新data中的数据
106
- this.$set(this.data[dataIndex][day], index, newValue)
107
- },
108
- onSelectChange (selectedRowKeys, selectedRows) {
109
- this.selectedRowKeys = selectedRowKeys
110
- this.selectedRows = selectedRows
111
- },
112
- // 获取选中的行数据
113
- getSelectedRowData () {
114
- return this.selectedRows
115
- },
116
- // 获取全部数据
117
- getAllTable () {
118
- return this.data
119
- },
120
- // 初始化数据
121
- async init (queryParamsName) {
122
- getConfigByName(queryParamsName, this.serviceName, result => {
123
- this.configData = result
124
- runLogic(result.dataSource, {}, this.serviceName).then(res => {
125
- this.columns = []
126
- this.columns = JSON.parse(JSON.stringify(this.configData.columns))
127
- for (let i = 0; i < this.shiftTable.length; i++) {
128
- this.columns.push(this.shiftTable[i])
129
- }
130
- if (res && Array.isArray(res)) {
131
- const weekDays = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
132
- const shifts = ['am', 'pm', 'evening']
133
- let key = 0
134
- this.data = res.map(item => {
135
- const scheduleData = {
136
- key: key++
137
- }
138
- this.configData.columnsName.forEach(columnName => { scheduleData[columnName] = item[columnName] })
139
- weekDays.forEach(day => {
140
- scheduleData[day.charAt(0).toUpperCase() + day.slice(1)] = shifts.map(shift => item[`f_${day}_${shift}`] === '1' ? 1 : 0)
141
- })
142
- return scheduleData
143
- })
144
- // 保存原始数据
145
- this.originalData = JSON.parse(JSON.stringify(this.data))
146
- }
147
- })
148
- })
149
- },
150
- // 查询数据函数
151
- filterTableData (filters) {
152
- if (!filters || Object.keys(filters).length === 0) {
153
- // 如果没有过滤条件,恢复原始数据
154
- this.data = JSON.parse(JSON.stringify(this.originalData))
155
- return
156
- }
157
- // 从原始数据开始过滤
158
- this.data = this.originalData.filter(item => {
159
- // 检查每一项是否满足所有过滤条件
160
- return Object.entries(filters).every(([key, value]) => {
161
- // 如果过滤值是字符串,进行模糊匹配
162
- if (typeof value === 'string') {
163
- return item[key] && item[key].toString().toLowerCase().includes(value.toLowerCase())
164
- }
165
- // 如果过滤值是数字,进行精确匹配
166
- return item[key] === value
167
- })
168
- })
169
- },
170
- // 初始化周次日期
171
- initWeekDates () {
172
- const today = new Date()
173
- const currentDay = today.getDay() || 7 // 将周日的0转换为7
174
- const monday = new Date(today)
175
- monday.setDate(today.getDate() - currentDay + 1) // 设置为本周一
176
-
177
- this.currentWeekDates = Array.from({ length: 7 }, (_, index) => {
178
- const date = new Date(monday)
179
- date.setDate(monday.getDate() + index)
180
- return date
181
- })
182
- },
183
- // 切换到上一周
184
- handleLastWeek () {
185
- const monday = new Date(this.currentWeekDates[0])
186
- monday.setDate(monday.getDate() - 7)
187
- this.updateWeekDates(monday)
188
- },
189
- // 切换到下一周
190
- handleNextWeek () {
191
- const monday = new Date(this.currentWeekDates[0])
192
- monday.setDate(monday.getDate() + 7)
193
- this.updateWeekDates(monday)
194
- },
195
- // 更新周次日期
196
- updateWeekDates (monday) {
197
- this.currentWeekDates = Array.from({ length: 7 }, (_, index) => {
198
- const date = new Date(monday)
199
- date.setDate(monday.getDate() + index)
200
- return date
201
- })
202
- }
203
- },
204
- watch: {
205
- queryParamsName: {
206
- handler (newValue) {
207
- this.init(newValue)
208
- },
209
- deep: true,
210
- immediate: true
211
- }
212
- }
213
- }
214
- </script>
215
-
216
- <style scoped>
217
- .time-title {
218
- display: flex !important;
219
- flex-direction: column !important;
220
- align-items: center !important;
221
- gap: 12px !important;
222
- }
223
- .week_last_next_btn {
224
- display: flex;
225
- flex-direction: row;
226
- align-items: center;
227
- justify-content: center;
228
- gap: 8px;
229
- }
230
- ::v-deep .ant-table-thead > tr > th,
231
- ::v-deep .ant-table-tbody > tr > td {
232
- padding: 8px 16px !important;
233
- overflow-wrap: break-word;
234
- }
235
- ::v-deep .ant-btn {
236
- margin: 4px 0;
237
- }
238
- </style>
@@ -1,238 +0,0 @@
1
- <template>
2
- <a-table
3
- :columns="columns"
4
- :data-source="data"
5
- :rowSelection="rowSelection"
6
- :scroll="{ y: '70vh' }">
7
- <span slot="time" class="time-title">
8
- <span v-for="(item, index) in configData.timePeriod" :key="index">{{ item }}</span>
9
- </span>
10
- <div v-for="(item, index) in weekDays" :key="index" :slot="item.key" class="week_last_next_btn">
11
- <a-button slot="lastWeek" icon="left" size="large" @click="handleLastWeek" v-if="item.title == '周一'" />
12
- <div class="time-title">
13
- <span>{{item.title}}</span>
14
- <span>{{ currentWeekDates[index].toLocaleDateString() }}</span>
15
- </div>
16
- <a-button slot="nextWeek" icon="right" size="large" @click="handleNextWeek" v-if="item.title == '周日'"/>
17
- </div>
18
- <template :slot="day.key" slot-scope="text, record" v-for="day in shiftTable">
19
- <div class="time-title" :key="day.key">
20
- <a-button v-for="(item, index) in record[day.key]" :key="index" @click="handleShiftChange(day.key, index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
21
- </div>
22
- </template>
23
- <template slot="sk_limit" slot-scope="text, record">
24
- <a-input-number id="inputNumber" v-model="record.sk_limit" :min="configData.sk_limitMin" :max="configData.sk_limitMax" />
25
- </template>
26
- </a-table>
27
- </template>
28
- <script>
29
- import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
30
-
31
- export default {
32
- data () {
33
- return {
34
- data: [],
35
- // 列配置
36
- columns: [],
37
- // 列名
38
- columnNames: [],
39
- // 选中的行键值集合
40
- selectedRows: [],
41
- // 选中的行信息集合
42
- selectedRowKeys: [],
43
- // 原始数据备份
44
- originalData: [],
45
- // 配置参数
46
- configData: {},
47
- // 当前显示的周次日期
48
- currentWeekDates: [],
49
- weekDays: [...['周一', '周二', '周三', '周四', '周五', '周六', '周日'].map((title, index) => {
50
- const key = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'][index]
51
- return { title, key }
52
- })],
53
- // 排班时间表
54
- shiftTable: [...['周一', '周二', '周三', '周四', '周五', '周六', '周日'].map((title, index) => {
55
- const key = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'][index]
56
- return {
57
- key, dataIndex: key, scopedSlots: { customRender: key }, slots: { title: key }, align: 'center', width: key === 'Monday' || key === 'Sunday' ? 150 : 120
58
- }
59
- }),
60
- {
61
- title: '排班数',
62
- key: 'sk_limit',
63
- dataIndex: 'sk_limit',
64
- scopedSlots: { customRender: 'sk_limit' },
65
- align: 'center'
66
- }
67
- ]
68
- }
69
- },
70
- props: {
71
- // 配置名
72
- queryParamsName: {
73
- type: String,
74
- default: ''
75
- },
76
- // 服务名
77
- serviceName: {
78
- type: String,
79
- default: 'af-his'
80
- }
81
- },
82
- computed: {
83
- rowSelection () {
84
- return {
85
- selectedRowKeys: this.selectedRowKeys,
86
- onChange: (selectedRowKeys, selectedRows) => {
87
- this.onSelectChange(selectedRowKeys, selectedRows)
88
- }
89
- }
90
- }
91
- },
92
- mounted () {
93
- this.initWeekDates()
94
- },
95
- methods: {
96
- handleShiftChange (day, index, record) {
97
- // 找到当前记录在data中的索引
98
- const dataIndex = this.data.findIndex(item => item.id === record.id)
99
- if (dataIndex === -1) return
100
- // 获取当前状态
101
- const currentValue = record[day][index]
102
- const newValue = currentValue === 1 || currentValue === '1' ? 0 : 1
103
- // 更新按钮显示
104
- this.$set(record[day], index, newValue)
105
- // 同步更新data中的数据
106
- this.$set(this.data[dataIndex][day], index, newValue)
107
- },
108
- onSelectChange (selectedRowKeys, selectedRows) {
109
- this.selectedRowKeys = selectedRowKeys
110
- this.selectedRows = selectedRows
111
- },
112
- // 获取选中的行数据
113
- getSelectedRowData () {
114
- return this.selectedRows
115
- },
116
- // 获取全部数据
117
- getAllTable () {
118
- return this.data
119
- },
120
- // 初始化数据
121
- async init (queryParamsName) {
122
- getConfigByName(queryParamsName, this.serviceName, result => {
123
- this.configData = result
124
- runLogic(result.dataSource, {}, this.serviceName).then(res => {
125
- this.columns = []
126
- this.columns = JSON.parse(JSON.stringify(this.configData.columns))
127
- for (let i = 0; i < this.shiftTable.length; i++) {
128
- this.columns.push(this.shiftTable[i])
129
- }
130
- if (res && Array.isArray(res)) {
131
- const weekDays = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
132
- const shifts = ['am', 'pm', 'evening']
133
- let key = 0
134
- this.data = res.map(item => {
135
- const scheduleData = {
136
- key: key++
137
- }
138
- this.configData.columnsName.forEach(columnName => { scheduleData[columnName] = item[columnName] })
139
- weekDays.forEach(day => {
140
- scheduleData[day.charAt(0).toUpperCase() + day.slice(1)] = shifts.map(shift => item[`f_${day}_${shift}`] === '1' ? 1 : 0)
141
- })
142
- return scheduleData
143
- })
144
- // 保存原始数据
145
- this.originalData = JSON.parse(JSON.stringify(this.data))
146
- }
147
- })
148
- })
149
- },
150
- // 查询数据函数
151
- filterTableData (filters) {
152
- if (!filters || Object.keys(filters).length === 0) {
153
- // 如果没有过滤条件,恢复原始数据
154
- this.data = JSON.parse(JSON.stringify(this.originalData))
155
- return
156
- }
157
- // 从原始数据开始过滤
158
- this.data = this.originalData.filter(item => {
159
- // 检查每一项是否满足所有过滤条件
160
- return Object.entries(filters).every(([key, value]) => {
161
- // 如果过滤值是字符串,进行模糊匹配
162
- if (typeof value === 'string') {
163
- return item[key] && item[key].toString().toLowerCase().includes(value.toLowerCase())
164
- }
165
- // 如果过滤值是数字,进行精确匹配
166
- return item[key] === value
167
- })
168
- })
169
- },
170
- // 初始化周次日期
171
- initWeekDates () {
172
- const today = new Date()
173
- const currentDay = today.getDay() || 7 // 将周日的0转换为7
174
- const monday = new Date(today)
175
- monday.setDate(today.getDate() - currentDay + 1) // 设置为本周一
176
-
177
- this.currentWeekDates = Array.from({ length: 7 }, (_, index) => {
178
- const date = new Date(monday)
179
- date.setDate(monday.getDate() + index)
180
- return date
181
- })
182
- },
183
- // 切换到上一周
184
- handleLastWeek () {
185
- const monday = new Date(this.currentWeekDates[0])
186
- monday.setDate(monday.getDate() - 7)
187
- this.updateWeekDates(monday)
188
- },
189
- // 切换到下一周
190
- handleNextWeek () {
191
- const monday = new Date(this.currentWeekDates[0])
192
- monday.setDate(monday.getDate() + 7)
193
- this.updateWeekDates(monday)
194
- },
195
- // 更新周次日期
196
- updateWeekDates (monday) {
197
- this.currentWeekDates = Array.from({ length: 7 }, (_, index) => {
198
- const date = new Date(monday)
199
- date.setDate(monday.getDate() + index)
200
- return date
201
- })
202
- }
203
- },
204
- watch: {
205
- queryParamsName: {
206
- handler (newValue) {
207
- this.init(newValue)
208
- },
209
- deep: true,
210
- immediate: true
211
- }
212
- }
213
- }
214
- </script>
215
-
216
- <style scoped>
217
- .time-title {
218
- display: flex !important;
219
- flex-direction: column !important;
220
- align-items: center !important;
221
- gap: 12px !important;
222
- }
223
- .week_last_next_btn {
224
- display: flex;
225
- flex-direction: row;
226
- align-items: center;
227
- justify-content: center;
228
- gap: 8px;
229
- }
230
- ::v-deep .ant-table-thead > tr > th,
231
- ::v-deep .ant-table-tbody > tr > td {
232
- padding: 8px 16px !important;
233
- overflow-wrap: break-word;
234
- }
235
- ::v-deep .ant-btn {
236
- margin: 4px 0;
237
- }
238
- </style>