|
@@ -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>
|