|
@@ -174,7 +174,7 @@
|
|
|
<div class="description" style="margin-top: 20px">
|
|
<div class="description" style="margin-top: 20px">
|
|
|
<p>说明:</p>
|
|
<p>说明:</p>
|
|
|
<p>1. 请输入需要导出的卡片数量</p>
|
|
<p>1. 请输入需要导出的卡片数量</p>
|
|
|
- <p>2. 一次导不完的话,输入批次 2 再次导出,以此类推。</p>
|
|
|
|
|
|
|
+ <p>2. 一次导不完的话,输入批次 2 再次导出,以此类推;除最后一个批次外,请保持每批次数量一致。</p>
|
|
|
<p>3. 导出的卡将按照列表顺序生成PNG图片压缩包</p>
|
|
<p>3. 导出的卡将按照列表顺序生成PNG图片压缩包</p>
|
|
|
<p>4. 建议单次导出数量不超过200张,以免影响系统性能</p>
|
|
<p>4. 建议单次导出数量不超过200张,以免影响系统性能</p>
|
|
|
<p>5. 导出需要较长时间,请耐心等待。200张大约需要20分钟!</p>
|
|
<p>5. 导出需要较长时间,请耐心等待。200张大约需要20分钟!</p>
|
|
@@ -285,38 +285,65 @@ const startExport = async () => {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // console.log('开始导出床头卡,数量:', exportCount.value)
|
|
|
|
|
- // message.success(`开始导出${exportCount.value}张床头卡`)
|
|
|
|
|
- //
|
|
|
|
|
- // // 关闭弹窗
|
|
|
|
|
- // dialogVisible.value = false
|
|
|
|
|
loadingImport.value = true
|
|
loadingImport.value = true
|
|
|
- // 这里可以添加实际的导出逻辑
|
|
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
- let queryParams = {
|
|
|
|
|
- pageNo: exportBitch.value,
|
|
|
|
|
- pageSize: exportCount.value,
|
|
|
|
|
- elderName: undefined,
|
|
|
|
|
- inStatus: '1',
|
|
|
|
|
- bedId: undefined,
|
|
|
|
|
- tenantIds: userStore.orgTenantId
|
|
|
|
|
|
|
+ // 批次 1 时记录基准导出数量;后续批次按该数量计算起始偏移,避免修改数量后出现重复
|
|
|
|
|
+ const storageKey = `bed_card_export_${type.value}`
|
|
|
|
|
+ let baseCount = exportCount.value
|
|
|
|
|
+ if (exportBitch.value === 1) {
|
|
|
|
|
+ window.sessionStorage.setItem(storageKey, String(exportCount.value))
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const stored = window.sessionStorage.getItem(storageKey)
|
|
|
|
|
+ if (stored) {
|
|
|
|
|
+ baseCount = Number(stored)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ message.warning('未找到前一批次导出记录,请从批次 1 开始')
|
|
|
|
|
+ loadingImport.value = false
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- const data = await getElderlyPage(queryParams)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ const offset = (exportBitch.value - 1) * baseCount
|
|
|
|
|
+ const needSize = offset + exportCount.value
|
|
|
|
|
+
|
|
|
|
|
+ // 拉取足够多的数据后本地切片,保证每批数据严格连续
|
|
|
|
|
+ let allList: any[] = []
|
|
|
|
|
+ let pageNo = 1
|
|
|
|
|
+ while (allList.length < needSize) {
|
|
|
|
|
+ const pageData = await getElderlyPage({
|
|
|
|
|
+ ...queryParams,
|
|
|
|
|
+ pageNo,
|
|
|
|
|
+ pageSize: 9999
|
|
|
|
|
+ })
|
|
|
|
|
+ const pageList = pageData.list || []
|
|
|
|
|
+ if (!pageList.length) break
|
|
|
|
|
+ allList = allList.concat(pageList)
|
|
|
|
|
+ if (pageList.length < 9999) break
|
|
|
|
|
+ pageNo++
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (offset >= allList.length) {
|
|
|
|
|
+ message.warning('该批次暂无数据可导出')
|
|
|
|
|
+ loadingImport.value = false
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const exportList = allList.slice(offset, offset + exportCount.value)
|
|
|
|
|
+
|
|
|
if (type.value == 1) {
|
|
if (type.value == 1) {
|
|
|
- for (const [index, item] of data.list.entries()) {
|
|
|
|
|
|
|
+ for (const [index, item] of exportList.entries()) {
|
|
|
try {
|
|
try {
|
|
|
const res = await getElderHealthRecordById(item.id)
|
|
const res = await getElderHealthRecordById(item.id)
|
|
|
- // console.log("长者健康档案:",index)
|
|
|
|
|
// 判断是否为最后一个数据
|
|
// 判断是否为最后一个数据
|
|
|
- const param = index === data.list.length - 1 ? 3 : 2
|
|
|
|
|
|
|
+ const param = index === exportList.length - 1 ? 3 : 2
|
|
|
await importCard(res || {}, item, param)
|
|
await importCard(res || {}, item, param)
|
|
|
} catch (e) {}
|
|
} catch (e) {}
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- for (const [index, item] of data.list.entries()) {
|
|
|
|
|
|
|
+ for (const [index, item] of exportList.entries()) {
|
|
|
try {
|
|
try {
|
|
|
- const param = index === data.list.length - 1 ? 3 : 2
|
|
|
|
|
|
|
+ const param = index === exportList.length - 1 ? 3 : 2
|
|
|
await importCard(undefined, item, param)
|
|
await importCard(undefined, item, param)
|
|
|
} catch (e) {}
|
|
} catch (e) {}
|
|
|
}
|
|
}
|