csm xiugai

master
2358328281@qq.com 6 days ago
parent d3943a3755
commit d3248a3dae

@ -145,6 +145,7 @@ export default {
maintenanceEndDate: 'Maintenance End Date',
manager: 'Account Manager',
acceptanceReport: 'Acceptance Report',
acceptanceReportTip: 'Support uploading PDF format files (required)',
account: 'Account',
accountType: 'Account Type',
password: 'Password',

@ -145,6 +145,7 @@ export default {
maintenanceEndDate: '维保截止时间',
manager: '客户经理',
acceptanceReport: '验收报告',
acceptanceReportTip: '支持上传PDF格式文件必填',
account: '账号',
accountType: '账号类型',
password: '密码',

@ -145,6 +145,7 @@ export default {
maintenanceEndDate: '維保截止時間',
manager: '客戶經理',
acceptanceReport: '驗收報告',
acceptanceReportTip: '支援上傳PDF格式檔案必填',
account: '帳號',
accountType: '帳號類型',
password: '密碼',

@ -101,7 +101,7 @@
>
<el-button type="primary" plain>{{ $t('btn.upload') }}</el-button>
<template #tip>
<div class="el-upload__tip">{{ $t('label.acceptanceReport') }} (.pdf)</div>
<div class="el-upload__tip">{{ $t('label.acceptanceReportTip') }}</div>
</template>
</el-upload>
</el-form-item>

@ -81,6 +81,21 @@
/>
</div>
</el-card>
<el-dialog
v-model="previewVisible"
:title="$t('btn.preview')"
width="80%"
top="5vh"
destroy-on-close
:before-close="closePreview"
>
<iframe
v-if="previewUrl"
:src="previewUrl"
class="preview-iframe"
/>
</el-dialog>
</div>
</template>
@ -132,17 +147,29 @@ const goDetail = (id) => router.push(`/admin/hospitals/detail/${id}`);
const goEdit = (id) => router.push(`/admin/hospitals/edit/${id}`);
const goAdd = () => router.push("/admin/hospitals/edit");
const previewVisible = ref(false);
const previewUrl = ref("");
const cleanupPreviewUrl = () => {
if (previewUrl.value) {
URL.revokeObjectURL(previewUrl.value);
previewUrl.value = "";
}
};
const closePreview = () => {
previewVisible.value = false;
cleanupPreviewUrl();
};
const viewReport = async (attachmentPath) => {
if (!attachmentPath) return;
const fileName = String(attachmentPath).split(/[/\\]/).pop();
const fileName = String(attachmentPath);
try {
const blob = await getUploadFile(fileName);
const url = URL.createObjectURL(blob);
const win = window.open(url, "_blank");
if (!win) {
ElMessage.warning($t('msg.pleaseFillRequired'));
}
setTimeout(() => URL.revokeObjectURL(url), 60_000);
cleanupPreviewUrl();
previewUrl.value = URL.createObjectURL(blob);
previewVisible.value = true;
} catch (e) {
ElMessage.error(e?.message || $t('msg.failed'));
}
@ -160,4 +187,9 @@ onMounted(loadList);
display: flex;
justify-content: flex-end;
}
.preview-iframe {
width: 100%;
height: 80vh;
border: 0;
}
</style>

@ -149,6 +149,15 @@
min-width="100"
show-overflow-tooltip
/>
<el-table-column
:label="$t('table.handleTime')"
prop="completedAt"
width="170"
>
<template #default="{ row }">
{{ row.completedAt || '-' }}
</template>
</el-table-column>
<el-table-column :label="$t('table.priority')" width="90">
<template #default="{ row }">
<el-tag :type="priorityType(row.priority)" size="small">{{
@ -431,7 +440,12 @@ const loadList = async () => {
const res = await getAdminOrders(params);
list.value = res?.list || [];
list.value.forEach((item) => {
if (item.createdAt) {
item.createdAt = item.createdAt.split("T").join(" ");
}
if (item.completedAt) {
item.completedAt = item.completedAt.split("T").join(" ");
}
});
total.value = res?.total || 0;
parseStats(res);

Loading…
Cancel
Save