lighter 2 роки тому
батько
коміт
5af7c94246

+ 9 - 0
src/api/outpatient/complaints.js

@@ -0,0 +1,9 @@
+import request from '../../utils/request'
+
+export function selectAllComplaints(data) {
+    return request({
+        url: '/complaints/selectAllComplaints',
+        method: 'post',
+        data
+    })
+}

+ 5 - 0
src/router/modules/dashboard.js

@@ -664,6 +664,11 @@ const route = [
                 component: createNameComponent(() => import('@/views/clinic/DoctorInfoManagement.vue')),
                 meta: {title: '医生信息管理'},
             },
+            {
+                path: 'complaintsAndSuggestions',
+                component: createNameComponent(() => import('@/views/clinic/ComplaintsAndSuggestions.vue')),
+                meta: {title: '服务号投诉'},
+            },
             {
                 path: 'transferInOfExpenses',
                 component: createNameComponent(() => import('@/views/clinic/TransferInOfExpenses.vue')),

+ 89 - 0
src/views/clinic/ComplaintsAndSuggestions.vue

@@ -0,0 +1,89 @@
+<template>
+  <page-layer>
+    <template #header>
+      <el-date-picker type="daterange" v-model="dateRange" style="width: 200px" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+      <el-select v-model="requestParams.replied" style="width: 80px">
+        <el-option label="全部" :value="-1"></el-option>
+        <el-option label="未回复" :value="0"></el-option>
+        <el-option label="已回复" :value="1"></el-option>
+      </el-select>
+      <el-divider direction="vertical"></el-divider>
+      <el-button icon="Search" type="primary" @click="searchComplaints">检索</el-button>
+    </template>
+    <template #main>
+      <el-table :data="complaints.slice((currentPage - 1) * pageSize, currentPage * pageSize)" stripe :height="tableHeight">
+        <el-table-column prop="department" label="投诉科室"></el-table-column>
+        <el-table-column prop="object" label="投诉对象"></el-table-column>
+        <el-table-column label="投诉内容">
+          <template #default="scope">
+            <div :title="scope.row.content" class="ellipsis-text">{{scope.row.content}}</div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createDatetime" label="投诉时间"></el-table-column>
+        <el-table-column prop="name" label="患者姓名"></el-table-column>
+        <el-table-column prop="contact" label="患者电话"></el-table-column>
+        <el-table-column label="操作">
+          <template #default="scope">
+            <el-button icon="Document" type="info" @click="showComplaintsDetail(scope.row)">详情</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-sizes="[15, 30, 45, 70, 100]"
+          :page-size="pageSize"
+          layout="total, sizes, prev, pager, next"
+          :total="complaints.length"
+          style="margin-top: 5px"
+      ></el-pagination>
+    </template>
+  </page-layer>
+</template>
+<script setup>
+import PageLayer from "@/layout/PageLayer.vue";
+import {selectAllComplaints} from "@/api/outpatient/complaints";
+import store from "@/store";
+import {ref} from "@vue/reactivity";
+import {getDateRangeFormatDate, getOneMonthOffset} from "@/utils/date";
+
+const windowSize = store.state.app.windowSize
+const tableHeight = windowSize.h - 55
+const dateRange = ref([])
+const requestParams = reactive({
+  start: '',
+  end: '',
+  replied: -1
+})
+const complaints = ref([])
+const pageSize = ref(30)
+const currentPage = ref(1)
+const handleSizeChange = (val) => {
+  pageSize.value = val
+}
+const handleCurrentChange = (val) => {
+  currentPage.value = val
+}
+
+const searchComplaints = () => {
+  const format = getDateRangeFormatDate(dateRange.value)
+  requestParams.start = format.startTime
+  requestParams.end = format.endTime
+  selectAllComplaints(requestParams).then(res=>{
+    complaints.value = res
+    console.log(complaints.value)
+  })
+}
+
+const showComplaintsDetail = (row) => {
+  console.log(row)
+}
+
+onMounted(() => {
+  const offset = getOneMonthOffset()
+  dateRange.value[0] = offset.start
+  dateRange.value[1] = offset.end
+  searchComplaints()
+})
+</script>