From 70e4d2c33cc2e3af590d1816c0c703da341538cf Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期五, 04 九月 2026 14:13:32 +0800
Subject: [PATCH] 测试完成
---
src/views/patient/propaganda/index.vue | 280 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 240 insertions(+), 40 deletions(-)
diff --git a/src/views/patient/propaganda/index.vue b/src/views/patient/propaganda/index.vue
index 00613a0..f1b9f34 100644
--- a/src/views/patient/propaganda/index.vue
+++ b/src/views/patient/propaganda/index.vue
@@ -37,7 +37,7 @@
placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
></el-input>
</el-form-item>
- <el-form-item label="鎮h�呰寖鍥�" prop="status">
+ <!-- <el-form-item label="鎮h�呰寖鍥�" prop="status">
<el-select
v-model="topqueryParams.searchscope"
placeholder="璇烽�夋嫨鎮h�呰寖鍥�"
@@ -50,6 +50,17 @@
>
</el-option>
</el-select>
+ </el-form-item> -->
+ <el-form-item label="鎮h�呰寖鍥�" prop="status">
+ <el-cascader
+ v-model="topqueryParams.scopetype"
+ placeholder="榛樿鍏ㄩ儴"
+ :options="sourcetype"
+ filterable
+ clearable
+ :props="{ expandTrigger: 'hover' }"
+ @change="handleChange"
+ ></el-cascader>
</el-form-item>
<el-form-item label="瀹f暀鐘舵��" prop="status">
@@ -89,16 +100,15 @@
</el-form>
<el-divider></el-divider>
<el-row :gutter="10" class="mb8">
- <el-col :span="1.5">
+ <!-- <el-col :span="1.5">
<el-button
type="primary"
- plain
icon="el-icon-plus"
size="medium"
@click="handleAdd"
>鏂板</el-button
>
- </el-col>
+ </el-col> -->
<el-col :span="1.5">
<div class="documentf">
<div class="document">
@@ -108,7 +118,6 @@
icon="el-icon-upload2"
size="medium"
@click="handleExport"
- v-hasPermi="['system:user:export']"
>瀵煎嚭</el-button
>
</div>
@@ -149,7 +158,6 @@
height="560"
@selection-change="handleSelectionChange"
>
- <el-table-column type="selection" width="50" align="center" />
<el-table-column
label="浠诲姟鍚嶇О"
fixed
@@ -240,7 +248,7 @@
<el-table-column
label="鍑洪櫌鏃ユ湡"
- width="200"
+ width="146"
align="center"
key="endtime"
prop="endtime"
@@ -253,11 +261,11 @@
label="搴斿鏁欐棩鏈�"
width="200"
align="center"
- key="longSendTime"
- prop="longSendTime"
+ key="visitTime"
+ prop="visitTime"
>
<template slot-scope="scope">
- <span>{{ formatTime(scope.row.longSendTime) }}</span>
+ <span>{{ formatTime(scope.row.visitTime) }}</span>
</template></el-table-column
>
<el-table-column
@@ -268,9 +276,7 @@
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
@@ -294,7 +300,6 @@
key="drname"
prop="drname"
/>
-
<!-- <el-table-column
label="鐥呭巻鍙�"
@@ -368,20 +373,26 @@
</template>
</el-table-column> -->
<el-table-column
- fixed="right"
label="浠诲姟缁撴灉璁板綍"
width="120"
align="center"
key="remark"
prop="remark"
>
- <template slot-scope="scope" v-if="scope.row.remark">
- <el-tag type="success" v-if="scope.row.sendstate!=5&&scope.row.sendstate!=4&&scope.row.remark">{{ scope.row.remark }}</el-tag>
- <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
- </template>
- </el-table-column>
+ <template slot-scope="scope" v-if="scope.row.remark">
+ <el-tag
+ type="success"
+ v-if="
+ scope.row.sendstate != 5 &&
+ scope.row.sendstate != 4 &&
+ scope.row.remark
+ "
+ >{{ scope.row.remark }}</el-tag
+ >
+ <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
+ </template>
+ </el-table-column>
<el-table-column
- fixed="right"
label="瀹f暀鏃堕棿"
sortable
align="center"
@@ -390,6 +401,17 @@
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.finishtime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" align="center" width="100">
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ icon="el-icon-view"
+ @click="previewTemplate(scope.row)"
+ >棰勮</el-button
+ >
</template>
</el-table-column>
<!-- <el-table-column
@@ -544,6 +566,10 @@
>
</span>
</el-dialog>
+ <!-- 瀹f暀妯℃澘棰勮 -->
+ <el-dialog title="妯℃澘棰勮" :visible.sync="previewtf" width="60%">
+ <div v-html="htmlRichText"></div>
+ </el-dialog>
</div>
</template>
@@ -557,10 +583,11 @@
resetUserPwd,
changeUserStatus,
} from "@/api/system/user";
-import { getTaskservelist } from "@/api/AiCentre/index";
+import { getTaskservelist, getlibrarylist } from "@/api/AiCentre/index";
import Treeselect from "@riophae/vue-treeselect";
import store from "@/store";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import axios from "axios";
export default {
name: "Discharge",
@@ -599,10 +626,28 @@
ruleForm: {
type: [],
},
+ sourcetype: [
+ {
+ value: 1,
+ label: "绉戝",
+ children: [],
+ },
+ {
+ value: 2,
+ label: "鐥呭尯",
+ children: [],
+ },
+ {
+ value: 3,
+ label: "鍏ㄩ儴",
+ },
+ ],
dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
inputVisible: false,
inputValue: "",
previewVisible: false, //闂ㄨ瘖瀹f暀棰勮寮规
+ previewtf: false, //瀹f暀妯℃澘棰勮寮规
+ htmlRichText: "", //瀹f暀妯℃澘棰勮瀵屾枃鏈�
radio: "",
radios: [],
previewtype: 2, //棰勮闂ㄨ瘖瀹f暀绫诲瀷
@@ -724,7 +769,10 @@
pageNum: 1,
pageSize: 10,
serviceType: 4,
- searchscope: 2,
+ searchscope: 3,
+ sendstate: 2,
+ leaveldeptcodes: [],
+ leavehospitaldistrictcodes: [],
},
propss: { multiple: true },
options: [],
@@ -754,6 +802,10 @@
value: 6,
label: "宸插畬鎴�",
},
+ {
+ value: 7,
+ label: "瓒呮椂",
+ },
],
topicoptionsyj: [
{
@@ -773,6 +825,19 @@
watch: {},
created() {
this.serviceState = store.getters.serviceState;
+ 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,
+ };
+ });
+
this.getList();
this.getConfigKey("sys.user.initPassword").then((response) => {
this.initPassword = response.msg;
@@ -790,16 +855,7 @@
methods: {
/** 鏌ヨ闂ㄨ瘖瀹f暀鏈嶅姟鍒楄〃 */
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 {
+ if (this.topqueryParams.searchscope == 3) {
this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
(obj) => obj.deptCode
);
@@ -807,10 +863,22 @@
store.getters.belongWards.map((obj) => obj.districtCode);
}
this.loading = true;
- if (this.topqueryParams.leavehospitaldistrictcodes[0]&&this.topqueryParams.leaveldeptcodes[0]) {
- this.topqueryParams.deptOrDistrict=2;
- }else{
- this.topqueryParams.deptOrDistrict=1;
+ console.log(this.topqueryParams.leavehospitaldistrictcodes, "123");
+ console.log(this.topqueryParams.leaveldeptcodes, "344");
+
+ if (
+ this.topqueryParams.leavehospitaldistrictcodes[0] &&
+ this.topqueryParams.leaveldeptcodes[0]
+ ) {
+ this.topqueryParams.deptOrDistrict = 2;
+ } else {
+ this.topqueryParams.deptOrDistrict = 1;
+ }
+ console.log(55);
+
+ if (!this.followupAuthority()) {
+ this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+ return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
}
getTaskservelist(this.topqueryParams).then((response) => {
this.userList = response.rows[0].serviceSubtaskList;
@@ -827,6 +895,48 @@
Referencequestion(row) {
this.previewVisible = true;
},
+ // 棰勮瀹f暀妯℃澘锛堥�氳繃 libtemplateid 鏌ヨ妯℃澘淇℃伅锛�
+ previewTemplate(row) {
+ if (!row.libtemplateid) {
+ this.$message.warning("璇ヤ换鍔℃湭鍏宠仈瀹f暀妯℃澘");
+ return;
+ }
+ this.htmlRichText = null;
+ this.previewtf = true;
+ getlibrarylist({ id: row.libtemplateid })
+ .then((res) => {
+ const tpl = (res.rows && res.rows[0]) || null;
+ if (!tpl || !tpl.htmlRichText) {
+ this.$message.warning("璇ユā鏉挎殏鏃犻瑙堝唴瀹�");
+ return;
+ }
+ axios
+ .get(tpl.htmlRichText)
+ .then((response) => {
+ this.htmlRichText = response.data;
+ this.htmlRichText = this.addStyleToImages(this.htmlRichText);
+ })
+ .catch(() => {
+ this.$message.error("鑾峰彇妯℃澘鍐呭澶辫触");
+ });
+ })
+ .catch(() => {
+ this.$message.error("鏌ヨ妯℃澘淇℃伅澶辫触");
+ });
+ },
+ // 淇瀵屾枃鏈浘鐗囪矾寰勪笌鏍峰紡
+ addStyleToImages(html) {
+ if (!html) return html;
+ let processedHtml = html.replace(
+ /\/aifollowup\/aifollowup\//g,
+ "/aifollowup/"
+ );
+ processedHtml = processedHtml.replace(
+ /<img([^>]*)style=(['"])(?:(?!\2).)*\2([^>]*)>/g,
+ '<img$1style="width:100%;height:auto;"$3>'
+ );
+ return processedHtml;
+ },
// 娣诲姞寮规鎼滅储
remoteMethod(query) {
if (query !== "") {
@@ -839,6 +949,24 @@
}, 200);
} else {
this.options = [];
+ }
+ },
+ // 鎮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;
}
},
// 闂ㄨ瘖瀹f暀鐘舵�佷慨鏀�
@@ -910,6 +1038,7 @@
pageNum: 1,
pageSize: 10,
serviceType: 4,
+ sendstate: 2,
};
this.handleQuery();
},
@@ -1016,7 +1145,7 @@
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
handleExport() {
this.download(
- "system/user/export",
+ "smartor/serviceSubtask/patItemExport",
{
...this.topqueryParams,
},
@@ -1030,8 +1159,8 @@
<style lang="scss" scoped>
.el-button--primary.is-plain {
color: #ffffff;
- background: #409eff;
- border-color: #4fabe9;
+ background: #5b7cfa;
+ border-color: #5b7cfa;
}
.document {
@@ -1156,4 +1285,75 @@
// font-size: 24px;
// }
// }
+/* ================= 娓呮柊楂樼骇绠�绾﹂ ================= */
+.app-container {
+ background: #f5f7fb;
+ border-radius: 14px;
+ padding: 20px;
+}
+
+/* 鏌ヨ琛ㄥ崟锛氱櫧鑹插渾瑙掑崱鐗� */
+::v-deep .el-form--inline {
+ background: #ffffff;
+ border-radius: 14px;
+ padding: 22px 22px 8px;
+ margin-bottom: 18px;
+ box-shadow: 0 2px 12px rgba(31, 45, 61, 0.05);
+}
+
+/* 闅愯棌鍒嗗壊绾� */
+::v-deep .el-divider {
+ display: none;
+}
+
+/* 宸ュ叿鏍忓簳閮ㄩ棿璺� */
+.mb8 {
+ margin-bottom: 18px;
+}
+
+/* 鎸夐挳锛氬渾瑙� + 鏌斿拰杩囨浮 */
+::v-deep .el-button {
+ border-radius: 8px;
+ font-weight: 500;
+ transition: all 0.25s ease;
+}
+
+/* 涓绘寜閽細娓呮柊闈涜摑 */
+::v-deep .el-button--primary:not(.is-plain) {
+ background: #5b7cfa;
+ border-color: #5b7cfa;
+}
+::v-deep .el-button--primary:not(.is-plain):hover,
+::v-deep .el-button--primary:not(.is-plain):focus {
+ background: #7593fb;
+ border-color: #7593fb;
+}
+
+/* 琛ㄦ牸锛氱櫧鑹插渾瑙掑崱鐗� + 鏌斿拰琛ㄥご */
+::v-deep .el-table {
+ border-radius: 14px;
+ overflow: hidden;
+ box-shadow: 0 2px 12px rgba(31, 45, 61, 0.05);
+}
+::v-deep .el-table::before {
+ display: none;
+}
+::v-deep .el-table th {
+ background: #f7f9fd !important;
+ color: #3f4d63;
+ font-weight: 600;
+}
+::v-deep .el-table td {
+ padding: 12px 0;
+}
+
+/* 鏍囩鍦嗚 */
+::v-deep .el-tag {
+ border-radius: 6px;
+}
+
+/* 鍒嗛〉闂磋窛 */
+::v-deep .pagination-container {
+ padding-top: 18px;
+}
</style>
--
Gitblit v1.9.3