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/followvisit/discharge/index.vue | 1175 ++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 801 insertions(+), 374 deletions(-)
diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue
index bd9c873..30ff0d7 100644
--- a/src/views/followvisit/discharge/index.vue
+++ b/src/views/followvisit/discharge/index.vue
@@ -1,5 +1,67 @@
<template>
<div class="app-container">
+ <div class="leftvlue" style="margin-bottom: 20px">
+ <el-row :gutter="10">
+ <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
+ <el-card
+ shadow="hover"
+ :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
+ >
+ <div style="padding: 8px" @click="$router.push(item.router)">
+ <span>{{ item.name }}</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ item.value }}
+ </div>
+ </div>
+ </el-card>
+ </el-col>
+ <el-col :span="2.5">
+ <div class="ysfleftvlue">
+ <el-card shadow="hover">
+ <div style="padding: 8px">
+ <span>琛ㄥ崟宸插彂閫�</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ yfsvalue }}
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-col>
+ <el-col :span="2.5">
+ <div class="errleftvlue">
+ <el-card shadow="hover">
+ <div style="padding: 8px">
+ <span>寮傚父</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ ycvalue }}
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
<el-row :gutter="20">
<!--鐢ㄦ埛鏁版嵁-->
<el-form
@@ -11,12 +73,13 @@
label-width="98px"
>
<el-form-item label="浠诲姟鍚嶇О">
- <el-input v-model="topqueryParams.taskName"></el-input>
+ <el-input
+ v-model="topqueryParams.taskName"
+ placeholder="璇烽�夋嫨浠诲姟鍚嶇О"
+ ></el-input>
</el-form-item>
- <!-- <el-form-item label="鍙戣捣浜�">
- <el-input v-model="topqueryParams.createBy"></el-input>
- </el-form-item> -->
- <!-- <el-form-item label="瀹℃牳鏃堕棿">
+
+ <el-form-item label="鍑洪櫌鏃堕棿">
<el-date-picker
v-model="dateRange"
style="width: 240px"
@@ -27,36 +90,26 @@
end-placeholder="缁撴潫鏃ユ湡"
></el-date-picker>
</el-form-item>
- <el-form-item label="闅忚绫诲瀷" prop="status">
- <el-select v-model="topqueryParams.topic" placeholder="璇烽�夋嫨">
- <el-option
- v-for="item in topicoptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </el-form-item> -->
+
<el-form-item label="鎮h�呭鍚�" prop="sendname">
- <el-input v-model="topqueryParams.sendname" placeholder="璇疯緭鍏ユ偅鑰呭鍚�"></el-input>
- </el-form-item>
- <el-form-item label="鎮h�呮潵婧�" prop="status">
- <el-select
- v-model="topqueryParams.searchscope"
- placeholder="璇烽�夋嫨鎮h�呮潵婧�"
- >
- <el-option
- v-for="item in source"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
+ <el-input
+ v-model="topqueryParams.sendname"
+ placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+ @keyup.enter.native="handleQuery"
+ ></el-input>
</el-form-item>
- <el-form-item label="闅忚鐘舵��" prop="status">
+ <el-form-item label="鎮h�呰寖鍥�" prop="status">
+ <el-cascader
+ v-model="topqueryParams.scopetype"
+ placeholder="榛樿鍏ㄩ儴"
+ :options="sourcetype"
+ :props="{ expandTrigger: 'hover' }"
+ @change="handleChange"
+ ></el-cascader>
+ </el-form-item>
+
+ <el-form-item label="浠诲姟鐘舵��" prop="status">
<el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
@@ -67,23 +120,21 @@
</el-option>
</el-select>
</el-form-item>
- <el-form-item label="缁撴灉鐘舵��" prop="status">
- <el-select v-model="topqueryParams.excep" placeholder="璇烽�夋嫨">
- <el-option
- v-for="item in topicoptionsyj"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
+ <el-form-item label="鎮h�呮爣绛�" prop="tagname">
+ <el-input
+ v-model="topqueryParams.tagname"
+ placeholder="杈撳叆杩涜妯$硦鏌ヨ"
+ maxlength="30"
+ @keyup.enter.native="handleQuery"
+ />
</el-form-item>
+
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="medium"
- @click="handleQuery"
+ @click="handleQuery(1)"
>鎼滅储</el-button
>
<el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
@@ -103,7 +154,7 @@
>鏂板</el-button
>
</el-col>
- <!-- <el-col :span="1.5">
+ <el-col :span="1.5">
<div class="documentf">
<div class="document">
<el-button
@@ -122,84 +173,55 @@
<div class="documentf">
<div class="document">
<el-button
+ type="warning"
+ plain
+ icon="el-icon-warning-outline"
+ size="medium"
+ @click="toleadExport(1)"
+ >鎵ц澶辫触</el-button
+ >
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="1.5">
+ <div class="documentf">
+ <div class="document">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-warning"
+ size="medium"
+ @click="toleadExport(2)"
+ >缁撴灉寮傚父</el-button
+ >
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="1.5">
+ <div class="documentf">
+ <div class="document">
+ <el-button
type="success"
plain
- icon="el-icon-download"
size="medium"
- @click="toleadExport"
- v-hasPermi="['system:user:export']"
- >瀵煎叆</el-button
+ @click="buidegetTasklist()"
+ >寰呭姙鏈嶅姟</el-button
>
</div>
</div>
</el-col>
- <el-col :span="1.5">
- <div class="documentf">
- <div class="document">
- <el-button
- type="info"
- icon="el-icon-refresh"
- size="medium"
- @click="TaskReset"
- v-hasPermi="['system:user:export']"
- >浠诲姟閲嶇疆</el-button
- >
- </div>
- </div>
- </el-col>
- <el-col :span="1.5">
- <div class="documentf">
- <div class="document">
- <el-button
- type="success"
- icon="el-icon-position"
- size="medium"
- @click="AllStarted"
- v-hasPermi="['system:user:export']"
- >鍏ㄩ儴寮�濮�</el-button
- >
- </div>
- </div>
- </el-col>
- <el-col :span="1.5">
- <div class="documentf">
- <div class="document">
- <el-button
- type="warning"
- icon="el-icon-remove"
- size="medium"
- @click="AllStop"
- v-hasPermi="['system:user:export']"
- >鍏ㄩ儴鍋滄</el-button
- >
- </div>
- </div>
- </el-col>
- <el-col :span="1.5">
- <div class="documentf">
- <div class="document">
- <el-button
- type="primary"
- icon="el-icon-remove"
- size="medium"
- @click="Sendtimesetting"
- v-hasPermi="['system:user:export']"
- >鍙戦�佹椂闂磋缃�</el-button
- >
- </div>
- </div>
- </el-col> -->
-
- <!-- <el-col :span="1.5"> </el-col> -->
</el-row>
<el-table
v-loading="loading"
:data="userList"
+ height="660"
+ :row-class-name="tableRowClassName"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="50" align="center" />
<el-table-column
label="浠诲姟鍚嶇О"
+ fixed
align="center"
key="taskName"
prop="taskName"
@@ -208,64 +230,66 @@
<!-- <el-table-column label="搴忓彿" fixed align="center" key="id" prop="id" /> -->
<el-table-column
label="濮撳悕"
+ fixed
align="center"
key="sendname"
prop="sendname"
/>
<el-table-column
- label="韬唤璇佸彿鐮�"
- width="200"
- align="center"
- key="sfzh"
- prop="sfzh"
- />
- <el-table-column
- label="闅忚鐘舵��"
+ label="浠诲姟鐘舵��"
align="center"
key="sendstate"
prop="sendstate"
width="120"
>
<template slot-scope="scope">
- <div v-if="scope.row.sendstate == 1">
- <el-tag type="primary"
- :disable-transitions="false">琚鍙�</el-tag></div>
- <div v-if="scope.row.sendstate == 2">
- <el-tag type="primary"
- :disable-transitions="false">寰呭彂閫�</el-tag>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstate == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >琛ㄥ崟宸查鍙�</el-tag
+ >
</div>
- <div v-if="scope.row.sendstate == 3"> <el-tag type="success"
- :disable-transitions="false">宸插彂閫�</el-tag></div>
- <div v-if="scope.row.sendstate == 4"> <el-tag type="info"
- :disable-transitions="false">涓嶆墽琛�</el-tag></div>
- <div v-if="scope.row.sendstate == 5"> <el-tag type="danger"
- :disable-transitions="false">鍙戦�佸け璐�</el-tag></div>
- <div v-if="scope.row.sendstate == 6"> <el-tag type="danger"
- :disable-transitions="false">宸插畬鎴�</el-tag></div>
+ <div v-if="scope.row.sendstate == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呮墽琛�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 3">
+ <el-tag type="success" :disable-transitions="false"
+ >琛ㄥ崟宸插彂閫�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 4">
+ <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
+ </div>
+ <div v-if="scope.row.sendstate == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鍙戦�佸け璐�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 6">
+ <el-tag type="danger" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ </el-tooltip>
</template>
</el-table-column>
+ <!-- <el-table-column
+ label="浠诲姟寮傚父璇存槑"
+ width="120"
+ align="center"
+ key="remark"
+ prop="remark" -->
+ />
<el-table-column
- label="缁撴灉鐘舵��"
- align="center"
- key="excep"
- prop="excep"
- width="120"
- >
- <template slot-scope="scope">
- <div v-if="scope.row.sendstate == 6">
- <dict-tag
- :options="dict.type.sys_yujing"
- :value="scope.row.excep"
- />
- </div>
- <div v-else>
- <span></span>
- </div>
- </template>
- </el-table-column>
- <el-table-column
- label="澶勭悊鎰忚"
+ label="浜哄伐澶勭悊鎰忚"
align="center"
key="suggest"
prop="suggest"
@@ -276,6 +300,44 @@
:options="dict.type.sys_suggest"
:value="scope.row.suggest"
/>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鏍囩"
+ align="center"
+ key="tagname"
+ prop="tagname"
+ show-overflow-tooltip
+ width="180"
+ />
+ <el-table-column
+ label="闅忚浜哄憳"
+ align="center"
+ key="createBy"
+ prop="createBy"
+ width="120"
+ />
+
+ <el-table-column
+ label="闅忚鏃堕棿"
+ sortable
+ align="center"
+ prop="visitTime"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.visitTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="瀹屾垚鏃堕棿"
+ sortable
+ align="center"
+ prop="finishtime"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.finishtime) }}</span>
</template>
</el-table-column>
<el-table-column
@@ -308,11 +370,23 @@
prop="endDay"
>
<template slot-scope="scope">
- <span>{{
- scope.row.endDay ? scope.row.endDay + "澶�" : "鏃ユ湡缂哄け"
- }}</span>
+ <span>{{ scope.row.endDay ? scope.row.endDay + "澶�" : "" }}</span>
</template>
</el-table-column>
+ <el-table-column
+ label="韬唤璇佸彿鐮�"
+ width="200"
+ align="center"
+ key="sfzh"
+ prop="sfzh"
+ />
+ <el-table-column
+ label="鑱旂郴鐢佃瘽"
+ width="200"
+ align="center"
+ key="phone"
+ prop="phone"
+ />
<el-table-column
label="璐d换鎶ゅ+"
width="120"
@@ -327,14 +401,6 @@
key="drname"
prop="drname"
/>
- <el-table-column
- label="闅忚寮傚父璁板綍"
- width="120"
- align="center"
- key="remark"
- prop="remark"
- />
-
<!-- <el-table-column
label="鐥呭巻鍙�"
@@ -376,82 +442,58 @@
</el-table-column> -->
<el-table-column
- label="妯℃澘鍚嶇О"
+ label="鍑洪櫌闅忚妯℃澘鍚嶇О"
align="center"
key="templatename"
prop="templatename"
width="200"
/>
-
<el-table-column
- label="闅忚浜哄憳"
+ label="浠诲姟鎵ц鏂瑰紡"
align="center"
- key="createBy"
- prop="createBy"
- width="120"
- />
- <!-- <el-table-column
- label="璐d换鍖诲笀"
- align="center"
- key="drname"
- prop="drname"
- width="120"
- /> -->
-
- <!-- <el-table-column
- label="鍑洪櫌鏃堕棿"
- sortable
- align="center"
- prop="createTime"
+ key="preachform"
+ prop="preachform"
width="160"
- >
- <template slot-scope="scope">
- <span>{{ formatTime(scope.row.createTime) }}</span>
- </template>
- </el-table-column> -->
- <!-- <el-table-column
- label="闅忚鏃堕棿"
- sortable
- align="center"
- prop="createTime"
- width="160"
- >
- <template slot-scope="scope">
- <span v-if="scope.row.sendType != 3">{{
- formatTime(scope.row.createTime)
- }}</span>
- <span v-else>鍗冲埢鍙戦��</span>
- </template>
- </el-table-column> -->
- <el-table-column
- label="闅忚鏃堕棿"
- sortable
- align="center"
- prop="finishtime"
- width="160"
- >
- <template slot-scope="scope">
- <span>{{ parseTime(scope.row.finishtime) }}</span>
- </template>
- </el-table-column>
- <!-- <el-table-column
- label="闅忚鐘舵��"
- fixed="right"
- align="center"
- key="sendstate"
- prop="sendstate"
- width="120"
:show-overflow-tooltip="true"
>
<template slot-scope="scope">
- <dict-tag :options="serviceState" :value="scope.row.sendstate" />
+ <span v-for="item in scope.row.preachform">{{ item }}銆� </span>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column
+ label="浠诲姟鍙戦�佹祦绋�"
+ align="center"
+ key="serviceSubtaskRecordList"
+ prop="serviceSubtaskRecordList"
+ width="160"
+ :show-overflow-tooltip="true"
+ >
+ <template slot-scope="scope">
+ <span v-for="item in scope.row.serviceSubtaskRecordList"
+ >{{ item.remark }}銆�
+ </span>
</template>
</el-table-column> -->
-
+ <el-table-column
+ label="浠诲姟缁撴灉璇存槑"
+ width="200"
+ align="center"
+ key="remark"
+ prop="remark"
+ >
+ <template slot-scope="scope" v-if="scope.row.remark">
+ <el-tag
+ type="warning"
+ v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4"
+ >{{ scope.row.remark }}</el-tag
+ >
+ <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
+ </template>
+ </el-table-column>
<el-table-column
label="鎿嶄綔"
- fixed="right"
align="center"
+ fixed="right"
width="200"
class-name="small-padding fixed-width"
>
@@ -485,23 +527,14 @@
><span class="button-sc"><i class="el-icon-delete"></i></span
></el-button>
</el-tooltip> -->
- <!-- <el-tooltip
- class="item"
- effect="dark"
- content="鏌ョ湅浠诲姟璇︽儏"
- placement="top"
- >
- <el-button
- size="medium"
- type="text"
- @click="Seedetails(scope.row)"
- v-hasPermi="['system:user:edit']"
- ><span class="button-zx"><i class="el-icon-s-order"></i></span
- ></el-button>
- </el-tooltip> -->
<el-button size="medium" type="text" @click="Seedetails(scope.row)"
><span class="button-zx"
><i class="el-icon-s-order"></i>鏌ョ湅璇︽儏</span
+ ></el-button
+ >
+ <el-button size="medium" type="text" @click="outPathQr(scope.row)"
+ ><span class="button-qr"
+ ><i class="el-icon-view"></i>浜岀淮鐮�</span
></el-button
>
</template>
@@ -645,6 +678,55 @@
>
</span>
</el-dialog>
+ <!-- 浜岀淮鐮� -->
+ <el-dialog
+ :title="qrDialog.title"
+ :visible.sync="qrDialog.visible"
+ width="400px"
+ center
+ @close="handleQrClose"
+ >
+ <div class="qrcode-container">
+ <!-- 鍔犺浇鐘舵�� -->
+ <div v-if="qrLoading" class="qrcode-loading">
+ <i class="el-icon-loading"></i>
+ <span>浜岀淮鐮佺敓鎴愪腑...</span>
+ </div>
+
+ <!-- 鏈夋湁鏁堟暟鎹椂鏄剧ず浜岀淮鐮� -->
+ <div v-else-if="safeQrUrl" class="qrcode-content">
+ <vue-qr
+ :text="safeQrUrl"
+ :size="280"
+ :margin="10"
+ :logoSrc="qrDialog.logo"
+ :logoScale="0.2"
+ colorDark="#191a23"
+ colorLight="#ffffff"
+ ></vue-qr>
+
+ <div class="qrcode-info">
+ <p><strong>鎮h�呭鍚嶏細</strong>{{ qrDialog.patientName }}</p>
+ <p><strong>浠诲姟鍚嶇О锛�</strong>{{ qrDialog.taskName }}</p>
+ </div>
+
+ <div class="qrcode-actions">
+ <el-button type="primary" size="small" @click="downloadQrCode">
+ <i class="el-icon-download"></i> 涓嬭浇浜岀淮鐮�
+ </el-button>
+ <el-button type="success" size="small" @click="copyQrUrl">
+ <i class="el-icon-document-copy"></i> 澶嶅埗閾炬帴
+ </el-button>
+ </div>
+ </div>
+
+ <!-- 鏃犳暟鎹彁绀� -->
+ <div v-else class="qrcode-empty">
+ <i class="el-icon-warning"></i>
+ <span>鏆傛棤鏈夋晥鐨勪簩缁寸爜閾炬帴</span>
+ </div>
+ </div>
+ </el-dialog>
</div>
</template>
@@ -658,15 +740,16 @@
resetUserPwd,
changeUserStatus,
} from "@/api/system/user";
-import { getTaskservelist } from "@/api/AiCentre/index";
+import { getTaskservelist, buidegetTasklist } from "@/api/AiCentre/index";
import Treeselect from "@riophae/vue-treeselect";
import store from "@/store";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-
+import VueQr from "vue-qr";
+import Clipboard from "clipboard";
export default {
name: "Discharge",
dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
- components: { Treeselect },
+ components: { Treeselect, VueQr },
data() {
return {
// 閬僵灞�
@@ -689,6 +772,7 @@
addalteropen: false,
// 淇敼鍙戦�佹椂闂村璇濇
modificationVisible: false,
+ resetQrurl: "",
// 閮ㄩ棬鍚嶇О
deptName: undefined,
// 榛樿瀵嗙爜
@@ -702,7 +786,10 @@
},
dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
inputVisible: false,
+ ycvalue: "",
+ yfsvalue: "",
inputValue: "",
+ preachform: "",
previewVisible: false, //闂ㄨ瘖闅忚棰勮寮规
radio: "",
radios: [],
@@ -715,102 +802,69 @@
},
value: [],
list: [],
- source: [
- {
- value: 0,
- label: "鎵�灞炴偅鑰�",
- },
+ qrDialog: {
+ visible: false,
+ title: "闅忚浜岀淮鐮�",
+ url: "",
+ patientName: "",
+ taskName: "",
+ logo: require("@/assets/logo/logoxh.png"), // 鍙�夌殑Logo锛岃纭繚璺緞姝g‘
+ },
+ qrLoading: false,
+ sourcetype: [
{
value: 1,
- label: "绉戝鎮h��",
+ label: "绉戝",
+ children: [],
},
{
value: 2,
- label: "鐥呭尯鎮h��",
+ label: "鐥呭尯",
+ children: [],
+ },
+ {
+ value: 3,
+ label: "鍏ㄩ儴",
},
],
loading: false,
- states: [
- "Alabama",
- "Alaska",
- "Arizona",
- "Arkansas",
- "California",
- "Colorado",
- "Connecticut",
- "Delaware",
- "Florida",
- "Georgia",
- "Hawaii",
- "Idaho",
- "Illinois",
- "Indiana",
- "Iowa",
- "Kansas",
- "Kentucky",
- "Louisiana",
- "Maine",
- "Maryland",
- "Massachusetts",
- "Michigan",
- "Minnesota",
- "Mississippi",
- "Missouri",
- "Montana",
- "Nebraska",
- "Nevada",
- "New Hampshire",
- "New Jersey",
- "New Mexico",
- "New York",
- "North Carolina",
- "North Dakota",
- "Ohio",
- "Oklahoma",
- "Oregon",
- "Pennsylvania",
- "Rhode Island",
- "South Carolina",
- "South Dakota",
- "Tennessee",
- "Texas",
- "Utah",
- "Vermont",
- "Virginia",
- "Washington",
- "West Virginia",
- "Wisconsin",
- "Wyoming",
- ],
- pickerOptions: {
- disabledDate(time) {
- return time.getTime() > Date.now();
+ cardlist: [
+ {
+ name: "鍑洪櫌鏈嶅姟鎬婚噺",
+ value: 0,
},
- shortcuts: [
- {
- text: "浠婂ぉ",
- onClick(picker) {
- picker.$emit("pick", new Date());
- },
- },
- {
- text: "鏄ㄥぉ",
- onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24);
- picker.$emit("pick", date);
- },
- },
- {
- text: "涓�鍛ㄥ墠",
- onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit("pick", date);
- },
- },
- ],
- },
+ {
+ name: "鎮h�呰繃婊�",
+ value: 0,
+ },
+ {
+ name: "搴旈殢璁�",
+ value: 0,
+ },
+
+ // {
+ // name: "寮傚父",
+ // value: 0,
+ // },
+ {
+ name: "鍙戦�佸け璐�",
+ value: 0,
+ },
+ {
+ name: "寰呮墽琛�",
+ value: 0,
+ },
+ // {
+ // name: "宸插彂閫�",
+ // value: 0,
+ // },
+
+ // {
+ // name: "琛ㄥ崟宸插彂閫�",
+ // value: 0,
+ // },
+ ],
+
// 琛ㄥ崟鍙傛暟
form: {
phonenumber: "",
@@ -825,6 +879,10 @@
pageNum: 1,
pageSize: 10,
serviceType: 2,
+ searchscope: 3,
+ scopetype: [],
+ leaveldeptcodes: [],
+ leavehospitaldistrictcodes: [],
},
propss: { multiple: true },
options: [],
@@ -832,15 +890,15 @@
topicoptions: [
{
value: 1,
- label: "琚鍙�",
+ label: "琛ㄥ崟宸查鍙�",
},
{
value: 2,
- label: "寰呭彂閫�",
+ label: "寰呮墽琛�",
},
{
value: 3,
- label: "宸插彂閫�",
+ label: "琛ㄥ崟宸插彂閫�",
},
{
value: 4,
@@ -865,7 +923,10 @@
label: "姝e父",
},
],
+ errtype: "",
+ leavehospitaldistrictcode: "",
serviceState: [],
+ checkboxlist: [],
// 琛ㄥ崟鏍¢獙
rules: {},
};
@@ -873,46 +934,178 @@
watch: {},
created() {
this.serviceState = store.getters.serviceState;
- this.getList();
+ this.checkboxlist = store.getters.checkboxlist;
+ this.errtype = this.$route.query.errtype;
+ this.leavehospitaldistrictcode =
+ this.$route.query.leavehospitaldistrictcode;
+ this.sourcetype[0].children = store.getters.belongDepts.map((dept) => {
+ return {
+ label: dept.deptName,
+ value: dept.deptCode,
+ };
+ });
+ this.sourcetype[1].children = store.getters.belongWards.map((dept) => {
+ return {
+ label: dept.districtName,
+ value: dept.districtCode,
+ };
+ });
+
+ if (store.getters.belongWards.length) {
+ this.topqueryParams.leavehospitaldistrictcodes = [
+ store.getters.belongWards[0].districtCode,
+ ];
+ this.topqueryParams.scopetype = [
+ 2,
+ store.getters.belongWards[0].districtCode,
+ ];
+ }
+ if (this.errtype) {
+ this.toleadExport(2);
+ } else {
+ this.getList(1);
+ }
this.getConfigKey("sys.user.initPassword").then((response) => {
this.initPassword = response.msg;
});
},
- // 鎼滅储
- mounted() {
- this.list = this.states.map((item) => {
- return { value: `value:${item}`, label: `label:${item}` };
- });
+ activated() {
+ this.getList(1);
+ },
+ computed: {
+ safeQrUrl() {
+ return this.qrDialog.url && this.qrDialog.url !== 'undefined'
+ ? this.qrDialog.url.toString()
+ : ''
+ }
},
methods: {
/** 鏌ヨ闂ㄨ瘖闅忚鏈嶅姟鍒楄〃 */
- getList() {
- if (this.topqueryParams.searchscope == 1) {
- this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
- (obj) => obj.deptCode
- );
- this.topqueryParams.leavehospitaldistrictcodes=null;
- } else if (this.topqueryParams.searchscope == 2) {
- this.topqueryParams.leavehospitaldistrictcodes =
- store.getters.belongWards.map((obj) => obj.districtCode);
- this.topqueryParams.leaveldeptcodes=null;
- } else {
+ getList(refresh) {
+ // 榛樿鍏ㄩ儴
+ if (this.topqueryParams.searchscope == 3) {
this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
(obj) => obj.deptCode
);
this.topqueryParams.leavehospitaldistrictcodes =
store.getters.belongWards.map((obj) => obj.districtCode);
}
+ // 鎺ュ彈寮傚父璺宠浆
+ if (this.errtype) {
+ this.topqueryParams.leavehospitaldistrictcodes.push(
+ this.leavehospitaldistrictcode
+ );
+ console.log(this.topqueryParams.leavehospitaldistrictcodes, "11");
+ }
this.loading = true;
+ if (
+ this.topqueryParams.leavehospitaldistrictcodes[0] &&
+ this.topqueryParams.leaveldeptcodes[0]
+ ) {
+ this.topqueryParams.deptOrDistrict = 2;
+ } else {
+ this.topqueryParams.deptOrDistrict = 1;
+ }
getTaskservelist(this.topqueryParams).then((response) => {
- this.userList = response.rows;
+ this.userList = response.rows[0].serviceSubtaskList;
+ this.total = response.total;
+ if (refresh) {
+ this.cardlist[0].value =
+ Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
+ this.cardlist[1].value = response.rows[0].wzx;
+ this.cardlist[2].value = response.rows[0].ysf;
+ this.ycvalue = response.rows[0].yc;
+ this.cardlist[3].value = response.rows[0].fssb;
+ this.cardlist[4].value = response.rows[0].dsf;
+ // this.cardlist[5].value = response.rows[0].yfs2;
+ this.yfsvalue = response.rows[0].yfs;
+ }
+ this.loading = false;
this.userList.forEach((item) => {
+ let idArray = null;
if (item.endtime) {
item.endDay = this.daysBetween(item.endtime);
}
+
+ if (item.preachform) {
+ if (item.endtime) {
+ item.preachformson = item.preachform;
+ idArray = item.preachform.split(",");
+ }
+
+ item.preachform = idArray.map((value) => {
+ // 鏌ユ壘id瀵瑰簲鐨勫璞�
+ const item = this.checkboxlist.find(
+ (item) => item.value == value
+ );
+ // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+ return item ? item.label : null;
+ });
+ }
});
this.total = response.total;
+ });
+ },
+ buidegetTasklist(type) {
+ if (this.topqueryParams.searchscope == 3) {
+ this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+ (obj) => obj.deptCode
+ );
+ this.topqueryParams.leavehospitaldistrictcodes =
+ store.getters.belongWards.map((obj) => obj.districtCode);
+ }
+ // 鎺ュ彈寮傚父璺宠浆
+ if (this.errtype) {
+ this.topqueryParams.leavehospitaldistrictcodes.push(
+ this.leavehospitaldistrictcode
+ );
+ }
+ let obj = {
+ pageNum: 1,
+ pageSize: 10,
+ leavehospitaldistrictcodes:
+ this.topqueryParams.leavehospitaldistrictcodes,
+ sendstates: [2, 3],
+ leaveldeptcodes: this.topqueryParams.leaveldeptcodes,
+ };
+ buidegetTasklist(obj).then((response) => {
+ this.userList = response.rows[0].serviceSubtaskList;
+ this.total = response.total;
+ if (refresh) {
+ this.cardlist[0].value =
+ Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
+ this.cardlist[1].value = response.rows[0].wzx;
+ this.cardlist[2].value = response.rows[0].ysf;
+ this.ycvalue = response.rows[0].yc;
+ this.cardlist[3].value = response.rows[0].fssb;
+ this.cardlist[4].value = response.rows[0].dfs;
+ this.cardlist[5].value = response.rows[0].yfs2;
+ this.yfsvalue = response.rows[0].yfs;
+ }
this.loading = false;
+ this.userList.forEach((item) => {
+ let idArray = null;
+ if (item.endtime) {
+ item.endDay = this.daysBetween(item.endtime);
+ }
+
+ if (item.preachform) {
+ if (item.endtime) {
+ item.preachformson = item.preachform;
+ idArray = item.preachform.split(",");
+ }
+
+ item.preachform = idArray.map((value) => {
+ // 鏌ユ壘id瀵瑰簲鐨勫璞�
+ const item = this.checkboxlist.find(
+ (item) => item.value == value
+ );
+ // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+ return item ? item.label : null;
+ });
+ }
+ });
+ this.total = response.total;
});
},
// 鏌ョ湅闂ㄨ瘖闅忚璇︽儏
@@ -972,17 +1165,8 @@
this.resetForm("form");
},
/** 鎼滅储鎸夐挳鎿嶄綔 */
- handleQuery() {
- if (this.topqueryParams.searchscope == 1) {
- this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
- (obj) => obj.deptCode
- );
- this.topqueryParams.leavehospitaldistrictcodes=null;
- } else if (this.topqueryParams.searchscope == 2) {
- this.topqueryParams.leavehospitaldistrictcodes =
- store.getters.belongWards.map((obj) => obj.districtCode);
- this.topqueryParams.leaveldeptcodes=null;
- } else {
+ handleQuery(refresh) {
+ if (this.topqueryParams.searchscope == 3) {
this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
(obj) => obj.deptCode
);
@@ -990,13 +1174,40 @@
store.getters.belongWards.map((obj) => obj.districtCode);
}
this.topqueryParams.pageNum = 1;
- this.getList();
+ this.topqueryParams.startOutHospTime = this.dateRange[0];
+ this.topqueryParams.endOutHospTime = this.dateRange[1];
+
+ this.getList(refresh);
+ },
+ // 鎮h�呰寖鍥村鐞�
+ handleChange(value) {
+ let type = value[0];
+ let code = value.slice(-1)[0];
+ this.topqueryParams.leavehospitaldistrictcodes = [];
+ this.topqueryParams.leaveldeptcodes = [];
+
+ if (type == 1) {
+ this.topqueryParams.leaveldeptcodes.push(code);
+ this.topqueryParams.leavehospitaldistrictcodes = [];
+ this.topqueryParams.searchscope = 1;
+ } else if (type == 2) {
+ this.topqueryParams.leavehospitaldistrictcodes.push(code);
+ this.topqueryParams.leaveldeptcodes = [];
+ this.topqueryParams.searchscope = 2;
+ } else {
+ this.topqueryParams.searchscope = 3;
+ }
},
/** 閲嶇疆鎸夐挳鎿嶄綔 */
resetQuery() {
this.dateRange = [];
- this.topqueryParams = {};
- this.handleQuery();
+ this.topqueryParams = {
+ pageNum: 1,
+ pageSize: 10,
+ serviceType: 2,
+ searchscope: 2,
+ };
+ this.handleQuery(1);
},
// 澶氶�夋閫変腑鏁版嵁
handleSelectionChange(selection) {
@@ -1060,13 +1271,13 @@
updateUser(this.form).then((response) => {
this.$modal.msgSuccess("淇敼鎴愬姛");
this.open = false;
- this.getList();
+ this.getList(1);
});
} else {
addUser(this.form).then((response) => {
this.$modal.msgSuccess("鏂板鎴愬姛");
this.open = false;
- this.getList();
+ this.getList(1);
});
}
}
@@ -1081,7 +1292,7 @@
return delUser(userIds);
})
.then(() => {
- this.getList();
+ this.getList(1);
this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
})
.catch(() => {});
@@ -1094,7 +1305,7 @@
return console.log("鍋滄鎴愬姛");
})
.then(() => {
- this.getList();
+ this.getList(1);
this.$modal.msgWarning("鍋滄鎴愬姛");
})
.catch(() => {});
@@ -1107,7 +1318,7 @@
return console.log("寮�鍚垚鍔�");
})
.then(() => {
- this.getList();
+ this.getList(1);
this.$modal.msgSuccess("寮�鍚垚鍔�");
})
.catch(() => {});
@@ -1120,7 +1331,7 @@
return console.log("閫変腑鎴愬姛");
})
.then(() => {
- this.getList();
+ this.getList(1);
this.$modal.msgSuccess("閲嶇疆鎴愬姛");
})
.catch(() => {});
@@ -1131,22 +1342,168 @@
},
// 璺宠浆璇︽儏椤�
Seedetails(row) {
+ let type = "";
+ console.log(row, "rwo");
+ if (row.preachformson) {
+ if (row.preachformson.includes("3")) {
+ type = 1;
+ console.log(type, "rwo");
+ }
+ }
this.$router.push({
path: "/followvisit/record/detailpage/",
- query: { taskid: row.taskid, patid: row.patid,id: row.id},
+ query: {
+ taskid: row.taskid,
+ patid: row.patid,
+ id: row.id,
+ Voicetype: type,
+ },
});
},
- // 瀵煎叆鎸夐挳
- toleadExport() {},
+ // 渚挎嵎鎸夐挳
+ toleadExport(too) {
+ if (too == 1) {
+ this.topqueryParams.sendstate = 4;
+ this.topqueryParams.excep = null;
+ } else if (too == 2) {
+ this.topqueryParams.excep = 1;
+ }
+ this.handleQuery();
+ },
+ // 鏄剧ず浜岀淮鐮佸脊妗�
+ outPathQr(row) {
+ console.log(row);
+
+ if (!row || !row.outPath || row.outPath === 'undefined') {
+ this.$message.warning('璇ヨ褰曟殏鏃犳湁鏁堢殑浜岀淮鐮侀摼鎺�')
+ return
+ }
+
+ this.qrLoading = true
+ this.qrDialog = {
+ visible: true,
+ title: `${row.sendname || '鎮h��'}鐨勯殢璁夸簩缁寸爜`,
+ url: row.outPath,
+ patientName: row.sendname || '鏈煡',
+ taskName: row.taskName || '鏈煡浠诲姟',
+ logo: require("@/assets/logo/logoxh.png"),
+ };
+ // 纭繚缁勪欢鏈夎冻澶熸椂闂存覆鏌�
+ this.$nextTick(() => {
+ this.qrLoading = false
+ })
+ },
+
+ // 浜岀淮鐮佺敓鎴愬洖璋�
+ qrCodeCallback(dataUrl, id) {
+ console.log("浜岀淮鐮佺敓鎴愭垚鍔�:", id);
+ // 杩欓噷鍙互淇濆瓨dataUrl鐢ㄤ簬鍚庣画鎿嶄綔
+ },
+
+ // 涓嬭浇浜岀淮鐮�
+ downloadQrCode() {
+ try {
+ const qrComponent = this.$refs.vueQr;
+ // 鑾峰彇浜岀淮鐮佸浘鐗囩殑URL
+ const qrImageUrl = qrComponent.$el.src;
+
+ const downloadLink = document.createElement("a");
+ downloadLink.href = qrImageUrl;
+ downloadLink.download = `闅忚浜岀淮鐮乢${
+ this.qrDialog.patientName
+ }_${new Date().getTime()}.png`;
+ document.body.appendChild(downloadLink);
+ downloadLink.click();
+ document.body.removeChild(downloadLink);
+
+ this.$message.success("浜岀淮鐮佷笅杞芥垚鍔�");
+ } catch (error) {
+ console.error("涓嬭浇澶辫触:", error);
+ this.$message.error("涓嬭浇澶辫触锛岃閲嶈瘯");
+ }
+ },
+
+ // 澶嶅埗閾炬帴
+ copyQrUrl() {
+ if (!this.qrDialog.url) {
+ this.$message.warning("鏃犳湁鏁堥摼鎺ュ彲澶嶅埗");
+ return;
+ }
+
+ // 鏂规硶1: 浣跨敤clipboard搴擄紙濡傛灉瀹夎浜嗭級
+ // this.copyWithClipboard()
+
+ // 鏂规硶2: 浣跨敤鐜颁唬娴忚鍣ㄧ殑Clipboard API
+ this.copyWithModernAPI();
+ },
+
+ // 浣跨敤鐜颁唬Clipboard API澶嶅埗
+ async copyWithModernAPI() {
+ try {
+ await navigator.clipboard.writeText(this.qrDialog.url);
+ this.$message.success("閾炬帴宸插鍒跺埌鍓创鏉�");
+ } catch (error) {
+ // 闄嶇骇鏂规
+ this.copyWithFallback();
+ }
+ },
+
+ // 鍏煎鎬ч檷绾ф柟妗�
+ copyWithFallback() {
+ const textArea = document.createElement("textarea");
+ textArea.value = this.qrDialog.url;
+ textArea.style.position = "fixed";
+ textArea.style.left = "-999999px";
+ textArea.style.top = "-999999px";
+ document.body.appendChild(textArea);
+ textArea.focus();
+ textArea.select();
+
+ try {
+ document.execCommand("copy");
+ this.$message.success("閾炬帴宸插鍒跺埌鍓创鏉�");
+ } catch (error) {
+ this.$message.warning("娴忚鍣ㄤ笉鏀寔鑷姩澶嶅埗锛岃鎵嬪姩澶嶅埗閾炬帴");
+ } finally {
+ document.body.removeChild(textArea);
+ }
+ },
+
+ // 鍏抽棴浜岀淮鐮佸脊妗�
+ handleQrClose() {
+ this.qrDialog.visible = false;
+ this.qrLoading = false
+
+ // 閲嶇疆鏁版嵁
+ setTimeout(() => {
+ this.qrDialog = {
+ visible: false,
+ title: "闅忚浜岀淮鐮�",
+ url: "",
+ patientName: "",
+ taskName: "",
+ logo: require("@/assets/logo/logoxh.png"),
+ };
+ }, 300);
+ },
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
handleExport() {
+ this.topqueryParams.pageNum = null;
+ this.topqueryParams.pageSize = null;
this.download(
- "system/user/export",
+ "smartor/serviceSubtask/export",
{
...this.topqueryParams,
},
`user_${new Date().getTime()}.xlsx`
);
+ },
+ // 寮傚父鍒楁覆鏌�
+ tableRowClassName({ row, rowIndex }) {
+ if (row.excep == 1) {
+ return "warning-row";
+ }
+ return "";
},
},
};
@@ -1162,6 +1519,9 @@
.document {
// width: 100px;
height: 50px;
+}
+::v-deep.el-table .warning-row {
+ background: #eec4c4;
}
.documentf {
@@ -1241,6 +1601,28 @@
}
}
}
+::v-deep.leftvlue .el-card__body {
+ background: #d0e9fd;
+}
+::v-deep.leftvlue .el-card__body:hover {
+ background: #8dc8f8;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.errleftvlue .el-card__body {
+ background: #fdd0d7;
+}
+::v-deep.errleftvlue .el-card__body:hover {
+ background: #f88d96;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+
+::v-deep.ysfleftvlue .el-card__body {
+ background: #d0fdd8;
+}
+::v-deep.ysfleftvlue .el-card__body:hover {
+ background: #8df8a4;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
.button-bb {
font-weight: 500;
background-color: #2ba05c;
@@ -1268,6 +1650,12 @@
border-radius: 1px;
color: #ffffff;
}
+.button-qr {
+ background: #6c14a2;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
::v-deep.el-radio-group {
span {
@@ -1275,10 +1663,49 @@
}
}
-// 閫夐」瀛椾綋鏀惧ぇ
-// ::v-deep.el-checkbox-group {
-// span {
-// font-size: 24px;
-// }
-// }
+/* 浜岀淮鐮佸脊妗嗘牱寮� */
+.qrcode-container {
+ text-align: center;
+ padding: 10px;
+}
+
+.qrcode-wrapper {
+ margin: 0 auto 20px;
+ padding: 15px;
+ background: #f8f9fa;
+ border-radius: 8px;
+ display: inline-block;
+}
+
+.qrcode-info {
+ margin: 15px 0;
+ padding: 12px;
+ background: #f0f2f5;
+ border-radius: 6px;
+ text-align: left;
+}
+
+.qrcode-info p {
+ margin: 8px 0;
+ font-size: 14px;
+}
+
+.qrcode-actions {
+ display: flex;
+ justify-content: center;
+ gap: 12px;
+ margin-top: 20px;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 480px) {
+ .qrcode-actions {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .qrcode-actions .el-button {
+ width: 200px;
+ }
+}
</style>
--
Gitblit v1.9.3