Kaynağa Gözat

益寿缘医生端-增加查看医生建议功能;增加统计拒方数量功能。

cgp 3 gün önce
ebeveyn
işleme
ed9f884f9b

+ 9 - 0
src/api/his/prescribe.js

@@ -109,3 +109,12 @@ export function recordList(prescribeId) {
     method: 'get'
   })
 }
+
+//拒方数量统计
+export function rejectCount(data) {
+  return request({
+    url: '/his/prescribe/rejectCount',
+    method: 'post',
+    data: data
+  })
+}

+ 13 - 0
src/router/index.js

@@ -94,6 +94,19 @@ export const constantRoutes = [
       }
     ]
   },
+  {
+    path: '/refuseCount',
+    component: Layout,
+    redirect: 'noredirect',
+    children: [
+      {
+        path: 'Index',
+        component: (resolve) => require(['@/views/his/calculateStatistics/rejectCount/index'], resolve),
+        name: '拒方数量统计',
+        meta: { title: '拒方数量统计', icon: 'form', noCache: true, affix: false }
+      }
+    ]
+  },
 
   {
     path: '/order',

+ 184 - 0
src/views/his/calculateStatistics/rejectCount/index.vue

@@ -0,0 +1,184 @@
+<template>
+  <div class="prescribe-page">
+    <!-- 搜索区域 -->
+    <el-card shadow="never" class="search-card">
+      <el-form :inline="true" :model="searchForm" @submit.native.prevent>
+        <el-form-item label="处方ID">
+          <el-input v-model="searchForm.prescribeId" placeholder="请输入处方ID" clearable @keyup.enter.native="fetchList" />
+        </el-form-item>
+        <el-form-item label="处方编号">
+          <el-input v-model="searchForm.prescribeCode" placeholder="请输入处方编号" clearable @keyup.enter.native="fetchList" />
+        </el-form-item>
+        <el-form-item label="医生姓名">
+          <el-input v-model="searchForm.doctorName" placeholder="请输入医生姓名" clearable @keyup.enter.native="fetchList" />
+        </el-form-item>
+        <el-form-item label="患者姓名">
+          <el-input v-model="searchForm.patientName" placeholder="请输入患者姓名" clearable @keyup.enter.native="fetchList" />
+        </el-form-item>
+        <el-form-item label="审核时间">
+          <el-date-picker
+            v-model="auditDateRange"
+            type="datetimerange"
+            range-separator="至"
+            start-placeholder="开始时间"
+            end-placeholder="结束时间"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            :picker-options="{ shortcuts: pickerShortcuts }"
+          />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="fetchList">搜索</el-button>
+          <el-button @click="resetSearch">重置</el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
+
+    <!-- 数据列表 -->
+    <el-card shadow="never" class="table-card">
+      <el-table :data="tableData" v-loading="loading" border style="width: 100%">
+        <el-table-column type="index" label="序号" width="60" align="center"></el-table-column>
+        <el-table-column prop="prescribeId" label="处方ID" min-width="120"></el-table-column>
+        <el-table-column prop="prescribeCode" label="处方编号" min-width="180"></el-table-column>
+        <el-table-column prop="doctorName" label="医生姓名" min-width="120"></el-table-column>
+        <el-table-column prop="patientName" label="患者姓名" min-width="120"></el-table-column>
+        <el-table-column prop="auditTime" label="审核时间" min-width="180"></el-table-column>
+<!--        <el-table-column prop="auditReason" label="审核原因" min-width="240"></el-table-column>-->
+      </el-table>
+
+      <!-- 分页 -->
+      <el-pagination
+        v-if="total > 0"
+        class="pagination"
+        background
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total"
+        :page-size.sync="pageSize"
+        :current-page.sync="pageNum"
+        :page-sizes="[10, 20, 50]"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+      >
+      </el-pagination>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import { rejectCount } from '@/api/his/prescribe'; // 请确保该 API 方法已定义
+
+export default {
+  name: 'PrescribeRejectList',
+  data() {
+    return {
+      searchForm: {
+        prescribeId: null,
+        prescribeCode: '',
+        doctorName: '',
+        patientName: '',
+        beginAuditTime: null,
+        endAuditTime: null,
+      },
+      auditDateRange: null,
+      loading: false,
+      tableData: [],
+      total: 0,
+      pageNum: 1,
+      pageSize: 10,
+
+      // 快捷时间选项
+      pickerShortcuts: [
+        {
+          text: '最近7天',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        },
+        {
+          text: '最近30天',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }
+      ]
+    };
+  },
+  created() {
+    this.fetchList();
+  },
+  methods: {
+    async fetchList() {
+      this.loading = true;
+      try {
+        // 处理审核时间范围
+        if (this.auditDateRange && this.auditDateRange.length === 2) {
+          this.searchForm.beginAuditTime = this.auditDateRange[0];
+          this.searchForm.endAuditTime = this.auditDateRange[1];
+        } else {
+          this.searchForm.beginAuditTime = null;
+          this.searchForm.endAuditTime = null;
+        }
+
+        const params = {
+          ...this.searchForm,
+          pageNum: this.pageNum,
+          pageSize: this.pageSize
+        };
+
+        const res = await rejectCount(params);
+        const page = res.data;
+        this.tableData = page.list || [];
+        this.total = page.total || 0;
+      } catch (error) {
+        console.error('查询失败:', error);
+        this.tableData = [];
+        this.total = 0;
+      } finally {
+        this.loading = false;
+      }
+    },
+
+    resetSearch() {
+      this.searchForm = {
+        prescribeId: null,
+        prescribeCode: '',
+        doctorName: '',
+        patientName: '',
+        beginAuditTime: null,
+        endAuditTime: null,
+      };
+      this.auditDateRange = null;
+      this.pageNum = 1;
+      this.fetchList();
+    },
+
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.fetchList();
+    },
+
+    handleCurrentChange(val) {
+      this.pageNum = val;
+      this.fetchList();
+    }
+  }
+};
+</script>
+
+<style scoped>
+.prescribe-page {
+  padding: 10px;
+}
+.search-card {
+  margin-bottom: 20px;
+}
+.pagination {
+  margin-top: 20px;
+  text-align: right;
+}
+</style>