|
@ -30,19 +30,21 @@ |
|
|
<p class="w-[8rem]">操作员</p> |
|
|
<p class="w-[8rem]">操作员</p> |
|
|
<p>实验名称</p> |
|
|
<p>实验名称</p> |
|
|
</header> |
|
|
</header> |
|
|
<div |
|
|
|
|
|
v-for="record in recordList" |
|
|
|
|
|
:key="record.id" |
|
|
|
|
|
class="h-10 flex items-center text-xs pr-3 text-[#6e6e6e] border-b border-b-[#f8f8f8]" |
|
|
|
|
|
@click="onItemSelect(record)"> |
|
|
|
|
|
<div class="w-10 self-stretch flex justify-center items-center"> |
|
|
|
|
|
<img class="w-4 h-4" :src="selectedIds.includes(record.id) ? icon_select : icon_unselect" alt="" /> |
|
|
|
|
|
|
|
|
<main class="overflow-auto" style="max-height: calc(100vh - var(--headerHeight) - var(--footerHeight) - 120px)"> |
|
|
|
|
|
<div |
|
|
|
|
|
v-for="record in recordList" |
|
|
|
|
|
:key="record.id" |
|
|
|
|
|
class="h-10 flex items-center text-xs pr-3 text-[#6e6e6e] border-b border-b-[#f8f8f8]" |
|
|
|
|
|
@click="onItemSelect(record)"> |
|
|
|
|
|
<div class="w-10 self-stretch flex justify-center items-center"> |
|
|
|
|
|
<img class="w-4 h-4" :src="selectedIds.includes(record.id) ? icon_select : icon_unselect" alt="" /> |
|
|
|
|
|
</div> |
|
|
|
|
|
<p class="w-[10rem]">{{ record.startTime }}</p> |
|
|
|
|
|
<p class="w-[8rem]">{{ userStore.userIdMap[record.createUser].nickname }}</p> |
|
|
|
|
|
<p class="w-[10rem]">{{ record.name }}</p> |
|
|
|
|
|
<p class="text-primary underline leading-[3rem] text-sm px-2" @click.stop="onDetailClick(record)">详情</p> |
|
|
</div> |
|
|
</div> |
|
|
<p class="w-[10rem]">{{ record.startTime }}</p> |
|
|
|
|
|
<p class="w-[8rem]">{{ userStore.userIdMap[record.createUser].nickname }}</p> |
|
|
|
|
|
<p class="w-[10rem]">{{ record.name }}</p> |
|
|
|
|
|
<p class="text-primary underline leading-[3rem] text-sm px-2" @click.stop="onDetailClick(record)">详情</p> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
</main> |
|
|
</section> |
|
|
</section> |
|
|
|
|
|
|
|
|
<van-overlay v-if="showEditDialog" :show="true"> |
|
|
<van-overlay v-if="showEditDialog" :show="true"> |
|
@ -62,6 +64,7 @@ import { deleteExperienceRecords, getExperienceRecords, type ExperienceRecord } |
|
|
import { showToast } from "vant"; |
|
|
import { showToast } from "vant"; |
|
|
import { useUserStore } from "@/stores/user"; |
|
|
import { useUserStore } from "@/stores/user"; |
|
|
import ExpeDetail from "./components/ExpeDetail.vue"; |
|
|
import ExpeDetail from "./components/ExpeDetail.vue"; |
|
|
|
|
|
import { ElMessageBox } from "element-plus"; |
|
|
|
|
|
|
|
|
const userStore = useUserStore(); |
|
|
const userStore = useUserStore(); |
|
|
const showEditDialog = ref<boolean>(false); |
|
|
const showEditDialog = ref<boolean>(false); |
|
@ -102,13 +105,19 @@ function onSelectAll() { |
|
|
|
|
|
|
|
|
function onDeleteRecords() { |
|
|
function onDeleteRecords() { |
|
|
if (selectedIds.value.length === 0) return; |
|
|
if (selectedIds.value.length === 0) return; |
|
|
deleteExperienceRecords(selectedIds.value.join(",")).then(res => { |
|
|
|
|
|
if (res.success) { |
|
|
|
|
|
selectedIds.value = []; |
|
|
|
|
|
getRecords(); |
|
|
|
|
|
} else { |
|
|
|
|
|
showToast(res.msg); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
ElMessageBox.confirm("确定删除记录?", { |
|
|
|
|
|
confirmButtonText: "确定", |
|
|
|
|
|
cancelButtonText: "取消", |
|
|
|
|
|
center: true, |
|
|
|
|
|
}).then(() => { |
|
|
|
|
|
deleteExperienceRecords(selectedIds.value.join(",")).then(res => { |
|
|
|
|
|
if (res.success) { |
|
|
|
|
|
selectedIds.value = []; |
|
|
|
|
|
getRecords(); |
|
|
|
|
|
} else { |
|
|
|
|
|
showToast(res.msg); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
function onDetailClick(item: ExperienceRecord) { |
|
|
function onDetailClick(item: ExperienceRecord) { |
|
|