处理巡逻打卡列表时间筛选 处理时间轴图片展示处理
This commit is contained in:
@ -9,7 +9,7 @@
|
||||
<div v-if="item?.dkKsSj" class="time">打卡时间:<text>{{ handleTime(item?.dkKsSj) }}</text></div>
|
||||
|
||||
<div v-if="item?.imgUrlDkKsFj" class="image">
|
||||
<van-image width="80px" :src="item?.imgUrlDkKsFj" @click="onClickImg(item?.imgUrlDkKsFj)" style="flex: 1">
|
||||
<van-image width="80px" height="95px" :src="item?.imgUrlDkKsFj" @click="onClickImg(item?.imgUrlDkKsFj)" style="flex: 1">
|
||||
<template v-slot:loading>
|
||||
<van-loading type="spinner" size="20" />
|
||||
</template>
|
||||
@ -30,7 +30,7 @@
|
||||
<div v-if="item?.dkJsSj" class="time">打卡时间:<text>{{ handleTime(item?.dkJsSj) }}</text></div>
|
||||
|
||||
<div v-if="item?.imgUrlDkJsFj" class="image">
|
||||
<van-image width="80px" :src="item?.imgUrlDkJsFj" @click="onClickImg(item?.imgUrlDkJsFj)" style="flex: 1">
|
||||
<van-image width="80px" height="95px" :src="item?.imgUrlDkJsFj" @click="onClickImg(item?.imgUrlDkJsFj)" style="flex: 1">
|
||||
<template v-slot:loading>
|
||||
<van-loading type="spinner" size="20" />
|
||||
</template>
|
||||
|
||||
@ -22,7 +22,7 @@ const baseUrl = ref("")
|
||||
const fileId = ref("")
|
||||
|
||||
|
||||
const startTime = ref("2025-09-08 15:29:00");
|
||||
const startTime = ref("2025-09-18 18:15:00");
|
||||
|
||||
const useCountdownFromTime = (minutes = 10) => {
|
||||
const timeLeft = ref(0); // 剩余毫秒数
|
||||
@ -162,13 +162,21 @@ const photoFn = () => {
|
||||
}
|
||||
}
|
||||
|
||||
const count = (item) => {
|
||||
if (!item || !item.dkSx) return undefined;
|
||||
// 支持更大数字的转换
|
||||
const getChineseNumber = (num) => {
|
||||
const numbers = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
|
||||
|
||||
const numbers = ['一', '二', '三', '四'];
|
||||
const index = item.dkSx - 1; // 假设 dkSx 是从1开始的数字
|
||||
|
||||
return numbers[index];
|
||||
if (num <= 10) {
|
||||
return numbers[num - 1];
|
||||
} else if (num <= 19) {
|
||||
return `十${numbers[num - 11] || ''}`;
|
||||
} else if (num <= 99) {
|
||||
const tens = Math.floor(num / 10);
|
||||
const units = num % 10;
|
||||
return `${numbers[tens - 1]}十${units > 0 ? numbers[units - 1] : ''}`;
|
||||
} else {
|
||||
return num.toString(); // 超过99返回阿拉伯数字
|
||||
}
|
||||
};
|
||||
|
||||
const onChange = (value) => {
|
||||
@ -249,14 +257,16 @@ const getData = async () => {
|
||||
});
|
||||
|
||||
// 设置数据
|
||||
data.info = res.map(item => ({
|
||||
data.info = res.map((item, index) => ({
|
||||
...item,
|
||||
count: count(item),
|
||||
count: getChineseNumber(index + 1),
|
||||
imgUrlDkJsFj: item?.dkJsFj ? imageMap.get(item.dkJsFj) : null,
|
||||
imgUrlDkKsFj: item?.dkKsFj ? imageMap.get(item.dkKsFj) : null,
|
||||
}));
|
||||
|
||||
// 打卡结束经纬度
|
||||
const dkJs = res?.map(i => ({ jd: i?.dkJsJd, wd: i?.dkJsWd }))
|
||||
// 打卡开始经纬度
|
||||
const dkKs = res?.map(i => ({ jd: i?.dkKsJd, wd: i?.dkKsWd }))
|
||||
|
||||
// 删除标注
|
||||
@ -287,7 +297,7 @@ const getData = async () => {
|
||||
//地图撒点然后移动
|
||||
emitter.emit("addPointArea", {
|
||||
coords: [{ jd, wd }],
|
||||
icon: require("../../assets/lz/dw.png"),
|
||||
icon: require("../../assets/lz/peoplePolice.png"),
|
||||
flag: "checkPoint",
|
||||
});
|
||||
}
|
||||
|
||||
@ -37,6 +37,7 @@ const onRefresh = () => {
|
||||
}
|
||||
|
||||
const getData = async () => {
|
||||
loading.value = true;
|
||||
try {
|
||||
const { total, ...ret } = pageData
|
||||
const res = await getSelectPage({ ...ret, bddMc: searchValue.value })
|
||||
|
||||
@ -6,7 +6,11 @@ import PatrolWrapper from "@/pages/patrolList/copmonents/patrolWrapper.vue";
|
||||
import {fetchPatrolList} from "@/api/patrolList";
|
||||
import {getDictListByCode} from "@/api/common";
|
||||
import router from "@/router";
|
||||
import SxPopup from "@/components/SxPopup.vue";
|
||||
import SelectTime from "@/components/SelectTime.vue";
|
||||
|
||||
const showPopup = ref(false);
|
||||
const timeShow = ref(false);
|
||||
const finished = ref(false);
|
||||
const loading = ref(false);
|
||||
const loadingRefresh = ref(false);
|
||||
@ -19,7 +23,9 @@ const pageData = reactive({
|
||||
})
|
||||
|
||||
const data = reactive({
|
||||
list: []
|
||||
list: [],
|
||||
dictList: [],
|
||||
startTime: ''
|
||||
})
|
||||
|
||||
const onSearch = () => {
|
||||
@ -79,19 +85,20 @@ const parseAndJoinLx = (jsonString, type = 'lx') => {
|
||||
};
|
||||
|
||||
const getData = async () => {
|
||||
|
||||
const { total, ...ret } = pageData
|
||||
loading.value = true;
|
||||
try {
|
||||
const res = await fetchPatrolList({ ...ret, fgMc: searchValue.value })
|
||||
const res = await fetchPatrolList({ ...ret, fgMc: searchValue.value, rwRq: data.startTime })
|
||||
if (res?.records.length > 0) {
|
||||
data.list = data.list.concat(res?.records)?.map((item) => ({
|
||||
...item,
|
||||
fgJqtjLx: parseAndJoinLx(item?.fgJqtjLx, 'lx')
|
||||
fgJqtjLx: parseAndJoinLx(item?.fgJqtjLx, 'lx'),
|
||||
fgYjdjLabel: data.dictList?.find(i => i.dm === item.fgYjdj)?.zdmc || item.fgYjdj
|
||||
})) || []
|
||||
|
||||
pageData.total = res?.total
|
||||
loading.value = false;
|
||||
|
||||
await getDictList()
|
||||
}
|
||||
loadingRefresh.value = false;
|
||||
|
||||
@ -103,15 +110,36 @@ const getData = async () => {
|
||||
|
||||
const getDictList = async () => {
|
||||
const res = await getDictListByCode({ dictCode: 'D_ZDXL_FGXLRW_YJDJ' })
|
||||
|
||||
data.list = (data.list || []).map(item => ({
|
||||
...item,
|
||||
fgYjdjLabel: (res?.itemList || []).find(i => i.dm === item.fgYjdj)?.zdmc || item.fgYjdj
|
||||
}));
|
||||
if (res && res?.itemList?.length > 0) {
|
||||
data.dictList = res?.itemList
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
const onSelectTime = (val) => {
|
||||
data.startTime = val;
|
||||
timeShow.value = false
|
||||
}
|
||||
|
||||
const onClickTime = () => {
|
||||
timeShow.value = true;
|
||||
}
|
||||
|
||||
const onConfirm = () => {
|
||||
pageData.pageCurrent = 1;
|
||||
data.list = []
|
||||
getData()
|
||||
showPopup.value = false;
|
||||
}
|
||||
|
||||
const handleReset = () => {
|
||||
data.startTime = ""
|
||||
onConfirm()
|
||||
}
|
||||
|
||||
|
||||
onMounted(async () => {
|
||||
await getDictList()
|
||||
await getData()
|
||||
})
|
||||
</script>
|
||||
|
||||
@ -122,13 +150,32 @@ onMounted(() => {
|
||||
<van-sticky>
|
||||
<div class="header">
|
||||
<search
|
||||
:isSx="true"
|
||||
placeholder="请输入方格名称进行查询"
|
||||
v-model="searchValue"
|
||||
@update:sx="showPopup = !showPopup"
|
||||
@update:modelValue="onSearch"
|
||||
/>
|
||||
</div>
|
||||
</van-sticky>
|
||||
|
||||
<sx-popup :showPopup="showPopup" :p_top="110" @update:close="showPopup = false"
|
||||
@update:onConfirm="onConfirm" @reset="handleReset">
|
||||
<div class="time_box">
|
||||
<van-field
|
||||
v-model="data.startTime"
|
||||
label-width="60px"
|
||||
placeholder="请选择时间"
|
||||
input-align="left"
|
||||
right-icon="arrow-down"
|
||||
readonly
|
||||
@click.stop="onClickTime"
|
||||
/>
|
||||
</div>
|
||||
</sx-popup>
|
||||
|
||||
<select-time v-if="timeShow" time-type="选择任务日期" @update:time="onSelectTime" @update:cancelTime="timeShow = false" />
|
||||
|
||||
<div class="content">
|
||||
<van-pull-refresh v-model="loadingRefresh" @refresh="onRefresh">
|
||||
<van-list v-model:loading="loading" :finished="finished" finished-text="" @load="onLoad" offset="1" :immediate-check="false">
|
||||
@ -142,6 +189,10 @@ onMounted(() => {
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.time_box {
|
||||
padding: 0 3vw 3vw;
|
||||
}
|
||||
|
||||
.header {
|
||||
margin-top: 13vw;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user