vue2-client 1.14.94 → 1.14.97

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