From 5319d5b95497b5b546947ac340c14c71e5b54ca6 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期三, 10 十二月 2025 09:57:58 +0800
Subject: [PATCH] 测试完成
---
src/views/system/group/index.vue | 1473 +++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 1,196 insertions(+), 277 deletions(-)
diff --git a/src/views/system/group/index.vue b/src/views/system/group/index.vue
index af86dae..2d39039 100644
--- a/src/views/system/group/index.vue
+++ b/src/views/system/group/index.vue
@@ -5,7 +5,14 @@
<el-tab-pane label="鍥㈤槦绠$悊" name="team">
<el-row :gutter="20">
<el-col :span="24" :xs="24">
- <el-form :model="teamQueryParams" ref="teamQueryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form
+ :model="teamQueryParams"
+ ref="teamQueryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="68px"
+ >
<el-form-item label="鍥㈤槦鍚嶇О" prop="name">
<el-input
v-model="teamQueryParams.name"
@@ -16,7 +23,12 @@
/>
</el-form-item>
<el-form-item label="鍥㈤槦鐘舵��" prop="status">
- <el-select v-model="teamQueryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable style="width: 200px">
+ <el-select
+ v-model="teamQueryParams.status"
+ placeholder="璇烽�夋嫨鐘舵��"
+ clearable
+ style="width: 200px"
+ >
<el-option
v-for="item in teamStatusOptions"
:key="item.value"
@@ -26,8 +38,19 @@
</el-select>
</el-form-item>
<el-form-item>
- <el-button type="primary" icon="el-icon-search" size="medium" @click="handleTeamQuery">鎼滅储</el-button>
- <el-button icon="el-icon-refresh" size="medium" @click="resetTeamQuery">閲嶇疆</el-button>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleTeamQuery"
+ >鎼滅储</el-button
+ >
+ <el-button
+ icon="el-icon-refresh"
+ size="medium"
+ @click="resetTeamQuery"
+ >閲嶇疆</el-button
+ >
</el-form-item>
</el-form>
@@ -39,56 +62,104 @@
icon="el-icon-plus"
size="medium"
@click="handleTeamAdd"
- >鏂板鍥㈤槦</el-button>
+ >鏂板鍥㈤槦</el-button
+ >
</el-col>
</el-row>
- <el-table v-loading="teamLoading" :data="filteredTeamList" @selection-change="handleTeamSelectionChange">
+ <el-table
+ v-loading="teamLoading"
+ :data="filteredTeamList"
+ @selection-change="handleTeamSelectionChange"
+ >
<el-table-column type="selection" width="50" align="center" />
- <el-table-column label="鍥㈤槦ID" align="center" prop="id" width="80" />
- <el-table-column label="鍥㈤槦鍚嶇О" align="center" prop="name" :show-overflow-tooltip="true" />
- <el-table-column label="鍥㈤槦缁勯暱" align="center" prop="leader" width="120" />
- <el-table-column label="鍥㈤槦鎴愬憳" align="center" prop="memberCount" width="100">
- <template slot-scope="scope">
- <el-tag>{{ (scope.row.members || []).length }}浜�</el-tag>
- </template>
-</el-table-column>
- <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="160">
+ <el-table-column
+ label="鍥㈤槦ID"
+ align="center"
+ prop="id"
+ width="80"
+ />
+ <el-table-column
+ label="鍥㈤槦鍚嶇О"
+ align="center"
+ prop="name"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鍥㈤槦缁勯暱"
+ align="center"
+ prop="leader"
+ width="120"
+ />
+ <el-table-column
+ label="鍥㈤槦鎴愬憳"
+ align="center"
+ prop="memberCount"
+ width="100"
+ >
<template slot-scope="scope">
- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+ <el-tag>{{ (scope.row.members || []).length }}浜�</el-tag>
</template>
</el-table-column>
- <el-table-column label="鍥㈤槦鐘舵��" align="center" prop="status" width="100">
+ <el-table-column
+ label="鍒涘缓鏃堕棿"
+ align="center"
+ prop="createTime"
+ width="160"
+ >
<template slot-scope="scope">
- <dict-tag :options="teamStatusOptions" :value="scope.row.status"/>
+ <span>{{
+ parseTime(scope.row.createTime, "{y}-{m}-{d}")
+ }}</span>
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">
+ <el-table-column
+ label="鍥㈤槦鐘舵��"
+ align="center"
+ prop="status"
+ width="100"
+ >
+ <template slot-scope="scope">
+ <dict-tag
+ :options="teamStatusOptions"
+ :value="scope.row.status"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ class-name="small-padding fixed-width"
+ width="180"
+ >
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleTeamDetail(scope.row)"
- >璇︽儏</el-button>
+ >璇︽儏</el-button
+ >
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleTeamUpdate(scope.row)"
- >缂栬緫</el-button>
+ >缂栬緫</el-button
+ >
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleTeamDelete(scope.row)"
- >鍒犻櫎</el-button>
+ >鍒犻櫎</el-button
+ >
</template>
</el-table-column>
</el-table>
<pagination
- v-show="teamTotal>0"
+ v-show="teamTotal > 0"
:total="teamTotal"
:page.sync="teamQueryParams.pageNum"
:limit.sync="teamQueryParams.pageSize"
@@ -102,7 +173,14 @@
<el-tab-pane label="浜哄憳鍒嗙粍" name="member">
<el-row :gutter="20">
<el-col :span="24" :xs="24">
- <el-form :model="memberQueryParams" ref="memberQueryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form
+ :model="memberQueryParams"
+ ref="memberQueryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="68px"
+ >
<el-form-item label="鎴愬憳濮撳悕" prop="name">
<el-input
v-model="memberQueryParams.name"
@@ -113,7 +191,12 @@
/>
</el-form-item>
<el-form-item label="鎵�灞炲洟闃�" prop="teamId">
- <el-select v-model="memberQueryParams.teamId" placeholder="璇烽�夋嫨鍥㈤槦" clearable style="width: 200px">
+ <el-select
+ v-model="memberQueryParams.teamId"
+ placeholder="璇烽�夋嫨鍥㈤槦"
+ clearable
+ style="width: 200px"
+ >
<el-option
v-for="item in teamList"
:key="item.id"
@@ -123,7 +206,12 @@
</el-select>
</el-form-item>
<el-form-item label="鎴愬憳鐘舵��" prop="status">
- <el-select v-model="memberQueryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable style="width: 200px">
+ <el-select
+ v-model="memberQueryParams.status"
+ placeholder="璇烽�夋嫨鐘舵��"
+ clearable
+ style="width: 200px"
+ >
<el-option
v-for="item in memberStatusOptions"
:key="item.value"
@@ -133,8 +221,19 @@
</el-select>
</el-form-item>
<el-form-item>
- <el-button type="primary" icon="el-icon-search" size="medium" @click="handleMemberQuery">鎼滅储</el-button>
- <el-button icon="el-icon-refresh" size="medium" @click="resetMemberQuery">閲嶇疆</el-button>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleMemberQuery"
+ >鎼滅储</el-button
+ >
+ <el-button
+ icon="el-icon-refresh"
+ size="medium"
+ @click="resetMemberQuery"
+ >閲嶇疆</el-button
+ >
</el-form-item>
</el-form>
@@ -146,7 +245,8 @@
icon="el-icon-plus"
size="medium"
@click="handleMemberAdd"
- >鏂板鎴愬憳</el-button>
+ >鏂板鎴愬憳</el-button
+ >
</el-col>
<el-col :span="1.5">
<el-button
@@ -156,50 +256,105 @@
size="medium"
:disabled="multiple"
@click="handleMemberDelete"
- >鍒犻櫎</el-button>
+ >鍒犻櫎</el-button
+ >
</el-col>
</el-row>
- <el-table v-loading="memberLoading" :data="filteredMemberList" @selection-change="handleMemberSelectionChange">
+ <el-table
+ v-loading="memberLoading"
+ :data="filteredMemberList"
+ @selection-change="handleMemberSelectionChange"
+ >
<el-table-column type="selection" width="50" align="center" />
- <el-table-column label="鎴愬憳ID" align="center" prop="id" width="80" />
- <el-table-column label="鎴愬憳濮撳悕" align="center" prop="name" :show-overflow-tooltip="true" />
- <el-table-column label="鎵�灞炲洟闃�" align="center" prop="teamName" width="150" />
- <el-table-column label="鑱屼綅" align="center" prop="position" width="120" />
- <el-table-column label="鑱旂郴鐢佃瘽" align="center" prop="phone" width="150" />
- <el-table-column label="閭" align="center" prop="email" width="200" />
- <el-table-column label="褰撳墠宸ュ崟" align="center" prop="currentWorkOrder" width="120">
+ <el-table-column
+ label="鎴愬憳ID"
+ align="center"
+ prop="id"
+ width="80"
+ />
+ <el-table-column
+ label="鎴愬憳濮撳悕"
+ align="center"
+ prop="name"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鎵�灞炲洟闃�"
+ align="center"
+ prop="teamName"
+ width="150"
+ />
+ <el-table-column
+ label="鑱屼綅"
+ align="center"
+ prop="position"
+ width="120"
+ />
+ <el-table-column
+ label="鑱旂郴鐢佃瘽"
+ align="center"
+ prop="phone"
+ width="150"
+ />
+ <el-table-column
+ label="閭"
+ align="center"
+ prop="email"
+ width="200"
+ />
+ <el-table-column
+ label="褰撳墠宸ュ崟"
+ align="center"
+ prop="currentWorkOrder"
+ width="120"
+ >
<template slot-scope="scope">
<el-tag :type="scope.row.currentWorkOrder ? '' : 'info'">
- {{ scope.row.currentWorkOrder || '绌洪棽' }}
+ {{ scope.row.currentWorkOrder || "绌洪棽" }}
</el-tag>
</template>
</el-table-column>
- <el-table-column label="鎴愬憳鐘舵��" align="center" prop="status" width="100">
+ <el-table-column
+ label="鎴愬憳鐘舵��"
+ align="center"
+ prop="status"
+ width="100"
+ >
<template slot-scope="scope">
- <dict-tag :options="memberStatusOptions" :value="scope.row.status"/>
+ <dict-tag
+ :options="memberStatusOptions"
+ :value="scope.row.status"
+ />
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ class-name="small-padding fixed-width"
+ width="180"
+ >
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleMemberUpdate(scope.row)"
- >缂栬緫</el-button>
+ >缂栬緫</el-button
+ >
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleMemberDelete(scope.row)"
- >鍒犻櫎</el-button>
+ >鍒犻櫎</el-button
+ >
</template>
</el-table-column>
</el-table>
<pagination
- v-show="memberTotal>0"
+ v-show="memberTotal > 0"
:total="memberTotal"
:page.sync="memberQueryParams.pageNum"
:limit.sync="memberQueryParams.pageSize"
@@ -213,7 +368,14 @@
<el-tab-pane label="宸ュ崟鎸囨淳" name="workOrder">
<el-row :gutter="20">
<el-col :span="24" :xs="24">
- <el-form :model="workOrderQueryParams" ref="workOrderQueryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form
+ :model="workOrderQueryParams"
+ ref="workOrderQueryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="68px"
+ >
<el-form-item label="宸ュ崟缂栧彿" prop="id">
<el-input
v-model="workOrderQueryParams.id"
@@ -224,7 +386,12 @@
/>
</el-form-item>
<el-form-item label="宸ュ崟鐘舵��" prop="status">
- <el-select v-model="workOrderQueryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable style="width: 200px">
+ <el-select
+ v-model="workOrderQueryParams.status"
+ placeholder="璇烽�夋嫨鐘舵��"
+ clearable
+ style="width: 200px"
+ >
<el-option
v-for="item in workOrderStatusOptions"
:key="item.value"
@@ -234,7 +401,12 @@
</el-select>
</el-form-item>
<el-form-item label="澶勭悊浜�" prop="assignee">
- <el-select v-model="workOrderQueryParams.assignee" placeholder="璇烽�夋嫨澶勭悊浜�" clearable style="width: 200px">
+ <el-select
+ v-model="workOrderQueryParams.assignee"
+ placeholder="璇烽�夋嫨澶勭悊浜�"
+ clearable
+ style="width: 200px"
+ >
<el-option
v-for="item in memberList"
:key="item.id"
@@ -244,8 +416,19 @@
</el-select>
</el-form-item>
<el-form-item>
- <el-button type="primary" icon="el-icon-search" size="medium" @click="handleWorkOrderQuery">鎼滅储</el-button>
- <el-button icon="el-icon-refresh" size="medium" @click="resetWorkOrderQuery">閲嶇疆</el-button>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleWorkOrderQuery"
+ >鎼滅储</el-button
+ >
+ <el-button
+ icon="el-icon-refresh"
+ size="medium"
+ @click="resetWorkOrderQuery"
+ >閲嶇疆</el-button
+ >
</el-form-item>
</el-form>
@@ -257,64 +440,133 @@
icon="el-icon-plus"
size="medium"
@click="handleWorkOrderAdd"
- >鏂板缓宸ュ崟</el-button>
+ >鏂板缓宸ュ崟</el-button
+ >
</el-col>
</el-row>
- <el-table v-loading="workOrderLoading" :data="filteredWorkOrderList" @selection-change="handleWorkOrderSelectionChange">
+ <el-table
+ v-loading="workOrderLoading"
+ :data="filteredWorkOrderList"
+ @selection-change="handleWorkOrderSelectionChange"
+ >
<el-table-column type="selection" width="50" align="center" />
- <el-table-column label="宸ュ崟缂栧彿" align="center" prop="id" width="120" />
- <el-table-column label="宸ュ崟鏍囬" align="center" prop="title" :show-overflow-tooltip="true" />
- <el-table-column label="浼樺厛绾�" align="center" prop="priority" width="100">
+ <el-table-column
+ label="宸ュ崟缂栧彿"
+ align="center"
+ prop="id"
+ width="120"
+ />
+ <el-table-column
+ label="宸ュ崟鏍囬"
+ align="center"
+ prop="title"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="浼樺厛绾�"
+ align="center"
+ prop="priority"
+ width="100"
+ >
<template slot-scope="scope">
- <el-tag :type="scope.row.priority === '1' ? 'danger' : scope.row.priority === '2' ? 'warning' : ''">
- {{ scope.row.priority === '1' ? '楂�' : scope.row.priority === '2' ? '涓�' : '浣�' }}
+ <el-tag
+ :type="
+ scope.row.priority === '1'
+ ? 'danger'
+ : scope.row.priority === '2'
+ ? 'warning'
+ : ''
+ "
+ >
+ {{
+ scope.row.priority === "1"
+ ? "楂�"
+ : scope.row.priority === "2"
+ ? "涓�"
+ : "浣�"
+ }}
</el-tag>
</template>
</el-table-column>
- <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="160">
+ <el-table-column
+ label="鍒涘缓鏃堕棿"
+ align="center"
+ prop="createTime"
+ width="160"
+ >
<template slot-scope="scope">
- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+ <span>{{
+ parseTime(scope.row.createTime, "{y}-{m}-{d}")
+ }}</span>
</template>
</el-table-column>
- <el-table-column label="鎴鏃堕棿" align="center" prop="deadline" width="160">
+ <el-table-column
+ label="鎴鏃堕棿"
+ align="center"
+ prop="deadline"
+ width="160"
+ >
<template slot-scope="scope">
- <span>{{ parseTime(scope.row.deadline, '{y}-{m}-{d}') }}</span>
+ <span>{{
+ parseTime(scope.row.deadline, "{y}-{m}-{d}")
+ }}</span>
</template>
</el-table-column>
- <el-table-column label="澶勭悊浜�" align="center" prop="assigneeName" width="120" />
- <el-table-column label="宸ュ崟鐘舵��" align="center" prop="status" width="120">
+ <el-table-column
+ label="澶勭悊浜�"
+ align="center"
+ prop="assigneeName"
+ width="120"
+ />
+ <el-table-column
+ label="宸ュ崟鐘舵��"
+ align="center"
+ prop="status"
+ width="120"
+ >
<template slot-scope="scope">
- <dict-tag :options="workOrderStatusOptions" :value="scope.row.status"/>
+ <dict-tag
+ :options="workOrderStatusOptions"
+ :value="scope.row.status"
+ />
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ class-name="small-padding fixed-width"
+ width="180"
+ >
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleWorkOrderUpdate(scope.row)"
- >缂栬緫</el-button>
+ >缂栬緫</el-button
+ >
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleWorkOrderDelete(scope.row)"
- >鍒犻櫎</el-button>
+ >鍒犻櫎</el-button
+ >
<el-button
size="mini"
type="text"
icon="el-icon-s-promotion"
@click="handleAssignWorkOrder(scope.row)"
v-if="scope.row.status === '0'"
- >鎸囨淳</el-button>
+ >鎸囨淳</el-button
+ >
</template>
</el-table-column>
</el-table>
<pagination
- v-show="workOrderTotal>0"
+ v-show="workOrderTotal > 0"
:total="workOrderTotal"
:page.sync="workOrderQueryParams.pageNum"
:limit.sync="workOrderQueryParams.pageSize"
@@ -326,19 +578,37 @@
</el-tabs>
<!-- 鍥㈤槦璇︽儏瀵硅瘽妗� -->
- <el-dialog :title="teamDialogTitle" :visible.sync="teamDialogVisible" width="70%" append-to-body>
+ <el-dialog
+ :title="teamDialogTitle"
+ :visible.sync="teamDialogVisible"
+ width="70%"
+ append-to-body
+ >
<el-descriptions :column="2" border>
- <el-descriptions-item label="鍥㈤槦ID">{{ currentTeam.id }}</el-descriptions-item>
- <el-descriptions-item label="鍥㈤槦鍚嶇О">{{ currentTeam.name }}</el-descriptions-item>
- <el-descriptions-item label="鍥㈤槦缁勯暱">{{ currentTeam.leader }}</el-descriptions-item>
-<el-descriptions-item label="鍥㈤槦鎴愬憳">{{ (currentTeam.members || []).length }}浜�</el-descriptions-item> <el-descriptions-item label="鍒涘缓鏃堕棿">{{ parseTime(currentTeam.createTime, '{y}-{m}-{d} {h}:{i}') }}</el-descriptions-item>
+ <el-descriptions-item label="鍥㈤槦ID">{{
+ currentTeam.id
+ }}</el-descriptions-item>
+ <el-descriptions-item label="鍥㈤槦鍚嶇О">{{
+ currentTeam.name
+ }}</el-descriptions-item>
+ <el-descriptions-item label="鍥㈤槦缁勯暱">{{
+ currentTeam.leader
+ }}</el-descriptions-item>
+ <el-descriptions-item label="鍥㈤槦鎴愬憳"
+ >{{ (currentTeam.members || []).length }}浜�</el-descriptions-item
+ >
+ <el-descriptions-item label="鍒涘缓鏃堕棿">{{
+ parseTime(currentTeam.createTime, "{y}-{m}-{d} {h}:{i}")
+ }}</el-descriptions-item>
<el-descriptions-item label="鍥㈤槦鐘舵��">
- <dict-tag :options="teamStatusOptions" :value="currentTeam.status"/>
+ <dict-tag :options="teamStatusOptions" :value="currentTeam.status" />
</el-descriptions-item>
- <el-descriptions-item label="鍥㈤槦鎻忚堪" :span="2">{{ currentTeam.description || '鏃�' }}</el-descriptions-item>
+ <el-descriptions-item label="鍥㈤槦鎻忚堪" :span="2">{{
+ currentTeam.description || "鏃�"
+ }}</el-descriptions-item>
</el-descriptions>
- <div class="team-members" style="margin-top: 20px;">
+ <div class="team-members" style="margin-top: 20px">
<div class="headline">
<div class="basics">鍥㈤槦鎴愬憳</div>
</div>
@@ -351,19 +621,22 @@
<el-table-column prop="currentWorkOrder" label="褰撳墠宸ュ崟" width="150">
<template slot-scope="scope">
<el-tag :type="scope.row.currentWorkOrder ? '' : 'info'">
- {{ scope.row.currentWorkOrder || '绌洪棽' }}
+ {{ scope.row.currentWorkOrder || "绌洪棽" }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="status" label="鎴愬憳鐘舵��" width="100">
<template slot-scope="scope">
- <dict-tag :options="memberStatusOptions" :value="scope.row.status"/>
+ <dict-tag
+ :options="memberStatusOptions"
+ :value="scope.row.status"
+ />
</template>
</el-table-column>
</el-table>
</div>
- <div class="team-work-orders" style="margin-top: 20px;">
+ <div class="team-work-orders" style="margin-top: 20px">
<div class="headline">
<div class="basics">鍥㈤槦宸ュ崟</div>
</div>
@@ -373,38 +646,90 @@
<el-table-column prop="title" label="宸ュ崟鏍囬" />
<el-table-column prop="priority" label="浼樺厛绾�" width="100">
<template slot-scope="scope">
- <el-tag :type="scope.row.priority === '1' ? 'danger' : scope.row.priority === '2' ? 'warning' : ''">
- {{ scope.row.priority === '1' ? '楂�' : scope.row.priority === '2' ? '涓�' : '浣�' }}
+ <el-tag
+ :type="
+ scope.row.priority === '1'
+ ? 'danger'
+ : scope.row.priority === '2'
+ ? 'warning'
+ : ''
+ "
+ >
+ {{
+ scope.row.priority === "1"
+ ? "楂�"
+ : scope.row.priority === "2"
+ ? "涓�"
+ : "浣�"
+ }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="assigneeName" label="澶勭悊浜�" width="120" />
<el-table-column prop="status" label="宸ュ崟鐘舵��" width="120">
<template slot-scope="scope">
- <dict-tag :options="workOrderStatusOptions" :value="scope.row.status"/>
+ <dict-tag
+ :options="workOrderStatusOptions"
+ :value="scope.row.status"
+ />
</template>
</el-table-column>
<el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="160">
<template slot-scope="scope">
- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+ <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column prop="deadline" label="鎴鏃堕棿" width="160">
<template slot-scope="scope">
- <span>{{ parseTime(scope.row.deadline, '{y}-{m}-{d}') }}</span>
+ <span>{{ parseTime(scope.row.deadline, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
</el-table>
</div>
-
+ <!-- 鍦ㄥ洟闃熻鎯呭璇濇鐨勫洟闃熸垚鍛樿〃鏍煎悗娣诲姞浜岀淮鐮佸尯鍩� -->
+ <div class="team-qrcode" style="margin-top: 20px">
+ <div class="headline">
+ <div class="basics">鍥㈤槦浜岀淮鐮�</div>
+ </div>
+ <el-divider></el-divider>
+ <div class="qrcode-container">
+ <vue-qr
+ :text="teamQRContent"
+ :size="200"
+ :margin="10"
+ colorDark="#409EFF"
+ :logoScale="0.2"
+ :logoSrc="logoUrl"
+ ></vue-qr>
+ <div class="qrcode-actions">
+ <el-button size="mini" @click="downloadQRCode"
+ >涓嬭浇浜岀淮鐮�</el-button
+ >
+ <el-button size="mini" type="primary" @click="refreshQRCode"
+ >鍒锋柊</el-button
+ >
+ </div>
+ <p class="qrcode-tip">鎵弿浜岀淮鐮佹煡鐪嬪洟闃熶俊鎭紙鏈夋晥鏈�24灏忔椂锛�</p>
+ </div>
+ </div>
<div slot="footer" class="dialog-footer">
<el-button @click="teamDialogVisible = false">鍏� 闂�</el-button>
</div>
</el-dialog>
<!-- 鏂板/缂栬緫鍥㈤槦瀵硅瘽妗� -->
- <el-dialog :title="teamFormTitle" :visible.sync="teamFormVisible" width="50%" append-to-body>
- <el-form ref="teamForm" :model="teamForm" :rules="teamRules" label-width="80px">
+ <el-dialog
+ :title="teamFormTitle"
+ :visible.sync="teamFormVisible"
+ width="50%"
+ append-to-body
+ >
+ <el-form
+ ref="teamForm"
+ :model="teamForm"
+ :rules="teamRules"
+ label-width="80px"
+ >
<el-row>
<el-col :span="24">
<el-form-item label="鍥㈤槦鍚嶇О" prop="name">
@@ -430,7 +755,8 @@
v-for="dict in teamStatusOptions"
:key="dict.value"
:label="dict.value"
- >{{dict.label}}</el-radio>
+ >{{ dict.label }}</el-radio
+ >
</el-radio-group>
</el-form-item>
</el-col>
@@ -442,14 +768,19 @@
:titles="['鍙�夋垚鍛�', '鍥㈤槦鎴愬憳']"
:props="{
key: 'id',
- label: 'name'
+ label: 'name',
}"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="鍥㈤槦鎻忚堪" prop="description">
- <el-input type="textarea" :rows="3" v-model="teamForm.description" placeholder="璇疯緭鍏ュ洟闃熸弿杩�" />
+ <el-input
+ type="textarea"
+ :rows="3"
+ v-model="teamForm.description"
+ placeholder="璇疯緭鍏ュ洟闃熸弿杩�"
+ />
</el-form-item>
</el-col>
</el-row>
@@ -461,17 +792,33 @@
</el-dialog>
<!-- 鏂板/缂栬緫鎴愬憳瀵硅瘽妗� -->
- <el-dialog :title="memberFormTitle" :visible.sync="memberFormVisible" width="50%" append-to-body>
- <el-form ref="memberForm" :model="memberForm" :rules="memberRules" label-width="80px">
+ <el-dialog
+ :title="memberFormTitle"
+ :visible.sync="memberFormVisible"
+ width="50%"
+ append-to-body
+ >
+ <el-form
+ ref="memberForm"
+ :model="memberForm"
+ :rules="memberRules"
+ label-width="80px"
+ >
<el-row>
<el-col :span="12">
<el-form-item label="鎴愬憳濮撳悕" prop="name">
- <el-input v-model="memberForm.name" placeholder="璇疯緭鍏ユ垚鍛樺鍚�" />
+ <el-input
+ v-model="memberForm.name"
+ placeholder="璇疯緭鍏ユ垚鍛樺鍚�"
+ />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="鎵�灞炲洟闃�" prop="teamId">
- <el-select v-model="memberForm.teamId" placeholder="璇烽�夋嫨鎵�灞炲洟闃�">
+ <el-select
+ v-model="memberForm.teamId"
+ placeholder="璇烽�夋嫨鎵�灞炲洟闃�"
+ >
<el-option
v-for="item in teamList"
:key="item.id"
@@ -483,12 +830,18 @@
</el-col>
<el-col :span="12">
<el-form-item label="鑱屼綅" prop="position">
- <el-input v-model="memberForm.position" placeholder="璇疯緭鍏ヨ亴浣�" />
+ <el-input
+ v-model="memberForm.position"
+ placeholder="璇疯緭鍏ヨ亴浣�"
+ />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
- <el-input v-model="memberForm.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+ <el-input
+ v-model="memberForm.phone"
+ placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
+ />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -503,7 +856,8 @@
v-for="dict in memberStatusOptions"
:key="dict.value"
:label="dict.value"
- >{{dict.label}}</el-radio>
+ >{{ dict.label }}</el-radio
+ >
</el-radio-group>
</el-form-item>
</el-col>
@@ -516,17 +870,33 @@
</el-dialog>
<!-- 鏂板/缂栬緫宸ュ崟瀵硅瘽妗� -->
- <el-dialog :title="workOrderFormTitle" :visible.sync="workOrderFormVisible" width="60%" append-to-body>
- <el-form ref="workOrderForm" :model="workOrderForm" :rules="workOrderRules" label-width="80px">
+ <el-dialog
+ :title="workOrderFormTitle"
+ :visible.sync="workOrderFormVisible"
+ width="60%"
+ append-to-body
+ >
+ <el-form
+ ref="workOrderForm"
+ :model="workOrderForm"
+ :rules="workOrderRules"
+ label-width="80px"
+ >
<el-row>
<el-col :span="24">
<el-form-item label="宸ュ崟鏍囬" prop="title">
- <el-input v-model="workOrderForm.title" placeholder="璇疯緭鍏ュ伐鍗曟爣棰�" />
+ <el-input
+ v-model="workOrderForm.title"
+ placeholder="璇疯緭鍏ュ伐鍗曟爣棰�"
+ />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="浼樺厛绾�" prop="priority">
- <el-select v-model="workOrderForm.priority" placeholder="璇烽�夋嫨浼樺厛绾�">
+ <el-select
+ v-model="workOrderForm.priority"
+ placeholder="璇烽�夋嫨浼樺厛绾�"
+ >
<el-option
v-for="item in priorityOptions"
:key="item.value"
@@ -549,7 +919,12 @@
</el-col>
<el-col :span="24">
<el-form-item label="宸ュ崟鍐呭" prop="content">
- <el-input type="textarea" :rows="4" v-model="workOrderForm.content" placeholder="璇疯緭鍏ュ伐鍗曞唴瀹�" />
+ <el-input
+ type="textarea"
+ :rows="4"
+ v-model="workOrderForm.content"
+ placeholder="璇疯緭鍏ュ伐鍗曞唴瀹�"
+ />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -559,13 +934,17 @@
v-for="dict in workOrderStatusOptions"
:key="dict.value"
:label="dict.value"
- >{{dict.label}}</el-radio>
+ >{{ dict.label }}</el-radio
+ >
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" v-if="workOrderForm.status === '1'">
<el-form-item label="澶勭悊浜�" prop="assignee">
- <el-select v-model="workOrderForm.assignee" placeholder="璇烽�夋嫨澶勭悊浜�">
+ <el-select
+ v-model="workOrderForm.assignee"
+ placeholder="璇烽�夋嫨澶勭悊浜�"
+ >
<el-option
v-for="item in memberList"
:key="item.id"
@@ -584,13 +963,22 @@
</el-dialog>
<!-- 鎸囨淳宸ュ崟瀵硅瘽妗� -->
- <el-dialog title="鎸囨淳宸ュ崟" :visible.sync="assignDialogVisible" width="40%" append-to-body>
+ <el-dialog
+ title="鎸囨淳宸ュ崟"
+ :visible.sync="assignDialogVisible"
+ width="40%"
+ append-to-body
+ >
<el-form :model="assignForm" label-width="80px">
<el-form-item label="宸ュ崟鏍囬">
<el-input v-model="assignForm.title" disabled />
</el-form-item>
<el-form-item label="澶勭悊浜�" prop="assignee">
- <el-select v-model="assignForm.assignee" placeholder="璇烽�夋嫨澶勭悊浜�" style="width: 100%">
+ <el-select
+ v-model="assignForm.assignee"
+ placeholder="璇烽�夋嫨澶勭悊浜�"
+ style="width: 100%"
+ >
<el-option
v-for="item in availableMembers"
:key="item.id"
@@ -600,7 +988,11 @@
</el-select>
</el-form-item>
<el-form-item label="浼樺厛绾�" prop="priority">
- <el-select v-model="assignForm.priority" placeholder="璇烽�夋嫨浼樺厛绾�" style="width: 100%">
+ <el-select
+ v-model="assignForm.priority"
+ placeholder="璇烽�夋嫨浼樺厛绾�"
+ style="width: 100%"
+ >
<el-option
v-for="item in priorityOptions"
:key="item.value"
@@ -628,83 +1020,205 @@
</template>
<script>
-import { parseTime } from '@/utils/ruoyi'
+import { parseTime } from "@/utils/ruoyi";
+import VueQr from "vue-qr";
export default {
name: "TeamManagement",
- dicts: ['sys_normal_disable', 'sys_user_sex'],
+ dicts: ["sys_normal_disable", "sys_user_sex"],
+ components: { VueQr },
data() {
return {
// 褰撳墠婵�娲荤殑鏍囩椤�
- activeTab: 'team',
+ activeTab: "team",
// 鏄剧ず鎼滅储鏉′欢
showSearch: true,
// 鍥㈤槦绠$悊鐩稿叧鏁版嵁
teamLoading: false,
- multiple: false, // 杩欓噷娣诲姞
+ multiple: false, // 杩欓噷娣诲姞
+ // 鏇挎崲鍘熸湁鐨則eamList鏁版嵁
teamList: [
{
id: 1,
- name: "鍓嶇寮�鍙戝洟闃�",
- leader: "寮犱笁",
+ name: "蹇冭绠″唴绉戝洟闃�",
+ leader: "鏉庢垚鐧�",
members: [
- { id: 1, name: "寮犱笁", position: "鍓嶇缁勯暱", phone: "13800138001", email: "zhangsan@example.com", currentWorkOrder: "WO20230001", status: "1" },
- { id: 2, name: "鏉庡洓", position: "楂樼骇鍓嶇", phone: "13800138002", email: "lisi@example.com", currentWorkOrder: "", status: "1" },
- { id: 3, name: "鐜嬩簲", position: "鍓嶇寮�鍙�", phone: "13800138003", email: "wangwu@example.com", currentWorkOrder: "WO20230002", status: "1" }
+ {
+ id: 1,
+ name: "鏉庢垚鐧�",
+ position: "涓讳换鍖诲笀",
+ phone: "13800138001",
+ email: "lichengbai@hospital.com",
+ currentWorkOrder: "MED20230001",
+ status: "1",
+ },
+ {
+ id: 2,
+ name: "鍒樼繆鎯�",
+ position: "鍓富浠诲尰甯�",
+ phone: "13800138002",
+ email: "liuyihui@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+ {
+ id: 3,
+ name: "寮犲瓱娑�",
+ position: "涓绘不鍖诲笀",
+ phone: "13800138003",
+ email: "zhangmenghan@hospital.com",
+ currentWorkOrder: "MED20230002",
+ status: "1",
+ },
+ {
+ id: 9,
+ name: "鍚存�濈堪",
+ position: "浣忛櫌鍖诲笀",
+ phone: "13800138009",
+ email: "wusihan@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
],
- createTime: "2023-01-15 09:30:00",
+ createTime: "2024-01-15 09:30:00",
status: "1",
- description: "璐熻矗鍏徃鎵�鏈夊墠绔」鐩殑寮�鍙戝拰缁存姢"
+ description: "璐熻矗蹇冭绠$柧鐥呯殑璇婃柇銆佹不鐤楀拰鎵嬫湳锛屾搮闀垮啝蹇冪梾浠嬪叆娌荤枟",
},
{
id: 2,
- name: "鍚庣寮�鍙戝洟闃�",
- leader: "璧靛叚",
+ name: "鑲跨槫绉戞不鐤楀洟闃�",
+ leader: "闄堟斂鍊�",
members: [
- { id: 4, name: "璧靛叚", position: "鍚庣缁勯暱", phone: "13800138004", email: "zhaoliu@example.com", currentWorkOrder: "WO20230003", status: "1" },
- { id: 5, name: "閽变竷", position: "楂樼骇鍚庣", phone: "13800138005", email: "qianqi@example.com", currentWorkOrder: "", status: "1" },
- { id: 6, name: "瀛欏叓", position: "鍚庣寮�鍙�", phone: "13800138006", email: "sunba@example.com", currentWorkOrder: "", status: "1" }
+ {
+ id: 4,
+ name: "闄堟斂鍊�",
+ position: "鑲跨槫绉戜富浠�",
+ phone: "13800138004",
+ email: "chenzhengqian@hospital.com",
+ currentWorkOrder: "MED20230003",
+ status: "1",
+ },
+ {
+ id: 5,
+ name: "閭撹瘲娑�",
+ position: "鏀剧枟鍖诲笀",
+ phone: "13800138005",
+ email: "dengshihan@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+ {
+ id: 6,
+ name: "榛勭洓鐜�",
+ position: "鍖栫枟鍖诲笀",
+ phone: "13800138006",
+ email: "huangshengmei@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
],
- createTime: "2023-01-20 14:20:00",
+ createTime: "2024-02-10 14:20:00",
status: "1",
- description: "璐熻矗鍏徃鎵�鏈夊悗绔湇鍔$殑寮�鍙戝拰缁存姢"
+ description: "涓撴敞浜庤偪鐦ょ殑缁煎悎娌荤枟锛屽寘鎷寲鐤椼�佹斁鐤楀拰闈跺悜娌荤枟",
},
{
id: 3,
- name: "娴嬭瘯鍥㈤槦",
- leader: "鍛ㄤ節",
+ name: "鍎跨璇婄枟鍥㈤槦",
+ leader: "鐜嬫仼榫�",
members: [
- { id: 7, name: "鍛ㄤ節", position: "娴嬭瘯缁忕悊", phone: "13800138007", email: "zhoujiu@example.com", currentWorkOrder: "WO20230004", status: "1" },
- { id: 8, name: "鍚村崄", position: "娴嬭瘯宸ョ▼甯�", phone: "13800138008", email: "wushi@example.com", currentWorkOrder: "", status: "1" }
+ {
+ id: 7,
+ name: "鐜嬫仼榫�",
+ position: "鍎跨涓讳换",
+ phone: "13800138007",
+ email: "wagenlong@hospital.com",
+ currentWorkOrder: "MED20230004",
+ status: "1",
+ },
+ {
+ id: 8,
+ name: "鏈辨斂寤�",
+ position: "鍎跨鍖诲笀",
+ phone: "13800138008",
+ email: "zhuzhengting@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+ {
+ id: 10,
+ name: "鏋椾僵鐜�",
+ position: "鍎跨鎶ゅ+闀�",
+ phone: "13800138010",
+ email: "linpeiling@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
],
- createTime: "2023-02-10 10:15:00",
+ createTime: "2024-03-05 10:15:00",
status: "1",
- description: "璐熻矗鍏徃鎵�鏈夐」鐩殑娴嬭瘯宸ヤ綔"
- }
+ description: "璐熻矗鍎跨甯歌鐥呫�佸鍙戠梾鐨勮瘖鐤楀拰棰勯槻淇濆仴宸ヤ綔",
+ },
+ {
+ id: 4,
+ name: "鎬ヨ瘖鎶㈡晳鍥㈤槦",
+ leader: "鍚翠繆浼�",
+ members: [
+ {
+ id: 11,
+ name: "鍚翠繆浼�",
+ position: "鎬ヨ瘖绉戜富浠�",
+ phone: "13800138011",
+ email: "wujunbo@hospital.com",
+ currentWorkOrder: "MED20230005",
+ status: "1",
+ },
+ {
+ id: 12,
+ name: "闃Θ瀛�",
+ position: "鎬ヨ瘖鍖诲笀",
+ phone: "13800138012",
+ email: "ruanxinxue@hospital.com",
+ currentWorkOrder: "MED20230006",
+ status: "1",
+ },
+ {
+ id: 13,
+ name: "缈佹儬鐝�",
+ position: "鎬ヨ瘖鎶ゅ+",
+ phone: "13800138013",
+ email: "wenghuizhu@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+ ],
+ createTime: "2024-03-20 16:45:00",
+ status: "1",
+ description: "24灏忔椂寰呭懡锛岃礋璐f�ュ嵄閲嶇棁鎮h�呯殑鎶㈡晳鍜屾不鐤�",
+ },
],
+ teamTotal: 4,
teamQueryParams: {
pageNum: 1,
pageSize: 10,
name: undefined,
- status: undefined
+ status: undefined,
},
- teamTotal: 3,
teamStatusOptions: [
{ value: "0", label: "绂佺敤" },
- { value: "1", label: "鍚敤" }
+ { value: "1", label: "鍚敤" },
],
teamDialogVisible: false,
teamDialogTitle: "",
currentTeam: {
- id: undefined,
- name: undefined,
- leader: undefined,
- members: [], // 纭繚鏈夐粯璁ょ┖鏁扮粍
- createTime: undefined,
- status: undefined,
- description: undefined
- },
+ id: undefined,
+ name: undefined,
+ leader: undefined,
+ members: [], // 纭繚鏈夐粯璁ょ┖鏁扮粍
+ createTime: undefined,
+ status: undefined,
+ description: undefined,
+ },
teamFormVisible: false,
teamFormTitle: "",
teamForm: {
@@ -713,43 +1227,213 @@
leader: undefined,
members: [],
status: "1",
- description: undefined
+ description: undefined,
},
teamRules: {
name: [
- { required: true, message: "鍥㈤槦鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+ { required: true, message: "鍥㈤槦鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
],
leader: [
- { required: true, message: "鍥㈤槦缁勯暱涓嶈兘涓虹┖", trigger: "change" }
+ { required: true, message: "鍥㈤槦缁勯暱涓嶈兘涓虹┖", trigger: "change" },
],
status: [
- { required: true, message: "鍥㈤槦鐘舵�佷笉鑳戒负绌�", trigger: "change" }
- ]
+ { required: true, message: "鍥㈤槦鐘舵�佷笉鑳戒负绌�", trigger: "change" },
+ ],
},
-
+ // 浜岀淮鐮佺浉鍏虫暟鎹�
+ teamQRContent: "127.0.0.1:8093/wt?p=0BE9L3C2u",
+ logoUrl: require("@/assets/logo/logoxh.png"), // 鍖婚櫌logo
+ currentQRCodeUrl: "",
// 浜哄憳鍒嗙粍鐩稿叧鏁版嵁
memberLoading: false,
+ // 鏇挎崲鍘熸湁鐨刴emberList鏁版嵁
memberList: [
- { id: 1, name: "寮犱笁", teamId: 1, teamName: "鍓嶇寮�鍙戝洟闃�", position: "鍓嶇缁勯暱", phone: "13800138001", email: "zhangsan@example.com", currentWorkOrder: "WO20230001", status: "1" },
- { id: 2, name: "鏉庡洓", teamId: 1, teamName: "鍓嶇寮�鍙戝洟闃�", position: "楂樼骇鍓嶇", phone: "13800138002", email: "lisi@example.com", currentWorkOrder: "", status: "1" },
- { id: 3, name: "鐜嬩簲", teamId: 1, teamName: "鍓嶇寮�鍙戝洟闃�", position: "鍓嶇寮�鍙�", phone: "13800138003", email: "wangwu@example.com", currentWorkOrder: "WO20230002", status: "1" },
- { id: 4, name: "璧靛叚", teamId: 2, teamName: "鍚庣寮�鍙戝洟闃�", position: "鍚庣缁勯暱", phone: "13800138004", email: "zhaoliu@example.com", currentWorkOrder: "WO20230003", status: "1" },
- { id: 5, name: "閽变竷", teamId: 2, teamName: "鍚庣寮�鍙戝洟闃�", position: "楂樼骇鍚庣", phone: "13800138005", email: "qianqi@example.com", currentWorkOrder: "", status: "1" },
- { id: 6, name: "瀛欏叓", teamId: 2, teamName: "鍚庣寮�鍙戝洟闃�", position: "鍚庣寮�鍙�", phone: "13800138006", email: "sunba@example.com", currentWorkOrder: "", status: "1" },
- { id: 7, name: "鍛ㄤ節", teamId: 3, teamName: "娴嬭瘯鍥㈤槦", position: "娴嬭瘯缁忕悊", phone: "13800138007", email: "zhoujiu@example.com", currentWorkOrder: "WO20230004", status: "1" },
- { id: 8, name: "鍚村崄", teamId: 3, teamName: "娴嬭瘯鍥㈤槦", position: "娴嬭瘯宸ョ▼甯�", phone: "13800138008", email: "wushi@example.com", currentWorkOrder: "", status: "1" }
+ // 蹇冭绠″唴绉戝洟闃熸垚鍛�
+ {
+ id: 1,
+ name: "鏉庢垚鐧�",
+ teamId: 1,
+ teamName: "蹇冭绠″唴绉戝洟闃�",
+ position: "涓讳换鍖诲笀",
+ phone: "13800138001",
+ email: "lichengbai@hospital.com",
+ currentWorkOrder: "MED20230001",
+ status: "1",
+ },
+ {
+ id: 2,
+ name: "鍒樼繆鎯�",
+ teamId: 1,
+ teamName: "蹇冭绠″唴绉戝洟闃�",
+ position: "鍓富浠诲尰甯�",
+ phone: "13800138002",
+ email: "liuyihui@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+ {
+ id: 3,
+ name: "寮犲瓱娑�",
+ teamId: 1,
+ teamName: "蹇冭绠″唴绉戝洟闃�",
+ position: "涓绘不鍖诲笀",
+ phone: "13800138003",
+ email: "zhangmenghan@hospital.com",
+ currentWorkOrder: "MED20230002",
+ status: "1",
+ },
+ {
+ id: 9,
+ name: "鍚存�濈堪",
+ teamId: 1,
+ teamName: "蹇冭绠″唴绉戝洟闃�",
+ position: "浣忛櫌鍖诲笀",
+ phone: "13800138009",
+ email: "wusihan@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+
+ // 鑲跨槫绉戞不鐤楀洟闃熸垚鍛�
+ {
+ id: 4,
+ name: "闄堟斂鍊�",
+ teamId: 2,
+ teamName: "鑲跨槫绉戞不鐤楀洟闃�",
+ position: "鑲跨槫绉戜富浠�",
+ phone: "13800138004",
+ email: "chenzhengqian@hospital.com",
+ currentWorkOrder: "MED20230003",
+ status: "1",
+ },
+ {
+ id: 5,
+ name: "閭撹瘲娑�",
+ teamId: 2,
+ teamName: "鑲跨槫绉戞不鐤楀洟闃�",
+ position: "鏀剧枟鍖诲笀",
+ phone: "13800138005",
+ email: "dengshihan@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+ {
+ id: 6,
+ name: "榛勭洓鐜�",
+ teamId: 2,
+ teamName: "鑲跨槫绉戞不鐤楀洟闃�",
+ position: "鍖栫枟鍖诲笀",
+ phone: "13800138006",
+ email: "huangshengmei@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+
+ // 鍎跨璇婄枟鍥㈤槦鎴愬憳
+ {
+ id: 7,
+ name: "鐜嬫仼榫�",
+ teamId: 3,
+ teamName: "鍎跨璇婄枟鍥㈤槦",
+ position: "鍎跨涓讳换",
+ phone: "13800138007",
+ email: "wagenlong@hospital.com",
+ currentWorkOrder: "MED20230004",
+ status: "1",
+ },
+ {
+ id: 8,
+ name: "鏈辨斂寤�",
+ teamId: 3,
+ teamName: "鍎跨璇婄枟鍥㈤槦",
+ position: "鍎跨鍖诲笀",
+ phone: "13800138008",
+ email: "zhuzhengting@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+ {
+ id: 10,
+ name: "鏋椾僵鐜�",
+ teamId: 3,
+ teamName: "鍎跨璇婄枟鍥㈤槦",
+ position: "鍎跨鎶ゅ+闀�",
+ phone: "13800138010",
+ email: "linpeiling@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+
+ // 鎬ヨ瘖鎶㈡晳鍥㈤槦鎴愬憳
+ {
+ id: 11,
+ name: "鍚翠繆浼�",
+ teamId: 4,
+ teamName: "鎬ヨ瘖鎶㈡晳鍥㈤槦",
+ position: "鎬ヨ瘖绉戜富浠�",
+ phone: "13800138011",
+ email: "wujunbo@hospital.com",
+ currentWorkOrder: "MED20230005",
+ status: "1",
+ },
+ {
+ id: 12,
+ name: "闃Θ瀛�",
+ teamId: 4,
+ teamName: "鎬ヨ瘖鎶㈡晳鍥㈤槦",
+ position: "鎬ヨ瘖鍖诲笀",
+ phone: "13800138012",
+ email: "ruanxinxue@hospital.com",
+ currentWorkOrder: "MED20230006",
+ status: "1",
+ },
+ {
+ id: 13,
+ name: "缈佹儬鐝�",
+ teamId: 4,
+ teamName: "鎬ヨ瘖鎶㈡晳鍥㈤槦",
+ position: "鎬ヨ瘖鎶ゅ+",
+ phone: "13800138013",
+ email: "wenghuizhu@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+
+ // 鍏朵粬鍖荤枟浜哄憳
+ {
+ id: 14,
+ name: "鏂瑰厗鐜�",
+ teamId: 1,
+ teamName: "蹇冭绠″唴绉戝洟闃�",
+ position: "蹇冪數鎶�甯�",
+ phone: "13800138014",
+ email: "fangzhaoyu@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
+ {
+ id: 15,
+ name: "涓佹眽鑷�",
+ teamId: 2,
+ teamName: "鑲跨槫绉戞不鐤楀洟闃�",
+ position: "鐥呯悊鍖诲笀",
+ phone: "13800138015",
+ email: "dinghanzhen@hospital.com",
+ currentWorkOrder: "",
+ status: "1",
+ },
],
+ memberTotal: 15,
memberQueryParams: {
pageNum: 1,
pageSize: 10,
name: undefined,
teamId: undefined,
- status: undefined
+ status: undefined,
},
- memberTotal: 8,
memberStatusOptions: [
{ value: "0", label: "绂佺敤" },
- { value: "1", label: "鍚敤" }
+ { value: "1", label: "鍚敤" },
],
memberFormVisible: false,
memberFormTitle: "",
@@ -760,57 +1444,135 @@
position: undefined,
phone: undefined,
email: undefined,
- status: "1"
+ status: "1",
},
memberRules: {
name: [
- { required: true, message: "鎴愬憳濮撳悕涓嶈兘涓虹┖", trigger: "blur" }
+ { required: true, message: "鎴愬憳濮撳悕涓嶈兘涓虹┖", trigger: "blur" },
],
teamId: [
- { required: true, message: "鎵�灞炲洟闃熶笉鑳戒负绌�", trigger: "change" }
+ { required: true, message: "鎵�灞炲洟闃熶笉鑳戒负绌�", trigger: "change" },
],
position: [
- { required: true, message: "鑱屼綅涓嶈兘涓虹┖", trigger: "blur" }
+ { required: true, message: "鑱屼綅涓嶈兘涓虹┖", trigger: "blur" },
],
phone: [
- { required: true, message: "鑱旂郴鐢佃瘽涓嶈兘涓虹┖", trigger: "blur" }
+ { required: true, message: "鑱旂郴鐢佃瘽涓嶈兘涓虹┖", trigger: "blur" },
],
email: [
{ required: true, message: "閭涓嶈兘涓虹┖", trigger: "blur" },
- { type: 'email', message: '璇疯緭鍏ユ纭殑閭鍦板潃', trigger: ['blur', 'change'] }
+ {
+ type: "email",
+ message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+ trigger: ["blur", "change"],
+ },
],
status: [
- { required: true, message: "鎴愬憳鐘舵�佷笉鑳戒负绌�", trigger: "change" }
- ]
+ { required: true, message: "鎴愬憳鐘舵�佷笉鑳戒负绌�", trigger: "change" },
+ ],
},
// 宸ュ崟鎸囨淳鐩稿叧鏁版嵁
workOrderLoading: false,
+ // 鏇挎崲鍘熸湁鐨剋orkOrderList鏁版嵁
workOrderList: [
- { id: "WO20230001", title: "棣栭〉鏀圭増闇�姹傚紑鍙�", priority: "1", createTime: "2023-03-01 09:30:00", deadline: "2023-03-15 18:00:00", assignee: 1, assigneeName: "寮犱笁", status: "1", content: "瀹屾垚棣栭〉鏀圭増鐨勬墍鏈夊墠绔紑鍙戝伐浣�" },
- { id: "WO20230002", title: "鐢ㄦ埛涓績鎺ュ彛寮�鍙�", priority: "2", createTime: "2023-03-05 14:20:00", deadline: "2023-03-20 18:00:00", assignee: 3, assigneeName: "鐜嬩簲", status: "1", content: "寮�鍙戠敤鎴蜂腑蹇冪浉鍏虫帴鍙�" },
- { id: "WO20230003", title: "璁㈠崟绯荤粺鎬ц兘浼樺寲", priority: "1", createTime: "2023-03-10 10:15:00", deadline: "2023-03-25 18:00:00", assignee: 4, assigneeName: "璧靛叚", status: "1", content: "浼樺寲璁㈠崟绯荤粺鎬ц兘锛屾彁楂樺搷搴旈�熷害" },
- { id: "WO20230004", title: "鏀粯鍔熻兘娴嬭瘯", priority: "3", createTime: "2023-03-15 16:45:00", deadline: "2023-03-30 18:00:00", assignee: 7, assigneeName: "鍛ㄤ節", status: "1", content: "瀹屾垚鏀粯鍔熻兘鐨勫叏闈㈡祴璇�" },
- { id: "WO20230005", title: "鏁版嵁鎶ヨ〃寮�鍙�", priority: "2", createTime: "2023-03-20 11:10:00", deadline: "2023-04-05 18:00:00", assignee: undefined, assigneeName: undefined, status: "0", content: "寮�鍙戞暟鎹粺璁℃姤琛ㄥ姛鑳�" }
+ {
+ id: "MED20230001",
+ title: "鍐犲績鐥呮偅鑰匬CI鎵嬫湳瀹夋帓",
+ priority: "1",
+ createTime: "2024-11-01 09:30:00",
+ deadline: "2024-11-05 18:00:00",
+ assignee: 1,
+ assigneeName: "鏉庢垚鐧�",
+ status: "1",
+ content:
+ "涓哄啝蹇冪梾鎮h�呭畨鎺掔粡鐨啝鐘跺姩鑴変粙鍏ユ不鐤楁墜鏈紝闇�瑕佹湳鍓嶈瘎浼板拰鍑嗗",
+ },
+ {
+ id: "MED20230002",
+ title: "楂樿鍘嬫偅鑰呰嵂鐗╂不鐤楁柟妗堣皟鏁�",
+ priority: "2",
+ createTime: "2024-11-03 14:20:00",
+ deadline: "2024-11-08 18:00:00",
+ assignee: 3,
+ assigneeName: "寮犲瓱娑�",
+ status: "1",
+ content: "鏍规嵁鎮h�呰鍘嬬洃娴嬬粨鏋滐紝璋冩暣闄嶅帇鑽墿缁勫悎鍜屽墏閲�",
+ },
+ {
+ id: "MED20230003",
+ title: "鑲虹檶鎮h�呭寲鐤楀懆鏈熷畨鎺�",
+ priority: "1",
+ createTime: "2024-11-05 10:15:00",
+ deadline: "2024-11-10 18:00:00",
+ assignee: 4,
+ assigneeName: "闄堟斂鍊�",
+ status: "1",
+ content: "鍒跺畾鑲虹檶鎮h�呮柊涓�鏈熷寲鐤楁柟妗堬紝鍖呮嫭鑽墿閫夋嫨鍜屽墏閲忚绠�",
+ },
+ {
+ id: "MED20230004",
+ title: "鍎跨鑲虹値鎮h�呰瘖鐤楁柟妗�",
+ priority: "2",
+ createTime: "2024-11-08 16:45:00",
+ deadline: "2024-11-12 18:00:00",
+ assignee: 7,
+ assigneeName: "鐜嬫仼榫�",
+ status: "1",
+ content: "涓哄効绔ヨ偤鐐庢偅鑰呭埗瀹氫釜鎬у寲娌荤枟鏂规锛屽寘鎷姉鐢熺礌閫夋嫨鍜岄浘鍖栨不鐤�",
+ },
+ {
+ id: "MED20230005",
+ title: "鎬ヨ瘖鑳哥棝鎮h�呭揩閫熻瘎浼�",
+ priority: "1",
+ createTime: "2024-11-10 11:10:00",
+ deadline: "2024-11-10 23:00:00",
+ assignee: 11,
+ assigneeName: "鍚翠繆浼�",
+ status: "1",
+ content: "瀵规�ヨ瘖鑳哥棝鎮h�呰繘琛屽揩閫熻瘎浼帮紝鎺掗櫎鎬ユ�у績鑲屾姝诲彲鑳�",
+ },
+ {
+ id: "MED20230006",
+ title: "澶栦激鎮h�呮竻鍒涚紳鍚堝鐞�",
+ priority: "2",
+ createTime: "2024-11-12 13:25:00",
+ deadline: "2024-11-12 20:00:00",
+ assignee: 12,
+ assigneeName: "闃Θ瀛�",
+ status: "1",
+ content: "澶勭悊鎬ヨ瘖澶栦激鎮h�呯殑浼ゅ彛娓呭垱鍜岀紳鍚堝伐浣�",
+ },
+ {
+ id: "MED20230007",
+ title: "绯栧翱鐥呮偅鑰呰儼宀涚礌璋冩暣",
+ priority: "2",
+ createTime: "2024-11-15 08:45:00",
+ deadline: "2024-11-20 18:00:00",
+ assignee: undefined,
+ assigneeName: undefined,
+ status: "0",
+ content: "鏍规嵁鎮h�呰绯栫洃娴嬫暟鎹紝璋冩暣鑳板矝绱犵敤閲忓拰娉ㄥ皠鏂规",
+ },
],
+ workOrderTotal: 7,
workOrderQueryParams: {
pageNum: 1,
pageSize: 10,
id: undefined,
status: undefined,
- assignee: undefined
+ assignee: undefined,
},
- workOrderTotal: 5,
workOrderStatusOptions: [
{ value: "0", label: "寰呮寚娲�" },
{ value: "1", label: "杩涜涓�" },
{ value: "2", label: "宸插畬鎴�" },
- { value: "3", label: "宸插彇娑�" }
+ { value: "3", label: "宸插彇娑�" },
],
priorityOptions: [
{ value: "1", label: "楂�" },
{ value: "2", label: "涓�" },
- { value: "3", label: "浣�" }
+ { value: "3", label: "浣�" },
],
workOrderFormVisible: false,
workOrderFormTitle: "",
@@ -822,24 +1584,24 @@
deadline: undefined,
assignee: undefined,
status: "0",
- content: undefined
+ content: undefined,
},
workOrderRules: {
title: [
- { required: true, message: "宸ュ崟鏍囬涓嶈兘涓虹┖", trigger: "blur" }
+ { required: true, message: "宸ュ崟鏍囬涓嶈兘涓虹┖", trigger: "blur" },
],
priority: [
- { required: true, message: "浼樺厛绾т笉鑳戒负绌�", trigger: "change" }
+ { required: true, message: "浼樺厛绾т笉鑳戒负绌�", trigger: "change" },
],
deadline: [
- { required: true, message: "鎴鏃堕棿涓嶈兘涓虹┖", trigger: "change" }
+ { required: true, message: "鎴鏃堕棿涓嶈兘涓虹┖", trigger: "change" },
],
content: [
- { required: true, message: "宸ュ崟鍐呭涓嶈兘涓虹┖", trigger: "blur" }
+ { required: true, message: "宸ュ崟鍐呭涓嶈兘涓虹┖", trigger: "blur" },
],
status: [
- { required: true, message: "宸ュ崟鐘舵�佷笉鑳戒负绌�", trigger: "change" }
- ]
+ { required: true, message: "宸ュ崟鐘舵�佷笉鑳戒负绌�", trigger: "change" },
+ ],
},
// 鎸囨淳宸ュ崟鐩稿叧鏁版嵁
@@ -849,30 +1611,44 @@
title: undefined,
assignee: undefined,
priority: "2",
- deadline: undefined
- }
+ deadline: undefined,
+ },
};
+ },
+ // 鍦╳atch涓坊鍔犵洃鎺�
+ watch: {
+ teamDialogVisible(newVal) {
+ if (newVal) {
+ // 瀵硅瘽妗嗘樉绀烘椂閲嶆柊鐢熸垚浜岀淮鐮�
+ this.$nextTick(() => {
+ setTimeout(() => {
+ this.generateTeamQRContent(this.currentTeam);
+ }, 100);
+ });
+ }
+ },
+
},
computed: {
// 鍥㈤槦鎴愬憳閫夐」锛堢敤浜庣┛姊锛�
memberOptions() {
- return this.memberList.map(member => ({
+ return this.memberList.map((member) => ({
key: member.id,
label: member.name,
- disabled: member.status === "0"
+ disabled: member.status === "0",
}));
},
// 杩囨护鍚庣殑鍥㈤槦鍒楄〃
filteredTeamList() {
let list = [...this.teamList];
if (this.teamQueryParams.name) {
- list = list.filter(item =>
+ list = list.filter((item) =>
item.name.includes(this.teamQueryParams.name)
);
}
if (this.teamQueryParams.status) {
- list = list.filter(item =>
- item.status === this.teamQueryParams.status
+ list = list.filter(
+ (item) => item.status === this.teamQueryParams.status
);
}
return list;
@@ -881,18 +1657,18 @@
filteredMemberList() {
let list = [...this.memberList];
if (this.memberQueryParams.name) {
- list = list.filter(item =>
+ list = list.filter((item) =>
item.name.includes(this.memberQueryParams.name)
);
}
if (this.memberQueryParams.teamId) {
- list = list.filter(item =>
- item.teamId === this.memberQueryParams.teamId
+ list = list.filter(
+ (item) => item.teamId === this.memberQueryParams.teamId
);
}
if (this.memberQueryParams.status) {
- list = list.filter(item =>
- item.status === this.memberQueryParams.status
+ list = list.filter(
+ (item) => item.status === this.memberQueryParams.status
);
}
return list;
@@ -901,18 +1677,18 @@
filteredWorkOrderList() {
let list = [...this.workOrderList];
if (this.workOrderQueryParams.id) {
- list = list.filter(item =>
+ list = list.filter((item) =>
item.id.includes(this.workOrderQueryParams.id)
);
}
if (this.workOrderQueryParams.status) {
- list = list.filter(item =>
- item.status === this.workOrderQueryParams.status
+ list = list.filter(
+ (item) => item.status === this.workOrderQueryParams.status
);
}
if (this.workOrderQueryParams.assignee) {
- list = list.filter(item =>
- item.assignee === this.workOrderQueryParams.assignee
+ list = list.filter(
+ (item) => item.assignee === this.workOrderQueryParams.assignee
);
}
return list;
@@ -920,17 +1696,17 @@
// 鍥㈤槦宸ュ崟锛堢敤浜庡洟闃熻鎯咃級
teamWorkOrders() {
if (!this.currentTeam.id) return [];
- const teamMemberIds = this.currentTeam.members.map(member => member.id);
- return this.workOrderList.filter(order =>
+ const teamMemberIds = this.currentTeam.members.map((member) => member.id);
+ return this.workOrderList.filter((order) =>
teamMemberIds.includes(order.assignee)
);
},
// 鍙敤鎴愬憳锛堢敤浜庡伐鍗曟寚娲撅級
availableMembers() {
- return this.memberList.filter(member =>
- member.status === "1" && !member.currentWorkOrder
+ return this.memberList.filter(
+ (member) => member.status === "1" && !member.currentWorkOrder
);
- }
+ },
},
methods: {
// 瑙f瀽鏃堕棿
@@ -947,6 +1723,113 @@
handleTeamQuery() {
this.teamQueryParams.pageNum = 1;
},
+ // 鏌ョ湅鍥㈤槦璇︽儏鏃剁敓鎴愪簩缁寸爜
+ handleTeamDetail(row) {
+ this.currentTeam = row;
+ this.teamDialogTitle = "鍥㈤槦璇︽儏 - " + row.name;
+ this.teamDialogVisible = true;
+
+ // 浣跨敤nextTick纭繚DOM娓叉煋瀹屾垚
+ this.$nextTick(() => {
+ // 鐢熸垚涓存椂浜岀淮鐮佸唴瀹�
+ this.generateTeamQRContent(row);
+ });
+ },
+
+ // 鐢熸垚鍥㈤槦浜岀淮鐮佸唴瀹�
+ generateTeamQRContent(team) {
+ const timestamp = new Date().getTime();
+ const expireTime = timestamp + 24 * 60 * 60 * 1000; // 24灏忔椂鏈夋晥鏈�
+
+ const qrData = {
+ teamId: team.id,
+ teamName: team.name,
+ leader: team.leader,
+ memberCount: team.members.length,
+ timestamp: timestamp,
+ expireTime: expireTime,
+ type: "team_info",
+ };
+
+ // 纭繚鍐呭鏄瓧绗︿覆鏍煎紡
+ this.teamQRContent = "127.0.0.1:8093/wt?p=0BE9L3C2u";
+ console.log("鐢熸垚鐨勪簩缁寸爜鍐呭:", this.teamQRContent);
+ },
+
+ // 浜岀淮鐮佺敓鎴愬洖璋�
+ onQRCodeGenerated(dataURL, id) {
+ if (dataURL) {
+ this.currentQRCodeUrl = dataURL;
+ console.log("浜岀淮鐮佺敓鎴愭垚鍔�");
+ } else {
+ console.error("浜岀淮鐮佺敓鎴愬け璐�");
+ // 澶囩敤鏂规锛氫娇鐢╭rcode.js鐢熸垚
+ this.generateQRCodeWithQRCodeJS();
+ }
+ },
+ // 澶囩敤鐢熸垚鏂规
+ generateQRCodeWithQRCodeJS() {
+ const QRCode = require("qrcode");
+ if (this.teamQRContent) {
+ QRCode.toDataURL(
+ this.teamQRContent,
+ {
+ width: 200,
+ height: 200,
+ margin: 2,
+ color: {
+ dark: "#409EFF",
+ light: "#FFFFFF",
+ },
+ },
+ (err, url) => {
+ if (err) {
+ console.error("澶囩敤浜岀淮鐮佺敓鎴愬け璐�:", err);
+ return;
+ }
+ this.currentQRCodeUrl = url;
+ console.log("澶囩敤浜岀淮鐮佺敓鎴愭垚鍔�");
+ }
+ );
+ }
+ },
+ // 涓嬭浇浜岀淮鐮�
+ downloadQRCode() {
+ if (!this.currentQRCodeUrl) {
+ this.$message.warning("璇峰厛鐢熸垚浜岀淮鐮�");
+ return;
+ }
+
+ const a = document.createElement("a");
+ const event = new MouseEvent("click");
+
+ a.download = `鍥㈤槦浜岀淮鐮乢${
+ this.currentTeam.name
+ }_${new Date().getTime()}.png`;
+ a.href = this.currentQRCodeUrl;
+ a.dispatchEvent(event);
+ },
+
+ // 鍒锋柊浜岀淮鐮�
+ refreshQRCode() {
+ this.generateTeamQRContent(this.currentTeam);
+ this.$message.success("浜岀淮鐮佸凡鍒锋柊");
+ },
+
+ // 鍦ㄥ伐鍗曡鎯呬腑涔熷彲浠ユ坊鍔犱簩缁寸爜鍔熻兘
+ handleWorkOrderDetail(row) {
+ // 鐢熸垚宸ュ崟浜岀淮鐮�
+ const qrData = {
+ workOrderId: row.id,
+ title: row.title,
+ priority: row.priority,
+ status: row.status,
+ timestamp: new Date().getTime(),
+ type: "work_order",
+ };
+
+ this.workOrderQRContent = JSON.stringify(qrData);
+ },
// 閲嶇疆鍥㈤槦鎼滅储
resetTeamQuery() {
this.resetForm("teamQueryForm");
@@ -954,15 +1837,9 @@
},
// 鍥㈤槦澶氶��
handleTeamSelectionChange(selection) {
- this.ids = selection.map(item => item.id);
+ this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
- },
- // 鏌ョ湅鍥㈤槦璇︽儏
- handleTeamDetail(row) {
- this.currentTeam = row;
- this.teamDialogTitle = "鍥㈤槦璇︽儏 - " + row.name;
- this.teamDialogVisible = true;
},
// 鏂板鍥㈤槦
handleTeamAdd() {
@@ -973,56 +1850,65 @@
// 淇敼鍥㈤槦
handleTeamUpdate(row) {
this.resetTeamForm();
- const team = this.teamList.find(item => item.id === row.id);
+ const team = this.teamList.find((item) => item.id === row.id);
this.teamForm = Object.assign({}, team);
- this.teamForm.members = team.members.map(member => member.id);
+ this.teamForm.members = team.members.map((member) => member.id);
this.teamFormTitle = "淇敼鍥㈤槦";
this.teamFormVisible = true;
},
// 鍒犻櫎鍥㈤槦
handleTeamDelete(row) {
const teamIds = row.id || this.ids;
- this.$modal.confirm('鏄惁纭鍒犻櫎鍥㈤槦鍚嶇О涓�"' + row.name + '"鐨勬暟鎹」锛�').then(() => {
- // 妯℃嫙鍒犻櫎鍥㈤槦
- this.teamList = this.teamList.filter(item => item.id !== teamIds);
- this.teamTotal = this.teamList.length;
- this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
- }).catch(() => {});
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鍥㈤槦鍚嶇О涓�"' + row.name + '"鐨勬暟鎹」锛�')
+ .then(() => {
+ // 妯℃嫙鍒犻櫎鍥㈤槦
+ this.teamList = this.teamList.filter((item) => item.id !== teamIds);
+ this.teamTotal = this.teamList.length;
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
},
// 鎻愪氦鍥㈤槦琛ㄥ崟
submitTeamForm() {
- this.$refs["teamForm"].validate(valid => {
+ this.$refs["teamForm"].validate((valid) => {
if (valid) {
if (this.teamForm.id != null) {
// 妯℃嫙淇敼鍥㈤槦
- const index = this.teamList.findIndex(item => item.id === this.teamForm.id);
+ const index = this.teamList.findIndex(
+ (item) => item.id === this.teamForm.id
+ );
if (index !== -1) {
- const leader = this.memberList.find(member => member.id === this.teamForm.leader);
- const members = this.memberList.filter(member =>
+ const leader = this.memberList.find(
+ (member) => member.id === this.teamForm.leader
+ );
+ const members = this.memberList.filter((member) =>
this.teamForm.members.includes(member.id)
);
this.teamList.splice(index, 1, {
...this.teamForm,
- leader: leader ? leader.name : '',
- members: members
+ leader: leader ? leader.name : "",
+ members: members,
});
}
this.$modal.msgSuccess("淇敼鎴愬姛");
} else {
// 妯℃嫙鏂板鍥㈤槦
- const newId = Math.max(...this.teamList.map(item => item.id)) + 1;
- const leader = this.memberList.find(member => member.id === this.teamForm.leader);
- const members = this.memberList.filter(member =>
+ const newId = Math.max(...this.teamList.map((item) => item.id)) + 1;
+ const leader = this.memberList.find(
+ (member) => member.id === this.teamForm.leader
+ );
+ const members = this.memberList.filter((member) =>
this.teamForm.members.includes(member.id)
);
this.teamList.unshift({
...this.teamForm,
id: newId,
- leader: leader ? leader.name : '',
+ leader: leader ? leader.name : "",
members: members,
- createTime: new Date().toLocaleString()
+ createTime: new Date().toLocaleString(),
});
this.teamTotal = this.teamList.length;
this.$modal.msgSuccess("鏂板鎴愬姛");
@@ -1039,7 +1925,7 @@
leader: undefined,
members: [],
status: "1",
- description: undefined
+ description: undefined,
};
this.resetForm("teamForm");
},
@@ -1068,7 +1954,7 @@
},
// 鎴愬憳澶氶��
handleMemberSelectionChange(selection) {
- this.ids = selection.map(item => item.id);
+ this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
@@ -1081,7 +1967,7 @@
// 淇敼鎴愬憳
handleMemberUpdate(row) {
this.resetMemberForm();
- const member = this.memberList.find(item => item.id === row.id);
+ const member = this.memberList.find((item) => item.id === row.id);
this.memberForm = Object.assign({}, member);
this.memberFormTitle = "淇敼鎴愬憳";
this.memberFormVisible = true;
@@ -1089,37 +1975,49 @@
// 鍒犻櫎鎴愬憳
handleMemberDelete(row) {
const memberIds = row.id || this.ids;
- this.$modal.confirm('鏄惁纭鍒犻櫎鎴愬憳濮撳悕涓�"' + row.name + '"鐨勬暟鎹」锛�').then(() => {
- // 妯℃嫙鍒犻櫎鎴愬憳
- this.memberList = this.memberList.filter(item => item.id !== memberIds);
- this.memberTotal = this.memberList.length;
- this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
- }).catch(() => {});
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鎴愬憳濮撳悕涓�"' + row.name + '"鐨勬暟鎹」锛�')
+ .then(() => {
+ // 妯℃嫙鍒犻櫎鎴愬憳
+ this.memberList = this.memberList.filter(
+ (item) => item.id !== memberIds
+ );
+ this.memberTotal = this.memberList.length;
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
},
// 鎻愪氦鎴愬憳琛ㄥ崟
submitMemberForm() {
- this.$refs["memberForm"].validate(valid => {
+ this.$refs["memberForm"].validate((valid) => {
if (valid) {
if (this.memberForm.id != null) {
// 妯℃嫙淇敼鎴愬憳
- const index = this.memberList.findIndex(item => item.id === this.memberForm.id);
+ const index = this.memberList.findIndex(
+ (item) => item.id === this.memberForm.id
+ );
if (index !== -1) {
- const team = this.teamList.find(item => item.id === this.memberForm.teamId);
+ const team = this.teamList.find(
+ (item) => item.id === this.memberForm.teamId
+ );
this.memberList.splice(index, 1, {
...this.memberForm,
- teamName: team ? team.name : ''
+ teamName: team ? team.name : "",
});
}
this.$modal.msgSuccess("淇敼鎴愬姛");
} else {
// 妯℃嫙鏂板鎴愬憳
- const newId = Math.max(...this.memberList.map(item => item.id)) + 1;
- const team = this.teamList.find(item => item.id === this.memberForm.teamId);
+ const newId =
+ Math.max(...this.memberList.map((item) => item.id)) + 1;
+ const team = this.teamList.find(
+ (item) => item.id === this.memberForm.teamId
+ );
this.memberList.unshift({
...this.memberForm,
id: newId,
- teamName: team ? team.name : '',
- currentWorkOrder: ''
+ teamName: team ? team.name : "",
+ currentWorkOrder: "",
});
this.memberTotal = this.memberList.length;
this.$modal.msgSuccess("鏂板鎴愬姛");
@@ -1137,7 +2035,7 @@
position: undefined,
phone: undefined,
email: undefined,
- status: "1"
+ status: "1",
};
this.resetForm("memberForm");
},
@@ -1166,7 +2064,7 @@
},
// 宸ュ崟澶氶��
handleWorkOrderSelectionChange(selection) {
- this.ids = selection.map(item => item.id);
+ this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
@@ -1179,7 +2077,7 @@
// 淇敼宸ュ崟
handleWorkOrderUpdate(row) {
this.resetWorkOrderForm();
- const workOrder = this.workOrderList.find(item => item.id === row.id);
+ const workOrder = this.workOrderList.find((item) => item.id === row.id);
this.workOrderForm = Object.assign({}, workOrder);
this.workOrderFormTitle = "缂栬緫宸ュ崟";
this.workOrderFormVisible = true;
@@ -1187,12 +2085,17 @@
// 鍒犻櫎宸ュ崟
handleWorkOrderDelete(row) {
const workOrderIds = row.id || this.ids;
- this.$modal.confirm('鏄惁纭鍒犻櫎宸ュ崟鏍囬涓�"' + row.title + '"鐨勬暟鎹」锛�').then(() => {
- // 妯℃嫙鍒犻櫎宸ュ崟
- this.workOrderList = this.workOrderList.filter(item => item.id !== workOrderIds);
- this.workOrderTotal = this.workOrderList.length;
- this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
- }).catch(() => {});
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎宸ュ崟鏍囬涓�"' + row.title + '"鐨勬暟鎹」锛�')
+ .then(() => {
+ // 妯℃嫙鍒犻櫎宸ュ崟
+ this.workOrderList = this.workOrderList.filter(
+ (item) => item.id !== workOrderIds
+ );
+ this.workOrderTotal = this.workOrderList.length;
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
},
// 鎸囨淳宸ュ崟
handleAssignWorkOrder(row) {
@@ -1201,34 +2104,43 @@
title: row.title,
assignee: undefined,
priority: row.priority,
- deadline: row.deadline
+ deadline: row.deadline,
};
this.assignDialogVisible = true;
},
// 鎻愪氦宸ュ崟琛ㄥ崟
submitWorkOrderForm() {
- this.$refs["workOrderForm"].validate(valid => {
+ this.$refs["workOrderForm"].validate((valid) => {
if (valid) {
if (this.workOrderForm.id != null) {
// 妯℃嫙淇敼宸ュ崟
- const index = this.workOrderList.findIndex(item => item.id === this.workOrderForm.id);
+ const index = this.workOrderList.findIndex(
+ (item) => item.id === this.workOrderForm.id
+ );
if (index !== -1) {
- const assignee = this.memberList.find(member => member.id === this.workOrderForm.assignee);
+ const assignee = this.memberList.find(
+ (member) => member.id === this.workOrderForm.assignee
+ );
this.workOrderList.splice(index, 1, {
...this.workOrderForm,
- assigneeName: assignee ? assignee.name : undefined
+ assigneeName: assignee ? assignee.name : undefined,
});
}
this.$modal.msgSuccess("淇敼鎴愬姛");
} else {
// 妯℃嫙鏂板宸ュ崟
- const newId = "WO" + new Date().getFullYear() + (Math.floor(Math.random() * 90000) + 10000);
- const assignee = this.memberList.find(member => member.id === this.workOrderForm.assignee);
+ const newId =
+ "WO" +
+ new Date().getFullYear() +
+ (Math.floor(Math.random() * 90000) + 10000);
+ const assignee = this.memberList.find(
+ (member) => member.id === this.workOrderForm.assignee
+ );
this.workOrderList.unshift({
...this.workOrderForm,
id: newId,
assigneeName: assignee ? assignee.name : undefined,
- createTime: new Date().toLocaleString()
+ createTime: new Date().toLocaleString(),
});
this.workOrderTotal = this.workOrderList.length;
this.$modal.msgSuccess("鏂板鎴愬姛");
@@ -1247,7 +2159,7 @@
deadline: undefined,
assignee: undefined,
status: "0",
- content: undefined
+ content: undefined,
};
this.resetForm("workOrderForm");
},
@@ -1264,9 +2176,13 @@
}
// 妯℃嫙鎸囨淳宸ュ崟
- const index = this.workOrderList.findIndex(item => item.id === this.assignForm.id);
+ const index = this.workOrderList.findIndex(
+ (item) => item.id === this.assignForm.id
+ );
if (index !== -1) {
- const assignee = this.memberList.find(member => member.id === this.assignForm.assignee);
+ const assignee = this.memberList.find(
+ (member) => member.id === this.assignForm.assignee
+ );
if (assignee) {
// 鏇存柊宸ュ崟鐘舵��
this.workOrderList.splice(index, 1, {
@@ -1275,15 +2191,17 @@
assigneeName: assignee.name,
priority: this.assignForm.priority,
deadline: this.assignForm.deadline,
- status: "1"
+ status: "1",
});
// 鏇存柊鎴愬憳褰撳墠宸ュ崟
- const memberIndex = this.memberList.findIndex(member => member.id === this.assignForm.assignee);
+ const memberIndex = this.memberList.findIndex(
+ (member) => member.id === this.assignForm.assignee
+ );
if (memberIndex !== -1) {
this.memberList.splice(memberIndex, 1, {
...this.memberList[memberIndex],
- currentWorkOrder: this.assignForm.id
+ currentWorkOrder: this.assignForm.id,
});
}
@@ -1291,8 +2209,8 @@
this.assignDialogVisible = false;
}
}
- }
- }
+ },
+ },
};
</script>
@@ -1319,7 +2237,7 @@
}
.avatar-uploader ::v-deep .el-upload:hover {
- border-color: #409EFF;
+ border-color: #409eff;
}
.avatar-uploader-icon {
@@ -1337,7 +2255,8 @@
display: block;
}
-.team-members, .team-work-orders {
+.team-members,
+.team-work-orders {
margin-top: 20px;
}
</style>
--
Gitblit v1.9.3