소스 검색

编码员

zdl 1 년 전
부모
커밋
a0b88a5f2e
3개의 변경된 파일202개의 추가작업 그리고 17개의 파일을 삭제
  1. 155 0
      src/axios/index_new.js
  2. 3 0
      src/main.js
  3. 44 17
      src/views/encoder/index.vue

+ 155 - 0
src/axios/index_new.js

@@ -0,0 +1,155 @@
+import store from '@/store';
+import axios from 'axios';
+import { Message, Loading } from 'element-ui';
+import { getToken, setToken, removeToken } from '@/utils/auth';
+import router from '@/router'
+import domMessage from '@/utils/messageOnce'
+
+const messageOnce = new domMessage()
+// 公共数据
+let loadingInstance = null; // 声明loading
+let loadingCount = 0; // 声明接口并发计数器
+
+// 记录和显示错误
+function errorLog(error) {
+  // 添加到日志
+  store.dispatch('vxadmin/log/push', {
+    message: '数据请求异常',
+    type: 'danger',
+    meta: {
+      error,
+    },
+  });
+  // 打印到控制台
+
+  if (process.env.NODE_ENV === 'development') {
+    console.log(error);
+  }
+  // 显示提示
+  messageOnce.error({
+    message: error.message,
+    type: 'error',
+    duration: 5 * 1000,
+  });
+}
+// 创建一个 axios 实例
+// baseUrl = '/api
+const service = axios.create({
+  // baseURL: process.env.VUE_APP_BASE_API,
+  timeout: 50000
+});
+
+// 请求拦截器
+service.interceptors.request.use(
+  config => {
+    if (loadingCount == 0) {
+      loadingInstance = Loading.service({
+        lock: false,
+        customClass: 'z-index999',
+        text: '加载中,请稍后...',
+        spinner: 'ui-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)',
+      });
+    }
+    if (store.getters.token) {
+      config.headers['token'] = getToken();
+    }
+    loadingCount++;
+    // 在请求发送之前做一些处理
+    let jsonStr = config.data;
+    let data = jsonStr;
+    config.data = data;
+    return config;
+  },
+  error => {
+    // 发送失败
+    Promise.reject(error);
+  },
+);
+
+// 响应拦截器
+service.interceptors.response.use(
+  response => {
+    loadingCount--;
+    if (loadingInstance && loadingCount == 0) {
+      loadingInstance.close();
+    }
+    const dataAxios = response.data;
+    const { code } = dataAxios;
+    // 根据 code 进行判断}
+    if (code === 200) {
+      // 如果没有 code 代表这不是项目后端开发的接口 比如可能是 VXAdmin 请求最新版本
+      return dataAxios;
+    } else {
+      if (code == -1) {
+        messageOnce.error({
+          message: `${dataAxios.msg}`,
+          type: 'error',
+          duration: 5 * 1000,
+        });
+        setToken('');
+        // 清除缓存的权限菜单
+        sessionStorage.removeItem("route");
+        //跳转登录页面
+        router.push({path:`/login`})
+        return
+      }
+      messageOnce.error({
+        message: `${dataAxios.msg}`,
+        type: 'error',
+        duration: 5 * 1000,
+      });
+      return Promise.reject(dataAxios.data);
+      //   //  发送的接口为response.config.url,进行报错处理
+    }
+  },
+  error => {
+    loadingCount--;
+    if (loadingInstance && loadingCount == 0) {
+      loadingInstance.close();
+    }
+    if (error && error.response) {
+      switch (error.response.status) {
+        case 400:
+          error.message = '请求错误';
+          break;
+        case 401:
+          error.message = '未授权,请登录';
+          break;
+        case 403:
+          error.message = '拒绝访问';
+          break;
+        case 404:
+          error.message = `请求地址出错: ${error.response.config.url}`;
+          break;
+        case 408:
+          error.message = '请求超时';
+          break;
+        case 500:
+          error.message = '服务器内部错误';
+          break;
+        case 501:
+          error.message = '服务未实现';
+          break;
+        case 502:
+          error.message = '网关错误';
+          break;
+        case 503:
+          error.message = '服务不可用';
+          break;
+        case 504:
+          error.message = '网关超时';
+          break;
+        case 505:
+          error.message = 'HTTP版本不受支持';
+          break;
+        default:
+          break;
+      }
+    }
+    errorLog(error);
+    return Promise.reject(error);
+  },
+);
+
+export default service;

+ 3 - 0
src/main.js

@@ -19,6 +19,8 @@ import axios from '@/axios/index';
 import axios2 from '@/axios/index2';
 // baseUrl = '/bass
 import axios3 from '@/axios/index3';
+// baseUrl = '/
+import axios_new from '@/axios/index_new';
 import '@/mixins';
 
 import * as echarts from 'echarts'
@@ -43,6 +45,7 @@ if (process.env.NODE_ENV === 'production') {
 Vue.prototype.$axios = axios;
 Vue.prototype.$axios2 = axios2;
 Vue.prototype.$axios3 = axios3;
+Vue.prototype.$axios_new = axios_new;
 // set ElementUI lang to EN
 Vue.use(ElementUI, { locale });
 // 如果想要中文版 element-ui,按如下方式声明

+ 44 - 17
src/views/encoder/index.vue

@@ -3,14 +3,15 @@
     <!-- 搜索栏 -->
     <div class="bg-card" style="margin-bottom: 18px;">
       <el-form :inline="true" :model="formInline" class="demo-form-inline">
-        <el-form-item label="" style="margin-bottom: 0">
+        <el-form-item label="出院日期" style="margin-bottom: 0">
           <el-date-picker v-model="formInline.start_time" type="date" placeholder="出院开始日期" value-format="yyyyMMdd" />
         </el-form-item>
+        <span style="margin-right: 10px; line-height: 40px; color: #7E8BAB;">至</span>
         <el-form-item label="" style="margin-bottom: 0">
           <el-date-picker v-model="formInline.end_time" type="date" placeholder="出院结束日期" value-format="yyyyMMdd" />
         </el-form-item>
         <el-form-item style="margin-bottom: 0">
-          <el-button type="primary" class="bg185DA6">查询</el-button>
+          <el-button type="primary" class="bg185DA6" @click="getTongjiData">查询</el-button>
         </el-form-item>
       </el-form>
     </div>
@@ -33,22 +34,22 @@
                 <el-col :span="8">
                   <div class="tongji-item">
                     <div class="title">首页总例数</div>
-                    <div class="middle">日均例数:<span>191</span></div>
-                    <div class="count">5000</div>
+                    <div class="middle">日均例数:<span>{{ tongjiData.dayAvg }}</span></div>
+                    <div class="count">{{ tongjiData.blSum }}</div>
                   </div>
                 </el-col>
                 <el-col :span="8">
                   <div class="tongji-item nth2">
                     <div class="title">缺陷总例数</div>
-                    <div class="middle">缺陷例数占比:<span>77.12%</span></div>
-                    <div class="count">5000</div>
+                    <div class="middle">缺陷例数占比:<span>{{ tongjiData.averageError }}%</span></div>
+                    <div class="count">{{ tongjiData.qxSum }}</div>
                   </div>
                 </el-col>
                 <el-col :span="8">
                   <div class="tongji-item">
                     <div class="title">平均得分</div>
                     <!-- <div class="middle">缺陷例数占比:<span>77.12%</span></div> -->
-                    <div class="count">95.62</div>
+                    <div class="count">{{ tongjiData.averageScore }}</div>
                   </div>
                 </el-col>
               </el-row>
@@ -57,10 +58,10 @@
                   <div class="level-item">
                     <el-col :span="12">
                       <span class="level">优</span>
-                      <span class="count">500</span>
+                      <span class="count">{{ tongjiData.you_sum }}</span>
                     </el-col>
                     <el-col :span="12" class="text-right">
-                      <span>占比25.64%</span>
+                      <span>占比{{ tongjiData.you_ratio }}%</span>
                     </el-col>
                   </div>
                 </el-col>
@@ -68,10 +69,10 @@
                   <div class="level-item">
                     <el-col :span="12">
                       <span class="level">良</span>
-                      <span class="count">500</span>
+                      <span class="count">{{ tongjiData.liang_sum }}</span>
                     </el-col>
                     <el-col :span="12" class="text-right">
-                      <span>占比25.64%</span>
+                      <span>占比{{ tongjiData.liang_ratio }}%</span>
                     </el-col>
                   </div>
                 </el-col>
@@ -79,10 +80,10 @@
                   <div class="level-item">
                     <el-col :span="12">
                       <span class="level">中</span>
-                      <span class="count">500</span>
+                      <span class="count">{{ tongjiData.zhong_sum }}</span>
                     </el-col>
                     <el-col :span="12" class="text-right">
-                      <span>占比25.64%</span>
+                      <span>占比{{ tongjiData.zhong_ratio }}%</span>
                     </el-col>
                   </div>
                 </el-col>
@@ -90,10 +91,10 @@
                   <div class="level-item">
                     <el-col :span="12">
                       <span class="level">差</span>
-                      <span class="count">500</span>
+                      <span class="count">{{ tongjiData.cha_sum }}</span>
                     </el-col>
                     <el-col :span="12" class="text-right">
-                      <span>占比25.64%</span>
+                      <span>占比{{ tongjiData.cha_ratio }}%</span>
                     </el-col>
                   </div>
                 </el-col>
@@ -234,6 +235,25 @@
           start_time: '',
           end_time: '',
         },
+        tongjiData: {
+          blSum: 0,
+          dayAvg: 0,
+          qxSum: 0,
+          averageError: 0,
+          averageScore: 0,
+          minScore: 0,
+          you_sum: 0,
+          liang_sum: 0,
+          zhong_sum: 0,
+          cha_sum: 0,
+          you_ratio: 0,
+          liang_ratio: 0,
+          zhong_ratio: 0,
+          cha_ratio: 0,
+          jbxx: 0,
+          zlxx: 0,
+          fyxx: 0
+        },
         tongji_show: true,
         tongjiDom: null,
         // 缺陷详情
@@ -283,10 +303,17 @@
       }
     },
     mounted() {
+      this.getTongjiData()
       this.tongjiPie()
       this.qxxqPie()
     },
     methods: {
+      // 获取统计信息
+      getTongjiData() {
+        this.$axios_new.post('/api/bmy/qualityStatistics', this.formInline).then(res => {
+          this.tongjiData = res.data
+        })
+      },
       onToggleTongjiShow() {
         this.tongji_show = !this.tongji_show
       },
@@ -321,8 +348,8 @@
                 show: true
               },
               data: [
-                { value: 1048, name: '首页总病例' },
-                { value: 735, name: '缺陷总例数' },
+                { value: this.tongjiData.blSum, name: '首页总病例' },
+                { value: this.tongjiData.qxSum, name: '缺陷总例数' },
               ]
             }
           ]