whj 1 rok pred
rodič
commit
037ad69000

+ 15 - 1
src/api/report/application-form.js

@@ -16,7 +16,21 @@ export function getMonthReportBig24 (parameter) {
     }
   })
 }
-
+/**
+ * page func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function getFiftyFailSbReport (parameter) {
+  return axios({
+    url: '/repair/application-forms/getFiftyFailSbReport?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
 export function getFillGatherTaskMonthReport (parameter) {
   return axios({
     url: '/fill/tasks/report?' + stringify(parameter),

+ 1 - 0
src/router/generator-platform-routers.js

@@ -361,6 +361,7 @@ const constantRouterComponents = {
   'RepairReportFee': () => import('@/views/dashboard/RepairReportFee'), // 费用按月统计
   'StoreReport1': () => import('@/views/dashboard/StoreReport1'), // 仓库报表
   'FillGatherReport': () => import('@/views/dashboard/FillGatherReport'), // 巡检任务月统计
+  'RepairReportFail': () => import('@/views/dashboard/RepairReportFail'), // 设备故障排行榜统计
 
   'RepairScreen': () => import('@/views/big-screen/RepairScreen'), // 车间大屏
   // 工作台

+ 274 - 0
src/views/dashboard/RepairReportFail.vue

@@ -0,0 +1,274 @@
+<template>
+  <div class="page-header-index-wide">
+    <a-card :title="title" :loading="loading" v-show="visible" :bordered="false" :body-style="{padding: '0'}">
+      <div class="salesCard">
+        <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
+          <!-- <div class="extra-wrapper" slot="tabBarExtraContent">
+            <a-month-picker
+              style="margin-left: 8px"
+              :default-value="moment(defaultStartMonth, monthFormat)"
+              :format="monthFormat"
+              v-model="queryParam.startMonth"
+              placeholder="开始月份"
+              @change="onStartChange" />
+            <a-month-picker
+              style="margin-left: 8px"
+              :default-value="moment(defaultEndMonth, monthFormat)"
+              :format="monthFormat"
+              v-model="queryParam.endMonth"
+              placeholder="结束月份"
+              @change="onEndChange" />
+            <a-button style="margin-left: 8px" type="default" @click="getData()">查询</a-button>
+            <a-button style="margin-left: 8px" type="primary" icon="printer" @click="handlePrint()">打印</a-button>
+            <a-button style="margin-left: 8px" type="primary" @click="doExport()">导出</a-button>
+          </div> -->
+          <!-- <a-tab-pane loading="true" tab="图形统计" key="1">
+            <a-row>
+              <a-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24">
+                <div style="padding: 10px">
+                  <div id="container" style="width: 100%;overflow-x:auto"></div>
+                </div>
+              </a-col>
+            </a-row>
+          </a-tab-pane> -->
+          <a-tab-pane loading="true" tab="表格统计" key="1">
+            <a-row>
+              <a-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24">
+                <div style="padding: 10px">
+                  <a-table
+                    bordered
+                    ref="table"
+                    :data-source="chartsData"
+                    :columns="columns"
+                    :pagination="pagination"
+                    tableLayout="auto"
+                    @change="handleTableChange"
+                    :scroll="{x: 1, y: BaseTool.Constant.scrollY }"
+                    rowKey="month">
+                    <span slot="action" slot-scope="record">
+                      <template>
+                        <a @click="handleView(record)">查看明细</a>
+                        <!-- <a-divider type="vertical" /> -->
+                        <!-- <a @click="doExportDetail(record)">导出</a> -->
+                      </template>
+                    </span>
+                  </a-table>
+                </div>
+              </a-col>
+            </a-row>
+          </a-tab-pane>
+        </a-tabs>
+      </div>
+    </a-card>
+    <!-- <print-in-repair-report ref="basePrintModal" @ok="handleOk"/> -->
+    <detail-repair-report ref="detailModal" @ok="handleOk"/>
+  </div>
+</template>
+
+<script>
+import { getFiftyFailSbReport, exportMonthReportBig24, exportMonthReportBig24Month } from '@/api/report/application-form'
+import { Chart } from '@antv/g2'
+import PrintInRepairReport from '@/views/dashboard/modules/PrintInRepairReport'
+import DetailRepairReport from '@/views/dashboard/modules/DetailRepairReport'
+import moment from 'moment'
+
+export default {
+  name: 'Analysis',
+  components: {
+    PrintInRepairReport,
+    Chart,
+    DetailRepairReport
+  },
+  props: {
+  },
+  data () {
+    return {
+      loading: false,
+      serverData: [],
+      pagination: {
+        pageSize: 10,
+        current: 1
+      },
+      monthFormat: 'YYYY-MM',
+      // defaultStartMonth: this.BaseTool.Moment().format(this.BaseTool.Date.PICKER_NORM_YEAR) + '-01',
+      // defaultEndMonth: this.BaseTool.Moment().format(this.BaseTool.Date.PICKER_NORM_YEAR) + '-12',
+      // queryParam: {
+      //   // year: 2021,
+      //   startMonth: this.BaseTool.Moment().format(this.BaseTool.Date.PICKER_NORM_YEAR) + '-01-01',
+      //   endMonth: this.BaseTool.Moment().format(this.BaseTool.Date.PICKER_NORM_YEAR) + '-12-01',
+      //   searchType: this.searchType
+      // },
+      visible: true,
+      chart: null, // 创建一个chart变量
+      chartsData: [],
+      // 表头
+      columns: [
+        {
+          title: '排名',
+          width: 120,
+          dataIndex: 'index',
+          customRender: (text, record, index) => {
+            return (this.pagination.current - 1) * this.pagination.pageSize + index + 1
+          }
+        },
+        {
+          title: '设备名称',
+          width: 120,
+          dataIndex: 'name'
+        },
+        {
+          title: '设备编号',
+          width: 120,
+          dataIndex: 'no'
+        },
+        {
+          title: '故障次数',
+          width: 120,
+          dataIndex: 'totalNum'
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          align: 'center',
+          scopedSlots: { customRender: 'action' }
+        }
+      ]
+    }
+  },
+  created () {
+  },
+  mounted () {
+    console.log(this.$refs.table)
+    // this.$nextTick(function () {
+    this.getData()
+    // })
+  },
+  methods: {
+    moment,
+    handleTableChange (pagination) {
+      this.pagination.current = pagination.current
+    },
+    onStartChange (date, dateString) {
+      this.queryParam.startMonth = this.BaseTool.Date.formatter(dateString + '-01', this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
+    },
+    onEndChange (date, dateString) {
+      this.queryParam.endMonth = this.BaseTool.Date.formatter(dateString + '-01', this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
+    },
+    getData () {
+      // if (this.queryParam.startMonth == null) {
+      //   this.$message.error('请选择起始月份')
+      //   return
+      // }
+      // if (this.queryParam.endMonth == null) {
+      //   this.$message.error('请选择结束月份')
+      //   return
+      // }
+      getFiftyFailSbReport()
+        .then(res => {
+          this.chartsData = res.data
+          // this.getCharts('container', this.chartsData)// 调用统计图
+        })
+    },
+    getCharts (id, data) {
+      this.chart && this.chart.destroy()// 防止点击搜索按钮新增一个
+      this.chart = new Chart({
+        container: 'container',
+        autoFit: true,
+        height: 400
+      })
+      this.chart.data(data)
+      this.chart.scale('num', {
+        nice: true
+      })
+      this.chart.tooltip({
+        showMarkers: true,
+        shared: true
+      })
+      this.chart.interval().position('month*num')
+      this.chart.interaction('active-region')
+      this.chart.legend({
+        position: 'bottom'
+      })
+      this.chart.render()
+    },
+    doExport () {
+      const parameter = {
+        ...this.queryParam
+      }
+      exportMonthReportBig24(parameter).then(file => {
+        this.BaseTool.UPLOAD.downLoadExportExcel(file)
+      })
+    },
+    doExportDetail (record) {
+      const parameter = {
+        ...this.queryParam,
+        month: record.month,
+        year: record.year
+      }
+      exportMonthReportBig24Month(parameter).then(file => {
+        this.BaseTool.UPLOAD.downLoadExportExcel(file)
+      })
+    },
+    handlePrint (record) {
+      const modal = this.$refs.basePrintModal
+      this.visible = false
+      modal.base({ startMonth: this.queryParam.startMonth, endMonth: this.queryParam.endMonth, title: this.title, data: this.chartsData })
+    },
+    handleView (record) {
+      console.log(111)
+      console.log(record)
+      const modal = this.$refs.detailModal
+      modal.base(record)
+    },
+    handleOk () {
+      this.visible = true
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .extra-wrapper {
+    line-height: 55px;
+    padding-right: 24px;
+
+    .extra-item {
+      display: inline-block;
+      margin-right: 24px;
+
+      a {
+        margin-left: 24px;
+      }
+    }
+  }
+
+  .antd-pro-pages-dashboard-analysis-twoColLayout {
+    position: relative;
+    display: flex;
+    display: block;
+    flex-flow: row wrap;
+  }
+
+  .antd-pro-pages-dashboard-analysis-salesCard {
+    height: calc(100% - 24px);
+    /deep/ .ant-card-head {
+      position: relative;
+    }
+  }
+
+  .dashboard-analysis-iconGroup {
+    i {
+      margin-left: 16px;
+      color: rgba(0,0,0,.45);
+      cursor: pointer;
+      transition: color .32s;
+      color: black;
+    }
+  }
+  .analysis-salesTypeRadio {
+    position: absolute;
+    right: 54px;
+    bottom: 12px;
+  }
+</style>