ソースを参照

理疗浏览统计

wjj 1 日 前
コミット
6a3e510a6e

+ 10 - 0
src/api/his/project.js

@@ -50,4 +50,14 @@ export function exportProject(query) {
     method: 'get',
     params: query
   })
+}
+
+
+
+// 理疗配置选项
+export function projectOptions() {
+  return request({
+    url: '/his/project/options',
+    method: 'get',
+  })
 }

+ 11 - 0
src/api/his/projectReadDetail.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+
+
+// 理疗浏览统计列表
+export function statisticsList(query) {
+  return request({
+    url: '/his/projectRedDetail/statistics',
+    method: 'get',
+    params: query
+  })
+}

+ 127 - 0
src/views/his/statistics/projectReadDetailStatistics.vue

@@ -0,0 +1,127 @@
+<template>
+  <div class="app-container">
+    <!-- 搜索表单 -->
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="发送时间" prop="sendDate">
+        <el-date-picker
+        v-model="queryParams.sendDate"
+        type="date"
+        format="yyyy-MM-dd"
+        value-format="yyyy-MM-dd"
+        placeholder="选择日期"
+        />
+      </el-form-item>
+      <el-form-item label="销售姓名" prop="companyUserName">
+        <el-input v-model="queryParams.companyUserName" placeholder="请输入销售名称" clearable size="small"
+          @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="理疗项目" prop="projectId">
+        <el-select filterable v-model="queryParams.projectId" placeholder="请选择理疗" clearable size="small">
+          <el-option v-for="dict in projectList" :key="dict.id" :label="dict.projectName" :value="dict.id" />
+        </el-select>
+      </el-form-item>
+
+
+     
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <!-- 表格区域 -->
+    <el-table
+      v-loading="loading"
+      border
+      :data="dataList"
+    >
+      <el-table-column label="发送日期" align="center" prop="sendDate" />
+      <el-table-column label="销售姓名" align="center" prop="companyUserName" />
+      <el-table-column label="理疗项目" align="center" prop="projectName" />
+      <el-table-column label="总发送量" align="center" prop="totalSendCount" />
+      <el-table-column label="点击量" align="center" prop="clickedUserCount" />
+      <el-table-column label="总浏览时长(秒)" align="center" prop="totalStayDuration"  />
+      <el-table-column label="平均浏览时长(秒)" align="center" prop="avgStayDuration" />
+      
+    </el-table>
+
+    <!-- 分页 -->
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { projectOptions } from "@/api/his/project";
+import { statisticsList } from "@/api/his/projectReadDetail";
+
+export default {
+  name: "projetctReadDetailStatistics",
+  data() {
+    return {
+      showSearch: true,
+      loading: false,
+      total: 0,
+      sortField: '',
+      sortOrder: '',
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sendDate: this.getTodayStr(),
+        companyUserName: null,
+        projectId: null,
+      },
+      dataList: [],
+      projectList:[],
+    };
+  },
+  created() {
+    projectOptions().then(res =>{
+        this.projectList = res.data;
+    })
+    this.getList();
+  },
+  methods: {
+    getTodayStr() {
+      const today = new Date();
+      const yyyy = today.getFullYear();
+      const mm = String(today.getMonth() + 1).padStart(2, '0');
+      const dd = String(today.getDate()).padStart(2, '0');
+      return `${yyyy}-${mm}-${dd}`;
+    },
+    
+    /** 搜索按钮 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 获取列表数据 */
+    getList() {
+      this.loading = true;
+      statisticsList(this.queryParams).then(response => {
+        this.dataList = response.rows || [];
+        this.total = response.total || 0;
+        this.loading = false;
+      }).catch(() => {
+        this.loading = false;
+      });
+    },
+    
+  }
+};
+</script>
+
+<style scoped>
+/* 可根据需要添加自定义样式 */
+</style>