|
@@ -0,0 +1,217 @@
|
|
|
+<template>
|
|
|
+ <div class="app-container">
|
|
|
+ <el-form size="small" :inline="true">
|
|
|
+ <el-form-item label="日期" prop="menuName">
|
|
|
+ <el-date-picker
|
|
|
+ style="width: 240px; margin-right: 8px"
|
|
|
+ size="mini"
|
|
|
+ v-model="dateRange"
|
|
|
+ type="week"
|
|
|
+ format="yyyy 第 WW 周"
|
|
|
+ placeholder="选择周"
|
|
|
+ :picker-options="{ firstDayOfWeek: 1 }"
|
|
|
+ ></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="作业单位" prop="status">
|
|
|
+ <el-select
|
|
|
+ style="margin-right: 8px"
|
|
|
+ size="mini"
|
|
|
+ v-model="value"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in options"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-search"
|
|
|
+ size="mini"
|
|
|
+ @click="handleQuery"
|
|
|
+ >搜索</el-button
|
|
|
+ >
|
|
|
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
|
|
|
+ >重置</el-button
|
|
|
+ >
|
|
|
+ <el-button icon="el-icon-download" size="mini" @click="onExport"
|
|
|
+ >导出</el-button
|
|
|
+ >
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-tabs v-model="activeName" @tab-click="handleClick">
|
|
|
+ <el-tab-pane label="本周计划执行情况" name="weeklyPlanSituationTableRef">
|
|
|
+ <WeeklyPlanSituationTable ref="weeklyPlanSituationTableRef" />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane
|
|
|
+ label="三级及以上作业风险计划"
|
|
|
+ name="level3AbovePlansTableRef"
|
|
|
+ >
|
|
|
+ <Level3AbovePlansTable ref="level3AbovePlansTableRef" />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane
|
|
|
+ label="下周计划安排情况"
|
|
|
+ name="nextWeekPlanSituationTableRef"
|
|
|
+ >
|
|
|
+ <NextWeekPlanSituationTable ref="nextWeekPlanSituationTableRef" />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane
|
|
|
+ label="本周违章查处情况"
|
|
|
+ name="weeklyViolationSituationTableRef"
|
|
|
+ >
|
|
|
+ <WeeklyViolationSituationTable ref="weeklyViolationSituationTableRef" />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane
|
|
|
+ label="本周到岗到位履职情况"
|
|
|
+ name="thoughtfulJobSituationTableRef"
|
|
|
+ >
|
|
|
+ <ThoughtfulJobSituationTable ref="thoughtfulJobSituationTableRef" />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane
|
|
|
+ v-if="false"
|
|
|
+ label="防外人触电隐患排查"
|
|
|
+ name="updateOnExternalRisksTableRef"
|
|
|
+ >
|
|
|
+ <UpdateOnExternalRisksTable ref="updateOnExternalRisksTableRef" />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane
|
|
|
+ v-if="false"
|
|
|
+ label="线路杆号牌缺失情况"
|
|
|
+ name="lineMissingSituationTableRef"
|
|
|
+ >
|
|
|
+ <LineMissingSituationTable ref="lineMissingSituationTableRef" />
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <pagination
|
|
|
+ v-show="total > 0"
|
|
|
+ :total="total"
|
|
|
+ :page.sync="queryParams.pageNum"
|
|
|
+ :limit.sync="queryParams.pageSize"
|
|
|
+ @pagination="handleQuery"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Level3AbovePlansTable from "./components/level3-above-plans-table.vue";
|
|
|
+import LineMissingSituationTable from "./components/line-missing-situation-table.vue";
|
|
|
+import NextWeekPlanSituationTable from "./components/next-week-plan-situation-table.vue";
|
|
|
+import ThoughtfulJobSituationTable from "./components/thoughtful-job-situation-table.vue";
|
|
|
+import UpdateOnExternalRisksTable from "./components/update-on-external-risks-table.vue";
|
|
|
+import WeeklyPlanSituationTable from "./components/weekly-plan-situation-table.vue";
|
|
|
+import WeeklyViolationSituationTable from "./components/weekly-violation-situation-table.vue";
|
|
|
+import moment from "moment";
|
|
|
+import { getReportWeek } from "@/api/secure/daily-newspaper";
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Level3AbovePlansTable,
|
|
|
+ LineMissingSituationTable,
|
|
|
+ NextWeekPlanSituationTable,
|
|
|
+ ThoughtfulJobSituationTable,
|
|
|
+ UpdateOnExternalRisksTable,
|
|
|
+ WeeklyPlanSituationTable,
|
|
|
+ WeeklyViolationSituationTable,
|
|
|
+ },
|
|
|
+ name: "weekly-report",
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ activeName: "weeklyPlanSituationTableRef",
|
|
|
+ // 日期范围
|
|
|
+ dateRange: "",
|
|
|
+ startDate: "", // 显示开始时间
|
|
|
+ endDate: "", // 显示结束时间
|
|
|
+ total: 0,
|
|
|
+ queryParams: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ },
|
|
|
+ value: "",
|
|
|
+ options: [
|
|
|
+ {
|
|
|
+ value: "选项1",
|
|
|
+ label: "黄金糕",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: "选项2",
|
|
|
+ label: "双皮奶",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ dateRange(newVal) {
|
|
|
+ this.calculateStartAndEndDates(newVal);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ // 设置默认为最近的一周
|
|
|
+ this.setRecentWeek();
|
|
|
+ this.handleQuery();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ moment,
|
|
|
+ setRecentWeek() {
|
|
|
+ const today = new Date();
|
|
|
+ const diffDays = today.getDay() === 0 ? -6 : 1 - today.getDay(); // 调整到周一作为一周的开始
|
|
|
+ const startOfWeek = new Date(today);
|
|
|
+ startOfWeek.setDate(today.getDate() + diffDays);
|
|
|
+ this.dateRange = startOfWeek;
|
|
|
+
|
|
|
+ this.calculateStartAndEndDates(startOfWeek);
|
|
|
+ },
|
|
|
+ handleClick(tab, event) {
|
|
|
+ console.log(tab, event, "---------ddd");
|
|
|
+ this.activeName = tab.name;
|
|
|
+ // this.handleQuery();
|
|
|
+ },
|
|
|
+ /** 搜索按钮操作 */
|
|
|
+ async handleQuery() {
|
|
|
+ this.loading = true;
|
|
|
+ const { appointmentList, illegalList, nextList, planList } =
|
|
|
+ await getReportWeek(this.startDate, this.endDate);
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs["weeklyPlanSituationTableRef"].tableData = planList;
|
|
|
+ this.$refs["level3AbovePlansTableRef"].tableData = [];
|
|
|
+ this.$refs["nextWeekPlanSituationTableRef"].tableData = nextList;
|
|
|
+ this.$refs["weeklyViolationSituationTableRef"].tableData = illegalList;
|
|
|
+ this.$refs["thoughtfulJobSituationTableRef"].tableData =
|
|
|
+ appointmentList;
|
|
|
+ });
|
|
|
+ this.loading = false;
|
|
|
+ },
|
|
|
+ /** 重置按钮操作 */
|
|
|
+ resetQuery() {
|
|
|
+ // 设置默认为最近的一周
|
|
|
+ this.setRecentWeek();
|
|
|
+ this.handleQuery();
|
|
|
+ },
|
|
|
+ calculateStartAndEndDates(date) {
|
|
|
+ if (!date) return;
|
|
|
+
|
|
|
+ const startOfWeek = new Date(date.getTime());
|
|
|
+ const dayOfWeek = startOfWeek.getDay();
|
|
|
+ const diffDays = dayOfWeek === 0 ? -6 : 1 - dayOfWeek; // 调整到周一作为一周的开始
|
|
|
+ startOfWeek.setDate(startOfWeek.getDate() + diffDays);
|
|
|
+
|
|
|
+ const endOfWeek = new Date(startOfWeek);
|
|
|
+ endOfWeek.setDate(endOfWeek.getDate() + 6);
|
|
|
+
|
|
|
+ this.startDate = this.formatDate(startOfWeek);
|
|
|
+ this.endDate = this.formatDate(endOfWeek);
|
|
|
+ },
|
|
|
+ formatDate(date) {
|
|
|
+ const year = date.getFullYear();
|
|
|
+ const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
|
+ const day = String(date.getDate()).padStart(2, "0");
|
|
|
+ return `${year}${month}${day}`;
|
|
|
+ },
|
|
|
+ onExport() {},
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped></style>
|