فهرست منبع

修改统计版块九小

“yueshang” 1 سال پیش
والد
کامیت
f568e547bc

+ 22 - 1
src/api/backend/statistics.js

@@ -14,10 +14,31 @@ export function getDdlist() {
     })
   }
   // 发现隐患-整改隐患数
-  export function tongjiBroad(ids) {
+  export function tongjiBroad() {
     return request({
       url: '/backend/tongji-broad/page',
       method: "get",
     })
   }
+  //设备扫码量排行
+  export function tongjiDevscanorder() {
+    return request({
+      url: '/backend/devscan-order/page',
+      method: "get",
+    })
+  }
+  //设备隐患排行
+  export function tongjiDengertypeorder() {
+    return request({
+      url: '/backend/dengertype-order/page',
+      method: "get",
+    })
+  }
+  //监督员统计
+  export function watcherPage() {
+    return request({
+      url: '/backend/watcher/page',
+      method: "get",
+    })
+  }
   

BIN
src/assets/images/fire5.png


BIN
src/assets/images/fire7.png


BIN
src/assets/images/fire9.png


+ 193 - 192
src/utils/dict.js

@@ -1,192 +1,193 @@
-/**
- * Created by 芋道源码
- *
- * 数据字典工具类
- */
-import store from "@/store";
-
-export const DICT_TYPE = {
-    USER_TYPE: "user_type",
-    COMMON_STATUS: "common_status",
-
-    // ========== SYSTEM 模块 ==========
-    SYSTEM_USER_SEX: "system_user_sex",
-    SYSTEM_MENU_TYPE: "system_menu_type",
-    SYSTEM_ROLE_TYPE: "system_role_type",
-    SYSTEM_DATA_SCOPE: "system_data_scope",
-    SYSTEM_NOTICE_TYPE: "system_notice_type",
-    SYSTEM_OPERATE_TYPE: "system_operate_type",
-    SYSTEM_LOGIN_TYPE: "system_login_type",
-    SYSTEM_LOGIN_RESULT: "system_login_result",
-    SYSTEM_SMS_CHANNEL_CODE: "system_sms_channel_code",
-    SYSTEM_SMS_TEMPLATE_TYPE: "system_sms_template_type",
-    SYSTEM_SMS_SEND_STATUS: "system_sms_send_status",
-    SYSTEM_SMS_RECEIVE_STATUS: "system_sms_receive_status",
-    SYSTEM_ERROR_CODE_TYPE: "system_error_code_type",
-    SYSTEM_OAUTH2_GRANT_TYPE: "system_oauth2_grant_type",
-
-    // ========== INFRA 模块 ==========
-    INFRA_BOOLEAN_STRING: "infra_boolean_string",
-    INFRA_REDIS_TIMEOUT_TYPE: "infra_redis_timeout_type",
-    INFRA_JOB_STATUS: "infra_job_status",
-    INFRA_JOB_LOG_STATUS: "infra_job_log_status",
-    INFRA_API_ERROR_LOG_PROCESS_STATUS: "infra_api_error_log_process_status",
-    INFRA_CONFIG_TYPE: "meeting_type",
-    INFRA_CODEGEN_TEMPLATE_TYPE: "infra_codegen_template_type",
-    INFRA_CODEGEN_SCENE: "infra_codegen_scene",
-    INFRA_FILE_STORAGE: "infra_file_storage",
-
-    // ========== BPM 模块 ==========
-    BPM_MODEL_CATEGORY: "bpm_model_category",
-    BPM_MODEL_FORM_TYPE: "bpm_model_form_type",
-    BPM_TASK_ASSIGN_RULE_TYPE: "bpm_task_assign_rule_type",
-    BPM_PROCESS_INSTANCE_STATUS: "bpm_process_instance_status",
-    BPM_PROCESS_INSTANCE_RESULT: "bpm_process_instance_result",
-    BPM_TASK_ASSIGN_SCRIPT: "bpm_task_assign_script",
-    BPM_OA_LEAVE_TYPE: "bpm_oa_leave_type",
-
-    // ========== PAY 模块 ==========
-    PAY_CHANNEL_WECHAT_VERSION: "pay_channel_wechat_version", // 微信渠道版本
-    PAY_CHANNEL_ALIPAY_SIGN_TYPE: "pay_channel_alipay_sign_type", // 支付渠道支付宝算法类型
-    PAY_CHANNEL_ALIPAY_MODE: "pay_channel_alipay_mode", // 支付宝公钥类型
-    PAY_CHANNEL_ALIPAY_SERVER_TYPE: "pay_channel_alipay_server_type", // 支付宝网关地址
-    PAY_CHANNEL_CODE_TYPE: "pay_channel_code_type", // 支付渠道编码类型
-    PAY_ORDER_NOTIFY_STATUS: "pay_order_notify_status", // 商户支付订单回调状态
-    PAY_ORDER_STATUS: "pay_order_status", // 商户支付订单状态
-    PAY_ORDER_REFUND_STATUS: "pay_order_refund_status", // 商户支付订单退款状态
-    PAY_REFUND_ORDER_STATUS: "pay_refund_order_status", // 退款订单状态
-    PAY_REFUND_ORDER_TYPE: "pay_refund_order_type", // 退款订单类别
-
-    // ========== MALL - PRODUCT 模块 ==========
-    PRODUCT_SPU_STATUS: "product_spu_status", // 商品 SPU 状态
-
-    // ========== MALL - PROMOTION 模块 ==========
-    PROMOTION_DISCOUNT_TYPE: "promotion_discount_type", // 优惠类型
-    PROMOTION_PRODUCT_SCOPE: "promotion_product_scope", // 营销的商品范围
-    PROMOTION_COUPON_TEMPLATE_VALIDITY_TYPE: "promotion_coupon_template_validity_type", // 优惠劵模板的有限期类型
-    PROMOTION_COUPON_STATUS: "promotion_coupon_status", // 优惠劵的状态
-    PROMOTION_COUPON_TAKE_TYPE: "promotion_coupon_take_type", // 优惠劵的领取方式
-    PROMOTION_ACTIVITY_STATUS: "promotion_activity_status", // 优惠活动的状态
-    PROMOTION_CONDITION_TYPE: "promotion_condition_type", // 营销的条件类型枚举
-
-    // ========== BACKEND - EMP 模块 ==========
-    BACKEND_EMP_ORG: "backend_emp_org", // 所属单位
-    BACKEND_EMP_DWLX: "backend_org_dwlx", // 监管单位类别
-    DICT_INSPECT_TYPE: "dict_inspect_type", // 检查项类型
-    DICT_FIRE_DECIVE_TYPE: "dict_fire_device_type", // 消防设施分类
-    DICT_IMPORTTANT_ORG_LEVEL: "dict_important_org_level", // 重点单位等级
-    COMPANY_inspectitem_kind: "company_inspectitem_kind", //消防单位检查形式
-    DENGER_HANDLE: "denger_handle", //隐患处理方式
-    DENGER_STATUS: "danger_status", //隐患记录状态
-    INSPECTITEM_TYPE: "inspectitem_type", //检查类型
-    CHECK_FRE: "check_fre", //检查频次
-    TASK_TYPE: "task_type", //任务类型
-    TASK_STATUS: "task_status", //任务类型
-    RECORD_TYPE: "record_type", //记录类型
-    FPD_TYPE: "fpd_type", //设备类型
-    IS_NORMAL: "is_normal", //是否正常状态值
-    BACKEND_ORG_TYPE: "backend_org_type", //单位类型
-    DWXZ:'dwxz',//单位 性质
-    SUPERVISION_ORG_TYPE: "supervision_org_type", //监管单位类别
-    BACKEND_EMP_KIND: "backend_emp_kind",
-    BACKEND_DET_RESULT: "det_result",//检测维保结果,
-    FIRE_WORK_STATUS:"fire_work_status",
-    MICRO_EMP_TYPE:'micro_emp_type'  //微型消防站人员类型
-        // ========== 数据字典映射 =================
-};
-
-/**
- * 获取 dictType 对应的数据字典数组
- *
- * @param dictType 数据类型
- * @returns {*|Array} 数据字典数组
- */
-export function getDictDatas(dictType) {
-    return store.getters.dict_datas[dictType] || [];
-}
-
-/**
- * 获取 dictType 对应的数据字典数组
- *
- * @param dictType 数据类型
- * @param values 数组、单个元素
- * @returns {*|Array} 数据字典数组
- */
-export function getDictDatas2(dictType, values) {
-    // console.log('canshu',dictType,values);
-    if (values === undefined) {
-        return [];
-    }
-    // 如果是单个元素,则转换成数组
-    if (!Array.isArray(values)) {
-        values = [this.value];
-    }
-    // 获得字典数据
-    const results = [];
-    for (const value of values) {
-        const dict = getDictData(dictType, value);
-        if (dict) {
-            results.push(dict);
-        }
-    }
-    return results;
-}
-
-export function getDictData(dictType, value) {
-    // 获取 dictType 对应的数据字典数组
-    const dictDatas = getDictDatas(dictType);
-    // console.log('dictDatas',dictDatas);
-    if (!dictDatas || dictDatas.length === 0) {
-        return "";
-    }
-    // 获取 value 对应的展示名
-    value = value + ""; // 强制转换成字符串,因为 DictData 小类数值,是字符串
-    for (const dictData of dictDatas) {
-        if (dictData.value === value) {
-            return dictData;
-        }
-        // //针对检测维保结果
-        // if(dictType === 'det_result'){
-        //     if(dictData.label === value){
-        //         return dictData; 
-        //     }
-        // }
-    }
-    return undefined;
-}
-
-export function getDictDataLabel(dictType, value) {
-    const dict = getDictData(dictType, value);
-    return dict ? dict.label : "";
-}
-
-//获取本地的街道信息
-export function getStreetValue(key) {
-    // console.log('key',key);
-    const streetArr = JSON.parse(localStorage.getItem('streetList'))
-    // console.log('streetArr',streetArr);
-    if(!key ||key.length === 0){
-        return ''
-    }
-    key = key - 0
-   const thisStreet =  streetArr.find(item=>item.key === key)
-   if(!thisStreet){
-    return ''
-   }
-   return thisStreet.value
-}
-
-//获取本地的街道id
-export function getStreetId(key) {
-    // console.log('key',key);
-    const streetArr = JSON.parse(localStorage.getItem('streetList'))
-    // console.log('streetArr',streetArr);
-    if(!key ||key.length === 0){
-        return ''
-    }
-   const thisStreet =  streetArr.find(item=>item.value === key)
-   if(!thisStreet){
-    return 'NotFound'
-   }
-   return thisStreet.key
-}
+/**
+ * Created by 芋道源码
+ *
+ * 数据字典工具类
+ */
+import store from "@/store";
+
+export const DICT_TYPE = {
+    USER_TYPE: "user_type",
+    COMMON_STATUS: "common_status",
+
+    // ========== SYSTEM 模块 ==========
+    SYSTEM_USER_SEX: "system_user_sex",
+    SYSTEM_MENU_TYPE: "system_menu_type",
+    SYSTEM_ROLE_TYPE: "system_role_type",
+    SYSTEM_DATA_SCOPE: "system_data_scope",
+    SYSTEM_NOTICE_TYPE: "system_notice_type",
+    SYSTEM_OPERATE_TYPE: "system_operate_type",
+    SYSTEM_LOGIN_TYPE: "system_login_type",
+    SYSTEM_LOGIN_RESULT: "system_login_result",
+    SYSTEM_SMS_CHANNEL_CODE: "system_sms_channel_code",
+    SYSTEM_SMS_TEMPLATE_TYPE: "system_sms_template_type",
+    SYSTEM_SMS_SEND_STATUS: "system_sms_send_status",
+    SYSTEM_SMS_RECEIVE_STATUS: "system_sms_receive_status",
+    SYSTEM_ERROR_CODE_TYPE: "system_error_code_type",
+    SYSTEM_OAUTH2_GRANT_TYPE: "system_oauth2_grant_type",
+
+    // ========== INFRA 模块 ==========
+    INFRA_BOOLEAN_STRING: "infra_boolean_string",
+    INFRA_REDIS_TIMEOUT_TYPE: "infra_redis_timeout_type",
+    INFRA_JOB_STATUS: "infra_job_status",
+    INFRA_JOB_LOG_STATUS: "infra_job_log_status",
+    INFRA_API_ERROR_LOG_PROCESS_STATUS: "infra_api_error_log_process_status",
+    INFRA_CONFIG_TYPE: "meeting_type",
+    INFRA_CODEGEN_TEMPLATE_TYPE: "infra_codegen_template_type",
+    INFRA_CODEGEN_SCENE: "infra_codegen_scene",
+    INFRA_FILE_STORAGE: "infra_file_storage",
+
+    // ========== BPM 模块 ==========
+    BPM_MODEL_CATEGORY: "bpm_model_category",
+    BPM_MODEL_FORM_TYPE: "bpm_model_form_type",
+    BPM_TASK_ASSIGN_RULE_TYPE: "bpm_task_assign_rule_type",
+    BPM_PROCESS_INSTANCE_STATUS: "bpm_process_instance_status",
+    BPM_PROCESS_INSTANCE_RESULT: "bpm_process_instance_result",
+    BPM_TASK_ASSIGN_SCRIPT: "bpm_task_assign_script",
+    BPM_OA_LEAVE_TYPE: "bpm_oa_leave_type",
+
+    // ========== PAY 模块 ==========
+    PAY_CHANNEL_WECHAT_VERSION: "pay_channel_wechat_version", // 微信渠道版本
+    PAY_CHANNEL_ALIPAY_SIGN_TYPE: "pay_channel_alipay_sign_type", // 支付渠道支付宝算法类型
+    PAY_CHANNEL_ALIPAY_MODE: "pay_channel_alipay_mode", // 支付宝公钥类型
+    PAY_CHANNEL_ALIPAY_SERVER_TYPE: "pay_channel_alipay_server_type", // 支付宝网关地址
+    PAY_CHANNEL_CODE_TYPE: "pay_channel_code_type", // 支付渠道编码类型
+    PAY_ORDER_NOTIFY_STATUS: "pay_order_notify_status", // 商户支付订单回调状态
+    PAY_ORDER_STATUS: "pay_order_status", // 商户支付订单状态
+    PAY_ORDER_REFUND_STATUS: "pay_order_refund_status", // 商户支付订单退款状态
+    PAY_REFUND_ORDER_STATUS: "pay_refund_order_status", // 退款订单状态
+    PAY_REFUND_ORDER_TYPE: "pay_refund_order_type", // 退款订单类别
+
+    // ========== MALL - PRODUCT 模块 ==========
+    PRODUCT_SPU_STATUS: "product_spu_status", // 商品 SPU 状态
+
+    // ========== MALL - PROMOTION 模块 ==========
+    PROMOTION_DISCOUNT_TYPE: "promotion_discount_type", // 优惠类型
+    PROMOTION_PRODUCT_SCOPE: "promotion_product_scope", // 营销的商品范围
+    PROMOTION_COUPON_TEMPLATE_VALIDITY_TYPE: "promotion_coupon_template_validity_type", // 优惠劵模板的有限期类型
+    PROMOTION_COUPON_STATUS: "promotion_coupon_status", // 优惠劵的状态
+    PROMOTION_COUPON_TAKE_TYPE: "promotion_coupon_take_type", // 优惠劵的领取方式
+    PROMOTION_ACTIVITY_STATUS: "promotion_activity_status", // 优惠活动的状态
+    PROMOTION_CONDITION_TYPE: "promotion_condition_type", // 营销的条件类型枚举
+
+    // ========== BACKEND - EMP 模块 ==========
+    BACKEND_EMP_ORG: "backend_emp_org", // 所属单位
+    BACKEND_EMP_DWLX: "backend_org_dwlx", // 监管单位类别
+    DICT_INSPECT_TYPE: "dict_inspect_type", // 检查项类型
+    DICT_FIRE_DECIVE_TYPE: "dict_fire_device_type", // 消防设施分类
+    DANGER_TYPE:'dangerType',//隐患类型
+    DICT_IMPORTTANT_ORG_LEVEL: "dict_important_org_level", // 重点单位等级
+    COMPANY_inspectitem_kind: "company_inspectitem_kind", //消防单位检查形式
+    DENGER_HANDLE: "denger_handle", //隐患处理方式
+    DENGER_STATUS: "danger_status", //隐患记录状态
+    INSPECTITEM_TYPE: "inspectitem_type", //检查类型
+    CHECK_FRE: "check_fre", //检查频次
+    TASK_TYPE: "task_type", //任务类型
+    TASK_STATUS: "task_status", //任务类型
+    RECORD_TYPE: "record_type", //记录类型
+    FPD_TYPE: "fpd_type", //设备类型
+    IS_NORMAL: "is_normal", //是否正常状态值
+    BACKEND_ORG_TYPE: "backend_org_type", //单位类型
+    DWXZ:'dwxz',//单位 性质
+    SUPERVISION_ORG_TYPE: "supervision_org_type", //监管单位类别
+    BACKEND_EMP_KIND: "backend_emp_kind",
+    BACKEND_DET_RESULT: "det_result",//检测维保结果,
+    FIRE_WORK_STATUS:"fire_work_status",
+    MICRO_EMP_TYPE:'micro_emp_type'  //微型消防站人员类型
+        // ========== 数据字典映射 =================
+};
+
+/**
+ * 获取 dictType 对应的数据字典数组
+ *
+ * @param dictType 数据类型
+ * @returns {*|Array} 数据字典数组
+ */
+export function getDictDatas(dictType) {
+    return store.getters.dict_datas[dictType] || [];
+}
+
+/**
+ * 获取 dictType 对应的数据字典数组
+ *
+ * @param dictType 数据类型
+ * @param values 数组、单个元素
+ * @returns {*|Array} 数据字典数组
+ */
+export function getDictDatas2(dictType, values) {
+    // console.log('canshu',dictType,values);
+    if (values === undefined) {
+        return [];
+    }
+    // 如果是单个元素,则转换成数组
+    if (!Array.isArray(values)) {
+        values = [this.value];
+    }
+    // 获得字典数据
+    const results = [];
+    for (const value of values) {
+        const dict = getDictData(dictType, value);
+        if (dict) {
+            results.push(dict);
+        }
+    }
+    return results;
+}
+
+export function getDictData(dictType, value) {
+    // 获取 dictType 对应的数据字典数组
+    const dictDatas = getDictDatas(dictType);
+    // console.log('dictDatas',dictDatas);
+    if (!dictDatas || dictDatas.length === 0) {
+        return "";
+    }
+    // 获取 value 对应的展示名
+    value = value + ""; // 强制转换成字符串,因为 DictData 小类数值,是字符串
+    for (const dictData of dictDatas) {
+        if (dictData.value === value) {
+            return dictData;
+        }
+        // //针对检测维保结果
+        // if(dictType === 'det_result'){
+        //     if(dictData.label === value){
+        //         return dictData; 
+        //     }
+        // }
+    }
+    return undefined;
+}
+
+export function getDictDataLabel(dictType, value) {
+    const dict = getDictData(dictType, value);
+    return dict ? dict.label : "";
+}
+
+//获取本地的街道信息
+export function getStreetValue(key) {
+    // console.log('key',key);
+    const streetArr = JSON.parse(localStorage.getItem('streetList'))
+    // console.log('streetArr',streetArr);
+    if(!key ||key.length === 0){
+        return ''
+    }
+    key = key - 0
+   const thisStreet =  streetArr.find(item=>item.key === key)
+   if(!thisStreet){
+    return ''
+   }
+   return thisStreet.value
+}
+
+//获取本地的街道id
+export function getStreetId(key) {
+    // console.log('key',key);
+    const streetArr = JSON.parse(localStorage.getItem('streetList'))
+    // console.log('streetArr',streetArr);
+    if(!key ||key.length === 0){
+        return ''
+    }
+   const thisStreet =  streetArr.find(item=>item.value === key)
+   if(!thisStreet){
+    return 'NotFound'
+   }
+   return thisStreet.key
+}

+ 158 - 42
src/views/backend/dengertypeOrder/index.vue

@@ -1,13 +1,26 @@
 <template>
   <div class="app-container">
-
     <!-- 搜索工作栏 -->
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <el-form-item label="隐患类型" prop="dengertype">
-        <el-input v-model="queryParams.dengertype" placeholder="请输入隐患类型" clearable @keyup.enter.native="handleQuery"/>
+        <el-input
+          v-model="queryParams.dengertype"
+          placeholder="请输入隐患类型"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="el-icon-search" @click="handleQuery"
+          >搜索</el-button
+        >
         <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -15,43 +28,106 @@
     <!-- 操作工具栏 -->
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
-                   v-hasPermi="['backend:dengertype-order:create']">新增</el-button>
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['backend:dengertype-order:create']"
+          >新增</el-button
+        >
       </el-col>
       <el-col :span="1.5">
-        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
-                   v-hasPermi="['backend:dengertype-order:export']">导出</el-button>
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          :loading="exportLoading"
+          v-hasPermi="['backend:dengertype-order:export']"
+          >导出</el-button
+        >
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
     <!-- 列表 -->
     <el-table v-loading="loading" :data="list">
       <el-table-column label="id" align="center" prop="id" />
-      <el-table-column label="大队id" align="center" prop="deptid" />
+      <el-table-column label="消防大队" align="center" prop="deptid">
+        <template v-slot="scope">
+          {{ deptList(scope.row.deptid) }}
+        </template>
+      </el-table-column>
       <el-table-column label="隐患类型" align="center" prop="dengertype" />
       <el-table-column label="排行" align="center" prop="sort" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template v-slot="scope">
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
-                     v-hasPermi="['backend:dengertype-order:update']">修改</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-                     v-hasPermi="['backend:dengertype-order:delete']">删除</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['backend:dengertype-order:update']"
+            >修改</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['backend:dengertype-order:delete']"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
     <!-- 分页组件 -->
-    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
-                @pagination="getList"/>
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNo"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
 
     <!-- 对话框(添加 / 修改) -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
+    <el-dialog
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      v-dialogDrag
+      append-to-body
+    >
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="大队id" prop="deptid">
-          <el-input v-model="form.deptid" placeholder="请输入大队id" />
+        <el-form-item label="消防大队" prop="deptid">
+          <el-select v-model="form.deptid" placeholder="请选择消防大队">
+            <el-option
+              :label="item.deptName"
+              :value="item.id"
+              v-for="item in deptData"
+              :key="item.id"
+            ></el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="隐患类型" prop="dengertype">
-          <el-input v-model="form.dengertype" placeholder="请输入隐患类型" />
+          <el-select v-model="form.dengertype" placeholder="请选择隐患类型">
+            <el-option
+              v-for="dict in this.getDictDatas(DICT_TYPE.DANGER_TYPE)"
+              :key="dict.label"
+              :label="dict.label"
+              :value="dict.label"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="排行" prop="sort">
           <el-input v-model="form.sort" placeholder="请输入排行" />
@@ -66,12 +142,19 @@
 </template>
 
 <script>
-import { createDengertypeOrder, updateDengertypeOrder, deleteDengertypeOrder, getDengertypeOrder, getDengertypeOrderPage, exportDengertypeOrderExcel } from "@/api/backend/dengertypeOrder";
-
+import {
+  createDengertypeOrder,
+  updateDengertypeOrder,
+  deleteDengertypeOrder,
+  getDengertypeOrder,
+  getDengertypeOrderPage,
+  exportDengertypeOrderExcel,
+} from "@/api/backend/dengertypeOrder";
+import { getDdlist } from "@/api/backend/statistics";
+import { DICT_TYPE, getDictDatas } from "@/utils/dict";
 export default {
   name: "DengertypeOrder",
-  components: {
-  },
+  components: {},
   data() {
     return {
       // 遮罩层
@@ -98,24 +181,49 @@ export default {
       form: {},
       // 表单校验
       rules: {
-        deptid: [{ required: true, message: "大队id不能为空", trigger: "blur" }],
-      }
+        deptid: [
+          { required: true, message: "大队不能为空", trigger: "blur" },
+        ],
+      },
+      deptData: [],
     };
   },
   created() {
     this.getList();
+    this.getDeptData();
   },
   methods: {
     /** 查询列表 */
     getList() {
       this.loading = true;
       // 执行查询
-      getDengertypeOrderPage(this.queryParams).then(response => {
+      getDengertypeOrderPage(this.queryParams).then((response) => {
         this.list = response.data.list;
         this.total = response.data.total;
         this.loading = false;
       });
     },
+    /** 获取消防大队下拉框数据 */
+    getDeptData() {
+      getDdlist().then((res) => {
+        this.deptData = res.data;
+      });
+    },
+    /** 列表消防大队转换 id2name*/
+    deptList(id) {
+      let thisDept;
+      const arr = JSON.parse(JSON.stringify(this.deptData));
+      arr.forEach((item) => {
+        if (item.id == id) {
+          thisDept = item;
+        }
+      });
+      if (thisDept) {
+        return thisDept.deptName;
+      } else {
+        return "";
+      }
+    },
     /** 取消按钮 */
     cancel() {
       this.open = false;
@@ -151,7 +259,7 @@ export default {
     handleUpdate(row) {
       this.reset();
       const id = row.id;
-      getDengertypeOrder(id).then(response => {
+      getDengertypeOrder(id).then((response) => {
         this.form = response.data;
         this.open = true;
         this.title = "修改隐患类型数量排行";
@@ -159,13 +267,13 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["form"].validate((valid) => {
         if (!valid) {
           return;
         }
         // 修改的提交
         if (this.form.id != null) {
-          updateDengertypeOrder(this.form).then(response => {
+          updateDengertypeOrder(this.form).then((response) => {
             this.$modal.msgSuccess("修改成功");
             this.open = false;
             this.getList();
@@ -173,7 +281,7 @@ export default {
           return;
         }
         // 添加的提交
-        createDengertypeOrder(this.form).then(response => {
+        createDengertypeOrder(this.form).then((response) => {
           this.$modal.msgSuccess("新增成功");
           this.open = false;
           this.getList();
@@ -183,27 +291,35 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const id = row.id;
-      this.$modal.confirm('是否确认删除隐患类型数量排行编号为"' + id + '"的数据项?').then(function() {
+      this.$modal
+        .confirm('是否确认删除隐患类型数量排行编号为"' + id + '"的数据项?')
+        .then(function () {
           return deleteDengertypeOrder(id);
-        }).then(() => {
+        })
+        .then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");
-        }).catch(() => {});
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
       // 处理查询参数
-      let params = {...this.queryParams};
+      let params = { ...this.queryParams };
       params.pageNo = undefined;
       params.pageSize = undefined;
-      this.$modal.confirm('是否确认导出所有隐患类型数量排行数据项?').then(() => {
+      this.$modal
+        .confirm("是否确认导出所有隐患类型数量排行数据项?")
+        .then(() => {
           this.exportLoading = true;
           return exportDengertypeOrderExcel(params);
-        }).then(response => {
-          this.$download.excel(response, '隐患类型数量排行.xls');
+        })
+        .then((response) => {
+          this.$download.excel(response, "隐患类型数量排行.xls");
           this.exportLoading = false;
-        }).catch(() => {});
-    }
-  }
+        })
+        .catch(() => {});
+    },
+  },
 };
 </script>

+ 49 - 8
src/views/backend/devscanOrder/index.vue

@@ -3,7 +3,7 @@
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="大队id" prop="deptid">
+      <el-form-item label="大队" prop="deptid">
         <el-input v-model="queryParams.deptid" placeholder="请输入大队id" clearable @keyup.enter.native="handleQuery"/>
       </el-form-item>
       <el-form-item label="设备类型" prop="inspecttype">
@@ -34,7 +34,11 @@
     <!-- 列表 -->
     <el-table v-loading="loading" :data="list">
       <el-table-column label="id" align="center" prop="id" />
-      <el-table-column label="大队id" align="center" prop="deptid" />
+      <el-table-column label="消防大队" align="center" prop="deptid">
+          <template v-slot="scope">
+            {{ deptList(scope.row.deptid) }}
+          </template>
+      </el-table-column>
       <el-table-column label="设备类型" align="center" prop="inspecttype" />
       <el-table-column label="排行" align="center" prop="sort" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -53,11 +57,25 @@
     <!-- 对话框(添加 / 修改) -->
     <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="大队id" prop="deptid">
-          <el-input v-model="form.deptid" placeholder="请输入大队id" />
+        <el-form-item label="消防大队" prop="deptid">
+          <el-select v-model="form.deptid" placeholder="请选择消防大队">
+            <el-option
+              :label="item.deptName"
+              :value="item.id"
+              v-for="item in deptData"
+              :key="item.id"
+            ></el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="设备类型" prop="inspecttype">
-          <el-input v-model="form.inspecttype" placeholder="请输入设备类型" />
+          <el-select v-model="form.inspecttype" placeholder="请选择设备类型">
+            <el-option
+              v-for="dict in this.getDictDatas(DICT_TYPE.DICT_FIRE_DECIVE_TYPE)"
+              :key="dict.label"
+              :label="dict.label"
+              :value="dict.label"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="排行" prop="sort">
           <el-input v-model="form.sort" placeholder="请输入排行" />
@@ -73,7 +91,7 @@
 
 <script>
 import { createDevscanOrder, updateDevscanOrder, deleteDevscanOrder, getDevscanOrder, getDevscanOrderPage, exportDevscanOrderExcel } from "@/api/backend/devscanOrder";
-
+import { getDdlist } from "@/api/backend/statistics";
 export default {
   name: "DevscanOrder",
   components: {
@@ -106,12 +124,14 @@ export default {
       form: {},
       // 表单校验
       rules: {
-        deptid: [{ required: true, message: "大队id不能为空", trigger: "blur" }],
-      }
+        deptid: [{ required: true, message: "大队不能为空", trigger: "blur" }],
+      },
+      deptData: [],
     };
   },
   created() {
     this.getList();
+    this.getDeptData();
   },
   methods: {
     /** 查询列表 */
@@ -124,6 +144,27 @@ export default {
         this.loading = false;
       });
     },
+        /** 获取消防大队下拉框数据 */
+        getDeptData() {
+      getDdlist().then((res) => {
+        this.deptData = res.data;
+      });
+    },
+        /** 列表消防大队转换 id2name*/
+        deptList(id) {
+      let thisDept;
+      const arr = JSON.parse(JSON.stringify(this.deptData));
+      arr.forEach((item) => {
+        if (item.id == id) {
+          thisDept = item;
+        }
+      });
+      if (thisDept) {
+        return thisDept.deptName;
+      } else {
+        return "";
+      }
+    },
     /** 取消按钮 */
     cancel() {
       this.open = false;

+ 285 - 285
src/views/backend/inspectItem/index.vue

@@ -1,285 +1,285 @@
-<template>
-  <div class="app-container">
-    <!-- 搜索工作栏 -->
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="检查项" prop="inspectName">
-        <el-select v-model="queryParams.inspectName" placeholder="请选择检查项" clearable size="small">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.DICT_FIRE_DEVICE_TYPE)" :key="dict.value"
-            :label="dict.label" :value="dict.value" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="检查类型" prop="inspectKind">
-        <el-select v-model="queryParams.inspectKind" placeholder="请选择检查类型" clearable size="small">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BACKEND_INSPECTITEM_KIND)" :key="dict.value"
-            :label="dict.label" :value="dict.value" />
-        </el-select>
-      </el-form-item>
-      <!-- <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="dict.label"
-            :value="dict.value" />
-        </el-select>
-      </el-form-item> -->
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-    <!-- 操作工具栏 -->
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
-          v-hasPermi="['backend:inspect-item:create']">新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
-          v-hasPermi="['backend:inspect-item:export']">导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-    <!-- 列表 -->
-    <el-table v-loading="loading" :data="list">
-      <el-table-column label="ID" align="center" prop="id" />
-      <el-table-column label="检查项" align="center" prop="inspectName">
-        <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.DICT_FIRE_DEVICE_TYPE" :value="scope.row.inspectName" />
-        </template>
-      </el-table-column>
-      <el-table-column label="检查类型" align="center" prop="inspectKind">
-        <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.BACKEND_INSPECTITEM_KIND" :value="scope.row.inspectKind" />
-        </template>
-      </el-table-column>
-      <el-table-column label="检查频次" align="center" prop="inspectFrequency">
-        <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.CHECK_FRE" :value="scope.row.inspectFrequency" />
-        </template>
-      </el-table-column>
-      <el-table-column label="单位类型" align="center" prop="orgType">
-        <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.COMPANY_inspectitem_kind" :value="scope.row.orgType" />
-        </template>
-      </el-table-column>
-      <!-- <el-table-column label="状态" align="center" prop="status">
-        <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
-        </template>
-      </el-table-column> -->
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template v-slot="scope">
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
-            v-hasPermi="['backend:inspect-item:update']">修改</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-            v-hasPermi="['backend:inspect-item:delete']">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <!-- 分页组件 -->
-    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
-      @pagination="getList" />
-    <!-- 对话框(添加 / 修改) -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="检查项" prop="inspectName">
-          <el-select v-model="form.inspectName" placeholder="请选择检查项">
-            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BACKEND_EMP_ORG)" :key="dict.value" :label="dict.label"
-              :value="dict.value" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="检查类型" prop="inspectKind">
-          <el-select v-model="form.inspectKind" placeholder="请选择检查类型">
-            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BACKEND_INSPECTITEM_KIND)" :key="dict.value"
-              :label="dict.label" :value="dict.value" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="检查频次" prop="inspectFrequency">
-          <el-checkbox-group v-model="form.inspectFrequency">
-            <el-checkbox v-for="dict in this.getDictDatas(DICT_TYPE.BACKEND_CHECK_FRE)" :key="dict.value"
-              :label="dict.value">{{ dict.label }}</el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-        <el-form-item label="单位类型" prop="orgType">
-          <el-checkbox-group v-model="form.orgType">
-            <el-checkbox v-for="dict in this.getDictDatas(DICT_TYPE.COMPANY_inspectitem_kind)" :key="dict.value"
-              :label="dict.value">{{ dict.label }}</el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-        <!-- <el-form-item label="状态" prop="status">
-          <el-radio-group v-model="form.status">
-            <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value"
-              :label="parseInt(dict.value)">{{ dict.label }}</el-radio> </el-radio-group>
-        </el-form-item> -->
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { createInspectItem, updateInspectItem, deleteInspectItem, getInspectItem, getInspectItemPage, exportInspectItemExcel } from "@/api/backend/inspectItem"
-import { DICT_TYPE, getDictDatas } from "@/utils/dict";
-export default {
-  name: "InspectItem",
-  components: {
-  },
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 导出遮罩层
-      exportLoading: false,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 检查项目及频次列表
-      list: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNo: 1,
-        pageSize: 10,
-        inspectName: null,
-        inspectKind: null,
-        inspectFrequency: null,
-        orgType: null,
-        status: null,
-      },
-      // 表单参数
-      form: {
-        status: 0
-      },
-      // 表单校验
-      rules: {
-        deviceName: [{ required: true, message: "设施名称不能为空", trigger: "blur" }],
-        deviceCode: [{ required: true, message: "设施编号不能为空", trigger: "blur" }],
-        buildingId: [{ required: true, message: "所属楼宇不能为空", trigger: "change" }],
-        deleted: [{ required: true, message: "是否删除不能为空", trigger: "blur" }],
-        status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
-      }
-    }
-  },
-  created() {
-    this.getList()
-  },
-  methods: {
-    /** 查询列表 */
-    getList() {
-      this.loading = true
-      // 执行查询
-      getInspectItemPage(this.queryParams).then(response => {
-        this.list = response.data.list
-        this.total = response.data.total
-        this.loading = false
-      })
-    },
-    /** 取消按钮 */
-    cancel() {
-      this.open = false
-      this.reset()
-    },
-    /** 表单重置 */
-    reset() {
-      this.form = {
-        id: undefined,
-        inspectName: undefined,
-        inspectKind: undefined,
-        inspectFrequency: [],
-        orgType: [],
-        status: 0,
-      }
-      this.resetForm("form")
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNo = 1
-      this.getList()
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm")
-      this.handleQuery()
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset()
-      this.open = true
-      this.title = "添加检查项目及频次"
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset()
-      const id = row.id
-      getInspectItem(id).then(response => {
-        this.form = response.data
-        this.form.inspectFrequency = this.form.inspectFrequency.split(",")
-        this.form.orgType = this.form.orgType.split(",")
-        this.open = true
-        this.title = "修改检查项目及频次"
-      })
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate((valid) => {
-        if (!valid) {
-          return
-        }
-        // 修改的提交
-        if (this.form.id != null) {
-          updateInspectItem(this.form).then((response) => {
-            this.$modal.msgSuccess("修改成功")
-            this.open = false
-            this.getList()
-          })
-          return
-        }
-        // 添加的提交
-        createInspectItem(this.form).then((response) => {
-          this.$modal.msgSuccess("新增成功")
-          this.open = false
-          this.getList()
-        })
-      })
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const id = row.id
-      this.$modal
-        .confirm('是否确认删除名称为"' + row.inspectName + '"的数据项?')
-        .then(function () {
-          return deleteInspectItem(id)
-        })
-        .then(() => {
-          this.getList()
-          this.$modal.msgSuccess("删除成功")
-        })
-        .catch(() => { })
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      // 处理查询参数
-      let params = { ...this.queryParams }
-      params.pageNo = undefined
-      params.pageSize = undefined
-      // 执行导出
-      this.$modal
-      .confirm("是否确认导出?")
-        .then(() => {
-          this.exportLoading = true
-          return exportInspectItemExcel(params)
-        })
-        .then((response) => {
-          this.$download.excel(response, "检查结果列表.xls")
-          this.exportLoading = false
-        })
-        .catch(() => { })
-    },
-  },
-}
-</script>
+<template>
+  <div class="app-container">
+    <!-- 搜索工作栏 -->
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="检查项" prop="inspectName">
+        <el-select v-model="queryParams.inspectName" placeholder="请选择检查项" clearable size="small">
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.DICT_FIRE_DEVICE_TYPE)" :key="dict.value"
+            :label="dict.label" :value="dict.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="检查类型" prop="inspectKind">
+        <el-select v-model="queryParams.inspectKind" placeholder="请选择检查类型" clearable size="small">
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BACKEND_INSPECTITEM_KIND)" :key="dict.value"
+            :label="dict.label" :value="dict.value" />
+        </el-select>
+      </el-form-item>
+      <!-- <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="dict.label"
+            :value="dict.value" />
+        </el-select>
+      </el-form-item> -->
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+    <!-- 操作工具栏 -->
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
+          v-hasPermi="['backend:inspect-item:create']">新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
+          v-hasPermi="['backend:inspect-item:export']">导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+    <!-- 列表 -->
+    <el-table v-loading="loading" :data="list">
+      <el-table-column label="ID" align="center" prop="id" />
+      <el-table-column label="检查项" align="center" prop="inspectName">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.DICT_FIRE_DEVICE_TYPE" :value="scope.row.inspectName" />
+        </template>
+      </el-table-column>
+      <el-table-column label="检查类型" align="center" prop="inspectKind">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.BACKEND_INSPECTITEM_KIND" :value="scope.row.inspectKind" />
+        </template>
+      </el-table-column>
+      <el-table-column label="检查频次" align="center" prop="inspectFrequency">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.CHECK_FRE" :value="scope.row.inspectFrequency" />
+        </template>
+      </el-table-column>
+      <el-table-column label="单位类型" align="center" prop="orgType">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.COMPANY_inspectitem_kind" :value="scope.row.orgType" />
+        </template>
+      </el-table-column>
+      <!-- <el-table-column label="状态" align="center" prop="status">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
+        </template>
+      </el-table-column> -->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template v-slot="scope">
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['backend:inspect-item:update']">修改</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+            v-hasPermi="['backend:inspect-item:delete']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页组件 -->
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
+    <!-- 对话框(添加 / 修改) -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="检查项" prop="inspectName">
+          <el-select v-model="form.inspectName" placeholder="请选择检查项">
+            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BACKEND_EMP_ORG)" :key="dict.value" :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="检查类型" prop="inspectKind">
+          <el-select v-model="form.inspectKind" placeholder="请选择检查类型">
+            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BACKEND_INSPECTITEM_KIND)" :key="dict.value"
+              :label="dict.label" :value="dict.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="检查频次" prop="inspectFrequency">
+          <el-checkbox-group v-model="form.inspectFrequency">
+            <el-checkbox v-for="dict in this.getDictDatas(DICT_TYPE.BACKEND_CHECK_FRE)" :key="dict.value"
+              :label="dict.value">{{ dict.label }}</el-checkbox>
+          </el-checkbox-group>
+        </el-form-item>
+        <el-form-item label="单位类型" prop="orgType">
+          <el-checkbox-group v-model="form.orgType">
+            <el-checkbox v-for="dict in this.getDictDatas(DICT_TYPE.COMPANY_inspectitem_kind)" :key="dict.value"
+              :label="dict.value">{{ dict.label }}</el-checkbox>
+          </el-checkbox-group>
+        </el-form-item>
+        <!-- <el-form-item label="状态" prop="status">
+          <el-radio-group v-model="form.status">
+            <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value"
+              :label="parseInt(dict.value)">{{ dict.label }}</el-radio> </el-radio-group>
+        </el-form-item> -->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { createInspectItem, updateInspectItem, deleteInspectItem, getInspectItem, getInspectItemPage, exportInspectItemExcel } from "@/api/backend/inspectItem"
+import { DICT_TYPE, getDictDatas } from "@/utils/dict";
+export default {
+  name: "InspectItem",
+  components: {
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 检查项目及频次列表
+      list: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        inspectName: null,
+        inspectKind: null,
+        inspectFrequency: null,
+        orgType: null,
+        status: null,
+      },
+      // 表单参数
+      form: {
+        status: 0
+      },
+      // 表单校验
+      rules: {
+        deviceName: [{ required: true, message: "设施名称不能为空", trigger: "blur" }],
+        deviceCode: [{ required: true, message: "设施编号不能为空", trigger: "blur" }],
+        buildingId: [{ required: true, message: "所属楼宇不能为空", trigger: "change" }],
+        deleted: [{ required: true, message: "是否删除不能为空", trigger: "blur" }],
+        status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
+      }
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true
+      // 执行查询
+      getInspectItemPage(this.queryParams).then(response => {
+        this.list = response.data.list
+        this.total = response.data.total
+        this.loading = false
+      })
+    },
+    /** 取消按钮 */
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    /** 表单重置 */
+    reset() {
+      this.form = {
+        id: undefined,
+        inspectName: undefined,
+        inspectKind: undefined,
+        inspectFrequency: [],
+        orgType: [],
+        status: 0,
+      }
+      this.resetForm("form")
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm")
+      this.handleQuery()
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = "添加检查项目及频次"
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset()
+      const id = row.id
+      getInspectItem(id).then(response => {
+        this.form = response.data
+        this.form.inspectFrequency = this.form.inspectFrequency.split(",")
+        this.form.orgType = this.form.orgType.split(",")
+        this.open = true
+        this.title = "修改检查项目及频次"
+      })
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (!valid) {
+          return
+        }
+        // 修改的提交
+        if (this.form.id != null) {
+          updateInspectItem(this.form).then((response) => {
+            this.$modal.msgSuccess("修改成功")
+            this.open = false
+            this.getList()
+          })
+          return
+        }
+        // 添加的提交
+        createInspectItem(this.form).then((response) => {
+          this.$modal.msgSuccess("新增成功")
+          this.open = false
+          this.getList()
+        })
+      })
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const id = row.id
+      this.$modal
+        .confirm('是否确认删除名称为"' + row.inspectName + '"的数据项?')
+        .then(function () {
+          return deleteInspectItem(id)
+        })
+        .then(() => {
+          this.getList()
+          this.$modal.msgSuccess("删除成功")
+        })
+        .catch(() => { })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      // 处理查询参数
+      let params = { ...this.queryParams }
+      params.pageNo = undefined
+      params.pageSize = undefined
+      // 执行导出
+      this.$modal
+      .confirm("是否确认导出?")
+        .then(() => {
+          this.exportLoading = true
+          return exportInspectItemExcel(params)
+        })
+        .then((response) => {
+          this.$download.excel(response, "检查结果列表.xls")
+          this.exportLoading = false
+        })
+        .catch(() => { })
+    },
+  },
+}
+</script>

+ 146 - 43
src/views/backend/s9Tongji/index.vue

@@ -1,15 +1,28 @@
 <template>
   <div class="app-container">
-
     <!-- 搜索工作栏 -->
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <el-form-item label="大队id" prop="deptid">
-        <el-select v-model="queryParams.deptid" placeholder="请选择大队id" clearable size="small">
+        <el-select
+          v-model="queryParams.deptid"
+          placeholder="请选择大队id"
+          clearable
+          size="small"
+        >
           <el-option label="请选择字典生成" value="" />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="el-icon-search" @click="handleQuery"
+          >搜索</el-button
+        >
         <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -17,43 +30,97 @@
     <!-- 操作工具栏 -->
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
-                   v-hasPermi="['backend:S9-tongji:create']">新增</el-button>
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['backend:S9-tongji:create']"
+          >新增</el-button
+        >
       </el-col>
       <el-col :span="1.5">
-        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
-                   v-hasPermi="['backend:S9-tongji:export']">导出</el-button>
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          :loading="exportLoading"
+          v-hasPermi="['backend:S9-tongji:export']"
+          >导出</el-button
+        >
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
     <!-- 列表 -->
     <el-table v-loading="loading" :data="list">
       <el-table-column label="id" align="center" prop="id" />
-      <el-table-column label="大队id" align="center" prop="deptid" />
+      <el-table-column label="消防大队" align="center" prop="deptid">
+        <template v-slot="scope">
+          {{ deptList(scope.row.deptid) }}
+        </template>
+      </el-table-column>
       <el-table-column label="小单位总数" align="center" prop="s9orgtotal" />
       <el-table-column label="自查总数" align="center" prop="selfscan" />
       <el-table-column label="活跃度" align="center" prop="actnums" />
       <el-table-column label="自查数" align="center" prop="scantotal" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template v-slot="scope">
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
-                     v-hasPermi="['backend:S9-tongji:update']">修改</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-                     v-hasPermi="['backend:S9-tongji:delete']">删除</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['backend:S9-tongji:update']"
+            >修改</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['backend:S9-tongji:delete']"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
     <!-- 分页组件 -->
-    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
-                @pagination="getList"/>
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNo"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
 
     <!-- 对话框(添加 / 修改) -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="大队id" prop="deptid">
-          <el-select v-model="form.deptid" placeholder="请选择大队id">
-            <el-option label="请选择字典生成" value="" />
+    <el-dialog
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      v-dialogDrag
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="消防大队" prop="deptid">
+          <el-select v-model="form.deptid" placeholder="请选择消防大队">
+            <el-option
+              :label="item.deptName"
+              :value="item.id"
+              v-for="item in deptData"
+              :key="item.id"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="小单位总数" prop="s9orgtotal">
@@ -78,12 +145,18 @@
 </template>
 
 <script>
-import { createS9Tongji, updateS9Tongji, deleteS9Tongji, getS9Tongji, getS9TongjiPage, exportS9TongjiExcel } from "@/api/backend/s9Tongji";
-
+import {
+  createS9Tongji,
+  updateS9Tongji,
+  deleteS9Tongji,
+  getS9Tongji,
+  getS9TongjiPage,
+  exportS9TongjiExcel,
+} from "@/api/backend/s9Tongji";
+import { getDdlist } from "@/api/backend/statistics";
 export default {
   name: "S9Tongji",
-  components: {
-  },
+  components: {},
   data() {
     return {
       // 遮罩层
@@ -109,24 +182,46 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
+      rules: {},
+      deptData: [],
     };
   },
   created() {
     this.getList();
+    this.getDeptData();
   },
   methods: {
     /** 查询列表 */
     getList() {
       this.loading = true;
       // 执行查询
-      getS9TongjiPage(this.queryParams).then(response => {
+      getS9TongjiPage(this.queryParams).then((response) => {
         this.list = response.data.list;
         this.total = response.data.total;
         this.loading = false;
       });
     },
+    /** 获取消防大队下拉框数据 */
+    getDeptData() {
+      getDdlist().then((res) => {
+        this.deptData = res.data;
+      });
+    },
+    /** 列表消防大队转换 id2name*/
+    deptList(id) {
+      let thisDept;
+      const arr = JSON.parse(JSON.stringify(this.deptData));
+      arr.forEach((item) => {
+        if (item.id == id) {
+          thisDept = item;
+        }
+      });
+      if (thisDept) {
+        return thisDept.deptName;
+      } else {
+        return "";
+      }
+    },
     /** 取消按钮 */
     cancel() {
       this.open = false;
@@ -164,7 +259,7 @@ export default {
     handleUpdate(row) {
       this.reset();
       const id = row.id;
-      getS9Tongji(id).then(response => {
+      getS9Tongji(id).then((response) => {
         this.form = response.data;
         this.open = true;
         this.title = "修改各大队9小单位统计";
@@ -172,13 +267,13 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["form"].validate((valid) => {
         if (!valid) {
           return;
         }
         // 修改的提交
         if (this.form.id != null) {
-          updateS9Tongji(this.form).then(response => {
+          updateS9Tongji(this.form).then((response) => {
             this.$modal.msgSuccess("修改成功");
             this.open = false;
             this.getList();
@@ -186,7 +281,7 @@ export default {
           return;
         }
         // 添加的提交
-        createS9Tongji(this.form).then(response => {
+        createS9Tongji(this.form).then((response) => {
           this.$modal.msgSuccess("新增成功");
           this.open = false;
           this.getList();
@@ -196,27 +291,35 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const id = row.id;
-      this.$modal.confirm('是否确认删除各大队9小单位统计编号为"' + id + '"的数据项?').then(function() {
+      this.$modal
+        .confirm('是否确认删除各大队9小单位统计编号为"' + id + '"的数据项?')
+        .then(function () {
           return deleteS9Tongji(id);
-        }).then(() => {
+        })
+        .then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");
-        }).catch(() => {});
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
       // 处理查询参数
-      let params = {...this.queryParams};
+      let params = { ...this.queryParams };
       params.pageNo = undefined;
       params.pageSize = undefined;
-      this.$modal.confirm('是否确认导出所有各大队9小单位统计数据项?').then(() => {
+      this.$modal
+        .confirm("是否确认导出所有各大队9小单位统计数据项?")
+        .then(() => {
           this.exportLoading = true;
           return exportS9TongjiExcel(params);
-        }).then(response => {
-          this.$download.excel(response, '各大队9小单位统计.xls');
+        })
+        .then((response) => {
+          this.$download.excel(response, "各大队9小单位统计.xls");
           this.exportLoading = false;
-        }).catch(() => {});
-    }
-  }
+        })
+        .catch(() => {});
+    },
+  },
 };
 </script>

+ 46 - 30
src/views/backend/statisticsFire/component/barChart.vue

@@ -36,7 +36,7 @@ export default {
       type: String,
       default: "#fff",
     },
-    chartData: {
+    watcherList: {
       type: Array,
       default: () => [],
     },
@@ -44,40 +44,56 @@ export default {
   data() {
     return {
       chart: null,
+      people: [],
+      quality: [],
     };
   },
-  mounted() {
-    this.chart = echarts.init(this.$refs.chart, "macarons");
-    this.chart.setOption({
-      title: {
-        text: "监督员质态统计",
-        textStyle: {
-          color: '#0F2B4C'
-        },
-        top:10,
-        left:5
-      },
-      xAxis: {
-        type: "category",
-        data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
-        axisLabel: {
-          rotate: 45, // 设置标签倾斜角度,单位为度
+  watch: {
+    watcherList: function (newData, oldData) {
+      if (newData !== oldData) {
+        this.initChart();
+      }
+    },
+  },
+  methods: {
+    initChart() {
+      this.watcherList.forEach((item) => {
+        this.people.push(item.watcher);
+        this.quality.push(item.quality);
+      });
+      console.log("fithis.watcherListrst", this.watcherList);
+      this.chart = echarts.init(this.$refs.chart, "macarons");
+      this.chart.setOption({
+        title: {
+          text: "监督员质态统计",
+          textStyle: {
+            color: "#0F2B4C",
+          },
+          top: 10,
+          left: 5,
         },
-      },
-      yAxis: {
-        type: "value",
-      },
-      series: [
-        {
-          data: [120, 200, 150, 80, 70, 110, 130],
-          type: "bar",
-          barWidth: "16px",
-          itemStyle: {
-            color: "#0147EB",
+        xAxis: {
+          type: "category",
+          data: this.people,
+          axisLabel: {
+            rotate: 45, // 设置标签倾斜角度,单位为度
           },
         },
-      ],
-    });
+        yAxis: {
+          type: "value",
+        },
+        series: [
+          {
+            data: this.quality,
+            type: "bar",
+            barWidth: "16px",
+            itemStyle: {
+              color: "#0147EB",
+            },
+          },
+        ],
+      });
+    },
   },
   beforeDestroy() {
     if (!this.chart) {

+ 23 - 6
src/views/backend/statisticsFire/component/unitbartChart.vue

@@ -35,7 +35,7 @@ export default {
       type: String,
       default: "#fff",
     },
-    chartData: {
+    watcherList: {
       type: Array,
       default: () => [],
     },
@@ -43,10 +43,25 @@ export default {
   data() {
     return {
       chart: null,
+      people:[],
+      servorg:[]
     };
   },
-  mounted() {
-    this.chart = echarts.init(this.$refs.chart, "macarons");
+  watch: {
+    watcherList: function (newData, oldData) {
+      if (newData !== oldData) {
+        this.initChart();
+      }
+    },
+  },
+  methods: {
+
+    initChart(){
+      this.watcherList.forEach(item=>{
+      this.servorg.push(item.servorg);
+      this.people.push(item.watcher);
+    });
+      this.chart = echarts.init(this.$refs.chart, "macarons");
     this.chart.setOption({
         title: {
         text: "监督员分管单位统计",
@@ -59,7 +74,7 @@ export default {
       },
       xAxis: {
         type: "category",
-        data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
+        data:this.people,
         axisLabel: {
           rotate: 45, // 设置标签倾斜角度,单位为度
         },
@@ -69,7 +84,7 @@ export default {
       },
       series: [
         {
-          data: [120, 200, 150, 80, 70, 110, 130],
+          data:this.servorg,
           type: "bar",
           barWidth: "16px",
           itemStyle: {
@@ -77,7 +92,9 @@ export default {
           },
         },
       ],
-    });
+    })
+    }
+ 
   },
   beforeDestroy() {
     if (!this.chart) {

+ 164 - 96
src/views/backend/statisticsFire/index.vue

@@ -27,8 +27,8 @@
       <!-- 左侧版块 -->
       <div class="left-chart">
         <div class="first-line">
-          <bar-chart />
-          <unitbart-chart />
+          <bar-chart :watcherList="watcherList"/>
+          <unitbart-chart :watcherList="watcherList"/>
         </div>
         <div class="two-line">
           <div v-for="(item, index) in scanCode" :key="index">
@@ -96,6 +96,7 @@
           <pagination
             v-show="total > 0"
             :total="total"
+            :pager-count="4"
             :page.sync="queryRader.pageNo"
             :limit.sync="queryRader.pageSize"
             layout="total, prev, pager, next, jumper"
@@ -104,32 +105,43 @@
         </div>
         <div class="two-line">
           <div class="left">
-            <el-table highlight-current-row :data="list" height="416px">
-              <el-table-column label="序号" type="index" width="50px" />
-              <el-table-column
-                label="消防设备类型"
-                align="center"
-                prop="orgName"
+            <div style="background: #fff">
+              <div class="table-title">设备类型扫码量排行(TOP10)</div>
+              <el-table highlight-current-row :data="devscanorderList" height="376px">
+                <el-table-column label="序号" type="index" width="50px" />
+                <el-table-column
+                  label="消防设备类型"
+                  align="center"
+                  prop="inspecttype"
+                >
+                </el-table-column>
+                <el-table-column
+                  label="扫码数量"
+                  align="center"
+                  prop="sort"
+                >
+                </el-table-column>
+              </el-table>
+            </div>
+            <div style="background: #fff; margin-top: 16px">
+              <div class="table-title">隐患类型排行</div>
+              <el-table
+                highlight-current-row
+                :data="dengertypeorderList"
+                height="332px"
+                style="margin-top: 16px"
               >
-              </el-table-column>
-              <el-table-column label="扫码数量" align="center" prop="policeId">
-              </el-table-column>
-            </el-table>
-            <el-table
-              highlight-current-row
-              :data="list"
-              height="390px"
-              style="margin-top: 16px"
-            >
-              <el-table-column label="序号" type="index" width="50px" />
-              <el-table-column label="隐患类型" align="center" prop="orgName">
-              </el-table-column>
-              <el-table-column label="数量" align="center" prop="policeId">
-              </el-table-column>
-            </el-table>
+                <el-table-column label="序号" type="index" width="50px" />
+                <el-table-column label="隐患类型" align="center" prop="dengertype">
+                </el-table-column>
+                <el-table-column label="数量" align="center" prop="sort">
+                </el-table-column>
+              </el-table>
+            </div>
           </div>
-          <div class="right">
-            <el-table highlight-current-row :data="list" height="822px">
+          <div class="right" style="background: #fff">
+            <div class="table-title">监督员</div>
+            <el-table highlight-current-row :data="list" height="782px">
               <el-table-column label="序号" type="index" width="50px" />
               <el-table-column label="监督单位" align="center" prop="orgName">
               </el-table-column>
@@ -143,7 +155,14 @@
   </div>
 </template>
   <script>
-import { getDdlist, getPoliceId, tongjiBroad } from "@/api/backend/statistics";
+import {
+  getDdlist,
+  getPoliceId,
+  tongjiBroad,
+  tongjiDevscanorder,
+  tongjiDengertypeorder,
+  watcherPage,
+} from "@/api/backend/statistics";
 import { currentReport } from "@/api/backend/taskInfo";
 import barChart from "./component/barChart.vue";
 import unitbartChart from "./component/unitbartChart.vue";
@@ -224,9 +243,12 @@ export default {
         pageSize: 10,
         pageNo: 1,
       },
-      deptId: "",
-      tongjiData: null,
+      deptId: 0,
+      tongjiData: null, //找到对应大队下的统计数字数据
       allNumber: null,
+      devscanorderList: null, //排行列表
+      dengertypeorderList: null, //隐患类型排行榜
+      watcherList:null,//监督员质态统计
     };
   },
   // 监听 Element UI 中的筛选月份变化
@@ -241,84 +263,106 @@ export default {
     this.fetchData();
     this.getData();
     this.navList();
+    this.Devscanorder();
+    this.Dengertypeorder();
+    this.getWatcher()
   },
   methods: {
+    //得到所有的数字数据
     navList() {
       tongjiBroad({ pageNo: 1, pageSize: 9999 }).then((response) => {
         if (response.data) {
           this.allNumber = response.data.list;
-          this.allNumber.map((item) => {
-            if (item.deptid == this.deptId) {
-              this.tongjiData = item;
-            }
+          this.tongjiData = this.allNumber.filter((item) => {
+            return item.deptid == this.deptId;
           });
+          console.log(" this.tongjiData", this.tongjiData);
+          if (this.tongjiData.length > 0) {
+            this.detaulData();
+            console.log("111", 111);
+          } else {
+            console.log("222", 222);
+            this.navData.forEach((item) => {
+              item.count = 0;
+            });
+            this.scanCode.forEach((item) => {
+              item.count = 0;
+            });
+            this.threeChart.forEach((item) => {
+              item.count = 0;
+            });
+          }
+          this.$forceUpdate();
         }
       });
     },
+    // 处理得到的数字数据
     detaulData() {
-        this.navData.forEach((item) => {
-          switch (item.code) {
-            case 1:
-              item.count = this.tongjiData.initorgtotal??0; //
-              break;
-            case 2:
-              item.count = this.tongjiData.peradjust??0; //
-              break;
-            case 3:
-              item.count = this.tongjiData.peradjust??0;
-              break;
-            case 4:
-              item.count = this.tongjiData.peradjust??0;
-              break;
-            default:
-              break;
-          }
-        });
-        this.scanCode.forEach((item) => {
-          switch (item.code) {
-            case 1:
-              item.count = this.tongjiData.patroltotal; //修改客户信息
-              break;
-            case 2:
-              item.count = this.tongjiData.avgdate; //红号变更
-              break;
-            case 3:
-              item.count = this.tongjiData.avgperson;
-              break;
-            case 4:
-              item.count = this.tongjiData.scantotal;
-              break;
-            case 5:
-              item.count = this.tongjiData.dengerfixavg;
-              break;
-            case 6:
-              item.count = this.tongjiData.avgdatedevtype;
-              break;
-            default:
-              break;
-          }
-        });
-        this.threeChart.forEach((item) => {
-          switch (item.code) {
-            case 1:
-              item.count = this.tongjiData.todayscantotal; //修改客户信息
-              break;
-            case 2:
-              item.count = this.tongjiData.todayhottotal; //红号变更
-              break;
-            case 3:
-              item.count = this.tongjiData.lastweektotal;
-              break;
-            case 4:
-              item.count = this.tongjiData.devtypetotal;
-              break;
-            case 5:
-              item.count = this.tongjiData.devcover;
-              break;
-            default:
-              break;
-          }
-        });
+      const datas = this.tongjiData[0];
+      this.navData.forEach((item) => {
+        switch (item.code) {
+          case 1:
+            item.count = datas.initorgtotal; //
+            break;
+          case 2:
+            item.count = datas.peradjust; //
+            break;
+          case 3:
+            item.count = datas.peradjust;
+            break;
+          case 4:
+            item.count = datas.peradjust;
+            break;
+          default:
+            break;
+        }
+      });
+      this.scanCode.forEach((item) => {
+        switch (item.code) {
+          case 1:
+            item.count = datas.patroltotal; //修改客户信息
+            break;
+          case 2:
+            item.count = datas.avgdate; //红号变更
+            break;
+          case 3:
+            item.count = datas.avgperson;
+            break;
+          case 4:
+            item.count = datas.scantotal;
+            break;
+          case 5:
+            item.count = datas.dengerfixavg;
+            break;
+          case 6:
+            item.count = datas.avgdatedevtype;
+            break;
+          default:
+            break;
+        }
+      });
+      this.threeChart.forEach((item) => {
+        switch (item.code) {
+          case 1:
+            item.count = datas.todayscantotal; //修改客户信息
+            break;
+          case 2:
+            item.count = datas.todayhottotal; //红号变更
+            break;
+          case 3:
+            item.count = datas.lastweektotal;
+            break;
+          case 4:
+            item.count = datas.devtypetotal;
+            break;
+          case 5:
+            item.count = datas.devcover;
+            break;
+          default:
+            break;
+        }
+      });
+
       console.log("this.threeChart", this.threeChart);
     },
     getList() {
@@ -328,9 +372,13 @@ export default {
         this.brigade.unshift({ deptName: "所有大队", id: 0 });
       });
     },
+    //切换tab
     clickTab(e) {
       this.deptId = e.name;
       this.navList();
+      this.Devscanorder();
+      this.Dengertypeorder();
+      this.getWatcher();
     },
     async fetchData() {
       const time = this.selectedMonths;
@@ -345,12 +393,31 @@ export default {
       this.selectedMonths = val;
       this.selectedMonth = val;
     },
+    //质态表格
     getData() {
       getOrgPage(this.queryRader).then((response) => {
         this.list = response.data.list;
         this.total = response.data.total;
       });
     },
+    //top扫码排行
+    Devscanorder() {
+      tongjiDevscanorder({pageNo:1,pageSize:999,deptId:this.deptId}).then((response) => {
+        this.devscanorderList = response.data.list;
+      });
+    },
+    //隐患排行
+    Dengertypeorder() {
+      tongjiDengertypeorder({pageNo:1,pageSize:999,deptId:this.deptId}).then((response) => {
+        this.dengertypeorderList = response.data.list;
+      });
+    },
+    //监督员质态统计
+    getWatcher() {
+      watcherPage({pageNo:1,pageSize:999,deptId:this.deptId}).then((response) => {
+        this.watcherList = response.data.list;
+      });
+    },
   },
 };
 </script>
@@ -417,6 +484,7 @@ export default {
       display: flex;
       justify-content: space-between;
       align-items: center;
+
       & > div {
         width: 144px;
         margin-right: 16px;