213 lines
5.9 KiB
Vue
213 lines
5.9 KiB
Vue
<!--
|
||
* @Author: your name
|
||
* @Date: 2020-03-22 11:36:21
|
||
* @LastEditTime: 2023-04-10 17:02:18
|
||
* @LastEditors: Please set LastEditors
|
||
* @Description: In User Settings Edit
|
||
* @FilePath: \xfxt_web\src\views\xfxt\home\componets\left-home.vue
|
||
-->
|
||
<template>
|
||
<div class="qs-box">
|
||
<div class="popTitle">{{ childTitle }}巡逻里程情况</div>
|
||
<div class="popBody" style="max-height: 600px; overflow: auto">
|
||
<div class="tjtitle">
|
||
<el-date-picker
|
||
v-model="searchDay"
|
||
type="date"
|
||
placeholder="选择日期"
|
||
style="width: 150px"
|
||
value-format="YYYY-MM-DD"
|
||
@change="changeDay"
|
||
/>
|
||
<div class="tjli lightblue">
|
||
当日应巡逻里程:<span>{{ allNums <= 0 ? 0 : allNums}}</span>
|
||
</div>
|
||
<div class="tjli green">
|
||
当日实际巡逻里程:<span>{{ alreadyNums <=0 ? 0 : alreadyNums }}</span>
|
||
</div>
|
||
<div class="tjli orange">
|
||
当日未巡逻里程:<span>{{ notNums <= 0 ? 0 : notNums }}</span>
|
||
</div>
|
||
</div>
|
||
<el-table
|
||
ref="table"
|
||
:data="tableChildData"
|
||
border
|
||
class="table flex-auto overflow-auto margin-tp-10"
|
||
row-class-name="table-row"
|
||
cell-class-name="table-cell"
|
||
header-row-class-name="table-header-row"
|
||
header-cell-class-name="table-header-cell"
|
||
style="width: 100%"
|
||
>
|
||
<!-- @row-click="getScore" -->
|
||
<el-table-column label="巡逻里程率" align="center">
|
||
<el-table-column prop="ssbm" label="单位" align="center">
|
||
<template #default="{ row }">
|
||
<el-tooltip effect="dark" :content="row.ssbm" placement="right">
|
||
<span>{{ row.ssbm }}</span>
|
||
</el-tooltip>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="yxllc" label="应巡逻里程" align="center" />
|
||
<el-table-column prop="sjxllc" label="实际巡逻里程" align="center" />
|
||
<el-table-column label="未巡逻里程" align="center" prop="wxllc" />
|
||
<el-table-column label="巡逻里程得扣分" align="center" prop="xllckf" />
|
||
<el-table-column label="巡逻里程得分" align="center" prop="xllcf" />
|
||
<el-table-column label="比例" align="center" prop="pccbl">
|
||
<template #default="{ row }">
|
||
<p v-if="row.yxllc">
|
||
{{
|
||
((Number(row.sjxllc) / Number(row.yxllc)) * 100).toFixed(2)
|
||
}}%
|
||
</p>
|
||
<p v-else>0%</p>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div class="fenye">
|
||
<el-pagination
|
||
class="pagination"
|
||
@size-change="handleSizeChange"
|
||
@current-change="handleCurrentChange"
|
||
:current-page="childlistQuery.pageCurrent"
|
||
:page-sizes="[10, 20, 50, 100]"
|
||
:page-size="childlistQuery.pageSize"
|
||
layout="total, sizes, prev, pager, next, jumper"
|
||
:total="total"
|
||
></el-pagination>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { timeValidate } from "@/utils/tools";
|
||
import { JXgetPageList, getStatistics } from "@/api/performance";
|
||
import { defineProps, watch, ref, onMounted, nextTick } from "vue";
|
||
import { parseTime, timestampToStr } from "@/utils/index";
|
||
const props = defineProps({
|
||
childTitle: {
|
||
default: "",
|
||
type: String
|
||
},
|
||
searchType: {
|
||
default: "",
|
||
type: String
|
||
},
|
||
ssbmdm: {
|
||
default: "",
|
||
type: String
|
||
}
|
||
});
|
||
const childlistQuery = ref({
|
||
pageCurrent: 1,
|
||
pageSize: 20,
|
||
type: "01",
|
||
searchType: props.searchType,
|
||
kssj: "",
|
||
jssj: "",
|
||
ssbmdm: props.ssbmdm,
|
||
cxcj: "02"
|
||
});
|
||
const userInfo = ref(JSON.parse(localStorage.getItem("userInfo")));
|
||
const searchDay = ref("");
|
||
const allNums = ref("");
|
||
const tableChildData = ref([]);
|
||
const alreadyNums = ref("");
|
||
const notNums = ref("");
|
||
const total = ref(0);
|
||
const allList = ref([]);
|
||
onMounted(() => {
|
||
searchDay.value = timeValidate(new Date(),'ymd');
|
||
childlistQuery.value.kssj = timeValidate(new Date(),'ymd');;
|
||
childlistQuery.value.jssj = timeValidate(new Date(),'ymd');;
|
||
getChildTableList();
|
||
_getStatistics();
|
||
});
|
||
watch(
|
||
() => [props.ssbmdm, props.searchType],
|
||
() => {
|
||
childlistQuery.value.ssbmdm = props.ssbmdm;
|
||
childlistQuery.value.searchType = props.searchType;
|
||
getChildTableList();
|
||
_getStatistics();
|
||
},
|
||
{ deep: true }
|
||
);
|
||
// 获取弹窗表格初始化数据
|
||
const getChildTableList = () => {
|
||
JXgetPageList(childlistQuery.value).then((res) => {
|
||
tableChildData.value = res.records;
|
||
total.value = res.total;
|
||
});
|
||
};
|
||
const _getStatistics = () => {
|
||
let { searchType, ssbmdm, kssj } = childlistQuery.value;
|
||
let params = {
|
||
searchType: searchType,
|
||
ssbmdm: ssbmdm,
|
||
time: kssj
|
||
};
|
||
getStatistics(params).then((res) => {
|
||
alreadyNums.value = res.sjxllc;
|
||
allNums.value = res.yxllc;
|
||
notNums.value = res.wxllc;
|
||
});
|
||
};
|
||
/**
|
||
* pageSize 改变触发
|
||
*/
|
||
const handleSizeChange = (currentSize) => {
|
||
childlistQuery.value.pageSize = currentSize;
|
||
getChildTableList();
|
||
};
|
||
|
||
/**
|
||
* 页码改变触发
|
||
*/
|
||
const handleCurrentChange = (currentPage) => {
|
||
childlistQuery.value.pageCurrent = currentPage;
|
||
getChildTableList();
|
||
};
|
||
const changeDay = (val) => {
|
||
childlistQuery.value.kssj = val;
|
||
childlistQuery.value.jssj = val;
|
||
childlistQuery.value.pageCurrent=1
|
||
getChildTableList();
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.popTitle {
|
||
color: #72d8ff;
|
||
line-height: 24px;
|
||
font-size: 18px;
|
||
text-align: center;
|
||
}
|
||
.tjtitle {
|
||
margin-top: 30px;
|
||
margin-bottom: 30px;
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
.tjli {
|
||
flex: 1;
|
||
text-align: center;
|
||
font-size: 18px;
|
||
}
|
||
}
|
||
::v-deep .el-table th.el-table__cell {
|
||
background: #0d2944 !important;
|
||
color: #61f9ff;
|
||
}
|
||
.qs-box {
|
||
::v-deep .el-table__body-wrapper {
|
||
height: 40vh;
|
||
overflow: auto;
|
||
}
|
||
}
|
||
</style>
|