From 78c6f290eb090d02d92aa97be61b38dd64a28d1e Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期五, 24 十月 2025 09:08:54 +0800
Subject: [PATCH] 测试完成
---
dist (4).zip | 0
src/api/system/serviceGroup.js | 94 +++++
vue.config.js | 4
src/views/groupManagement/PersonnelGroup/particulars.vue | 0
src/views/groupManagement/PatientGroup/particulars.vue | 0
src/views/groupManagement/PersonnelGroup/index.vue | 0
src/views/groupManagement/serviceGroup/index.vue | 355 ++++++++++++++++++++
src/views/groupManagement/PatientGroup/index.vue | 0
src/views/groupManagement/serviceGroup/particulars.vue | 518 ++++++++++++++++++++++++++++++
9 files changed, 969 insertions(+), 2 deletions(-)
diff --git "a/dist \0504\051.zip" "b/dist \0504\051.zip"
new file mode 100644
index 0000000..612ef04
--- /dev/null
+++ "b/dist \0504\051.zip"
Binary files differ
diff --git a/src/api/system/serviceGroup.js b/src/api/system/serviceGroup.js
new file mode 100644
index 0000000..9629e20
--- /dev/null
+++ b/src/api/system/serviceGroup.js
@@ -0,0 +1,94 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鏈嶅姟缁勫垪琛�
+export function listServiceGroup(query) {
+ return request({
+ url: '/system/serviceGroup/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 鏌ヨ鏈嶅姟缁勮缁�
+export function getServiceGroup(groupId) {
+ return request({
+ url: '/system/serviceGroup/' + groupId,
+ method: 'get'
+ })
+}
+
+// 鏂板鏈嶅姟缁�
+export function addServiceGroup(data) {
+ return request({
+ url: '/system/serviceGroup',
+ method: 'post',
+ data: data
+ })
+}
+
+// 淇敼鏈嶅姟缁�
+export function updateServiceGroup(data) {
+ return request({
+ url: '/system/serviceGroup',
+ method: 'put',
+ data: data
+ })
+}
+
+// 鍒犻櫎鏈嶅姟缁�
+export function delServiceGroup(groupId) {
+ return request({
+ url: '/system/serviceGroup/' + groupId,
+ method: 'delete'
+ })
+}
+
+// 鏌ヨ鏈嶅姟缁勫叧鑱旂殑浠诲姟鍒楄〃
+export function getGroupTasks(groupId) {
+ return request({
+ url: '/system/serviceGroup/' + groupId + '/tasks',
+ method: 'get'
+ })
+}
+
+// 鏌ヨ鏈嶅姟缁勫叧鑱旂殑鎮h�呭垪琛�
+export function getGroupPatients(groupId) {
+ return request({
+ url: '/system/serviceGroup/' + groupId + '/patients',
+ method: 'get'
+ })
+}
+
+// 鍏宠仈浠诲姟鍒版湇鍔$粍
+export function addTaskToGroup(data) {
+ return request({
+ url: '/system/serviceGroup/tasks',
+ method: 'post',
+ data: data
+ })
+}
+
+// 浠庢湇鍔$粍绉婚櫎浠诲姟
+export function removeTaskFromGroup(groupId, taskId) {
+ return request({
+ url: '/system/serviceGroup/' + groupId + '/tasks/' + taskId,
+ method: 'delete'
+ })
+}
+
+// 鍏宠仈鎮h�呭埌鏈嶅姟缁�
+export function addPatientToGroup(data) {
+ return request({
+ url: '/system/serviceGroup/patients',
+ method: 'post',
+ data: data
+ })
+}
+
+// 浠庢湇鍔$粍绉婚櫎鎮h��
+export function removePatientFromGroup(groupId, patientId) {
+ return request({
+ url: '/system/serviceGroup/' + groupId + '/patients/' + patientId,
+ method: 'delete'
+ })
+}
diff --git a/src/views/groupManagement/PatientGroup/index.vue b/src/views/groupManagement/PatientGroup/index.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/views/groupManagement/PatientGroup/index.vue
diff --git a/src/views/groupManagement/PatientGroup/particulars.vue b/src/views/groupManagement/PatientGroup/particulars.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/views/groupManagement/PatientGroup/particulars.vue
diff --git a/src/views/groupManagement/PersonnelGroup/index.vue b/src/views/groupManagement/PersonnelGroup/index.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/views/groupManagement/PersonnelGroup/index.vue
diff --git a/src/views/groupManagement/PersonnelGroup/particulars.vue b/src/views/groupManagement/PersonnelGroup/particulars.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/views/groupManagement/PersonnelGroup/particulars.vue
diff --git a/src/views/groupManagement/serviceGroup/index.vue b/src/views/groupManagement/serviceGroup/index.vue
new file mode 100644
index 0000000..abbfbbd
--- /dev/null
+++ b/src/views/groupManagement/serviceGroup/index.vue
@@ -0,0 +1,355 @@
+<template>
+ <div class="app-container">
+ <el-row :gutter="20">
+ <!-- 鎼滅储鍖哄煙 -->
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
+ <el-form-item label="鏈嶅姟缁勫悕绉�">
+ <el-input
+ v-model="queryParams.groupName"
+ placeholder="璇疯緭鍏ユ湇鍔$粍鍚嶇О"
+ @keyup.enter.native="handleQuery"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鍒涘缓浜�">
+ <el-input
+ v-model="queryParams.createBy"
+ placeholder="璇疯緭鍏ュ垱寤轰汉"
+ @keyup.enter.native="handleQuery"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鍒涘缓鏃堕棿">
+ <el-date-picker
+ v-model="dateRange"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="鐘舵��">
+ <el-select v-model="queryParams.status" placeholder="璇烽�夋嫨鐘舵��">
+ <el-option
+ v-for="item in statusOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleQuery"
+ >鎼滅储</el-button
+ >
+ <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+ >閲嶇疆</el-button
+ >
+ </el-form-item>
+ </el-form>
+
+ <el-divider></el-divider>
+
+ <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ icon="el-icon-plus"
+ size="medium"
+ @click="handleAdd"
+ >鏂板缓鏈嶅姟缁�</el-button
+ >
+ </el-col>
+ <right-toolbar
+ :showSearch.sync="showSearch"
+ @queryTable="getList"
+ ></right-toolbar>
+ </el-row>
+
+ <!-- 鏈嶅姟缁勫垪琛� -->
+ <el-table
+ v-loading="loading"
+ :data="groupList"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="55" align="center" />
+ <el-table-column
+ label="鏈嶅姟缁処D"
+ align="center"
+ key="groupId"
+ prop="groupId"
+ width="100"
+ />
+ <el-table-column
+ label="鏈嶅姟缁勫悕绉�"
+ align="center"
+ key="groupName"
+ prop="groupName"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鎻忚堪"
+ align="center"
+ key="groupDesc"
+ prop="groupDesc"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鍏宠仈浠诲姟鏁�"
+ align="center"
+ key="taskCount"
+ prop="taskCount"
+ width="100"
+ />
+ <el-table-column
+ label="鍏宠仈鎮h�呮暟"
+ align="center"
+ key="patientCount"
+ prop="patientCount"
+ width="100"
+ />
+ <el-table-column
+ label="鐘舵��"
+ align="center"
+ key="status"
+ prop="status"
+ width="100"
+ >
+ <template slot-scope="scope">
+ <el-tag :type="scope.row.status === 1 ? 'success' : 'info'">
+ {{ scope.row.status === 1 ? "鍚敤" : "鍋滅敤" }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍒涘缓浜�"
+ align="center"
+ key="createBy"
+ prop="createBy"
+ />
+ <el-table-column
+ label="鍒涘缓鏃堕棿"
+ align="center"
+ prop="createTime"
+ width="180"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.createTime) }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="300"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleView(scope.row)"
+ >璇︽儏</el-button
+ >
+
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-delete"
+ class="delete-btn"
+ @click="handleDelete(scope.row)"
+ >鍒犻櫎</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <!-- 鍒嗛〉 -->
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-row>
+ </div>
+</template>
+
+<script>
+import { listServiceGroup, delServiceGroup } from "@/api/system/serviceGroup";
+
+export default {
+ name: "ServiceGroupList",
+ dicts: ["sys_normal_disable"],
+ data() {
+ return {
+ // 閬僵灞�
+ loading: false,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 5,
+ // 鏈嶅姟缁勮〃鏍兼暟鎹�
+ groupList: [
+ {
+ groupId: "SG2025001",
+ groupName: "绯栧翱鐥呴殢璁跨鐞嗙粍",
+ groupDesc: "涓撻棬璐熻矗绯栧翱鐥呮偅鑰呯殑瀹氭湡闅忚鍜屽仴搴风鐞嗘湇鍔�",
+ taskCount: 5,
+ patientCount: 150,
+ status: 1,
+ createBy: "寮犲尰鐢�",
+ createTime: "2025-10-15 14:30:00",
+ },
+ {
+ groupId: "SG2025002",
+ groupName: "楂樿鍘嬪仴搴风鐞嗙粍",
+ groupDesc: "楂樿鍘嬫偅鑰呯殑鐢ㄨ嵂鎸囧鍜岃鍘嬬洃娴嬬鐞�",
+ taskCount: 3,
+ patientCount: 89,
+ status: 1,
+ createBy: "鏉庡尰鐢�",
+ createTime: "2025-10-10 09:15:00",
+ },
+ {
+ groupId: "SG2025003",
+ groupName: "鏈悗搴峰闅忚缁�",
+ groupDesc: "澶栫鎵嬫湳鍚庢偅鑰呯殑搴峰鎸囧鍜岄殢璁跨鐞�",
+ taskCount: 2,
+ patientCount: 45,
+ status: 0,
+ createBy: "鐜嬪尰鐢�",
+ createTime: "2025-09-28 16:20:00",
+ },
+ {
+ groupId: "SG2025004",
+ groupName: "瀛曚骇鏈熷仴搴风鐞嗙粍",
+ groupDesc: "瀛曟湡鍜屼骇鍚庡濂崇殑鍋ュ悍鐩戞祴鍜屾寚瀵兼湇鍔�",
+ taskCount: 4,
+ patientCount: 67,
+ status: 1,
+ createBy: "璧靛尰鐢�",
+ createTime: "2025-10-05 11:30:00",
+ },
+ {
+ groupId: "SG2025005",
+ groupName: "鎱㈡�х梾缁煎悎绠$悊缁�",
+ groupDesc: "澶氱鎱㈡�х梾鎮h�呯殑缁煎悎鍋ュ悍绠$悊鏈嶅姟",
+ taskCount: 6,
+ patientCount: 203,
+ status: 1,
+ createBy: "寮犲尰鐢�",
+ createTime: "2025-09-15 08:45:00",
+ },
+ ],
+ // 鏃ユ湡鑼冨洿
+ dateRange: [],
+ // 鐘舵�侀�夐」
+ statusOptions: [
+ { value: 1, label: "鍚敤" },
+ { value: 0, label: "鍋滅敤" },
+ ],
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ groupName: undefined,
+ createBy: undefined,
+ status: undefined,
+ },
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ鏈嶅姟缁勫垪琛� */
+ getList() {
+ // this.loading = true;
+ // listServiceGroup(
+ // this.addDateRange(this.queryParams, this.dateRange)
+ // ).then((response) => {
+ // this.groupList = response.rows;
+ // this.total = response.total;
+ // this.loading = false;
+ // });
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.dateRange = [];
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map((item) => item.groupId);
+ this.single = selection.length !== 1;
+ this.multiple = !selection.length;
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.$router.push("/group/serviceGroupPar");
+ },
+ /** 璇︽儏鎸夐挳鎿嶄綔 */
+ handleView(row, type) {
+ this.$router.push({
+ path: "/group/serviceGroupPar",
+ query: {
+ type: this.topqueryParams.type,
+ },
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const groupIds = row.groupId || this.ids;
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鏈嶅姟缁勭紪鍙蜂负"' + groupIds + '"鐨勬暟鎹」锛�')
+ .then(() => {
+ return delServiceGroup(groupIds);
+ })
+ .then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ },
+};
+</script>
+
+<style scoped>
+.delete-btn {
+ color: #f56c6c;
+}
+.app-container {
+ padding: 20px;
+}
+.mb8 {
+ margin-bottom: 8px;
+}
+</style>
diff --git a/src/views/groupManagement/serviceGroup/particulars.vue b/src/views/groupManagement/serviceGroup/particulars.vue
new file mode 100644
index 0000000..f7dd40f
--- /dev/null
+++ b/src/views/groupManagement/serviceGroup/particulars.vue
@@ -0,0 +1,518 @@
+<template>
+ <div class="app-container">
+ <!-- 椤堕儴闈㈠寘灞戝鑸� -->
+ <el-breadcrumb separator-class="el-icon-arrow-right" class="breadcrumb">
+ <el-breadcrumb-item :to="{ path: '/system/serviceGroup' }">鏈嶅姟缁勭鐞�</el-breadcrumb-item>
+ <el-breadcrumb-item>鏈嶅姟缁勮鎯�</el-breadcrumb-item>
+ </el-breadcrumb>
+
+ <!-- 椤堕儴鍩虹淇℃伅 -->
+ <el-card class="base-info-card" shadow="never">
+ <div slot="header" class="clearfix">
+ <span class="card-title">鏈嶅姟缁勫熀纭�淇℃伅</span>
+ <el-button
+ style="float: right; padding: 3px 0"
+ type="text"
+ icon="el-icon-edit"
+ @click="handleEdit"
+ >缂栬緫</el-button
+ >
+ </div>
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <div class="info-item">
+ <label>鏈嶅姟缁勫悕绉帮細</label>
+ <span>{{ baseInfo.groupName }}</span>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="info-item">
+ <label>鏈嶅姟缁処D锛�</label>
+ <span>{{ baseInfo.groupId }}</span>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="info-item">
+ <label>鐘舵�侊細</label>
+ <el-tag :type="baseInfo.status === 1 ? 'success' : 'info'">
+ {{ baseInfo.status === 1 ? '鍚敤' : '鍋滅敤' }}
+ </el-tag>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="24">
+ <div class="info-item">
+ <label>鎻忚堪锛�</label>
+ <span>{{ baseInfo.groupDesc || '鏆傛棤鎻忚堪' }}</span>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <div class="info-item">
+ <label>鍒涘缓浜猴細</label>
+ <span>{{ baseInfo.createBy }}</span>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="info-item">
+ <label>鍒涘缓鏃堕棿锛�</label>
+ <span>{{ parseTime(baseInfo.createTime) }}</span>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="info-item">
+ <label>鏇存柊鏃堕棿锛�</label>
+ <span>{{ parseTime(baseInfo.updateTime) }}</span>
+ </div>
+ </el-col>
+ </el-row>
+ </el-card>
+
+ <!-- 涓儴鍏宠仈浠诲姟 -->
+ <el-card class="task-card" shadow="never">
+ <div slot="header" class="clearfix">
+ <span class="card-title">鍏宠仈浠诲姟</span>
+ <el-button
+ style="float: right; margin-left: 10px;"
+ type="primary"
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAddTask"
+ >鍏宠仈浠诲姟</el-button
+ >
+ <el-button
+ style="float: right;"
+ type="text"
+ icon="el-icon-setting"
+ @click="handleManageTasks"
+ >绠$悊</el-button
+ >
+ </div>
+
+ <el-table
+ v-loading="taskLoading"
+ :data="taskList"
+ style="width: 100%"
+ >
+ <el-table-column
+ label="浠诲姟鍚嶇О"
+ prop="taskName"
+ min-width="200"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="浠诲姟绫诲瀷"
+ prop="taskType"
+ width="120"
+ align="center"
+ >
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.task_type" :value="scope.row.taskType"/>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="浠诲姟鐘舵��"
+ prop="sendState"
+ width="100"
+ align="center"
+ >
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.task_status" :value="scope.row.sendState"/>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎬讳换鍔�/宸查殢璁�"
+ width="120"
+ align="center"
+ >
+ <template slot-scope="scope">
+ <span>{{ scope.row.totalCount }}/{{ scope.row.completedCount }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍒涘缓鏃堕棿"
+ prop="createTime"
+ width="180"
+ align="center"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.createTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ width="200"
+ align="center"
+ fixed="right"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ @click="handleViewTask(scope.row)"
+ >鏌ョ湅</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ class="delete-btn"
+ @click="handleRemoveTask(scope.row)"
+ >绉婚櫎</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <div v-if="taskList.length === 0 && !taskLoading" class="empty-text">
+ 鏆傛棤鍏宠仈浠诲姟锛岃鍏堝叧鑱斾换鍔�
+ </div>
+ </el-card>
+
+ <!-- 搴曢儴鍏宠仈鎮h�� -->
+ <el-card class="patient-card" shadow="never">
+ <div slot="header" class="clearfix">
+ <span class="card-title">鍏宠仈鎮h��</span>
+ <el-button
+ style="float: right; margin-left: 10px;"
+ type="primary"
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAddPatient"
+ >鍏宠仈鎮h��</el-button
+ >
+ <el-button
+ style="float: right;"
+ type="text"
+ icon="el-icon-setting"
+ @click="handleManagePatients"
+ >绠$悊</el-button
+ >
+ </div>
+
+ <el-table
+ v-loading="patientLoading"
+ :data="patientList"
+ style="width: 100%"
+ >
+ <el-table-column
+ label="鎮h�呭鍚�"
+ prop="patientName"
+ width="120"
+ align="center"
+ />
+ <el-table-column
+ label="鎬у埆"
+ prop="gender"
+ width="80"
+ align="center"
+ >
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.gender"/>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="骞撮緞"
+ prop="age"
+ width="80"
+ align="center"
+ />
+ <el-table-column
+ label="鎵嬫満鍙�"
+ prop="phone"
+ width="130"
+ align="center"
+ />
+ <el-table-column
+ label="鐥呭巻鍙�"
+ prop="medicalRecordNo"
+ width="120"
+ align="center"
+ />
+ <el-table-column
+ label="璇婃柇"
+ prop="diagnosis"
+ min-width="200"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鍏宠仈鏃堕棿"
+ prop="relationTime"
+ width="180"
+ align="center"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.relationTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ width="150"
+ align="center"
+ fixed="right"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ @click="handleViewPatient(scope.row)"
+ >璇︽儏</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ class="delete-btn"
+ @click="handleRemovePatient(scope.row)"
+ >绉婚櫎</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <div v-if="patientList.length === 0 && !patientLoading" class="empty-text">
+ 鏆傛棤鍏宠仈鎮h�咃紝璇峰厛鍏宠仈鎮h��
+ </div>
+ </el-card>
+ </div>
+</template>
+
+<script>
+import { getServiceGroup, getGroupTasks, getGroupPatients } from "@/api/system/serviceGroup";
+
+export default {
+ name: "ServiceGroupDetail",
+ dicts: ['sys_user_sex', 'task_status', 'task_type'],
+ data() {
+ return {
+ groupId: this.$route.params.groupId || 'SG2025001',
+ baseInfoLoading: false,
+ taskLoading: false,
+ patientLoading: false,
+
+ // 娴嬭瘯鏁版嵁 - 鍩虹淇℃伅
+ baseInfo: {
+ groupId: 'SG2025001',
+ groupName: '绯栧翱鐥呴殢璁跨鐞嗘湇鍔$粍',
+ groupDesc: '涓撻棬璐熻矗绯栧翱鐥呮偅鑰呯殑瀹氭湡闅忚銆佺敤鑽寚瀵煎拰鍋ュ悍绠$悊鏈嶅姟锛屾彁楂樻偅鑰呮不鐤椾緷浠庢��',
+ status: 1,
+ createBy: '寮犲尰鐢�',
+ createTime: '2025-10-15 14:30:00',
+ updateTime: '2025-10-20 09:15:00'
+ },
+
+ // 娴嬭瘯鏁版嵁 - 鍏宠仈浠诲姟
+ taskList: [
+ {
+ taskId: 'T1001',
+ taskName: '绯栧翱鐥呮湀搴﹂殢璁胯瘎浼�',
+ taskType: 1,
+ sendState: 2,
+ totalCount: 150,
+ completedCount: 120,
+ createTime: '2025-10-18 10:00:00'
+ },
+ {
+ taskId: 'T1002',
+ taskName: '琛�绯栫洃娴嬩緷浠庢�ч棶鍗�',
+ taskType: 2,
+ sendState: 1,
+ totalCount: 150,
+ completedCount: 85,
+ createTime: '2025-10-16 14:30:00'
+ },
+ {
+ taskId: 'T1003',
+ taskName: '骞跺彂鐥囩瓫鏌ユ彁閱掍换鍔�',
+ taskType: 3,
+ sendState: 3,
+ totalCount: 150,
+ completedCount: 45,
+ createTime: '2025-10-10 09:20:00'
+ }
+ ],
+
+ // 娴嬭瘯鏁版嵁 - 鍏宠仈鎮h��
+ patientList: [
+ {
+ patientId: 'P2025001',
+ patientName: '鐜嬪皬鏄�',
+ gender: 1,
+ age: 45,
+ phone: '13800138000',
+ medicalRecordNo: 'MR2025001001',
+ diagnosis: '2鍨嬬硸灏跨梾锛屼即鏈夊懆鍥寸缁忓苟鍙戠棁',
+ relationTime: '2025-10-16 09:00:00'
+ },
+ {
+ patientId: 'P2025002',
+ patientName: '鏉庡皬绾�',
+ gender: 0,
+ age: 62,
+ phone: '13900139000',
+ medicalRecordNo: 'MR2025001002',
+ diagnosis: '1鍨嬬硸灏跨梾锛岃儼宀涚礌渚濊禆鍨�',
+ relationTime: '2025-10-17 14:30:00'
+ },
+ {
+ patientId: 'P2025003',
+ patientName: '璧靛缓鍥�',
+ gender: 1,
+ age: 58,
+ phone: '13600136000',
+ medicalRecordNo: 'MR2025001003',
+ diagnosis: '2鍨嬬硸灏跨梾锛屼即鏈夌硸灏跨梾鑲剧梾',
+ relationTime: '2025-10-18 11:20:00'
+ }
+ ]
+ };
+ },
+ created() {
+ this.groupId = this.$route.params.groupId;
+ this.getDetail();
+ this.getTaskList();
+ this.getPatientList();
+ },
+ methods: {
+ /** 鑾峰彇鏈嶅姟缁勮鎯� */
+ getDetail() {
+ // this.baseInfoLoading = true;
+ // getServiceGroup(this.groupId).then(response => {
+ // this.baseInfo = response.data;
+ // this.baseInfoLoading = false;
+ // });
+ },
+ /** 鑾峰彇鍏宠仈浠诲姟鍒楄〃 */
+ getTaskList() {
+ // this.taskLoading = true;
+ // getGroupTasks(this.groupId).then(response => {
+ // this.taskList = response.rows;
+ // this.taskLoading = false;
+ // });
+ },
+ /** 鑾峰彇鍏宠仈鎮h�呭垪琛� */
+ getPatientList() {
+ // this.patientLoading = true;
+ // getGroupPatients(this.groupId).then(response => {
+ // this.patientList = response.rows;
+ // this.patientLoading = false;
+ // });
+ },
+ /** 缂栬緫鏈嶅姟缁� */
+ handleEdit() {
+ this.$router.push(`/system/serviceGroup/edit/${this.groupId}`);
+ },
+ /** 鍏宠仈浠诲姟 */
+ handleAddTask() {
+ this.$router.push(`/system/serviceGroup/tasks/${this.groupId}?action=add`);
+ },
+ /** 绠$悊浠诲姟 */
+ handleManageTasks() {
+ this.$router.push(`/system/serviceGroup/tasks/${this.groupId}`);
+ },
+ /** 鏌ョ湅浠诲姟璇︽儏 */
+ handleViewTask(task) {
+ // 鏍规嵁浠诲姟绫诲瀷璺宠浆鍒颁笉鍚岀殑浠诲姟璇︽儏椤�
+ const routeMap = {
+ 1: '/followvisit/particty',
+ 2: '/followvisit/QuestionnaireTask',
+ 3: '/followvisit/Missioncreation'
+ };
+ const route = routeMap[task.type] || '/followvisit/task';
+ this.$router.push(`${route}?id=${task.taskid}`);
+ },
+ /** 绉婚櫎浠诲姟 */
+ handleRemoveTask(task) {
+ this.$modal.confirm(`鏄惁纭绉婚櫎浠诲姟"${task.taskName}"锛焋).then(() => {
+ // 璋冪敤绉婚櫎浠诲姟API
+ removeTaskFromGroup(this.groupId, task.taskid).then(() => {
+ this.$modal.msgSuccess("绉婚櫎鎴愬姛");
+ this.getTaskList();
+ });
+ }).catch(() => {});
+ },
+ /** 鍏宠仈鎮h�� */
+ handleAddPatient() {
+ this.$router.push(`/system/serviceGroup/patients/${this.groupId}?action=add`);
+ },
+ /** 绠$悊鎮h�� */
+ handleManagePatients() {
+ this.$router.push(`/system/serviceGroup/patients/${this.groupId}`);
+ },
+ /** 鏌ョ湅鎮h�呰鎯� */
+ handleViewPatient(patient) {
+ this.$router.push(`/system/patient/detail/${patient.patientId}`);
+ },
+ /** 绉婚櫎鎮h�� */
+ handleRemovePatient(patient) {
+ this.$modal.confirm(`鏄惁纭绉婚櫎鎮h��"${patient.patientName}"锛焋).then(() => {
+ // 璋冪敤绉婚櫎鎮h�匒PI
+ removePatientFromGroup(this.groupId, patient.patientId).then(() => {
+ this.$modal.msgSuccess("绉婚櫎鎴愬姛");
+ this.getPatientList();
+ });
+ }).catch(() => {});
+ },
+ }
+};
+</script>
+
+<style scoped>
+.app-container {
+ padding: 20px;
+}
+
+.breadcrumb {
+ margin-bottom: 20px;
+}
+
+.base-info-card,
+.task-card,
+.patient-card {
+ margin-bottom: 20px;
+}
+
+.card-title {
+ font-size: 16px;
+ font-weight: bold;
+ color: #303133;
+}
+
+.info-item {
+ margin-bottom: 15px;
+ line-height: 1.5;
+}
+
+.info-item label {
+ display: inline-block;
+ width: 100px;
+ color: #606266;
+ font-weight: normal;
+ text-align: right;
+ margin-right: 10px;
+}
+
+.info-item span {
+ color: #303133;
+}
+
+.empty-text {
+ text-align: center;
+ color: #909399;
+ padding: 40px 0;
+ font-size: 14px;
+}
+
+.delete-btn {
+ color: #f56c6c;
+}
+
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ content: "";
+}
+.clearfix:after {
+ clear: both;
+}
+</style>
diff --git a/vue.config.js b/vue.config.js
index 5f97768..e6f390f 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -37,8 +37,8 @@
[process.env.VUE_APP_BASE_API]: {
// target: `https://www.health-y.cn/lssf`,
// target: `http://192.168.100.129:8095`,
- // target: `http://192.168.100.10:8096`,
- target:`http://localhost:8095`,
+ target: `http://192.168.100.10:8096`,
+ // target:`http://localhost:8095`,
// target:`http://35z1t16164.qicp.vip`,
// target: `http://192.168.100.193:8095`,
// target: `http://192.168.101.166:8093`,
--
Gitblit v1.9.3