From 877cf2120309d30c08f922191bca1ec5242add82 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 21 四月 2026 15:49:02 +0800
Subject: [PATCH] 测试完成
---
src/views/repositoryai/verbaltrick/index.vue | 2
src/permission.js | 29
src/views/Satisfaction/sfstatistics/components/components/SeedetailsDialog.vue | 66 +-
src/views/sfstatistics/percentage/components/TimelyRateDialog.vue | 24
src/views/knowledge/education/compilequer/index copy.vue | 115 ++-
src/views/knowledge/questionnaire/compilequer/index.vue | 13
src/views/knowledge/education/index.vue | 2
src/views/sfstatistics/percentage/components/FirstFollowUp.vue | 1096 +++++++++++++++++++++++++++-----------
src/views/login-sy.vue | 1
src/views/outsideChainnew.vue | 18
src/views/login.vue | 1
src/views/patient/propaganda/index.vue | 12
src/views/followvisit/record/detailpage/index.vue | 16
src/views/repositoryai/verbaltrick/particulars/index.vue | 4
src/views/sfstatistics/percentage/index.vue | 9
src/components/Regular/index.vue | 50 +
src/views/Satisfaction/configurationmyd/index.vue | 16
src/views/knowledge/education/compilequer/index.vue | 129 ++-
src/views/patient/propaganda/particty.vue | 22
src/views/outsideChainwtnew.vue | 5
20 files changed, 1,099 insertions(+), 531 deletions(-)
diff --git a/src/components/Regular/index.vue b/src/components/Regular/index.vue
index 2398279..b4fc53d 100644
--- a/src/components/Regular/index.vue
+++ b/src/components/Regular/index.vue
@@ -27,7 +27,33 @@
>
<span style="color: #67c23a">鈼� 姝e父</span>
</el-option>
+ ><el-form-item label="寮傚父鎻愰啋">
+ <el-select v-model="item.isabnormal" placeholder="璇烽�夋嫨鐘舵��">
+ <el-option
+ :value="0"
+ label="姝e父"
+ :style="{ color: '#67C23A' }"
+ >
+ <span style="color: #67c23a">鈼� 姝e父</span>
+ </el-option>
+ <el-option
+ :value="2"
+ label="璀﹀憡"
+ :style="{ color: '#FFBA00' }"
+ >
+ <span style="color: #ffba00">鈼� 璀﹀憡</span>
+ </el-option>
+ <el-option
+ :value="1"
+ label="寮傚父"
+ :style="{ color: '#f75c5c' }"
+ >
+ <span style="color: #f75c5c">鈼� 寮傚父</span>
+ </el-option>
+ </el-select>
+ </el-form-item></el-col
+ >
<el-option
:value="2"
label="璀﹀憡"
@@ -70,12 +96,24 @@
</el-input> </el-form-item
></el-col>
</el-row>
- <el-form-item label="缁撴潫瀵硅瘽">
- <el-radio-group v-model="item.isEnd">
- <el-radio :label="1">鏄�</el-radio>
- <el-radio :label="0">鍚�</el-radio>
- </el-radio-group>
- </el-form-item>
+ <el-row :gutter="10">
+ <el-col :span="11">
+ <el-form-item label="缁撴潫瀵硅瘽">
+ <el-radio-group v-model="item.isEnd">
+ <el-radio :label="1">鏄�</el-radio>
+ <el-radio :label="0">鍚�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="榛樿閫夐」">
+ <el-radio-group v-model="item.defaultValue">
+ <el-radio :label="2">鏄�</el-radio>
+ <el-radio :label="1">鍚�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
<el-row :gutter="10" v-if="intent">
<el-col :span="12"
diff --git a/src/permission.js b/src/permission.js
index e864e35..b049b44 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -52,12 +52,33 @@
}
}
} else {
- // 娌℃湁token
- if (whiteList.indexOf(to.path) !== -1) {
+ let processedPath = to.path;
+ if (to.path.startsWith("/aifollowup")) {
+ processedPath = to.path.replace(/^\/aifollowup/, "") || "/";
+ }
+
+ console.log(processedPath, "澶勭悊鍚庣殑璺緞");
+
+ if (whiteList.indexOf(processedPath) !== -1) {
// 鍦ㄥ厤鐧诲綍鐧藉悕鍗曪紝鐩存帴杩涘叆
- next();
+ // 濡傛灉璺緞琚慨鏀逛簡锛岄渶瑕侀噸瀹氬悜
+ if (processedPath !== to.path) {
+ next({
+ path: processedPath,
+ query: to.query,
+ hash: to.hash,
+ });
+ NProgress.done();
+ } else {
+ next();
+ }
} else {
- next(`/login?redirect=${to.fullPath}`); // 鍚﹀垯鍏ㄩ儴閲嶅畾鍚戝埌鐧诲綍椤�
+ // 淇濆瓨閲嶅畾鍚慤RL鏃堕渶瑕佸鐞嗚矾寰�
+ const redirectPath = to.path.startsWith("/aifollowup")
+ ? to.path.replace(/^\/aifollowup/, "")
+ : to.fullPath;
+
+ next(`/login?redirect=${redirectPath}`); // 鍚﹀垯鍏ㄩ儴閲嶅畾鍚戝埌鐧诲綍椤�
NProgress.done();
}
}
diff --git a/src/views/Satisfaction/configurationmyd/index.vue b/src/views/Satisfaction/configurationmyd/index.vue
index 5029a05..a6debdc 100644
--- a/src/views/Satisfaction/configurationmyd/index.vue
+++ b/src/views/Satisfaction/configurationmyd/index.vue
@@ -144,14 +144,13 @@
</div>
<!-- 鎼滅储鍖哄煙锛堥鐩瓫閫夛級 -->
- <div v-if="questionList.length > 0" class="search-section">
+ <div v-show="questionList.length > 0" class="search-section">
<el-card shadow="never" class="search-container">
- <el-form :model="queryParams" :inline="true" size="medium">
+ <el-form :model="queryParams" size="medium">
<el-form-item label="闂涓婚">
<el-input
v-model="queryParams.scriptTopic"
placeholder="璇疯緭鍏ラ棶棰樹富棰�"
- clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
@@ -159,7 +158,6 @@
<el-input
v-model="queryParams.scriptContent"
placeholder="璇疯緭鍏ラ棶棰樺唴瀹�"
- clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
@@ -763,8 +761,8 @@
// 鏌ヨ鍙傛暟
queryParams: {
- scriptTopic: "",
- scriptContent: "",
+ scriptTopic: null,
+ scriptContent: null,
},
// 鏁版嵁鍒楄〃
@@ -860,7 +858,8 @@
// 绛涢�夊悗鐨勯鐩垪琛�
filteredQuestionList() {
let filtered = this.questionList;
-
+ console.log("queryParams:", this.queryParams);
+ console.log("questionList:", this.questionList);
// 绛涢�夋弧鎰忓害棰樼洰
if (this.templateForm.templateType === 1) {
filtered = filtered.filter((q) =>
@@ -876,7 +875,7 @@
if (this.queryParams.scriptTopic) {
const keyword = this.queryParams.scriptTopic.toLowerCase();
filtered = filtered.filter(
- (q) => q.scriptTopic && q.criptTopic.toLowerCase().includes(keyword)
+ (q) => q.scriptTopic && q.scriptTopic.toLowerCase().includes(keyword)
);
}
@@ -985,7 +984,6 @@
isavailable: item.isavailable,
}));
console.log(this.followupTemplates, 3);
-
} else {
this.$message.error(res.msg || "鍔犺浇闂嵎妯℃澘澶辫触");
}
diff --git a/src/views/Satisfaction/sfstatistics/components/components/SeedetailsDialog.vue b/src/views/Satisfaction/sfstatistics/components/components/SeedetailsDialog.vue
index ce29cd3..71a40f7 100644
--- a/src/views/Satisfaction/sfstatistics/components/components/SeedetailsDialog.vue
+++ b/src/views/Satisfaction/sfstatistics/components/components/SeedetailsDialog.vue
@@ -221,15 +221,12 @@
<!-- 鍒嗛〉 -->
<div class="pagination" v-if="patienttotal > 0">
- <el-pagination
- background
- layout="total, sizes, prev, pager, next, jumper"
- :current-page="patientqueryParams.pn"
- :page-size="patientqueryParams.ps"
- :page-sizes="[10, 20, 30]"
+ <pagination
+ v-show="patienttotal > 0"
:total="patienttotal"
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
+ :page.sync="patientqueryParams.pn"
+ :limit.sync="patientqueryParams.ps"
+ @pagination="loadData"
/>
</div>
</div>
@@ -241,17 +238,17 @@
import { selectTimelyRate } from "@/api/system/user";
export default {
- name: 'SeedetailsDialog',
- dicts: ['sys_yujing', 'sys_suggest'],
+ name: "SeedetailsDialog",
+ dicts: ["sys_yujing", "sys_suggest"],
props: {
rowData: {
type: Object,
- default: () => ({})
+ default: () => ({}),
},
queryParams: {
type: Object,
- default: () => ({})
- }
+ default: () => ({}),
+ },
},
data() {
return {
@@ -259,8 +256,8 @@
patientqueryParams: {
pn: 1,
ps: 10,
- name: '',
- leavediagname: ''
+ name: "",
+ leavediagname: "",
},
// 鍔犺浇鐘舵��
@@ -270,7 +267,7 @@
logsheetlist: [],
// 鎬绘潯鏁�
- patienttotal: 0
+ patienttotal: 0,
};
},
@@ -285,17 +282,22 @@
try {
const params = {
...this.patientqueryParams,
- deptcode: this.rowData.deptcode || '',
- starttime: this.queryParams.dateRange?.[0] ? this.parseTime(this.queryParams.dateRange[0]) : '',
- endtime: this.queryParams.dateRange?.[1] ? this.parseTime(this.queryParams.dateRange[1]) : ''
+ deptcode: this.rowData.deptcode || "",
+ starttime: this.queryParams.dateRange?.[0]
+ ? this.parseTime(this.queryParams.dateRange[0])
+ : "",
+ endtime: this.queryParams.dateRange?.[1]
+ ? this.parseTime(this.queryParams.dateRange[1])
+ : "",
};
+ console.log(params, "params");
const response = await selectTimelyRate(params);
this.logsheetlist = response.data?.detail || [];
this.patienttotal = response.data?.total || 0;
} catch (error) {
- console.error('鑾峰彇鏈強鏃堕殢璁胯鎯呭け璐�:', error);
- this.$message.error('鑾峰彇鏁版嵁澶辫触');
+ console.error("鑾峰彇鏈強鏃堕殢璁胯鎯呭け璐�:", error);
+ this.$message.error("鑾峰彇鏁版嵁澶辫触");
} finally {
this.loading = false;
}
@@ -312,16 +314,16 @@
this.patientqueryParams = {
pn: 1,
ps: 10,
- name: '',
- leavediagname: ''
+ name: "",
+ leavediagname: "",
};
this.loadData();
},
// 澶勭悊鍒嗛〉澶у皬鍙樺寲
handleSizeChange(size) {
- this.patientqueryParams.ps = size;
- this.patientqueryParams.pn = 1;
+ console.log(this.patientqueryParams);
+
this.loadData();
},
@@ -333,19 +335,19 @@
// 鏍煎紡鍖栨椂闂�
formatTime(time) {
- if (!time) return '-';
+ if (!time) return "-";
return time;
},
// 瑙f瀽鏃堕棿
parseTime(time) {
- if (!time) return '';
+ if (!time) return "";
return time;
},
// 鏌ョ湅璇︽儏
handleViewDetail(row) {
- this.$emit('close');
+ this.$emit("close");
let type = "";
if (row.preachformson && row.preachformson.includes("3")) {
@@ -359,12 +361,12 @@
taskid: row.taskid,
patid: row.patid,
id: row.id,
- Voicetype: type
- }
+ Voicetype: type,
+ },
});
}, 300);
- }
- }
+ },
+ },
};
</script>
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index 0df1bfb..00cba0e 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -561,7 +561,7 @@
<el-button
type="primary"
plain
- @click="Editsingletasksonyic('')"
+ @click="alterpatient('')"
>
淇濆瓨鍩虹淇℃伅
</el-button>
@@ -1806,10 +1806,7 @@
// 澶勭悊 scriptResult锛岀洿鎺ヤ慨鏀瑰師濮嬫暟鎹�
if (item.scriptType == 2 && item.scriptResult) {
// 澶勭悊鏁扮粍绫诲瀷鐨� scriptResult
- if (
- Array.isArray(item.scriptResult) &&
- item.scriptResult.length > 0
- ) {
+ if (Array.isArray(item.scriptResult)) {
item.originalScriptResult = item.scriptResult; // 淇濆瓨鍘熷鏁扮粍锛堝彲閫夛級
item.scriptResult = item.scriptResult.join("&"); // 杞崲涓哄瓧绗︿覆
}
@@ -2203,6 +2200,15 @@
}
});
},
+ alterpatient(sendstate) {
+ alterpatient(this.userform).then((res) => {
+ if (res.code == 200) {
+ this.$modal.msgSuccess("鍩虹淇℃伅淇濆瓨鎴愬姛");
+ } else {
+ this.$modal.msgError("鍩虹淇℃伅淇敼澶辫触");
+ }
+ });
+ },
// 寮傚父鍒楁覆鏌�
tableRowClassName({ row, rowIndex }) {
if (row.id == this.id) {
diff --git a/src/views/knowledge/education/compilequer/index copy.vue b/src/views/knowledge/education/compilequer/index copy.vue
index 18f6baf..4890b23 100644
--- a/src/views/knowledge/education/compilequer/index copy.vue
+++ b/src/views/knowledge/education/compilequer/index copy.vue
@@ -432,70 +432,77 @@
toolbarConfig: {},
editorConfig: {
placeholder: "璇疯緭鍏ュ唴瀹�...",
+ MENU_CONF: {
+ // 鍥剧墖涓婁紶閰嶇疆
+ uploadImage: {
+ server: process.env.VUE_APP_BASE_API + "/common/uploadSort",
+ fieldName: "file",
+ headers: {
+ Authorization: "Bearer " + getToken(),
+ },
+ // 鑷畾涔夋彃鍏�
+ customInsert: (res, insertFn) => {
+ const url = res.url || res.data || res.filePath;
+ if (url) {
+ // 澶勭悊鍐呯綉鍦板潃杞崲
+ const processedUrl = url.replace(
+ "http://192.168.191.181:8095/profile/upload",
+ "http://m.zjtongde.com:13871/prod-api/profile/upload"
+ );
+ insertFn(processedUrl);
+ }
+ },
+ },
+
+ // 瑙嗛涓婁紶閰嶇疆
+ uploadVideo: {
+ server: process.env.VUE_APP_BASE_API + "/common/uploadSort",
+ fieldName: "file",
+ maxFileSize: 50 * 1024 * 1024, // 50MB
+ allowedFileTypes: ["video/*"],
+ headers: {
+ "Content-Type": "multipart/form-data",
+ Authorization: "Bearer " + getToken(),
+ },
+ // 鑷畾涔夋彃鍏�
+ customInsert: (res, insertFn) => {
+ const url = res.url || res.data || res.filePath;
+ if (url) {
+ // 澶勭悊鍐呯綉鍦板潃杞崲
+ const processedUrl = url.replace(
+ "http://192.168.191.181:8095/profile/upload",
+ "http://m.zjtongde.com:13871/prod-api/profile/upload"
+ );
+ insertFn(processedUrl, "瑙嗛");
+ }
+ },
+ onSuccess: (file, res) => {
+ console.log("瑙嗛涓婁紶鎴愬姛", res);
+ return res.url || res.data || res.filePath;
+ },
+ onFailed: (file, res) => {
+ this.$message.error("瑙嗛涓婁紶澶辫触");
+ console.error("瑙嗛涓婁紶澶辫触", res);
+ },
+ onError: (file, err, res) => {
+ this.$message.error("瑙嗛涓婁紶鍑洪敊");
+ console.error("瑙嗛涓婁紶鍑洪敊", err);
+ },
+ },
+ },
menus: [
"head",
"bold",
"italic",
"underline",
"image",
+ "video", // 纭繚鏈� video
"link",
"list",
"undo",
"redo",
- "file", // 娣诲姞鑷畾涔夋枃浠朵笂浼犺彍鍗�
+ "file",
],
- uploadImgServer: process.env.VUE_APP_BASE_API + "/common/uploadSort", // 鍥剧墖涓婁紶鎺ュ彛
- uploadImgHeaders: {
- Authorization: "Bearer " + getToken(),
- }, // 鑷畾涔変笂浼犵殑 headers
- uploadImgParams: { key: "value" }, // 鑷畾涔変笂浼犵殑鍙傛暟
- uploadImgMaxSize: 2 * 1024 * 1024, // 鍥剧墖鏈�澶уぇ灏忥紝鍗曚綅 Byte
- uploadImgMaxLength: 1, // 涓�娆℃渶澶氫笂浼犲浘鐗囨暟閲�
- uploadImgTimeout: 3 * 60 * 1000, // 瓒呮椂鏃堕棿锛屽崟浣� ms
- uploadImgHooks: {
- customInsert: (insertImgFn, result) => {
- const url = result.url; // 鑾峰彇鍥剧墖鍦板潃
- insertImgFn(url); // 鎻掑叆鍥剧墖
- },
- },
- customMenus: {
- file: {
- tip: "涓婁紶鏂囦欢",
- click: (editor) => {
- const input = document.createElement("input");
- input.type = "file";
- input.accept =
- "application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document"; // 鏀寔鐨勬枃浠剁被鍨�
- input.onchange = (e) => {
- const file = e.target.files[0];
- if (!file) return;
- const formData = new FormData();
- formData.append("file", file);
-
- // 纭繚 process.env.VUE_APP_BASE_API 鏄纭殑
- const uploadUrl =
- process.env.VUE_APP_BASE_API + "/common/uploadSort";
- axios
- .post(uploadUrl, formData, {
- headers: {
- Authorization: "Bearer " + getToken(),
- },
- })
- .then((res) => {
- const url = res.data.url; // 鑾峰彇鏂囦欢鍦板潃
- // 鎻掑叆鏂囦欢閾炬帴浣滀负鏅�氭枃鏈�
- editor.txt.append(url + " ");
- // 鎴栬�呮彃鍏ユ枃浠堕摼鎺ヤ綔涓鸿秴閾炬帴
- // editor.cmd.do('insertLink', { name: '鏂囦欢閾炬帴', url: url });
- })
- .catch((err) => {
- console.error("鏂囦欢涓婁紶澶辫触", err);
- });
- };
- input.click();
- },
- },
- },
},
modes: "default", // or 'simple'
headers: {
@@ -732,7 +739,7 @@
// 瀹氫箟瑕佹浛鎹㈢殑鏂版棫URL
var oldUrlBase = this.oldPattern;
- var newUrlBase =this.newPattern;
+ var newUrlBase = this.newPattern;
// 鑾峰彇鎵�鏈夌殑video鍏冪礌
var videos = doc.querySelectorAll("video");
diff --git a/src/views/knowledge/education/compilequer/index.vue b/src/views/knowledge/education/compilequer/index.vue
index f5c3f3f..ef4061c 100644
--- a/src/views/knowledge/education/compilequer/index.vue
+++ b/src/views/knowledge/education/compilequer/index.vue
@@ -360,60 +360,74 @@
fileList: [],
// 宸ュ叿鏍忛厤缃�
toolbarConfig: {
- excludeKeys: [
- "group-video",
- "insertVideo",
- "uploadVideo",
- "emotion",
- "codeBlock",
- ],
+ excludeKeys: ["emotion", "codeBlock"],
},
- // 缂栬緫鍣ㄩ厤缃�
editorConfig: {
- placeholder: "璇疯緭鍏ュ鏁欏唴瀹�...",
+ placeholder: "璇疯緭鍏ュ唴瀹�...",
MENU_CONF: {
+ // 鍥剧墖涓婁紶閰嶇疆
uploadImage: {
server: process.env.VUE_APP_BASE_API + "/common/uploadSort",
fieldName: "file",
- maxFileSize: 2 * 1024 * 1024,
- maxNumberOfFiles: 1,
- allowedFileTypes: ["image/*"],
headers: {
Authorization: "Bearer " + getToken(),
},
- customUpload: async (file, insertFn) => {
- try {
- const formData = new FormData();
- formData.append("file", file);
-
- const response = await axios.post(
- process.env.VUE_APP_BASE_API + "/common/uploadSort",
- formData,
- {
- headers: {
- // "Content-Type": "multipart/form-data",
- Authorization: "Bearer " + getToken(),
- },
- }
+ // 鑷畾涔夋彃鍏ュ浘鐗�
+ customInsert: (res, insertFn) => {
+ const url = res.url || res.data || res.filePath;
+ if (url) {
+ // 澶勭悊鍐呯綉鍦板潃杞崲
+ const processedUrl = url.replace(
+ "http://192.168.191.181:8095/profile/upload",
+ "http://m.zjtongde.com:13871/prod-api/profile/upload"
);
-
- if (response.data && response.data.url) {
- let imgUrl = response.data.url;
- // imgUrl = imgUrl.replace(
- // "http://218.108.11.22:8093/profile-api/upload",
- // "http://192.88.117.236:8090/prod-api/profile/upload"
- // );
- imgUrl = imgUrl.replace(
- "http://m.zjtongde.com:13871/prod-api/profile/upload",
- "http://192.88.117.236:8090/prod-api/profile/upload"
- );
- insertFn(imgUrl);
- }
- } catch (error) {
- console.error("鍥剧墖涓婁紶澶辫触", error);
- this.$message.error("鍥剧墖涓婁紶澶辫触");
+ insertFn(processedUrl);
}
+ },
+ // 涓婁紶鎴愬姛鍥炶皟
+ onSuccess: (file, res) => {
+ console.log("鍥剧墖涓婁紶鎴愬姛", res);
+ return res.url || res.data || res.filePath;
+ },
+ onFailed: (file, res) => {
+ this.$message.error("鍥剧墖涓婁紶澶辫触");
+ console.error("鍥剧墖涓婁紶澶辫触", res);
+ },
+ },
+
+ // 瑙嗛涓婁紶閰嶇疆
+ uploadVideo: {
+ server: process.env.VUE_APP_BASE_API + "/common/uploadSort",
+ fieldName: "file",
+ maxFileSize: 50 * 1024 * 1024, // 50MB
+ allowedFileTypes: ["video/*"],
+ headers: {
+ Authorization: "Bearer " + getToken(),
+ },
+ // 鑷畾涔夋彃鍏ヨ棰�
+ customInsert: (res, insertFn) => {
+ const url = res.url || res.data || res.filePath;
+ if (url) {
+ // 澶勭悊鍐呯綉鍦板潃杞崲
+ const processedUrl = url.replace(
+ "http://192.168.191.181:8095/profile/upload",
+ "http://m.zjtongde.com:13871/prod-api/profile/upload"
+ );
+ insertFn(processedUrl, "瑙嗛");
+ }
+ },
+ onSuccess: (file, res) => {
+ console.log("瑙嗛涓婁紶鎴愬姛", res);
+ return res.url || res.data || res.filePath;
+ },
+ onFailed: (file, res) => {
+ this.$message.error("瑙嗛涓婁紶澶辫触");
+ console.error("瑙嗛涓婁紶澶辫触", res);
+ },
+ onError: (file, err, res) => {
+ this.$message.error("瑙嗛涓婁紶鍑洪敊");
+ console.error("瑙嗛涓婁紶鍑洪敊", err);
},
},
},
@@ -658,17 +672,32 @@
// 鑾峰彇鎵�鏈夌殑video鍏冪礌
var videos = doc.querySelectorAll("video");
var images = doc.querySelectorAll("img");
+ console.log(videos, "videos");
+ console.log(images, "images");
// 閬嶅巻鎵�鏈夌殑video鍏冪礌骞舵浛鎹rc灞炴��
videos.forEach(function (video) {
+ // 鍏堟鏌ideo鍏冪礌鑷韩鐨剆rc灞炴��
var src = video.getAttribute("src");
- if (src.startsWith(oldUrlBase)) {
+ if (src && src.startsWith(oldUrlBase)) {
video.setAttribute("src", src.replace(oldUrlBase, newUrlBase));
}
- });
- console.log(images,'images');
- images.forEach(function (img) {
+ // 鐒跺悗妫�鏌ideo鍏冪礌鍐呴儴鐨剆ource瀛愬厓绱�
+ var sources = video.querySelectorAll("source");
+ sources.forEach(function (source) {
+ var sourceSrc = source.getAttribute("src");
+ if (sourceSrc && sourceSrc.startsWith(oldUrlBase)) {
+ source.setAttribute(
+ "src",
+ sourceSrc.replace(oldUrlBase, newUrlBase)
+ );
+ }
+ });
+ });
+ console.log(images, "images");
+
+ images.forEach(function (img) {
var src = img.getAttribute("src");
if (src.startsWith(oldUrlBase)) {
img.setAttribute("src", src.replace(oldUrlBase, newUrlBase));
@@ -700,11 +729,13 @@
content: this.parserdom(this.content),
fileName: this.generateRandomHtmlFilename(),
}).then((res) => {
+ console.log(55);
+
this.ruleForm.richText = res.msg;
this.ruleForm.richText = res.msg.replace(
- this.oldPattern,
- this.newPattern
- );
+ this.oldPattern,
+ this.newPattern
+ );
console.log(this.ruleForm.richText, "this.ruleForm.richText");
// 澶勭悊鍐呯綉html
addrichText({
diff --git a/src/views/knowledge/education/index.vue b/src/views/knowledge/education/index.vue
index 6fa0afc..5b8a995 100644
--- a/src/views/knowledge/education/index.vue
+++ b/src/views/knowledge/education/index.vue
@@ -866,7 +866,7 @@
},
// 鏌ヨ鏍�
getDeptTree() {
- getheLibraryAssort({ hetype: 2 }).then((res) => {
+ getheLibraryAssort({ hetype: 1 }).then((res) => {
this.deptOptions = res.rows;
this.dialogFormVisible = false;
});
diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue
index 2923b51..76975af 100644
--- a/src/views/knowledge/questionnaire/compilequer/index.vue
+++ b/src/views/knowledge/questionnaire/compilequer/index.vue
@@ -672,7 +672,8 @@
</el-col>
</el-row>
<el-row>
- <el-form-item label="鍏宠仈鏈嶅姟">
+ <el-col :span="12">
+ <el-form-item label="鍏宠仈鏈嶅姟">
<div
v-if="item.sendTaskname"
class="service-tag-container"
@@ -699,6 +700,16 @@
</el-button>
</div>
</el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="榛樿閫夐」">
+ <el-radio-group v-model="item.defaultValue">
+ <el-radio :label="2">鏄�</el-radio>
+ <el-radio :label="1">鍚�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+
</el-row>
<el-row :gutter="10">
<el-col :span="11">
diff --git a/src/views/login-sy.vue b/src/views/login-sy.vue
index 0408a34..2bb661e 100644
--- a/src/views/login-sy.vue
+++ b/src/views/login-sy.vue
@@ -169,7 +169,6 @@
if (res.code == 200) {
this.options = res.rows.map((item) => ({
value: item.medicalCode,
- // value: item.medicalCode,
label: item.organizationName,
}));
}
diff --git a/src/views/login.vue b/src/views/login.vue
index d087469..4d5a2ac 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -165,6 +165,7 @@
this.options = res.rows.map((item) => ({
value: item.orgid,
label: item.organizationName,
+ campusid: item.organizationID,
}));
}
});
diff --git a/src/views/outsideChainnew.vue b/src/views/outsideChainnew.vue
index b9e39b1..1e83bb8 100644
--- a/src/views/outsideChainnew.vue
+++ b/src/views/outsideChainnew.vue
@@ -8,7 +8,9 @@
{{
kcb
? kcb
- : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸"+localStorage.getItem("orgname")+"鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤闅忚闂嵎銆�"
+ : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸" +
+ localStorage.getItem("orgname") +
+ "鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤闅忚闂嵎銆�"
}}
<!-- 浜茬埍鐨勬偅鑰�/瀹跺睘鎮ㄥソ锛屼负浜嗘洿濂界殑浜嗚В鎮ㄥ嚭闄㈠悗鐨勫悍澶嶆儏鍐碉紝缁欐偍閫傚綋鍙婃椂鐨勫仴搴锋寚瀵硷紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤鍑洪櫌闅忚闂嵎璋冩煡銆� -->
</div>
@@ -82,7 +84,11 @@
</div>
</div>
<!-- 濉┖ -->
- <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 4||item.scriptType == 3">
+ <div
+ class="scriptTopic-dev"
+ :key="index"
+ v-if="item.scriptType == 4 || item.scriptType == 3"
+ >
<div class="dev-text">
{{ index + 1 }}銆�<span style="line-height: 1.5"
>{{ item.scriptContent
@@ -163,6 +169,7 @@
kcb: "",
excep: "",
taskname: "",
+ param6: null,
questionList: [
// {
// scriptType: 1,
@@ -288,12 +295,14 @@
geturlinfo(url).then((res) => {
if (res.code == 200) {
+
this.getQuestionnaire(
res.data.param1,
res.data.param2,
res.data.param3,
res.data.param5
);
+ this.param6 = res.data.param6;
}
});
},
@@ -385,10 +394,12 @@
let form = {
param1: this.taskid,
param2: this.patid,
+ param6: this.param6,
excep: this.excep,
type: this.type,
serviceSubtaskDetailList: [],
};
+
const arr = structuredClone(this.questionList);
// arr.forEach((item) => {
// item.asrtext = JSON.stringify(item.questionResult);
@@ -413,13 +424,14 @@
let form = {
param1: this.taskid,
param2: this.patid,
+ param6: this.param6,
type: this.type,
ivrTaskTemplateScriptVOList: [],
};
const arr = structuredClone(this.questionList);
console.log(arr, "srr");
arr.forEach((item, index) => {
- if (item.scriptType == 3||item.scriptType == 4) return;
+ if (item.scriptType == 3 || item.scriptType == 4) return;
var obj = item.ivrTaskScriptTargetoptionList.find(
(items) => items.targetvalue == item.questionResult
);
diff --git a/src/views/outsideChainwtnew.vue b/src/views/outsideChainwtnew.vue
index 205e6d2..0dcd0dd 100644
--- a/src/views/outsideChainwtnew.vue
+++ b/src/views/outsideChainwtnew.vue
@@ -179,6 +179,7 @@
isabnormal: 0,
taskname: "",
questionList: [],
+ param6:null,
jsy: null,
dialogVisible: false,
Endornot: true,
@@ -231,6 +232,8 @@
res.data.param3,
res.data.param5
);
+ this.param6 = res.data.param6;
+
}
});
},
@@ -319,6 +322,7 @@
let form = {
param1: this.taskid,
param2: this.patid,
+ param6: this.param6,
excep: this.excep,
isabnormal: this.isabnormal,
serviceSubtaskDetailList: [],
@@ -349,6 +353,7 @@
let form = {
param1: this.taskid,
param2: this.patid,
+ param6: this.param6,
svyTaskTemplateScriptVOS: [],
};
const arr = structuredClone(this.questionList);
diff --git a/src/views/patient/propaganda/index.vue b/src/views/patient/propaganda/index.vue
index 2ca5f00..8385ba8 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,7 +50,7 @@
>
</el-option>
</el-select>
- </el-form-item>
+ </el-form-item> -->
<el-form-item label="鎮h�呰寖鍥�" prop="status">
<el-cascader
v-model="topqueryParams.scopetype"
@@ -750,9 +750,9 @@
pageNum: 1,
pageSize: 10,
serviceType: 4,
- searchscope: 2,
+ searchscope: 3,
sendstate: 2,
- leaveldeptcodes: [],
+ leaveldeptcodes: [],
leavehospitaldistrictcodes: [],
},
propss: { multiple: true },
@@ -775,7 +775,7 @@
value: 4,
label: "涓嶆墽琛�",
},
- {
+ {
value: 5,
label: "鍙戦�佸け璐�",
},
@@ -783,7 +783,7 @@
value: 6,
label: "宸插畬鎴�",
},
- {
+ {
value: 7,
label: "瓒呮椂",
},
diff --git a/src/views/patient/propaganda/particty.vue b/src/views/patient/propaganda/particty.vue
index f1849b8..9ef35f0 100644
--- a/src/views/patient/propaganda/particty.vue
+++ b/src/views/patient/propaganda/particty.vue
@@ -1309,7 +1309,7 @@
};
this.currenttype = this.$route.query.type;
this.title = "闅忚鍐呭鍒楄〃";
- this.tableLabel = this.tableLabelwj||[];
+ this.tableLabel = this.tableLabelwj || [];
if (this.form.serviceType == 1) {
this.checkboxlist = [
{
@@ -1329,9 +1329,13 @@
label: "寰俊鍏紬鍙�",
},
];
- } else if (this.form.serviceType == 6) {
+ } else if (
+ this.form.serviceType == 6 ||
+ this.form.serviceType == 14 ||
+ this.form.serviceType == 15
+ ) {
this.checkboxlist = [
- {
+ {
value: "1",
label: "浜哄伐",
},
@@ -1482,8 +1486,8 @@
this.leavehospitaldistrictcodes = [];
}
if (this.checkList) {
- this.form.preachform = this.checkList.join(",")||[];
- this.form.preachformList = this.selectedOrder||[];
+ this.form.preachform = this.checkList.join(",") || [];
+ this.form.preachformList = this.selectedOrder || [];
} else {
this.$modal.msgError("璇烽�夋嫨鏈嶅姟绫诲瀷");
this.submitLoading = false;
@@ -1615,7 +1619,7 @@
// 鐤剧梾
this.getillness(this.form.libtemplateid);
- selectInfoByCondition({id:this.form.templateid} ).then((res) => {
+ selectInfoByCondition({ id: this.form.templateid }).then((res) => {
if (res.code == 200) {
this.previewtf = true;
this.previewtftype = 1;
@@ -1941,7 +1945,7 @@
: [];
this.overallCase = this.form.patTaskRelevances.concat();
this.checkList = this.form.preachform.split(",") || [];
- this.selectedOrder = this.form.preachformList||[];
+ this.selectedOrder = this.form.preachformList || [];
this.overallCase.forEach((item) => {
if (item.endtime) {
@@ -2288,7 +2292,7 @@
});
},
checkSelectionChange(selectedValues, selectedOrder) {
- this.selectedOrder = selectedValues||[];
+ this.selectedOrder = selectedValues || [];
console.log("褰撳墠閫変腑:", selectedValues);
console.log("閫変腑椤哄簭:", selectedOrder);
},
@@ -2329,6 +2333,8 @@
this.form.libtemplateid = this.objyl.id;
this.objyl.isoperation = 1;
+ console.log(this.objyl, "this.objyl");
+
this.objyl.ivrLibaTemplateScriptVOList.forEach((item) => {
item.ivrTaskScriptTargetoptionList =
item.ivrLibaScriptTargetoptionList;
diff --git a/src/views/repositoryai/verbaltrick/index.vue b/src/views/repositoryai/verbaltrick/index.vue
index 29576cc..c55aa46 100644
--- a/src/views/repositoryai/verbaltrick/index.vue
+++ b/src/views/repositoryai/verbaltrick/index.vue
@@ -637,7 +637,7 @@
handleAdd() {
this.$router.push({
path: "/knowledge/verbaltrick/particulars/",
- query: { id: "", categoryid: this.queryParams.categoryid },
+ query: { id: "", assortid: this.queryParams.assortid },
});
},
// 鍒嗙被鏍�-----------------------------------------
diff --git a/src/views/repositoryai/verbaltrick/particulars/index.vue b/src/views/repositoryai/verbaltrick/particulars/index.vue
index 44205a7..57d2f7a 100644
--- a/src/views/repositoryai/verbaltrick/particulars/index.vue
+++ b/src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -814,7 +814,9 @@
// 鏍�
getbaltrickclassify({}).then((res) => {
this.questionclass = res.rows;
- console.log(res);
+ if (this.$route.query.assortid) {
+ this.indexform.assortid = Number(this.$route.query.assortid);
+ }
});
},
diff --git a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
index 3b71ece..546bc0c 100644
--- a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
@@ -26,28 +26,108 @@
:summary-method="getInnerSummaries"
>
<el-table-column label="鍖荤敓濮撳悕" prop="drname" align="center" />
- <el-table-column label="绉戝" width="120" prop="deptname" align="center" />
- <el-table-column label="鍑洪櫌浜烘" prop="dischargeCount" align="center" />
- <el-table-column label="鍑洪櫌浜烘" align="center" key="dischargeCount" prop="dischargeCount" />
- <el-table-column label="鏃犻渶闅忚浜烘" align="center" width="100" key="nonFollowUp" prop="nonFollowUp" />
- <el-table-column label="搴旈殢璁夸汉娆�" align="center" width="100" key="followUpNeeded" prop="followUpNeeded" />
+ <el-table-column
+ label="绉戝"
+ width="120"
+ prop="deptname"
+ align="center"
+ />
+ <el-table-column
+ label="鍑洪櫌浜烘"
+ prop="dischargeCount"
+ align="center"
+ />
+ <el-table-column
+ label="鍑洪櫌浜烘"
+ align="center"
+ key="dischargeCount"
+ prop="dischargeCount"
+ />
+ <el-table-column
+ label="鏃犻渶闅忚浜烘"
+ align="center"
+ width="100"
+ key="nonFollowUp"
+ prop="nonFollowUp"
+ />
+ <el-table-column
+ label="搴旈殢璁夸汉娆�"
+ align="center"
+ width="100"
+ key="followUpNeeded"
+ prop="followUpNeeded"
+ />
<el-table-column align="center" label="棣栨鍑洪櫌闅忚">
- <el-table-column label="闇�闅忚" align="center" key="needFollowUp" prop="needFollowUp" />
- <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUp" prop="pendingFollowUp" />
- <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccess" prop="followUpSuccess" />
- <el-table-column label="闅忚澶辫触" align="center" key="followUpFail" prop="followUpFail" />
- <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRate" prop="followUpRate" />
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鍙婃椂鐜�" align="center" width="120" key="rate" prop="rate">
+ <el-table-column
+ label="闇�闅忚"
+ align="center"
+ key="needFollowUp"
+ prop="needFollowUp"
+ />
+ <el-table-column
+ label="寰呴殢璁�"
+ align="center"
+ key="pendingFollowUp"
+ prop="pendingFollowUp"
+ />
+ <el-table-column
+ label="闅忚鎴愬姛"
+ align="center"
+ key="followUpSuccess"
+ prop="followUpSuccess"
+ />
+ <el-table-column
+ label="闅忚澶辫触"
+ align="center"
+ key="followUpFail"
+ prop="followUpFail"
+ />
+ <el-table-column
+ label="闅忚鐜�"
+ align="center"
+ width="120"
+ key="followUpRate"
+ prop="followUpRate"
+ />
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="鍙婃椂鐜�"
+ align="center"
+ width="120"
+ key="rate"
+ prop="rate"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleSeeDetails(scope.row)">
- <span class="button-zx">{{ (Number(scope.row.rate) * 100).toFixed(2) }}%</span>
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleSeeDetails(scope.row)"
+ >
+ <span class="button-zx"
+ >{{ (Number(scope.row.rate) * 100).toFixed(2) }}%</span
+ >
</el-button>
</template>
</el-table-column>
- <el-table-column label="浜哄伐" align="center" key="manual" prop="manual" />
- <el-table-column label="鐭俊" align="center" key="sms" prop="sms" />
- <el-table-column label="寰俊" align="center" key="weChat" prop="weChat" />
+ <el-table-column
+ label="浜哄伐"
+ align="center"
+ key="manual"
+ prop="manual"
+ />
+ <el-table-column
+ label="鐭俊"
+ align="center"
+ key="sms"
+ prop="sms"
+ />
+ <el-table-column
+ label="寰俊"
+ align="center"
+ key="weChat"
+ prop="weChat"
+ />
</el-table-column>
</el-table>
</template>
@@ -64,65 +144,189 @@
:show-overflow-tooltip="true"
:sort-method="sortChineseNumber"
/>
- <el-table-column label="绉戝" align="center" key="deptname" prop="deptname" :show-overflow-tooltip="true" />
- <el-table-column label="鍑洪櫌浜烘" align="center" key="dischargeCount" prop="dischargeCount" />
- <el-table-column label="鏃犻渶闅忚浜烘" align="center" width="100" key="nonFollowUp" prop="nonFollowUp" />
- <el-table-column label="搴旈殢璁夸汉娆�" align="center" width="100" key="followUpNeeded" prop="followUpNeeded" />
+ <el-table-column
+ label="绉戝"
+ align="center"
+ key="deptname"
+ prop="deptname"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鍑洪櫌浜烘"
+ align="center"
+ key="dischargeCount"
+ prop="dischargeCount"
+ />
+ <el-table-column
+ label="鏃犻渶闅忚浜烘"
+ align="center"
+ width="100"
+ key="nonFollowUp"
+ prop="nonFollowUp"
+ />
+ <el-table-column
+ label="搴旈殢璁夸汉娆�"
+ align="center"
+ width="100"
+ key="followUpNeeded"
+ prop="followUpNeeded"
+ />
<el-table-column align="center" label="棣栨鍑洪櫌闅忚">
- <el-table-column label="闇�闅忚" align="center" key="needFollowUp" prop="needFollowUp">
+ <el-table-column
+ label="闇�闅忚"
+ align="center"
+ key="needFollowUp"
+ prop="needFollowUp"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'needFollowUpInfo', '闇�闅忚鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'needFollowUpInfo', '闇�闅忚鍒楄〃')
+ "
+ >
<span class="button-zx">{{ scope.row.needFollowUp }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUp" prop="pendingFollowUp">
+ <el-table-column
+ label="寰呴殢璁�"
+ align="center"
+ key="pendingFollowUp"
+ prop="pendingFollowUp"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'pendingFollowUpInfo', '寰呴殢璁垮垪琛�')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'pendingFollowUpInfo',
+ '寰呴殢璁垮垪琛�'
+ )
+ "
+ >
<span class="button-zx">{{ scope.row.pendingFollowUp }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccess" prop="followUpSuccess">
+ <el-table-column
+ label="闅忚鎴愬姛"
+ align="center"
+ key="followUpSuccess"
+ prop="followUpSuccess"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'followUpSuccessInfo', '闅忚鎴愬姛鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'followUpSuccessInfo',
+ '闅忚鎴愬姛鍒楄〃'
+ )
+ "
+ >
<span class="button-zx">{{ scope.row.followUpSuccess }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="闅忚澶辫触" align="center" key="followUpFail" prop="followUpFail">
+ <el-table-column
+ label="闅忚澶辫触"
+ align="center"
+ key="followUpFail"
+ prop="followUpFail"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'followUpFailInfo', '闅忚澶辫触鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'followUpFailInfo',
+ '闅忚澶辫触鍒楄〃'
+ )
+ "
+ >
<span class="button-zx">{{ scope.row.followUpFail }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRate" prop="followUpRate" />
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鍙婃椂鐜�" align="center" width="120" key="rate" prop="rate">
+ <el-table-column
+ label="闅忚鐜�"
+ align="center"
+ width="120"
+ key="followUpRate"
+ prop="followUpRate"
+ />
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="鍙婃椂鐜�"
+ align="center"
+ width="120"
+ key="rate"
+ prop="rate"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleSeeDetails(scope.row)">
- <span class="button-zx">{{ (Number(scope.row.rate) * 100).toFixed(2) }}%</span>
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleSeeDetails(scope.row)"
+ >
+ <span class="button-zx"
+ >{{ (Number(scope.row.rate) * 100).toFixed(2) }}%</span
+ >
</el-button>
</template>
</el-table-column>
- <el-table-column label="浜哄伐" align="center" key="manual" prop="manual">
+ <el-table-column
+ label="浜哄伐"
+ align="center"
+ key="manual"
+ prop="manual"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'manualInfo', '浜哄伐闅忚鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'manualInfo', '浜哄伐闅忚鍒楄〃')
+ "
+ >
<span class="button-zx">{{ scope.row.manual }}</span>
</el-button>
</template>
</el-table-column>
<el-table-column label="鐭俊" align="center" key="sms" prop="sms">
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'smsInfo', '鐭俊闅忚鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleViewDetails(scope.row, 'smsInfo', '鐭俊闅忚鍒楄〃')"
+ >
<span class="button-zx">{{ scope.row.sms }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="寰俊" align="center" key="weChat" prop="weChat">
+ <el-table-column
+ label="寰俊"
+ align="center"
+ key="weChat"
+ prop="weChat"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'weChatInfo', '寰俊闅忚鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'weChatInfo', '寰俊闅忚鍒楄〃')
+ "
+ >
<span class="button-zx">{{ scope.row.weChat }}</span>
</el-button>
</template>
@@ -130,13 +334,53 @@
</el-table-column>
<!-- 闅忚鎯呭喌鍒楋紙浠呬附姘村競涓尰闄㈡樉绀猴級 -->
- <el-table-column v-if="orgname == '涓芥按甯備腑鍖婚櫌'" align="center" label="闅忚鎯呭喌">
- <el-table-column label="姝e父璇煶" align="center" width="100" key="taskSituation1" prop="taskSituation1" />
- <el-table-column label="鎮h�呮嫆鎺ユ垨鎷掕" align="center" width="100" key="taskSituation2" prop="taskSituation2" />
- <el-table-column label="闈㈣鎴栬�呮帴璇�" align="center" width="100" key="taskSituation3" prop="taskSituation3" />
- <el-table-column label="寰俊闅忚" align="center" width="100" key="taskSituation4" prop="taskSituation4" />
- <el-table-column label="闅忚鐢佃瘽涓嶆纭�" align="center" width="100" key="taskSituation5" prop="taskSituation5" />
- <el-table-column label="鍏朵粬鎯呭喌涓嶅疁闅忚" align="center" width="100" key="taskSituation6" prop="taskSituation6" />
+ <el-table-column
+ v-if="orgname == '涓芥按甯備腑鍖婚櫌'"
+ align="center"
+ label="闅忚鎯呭喌"
+ >
+ <el-table-column
+ label="姝e父璇煶"
+ align="center"
+ width="100"
+ key="taskSituation1"
+ prop="taskSituation1"
+ />
+ <el-table-column
+ label="鎮h�呮嫆鎺ユ垨鎷掕"
+ align="center"
+ width="100"
+ key="taskSituation2"
+ prop="taskSituation2"
+ />
+ <el-table-column
+ label="闈㈣鎴栬�呮帴璇�"
+ align="center"
+ width="100"
+ key="taskSituation3"
+ prop="taskSituation3"
+ />
+ <el-table-column
+ label="寰俊闅忚"
+ align="center"
+ width="100"
+ key="taskSituation4"
+ prop="taskSituation4"
+ />
+ <el-table-column
+ label="闅忚鐢佃瘽涓嶆纭�"
+ align="center"
+ width="100"
+ key="taskSituation5"
+ prop="taskSituation5"
+ />
+ <el-table-column
+ label="鍏朵粬鎯呭喌涓嶅疁闅忚"
+ align="center"
+ width="100"
+ key="taskSituation6"
+ prop="taskSituation6"
+ />
</el-table-column>
</el-table>
</div>
@@ -149,163 +393,251 @@
import { saveAs } from "file-saver";
export default {
- name: 'FirstFollowUp',
+ name: "FirstFollowUp",
props: {
queryParams: {
type: Object,
- required: true
+ required: true,
},
flatArrayhospit: {
type: Array,
- default: () => []
+ default: () => [],
},
flatArraydept: {
type: Array,
- default: () => []
+ default: () => [],
},
options: {
type: Array,
- default: () => []
+ default: () => [],
},
orgname: {
type: String,
- default: ''
- }
+ default: "",
+ },
},
data() {
return {
tableData: [],
loading: false,
expands: [],
- ids: []
- }
+ ids: [],
+ patientqueryParams: { pn: 1, ps: 10 },
+ };
},
methods: {
loadData() {
- this.loading = true
+ this.loading = true;
const params = {
...this.queryParams,
visitCount: 1,
- leavehospitaldistrictcodes: this.queryParams.leavehospitaldistrictcodes.includes("all")
- ? this.getAllWardCodes()
- : this.queryParams.leavehospitaldistrictcodes,
+ leavehospitaldistrictcodes:
+ this.queryParams.leavehospitaldistrictcodes.includes("all")
+ ? this.getAllWardCodes()
+ : this.queryParams.leavehospitaldistrictcodes,
deptcodes: this.queryParams.deptcodes.includes("all")
? this.getAllDeptCodes()
- : this.queryParams.deptcodes
- }
+ : this.queryParams.deptcodes,
+ };
- delete params.leavehospitaldistrictcodes.all
- delete params.deptcodes.all
+ delete params.leavehospitaldistrictcodes.all;
+ delete params.deptcodes.all;
getSfStatistics(params)
- .then(response => {
- this.tableData = this.customSort(response.data)
+ .then((response) => {
+ this.tableData = this.customSort(response.data);
})
- .catch(error => {
- console.error("鑾峰彇棣栨闅忚鏁版嵁澶辫触:", error)
- this.$message.error("鑾峰彇棣栨闅忚鏁版嵁澶辫触")
+ .catch((error) => {
+ console.error("鑾峰彇棣栨闅忚鏁版嵁澶辫触:", error);
+ this.$message.error("鑾峰彇棣栨闅忚鏁版嵁澶辫触");
})
.finally(() => {
- this.loading = false
- })
+ this.loading = false;
+ });
},
getAllWardCodes() {
return this.flatArrayhospit
- .filter(item => item.value !== 'all')
- .map(item => item.value)
+ .filter((item) => item.value !== "all")
+ .map((item) => item.value);
},
getAllDeptCodes() {
return this.flatArraydept
- .filter(item => item.value !== 'all')
- .map(item => item.value)
+ .filter((item) => item.value !== "all")
+ .map((item) => item.value);
},
customSort(data) {
const order = [
- "涓�","浜�","涓�","鍥�","浜�","鍏�","涓�","鍏�","涔�","鍗�",
- "鍗佷竴","鍗佷簩","鍗佷笁","鍗佸洓","鍗佷簲","鍗佸叚","鍗佷竷","鍗佸叓","鍗佷節","浜屽崄",
- "浜屽崄涓�","浜屽崄浜�","浜屽崄涓�","浜屽崄鍥�","浜屽崄浜�","浜屽崄鍏�","浜屽崄涓�","浜屽崄鍏�","浜屽崄涔�","涓夊崄",
- "涓夊崄涓�","涓夊崄浜�","涓夊崄涓�","涓夊崄鍥�","涓夊崄浜�","涓夊崄鍏�","涓夊崄涓�","涓夊崄鍏�","涓夊崄涔�","鍥涘崄",
- "鍥涘崄涓�","鍥涘崄浜�","鍥涘崄涓�","鍥涘崄鍥�","鍥涘崄浜�"
- ]
+ "涓�",
+ "浜�",
+ "涓�",
+ "鍥�",
+ "浜�",
+ "鍏�",
+ "涓�",
+ "鍏�",
+ "涔�",
+ "鍗�",
+ "鍗佷竴",
+ "鍗佷簩",
+ "鍗佷笁",
+ "鍗佸洓",
+ "鍗佷簲",
+ "鍗佸叚",
+ "鍗佷竷",
+ "鍗佸叓",
+ "鍗佷節",
+ "浜屽崄",
+ "浜屽崄涓�",
+ "浜屽崄浜�",
+ "浜屽崄涓�",
+ "浜屽崄鍥�",
+ "浜屽崄浜�",
+ "浜屽崄鍏�",
+ "浜屽崄涓�",
+ "浜屽崄鍏�",
+ "浜屽崄涔�",
+ "涓夊崄",
+ "涓夊崄涓�",
+ "涓夊崄浜�",
+ "涓夊崄涓�",
+ "涓夊崄鍥�",
+ "涓夊崄浜�",
+ "涓夊崄鍏�",
+ "涓夊崄涓�",
+ "涓夊崄鍏�",
+ "涓夊崄涔�",
+ "鍥涘崄",
+ "鍥涘崄涓�",
+ "鍥涘崄浜�",
+ "鍥涘崄涓�",
+ "鍥涘崄鍥�",
+ "鍥涘崄浜�",
+ ];
return data.sort((a, b) => {
const getIndex = (name) => {
- if (!name || typeof name !== "string") return -1
- const chineseMatch = name.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/)
+ if (!name || typeof name !== "string") return -1;
+ const chineseMatch = name.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
if (chineseMatch && chineseMatch[1]) {
- return order.indexOf(chineseMatch[1])
+ return order.indexOf(chineseMatch[1]);
}
- const arabicMatch = name.match(/^(\d+)/)
+ const arabicMatch = name.match(/^(\d+)/);
if (arabicMatch && arabicMatch[1]) {
- const num = parseInt(arabicMatch[1], 10)
+ const num = parseInt(arabicMatch[1], 10);
if (num >= 1 && num <= 45) {
- return num - 1
+ return num - 1;
}
}
- return -1
- }
+ return -1;
+ };
- const indexA = getIndex(a.leavehospitaldistrictname)
- const indexB = getIndex(b.leavehospitaldistrictname)
+ const indexA = getIndex(a.leavehospitaldistrictname);
+ const indexB = getIndex(b.leavehospitaldistrictname);
if (indexA === -1 && indexB === -1) {
- return (a.leavehospitaldistrictname || "").localeCompare(b.leavehospitaldistrictname || "")
+ return (a.leavehospitaldistrictname || "").localeCompare(
+ b.leavehospitaldistrictname || ""
+ );
}
- if (indexA === -1) return 1
- if (indexB === -1) return -1
- return indexA - indexB
- })
+ if (indexA === -1) return 1;
+ if (indexB === -1) return -1;
+ return indexA - indexB;
+ });
},
sortChineseNumber(aRow, bRow) {
- const a = aRow.leavehospitaldistrictname
- const b = bRow.leavehospitaldistrictname
+ const a = aRow.leavehospitaldistrictname;
+ const b = bRow.leavehospitaldistrictname;
const chineseNumMap = {
- 涓�:1,浜�:2,涓�:3,鍥�:4,浜�:5,鍏�:6,涓�:7,鍏�:8,涔�:9,鍗�:10,
- 鍗佷竴:11,鍗佷簩:12,鍗佷笁:13,鍗佸洓:14,鍗佷簲:15,鍗佸叚:16,鍗佷竷:17,鍗佸叓:18,鍗佷節:19,浜屽崄:20,
- 浜屽崄涓�:21,浜屽崄浜�:22,浜屽崄涓�:23,浜屽崄鍥�:24,浜屽崄浜�:25,浜屽崄鍏�:26,浜屽崄涓�:27,浜屽崄鍏�:28,浜屽崄涔�:29,涓夊崄:30,
- 涓夊崄涓�:31,涓夊崄浜�:32,涓夊崄涓�:33,涓夊崄鍥�:34,涓夊崄浜�:35,涓夊崄鍏�:36,涓夊崄涓�:37,涓夊崄鍏�:38,涓夊崄涔�:39,鍥涘崄:40,
- 鍥涘崄涓�:41,鍥涘崄浜�:42,鍥涘崄涓�:43,鍥涘崄鍥�:44,鍥涘崄浜�:45
- }
+ 涓�: 1,
+ 浜�: 2,
+ 涓�: 3,
+ 鍥�: 4,
+ 浜�: 5,
+ 鍏�: 6,
+ 涓�: 7,
+ 鍏�: 8,
+ 涔�: 9,
+ 鍗�: 10,
+ 鍗佷竴: 11,
+ 鍗佷簩: 12,
+ 鍗佷笁: 13,
+ 鍗佸洓: 14,
+ 鍗佷簲: 15,
+ 鍗佸叚: 16,
+ 鍗佷竷: 17,
+ 鍗佸叓: 18,
+ 鍗佷節: 19,
+ 浜屽崄: 20,
+ 浜屽崄涓�: 21,
+ 浜屽崄浜�: 22,
+ 浜屽崄涓�: 23,
+ 浜屽崄鍥�: 24,
+ 浜屽崄浜�: 25,
+ 浜屽崄鍏�: 26,
+ 浜屽崄涓�: 27,
+ 浜屽崄鍏�: 28,
+ 浜屽崄涔�: 29,
+ 涓夊崄: 30,
+ 涓夊崄涓�: 31,
+ 涓夊崄浜�: 32,
+ 涓夊崄涓�: 33,
+ 涓夊崄鍥�: 34,
+ 涓夊崄浜�: 35,
+ 涓夊崄鍏�: 36,
+ 涓夊崄涓�: 37,
+ 涓夊崄鍏�: 38,
+ 涓夊崄涔�: 39,
+ 鍥涘崄: 40,
+ 鍥涘崄涓�: 41,
+ 鍥涘崄浜�: 42,
+ 鍥涘崄涓�: 43,
+ 鍥涘崄鍥�: 44,
+ 鍥涘崄浜�: 45,
+ };
const getNumberFromText = (text) => {
- if (!text || typeof text !== "string") return -1
- const match = text.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/)
+ if (!text || typeof text !== "string") return -1;
+ const match = text.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
if (match && match[1]) {
- const chineseNum = match[1]
- return chineseNumMap[chineseNum] !== undefined ? chineseNumMap[chineseNum] : -1
+ const chineseNum = match[1];
+ return chineseNumMap[chineseNum] !== undefined
+ ? chineseNumMap[chineseNum]
+ : -1;
}
- const arabicMatch = text.match(/^(\d+)/)
+ const arabicMatch = text.match(/^(\d+)/);
if (arabicMatch && arabicMatch[1]) {
- const num = parseInt(arabicMatch[1], 10)
- return num >= 1 && num <= 45 ? num : -1
+ const num = parseInt(arabicMatch[1], 10);
+ return num >= 1 && num <= 45 ? num : -1;
}
- return -1
- }
+ return -1;
+ };
- const numA = getNumberFromText(a)
- const numB = getNumberFromText(b)
+ const numA = getNumberFromText(a);
+ const numB = getNumberFromText(b);
if (numA === -1 && numB === -1) {
- return (a || "").localeCompare(b || "")
+ return (a || "").localeCompare(b || "");
}
- if (numA === -1) return 1
- if (numB === -1) return -1
- return numA - numB
+ if (numA === -1) return 1;
+ if (numB === -1) return -1;
+ return numA - numB;
},
getRowKey(row) {
- return row.statisticaltype === 1 ? row.leavehospitaldistrictcode : row.deptcode
+ return row.statisticaltype === 1
+ ? row.leavehospitaldistrictcode
+ : row.deptcode;
},
handleRowClick(row) {
if (this.expands.includes(this.getRowKey(row))) {
- this.expands = []
- return
+ this.expands = [];
+ return;
}
const params = {
@@ -315,226 +647,253 @@
: this.queryParams.deptcodes,
leavehospitaldistrictcodes: [row.leavehospitaldistrictcode],
drcode: "1",
- visitCount: 1
- }
+ visitCount: 1,
+ };
- delete params.leavehospitaldistrictcodes.all
- delete params.deptcodes.all
+ delete params.leavehospitaldistrictcodes.all;
+ delete params.deptcodes.all;
if (!row.doctorStats) {
- this.loading = true
+ this.loading = true;
getSfStatistics(params).then((res) => {
- this.$set(row, "doctorStats", res.data)
- this.expands = [this.getRowKey(row)]
- this.loading = false
- })
+ this.$set(row, "doctorStats", res.data);
+ this.expands = [this.getRowKey(row)];
+ this.loading = false;
+ });
} else {
- this.expands = [this.getRowKey(row)]
+ this.expands = [this.getRowKey(row)];
}
},
getSummaries(param) {
- const { columns, data } = param
- const sums = []
+ const { columns, data } = param;
+ const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
- sums[index] = "鍚堣"
- return
+ sums[index] = "鍚堣";
+ return;
}
if (index === 1 || index === 2) {
- sums[index] = "/"
- return
+ sums[index] = "/";
+ return;
}
if (column.property === "followUpRate" || column.property === "rate") {
const percentageValues = data
.map((item) => {
- const value = item[column.property]
- if (!value || value === "-" || value === "0%") return null
+ const value = item[column.property];
+ if (!value || value === "-" || value === "0%") return null;
if (typeof value === "string" && value.includes("%")) {
- const numValue = parseFloat(value.replace("%", "")) / 100
- return isNaN(numValue) ? null : numValue
+ const numValue = parseFloat(value.replace("%", "")) / 100;
+ return isNaN(numValue) ? null : numValue;
} else {
- const numValue = parseFloat(value)
- return isNaN(numValue) ? null : numValue
+ const numValue = parseFloat(value);
+ return isNaN(numValue) ? null : numValue;
}
})
- .filter((value) => value !== null && value !== 0)
+ .filter((value) => value !== null && value !== 0);
if (percentageValues.length > 0) {
- const average = percentageValues.reduce((sum, value) => sum + value, 0) / percentageValues.length
- sums[index] = (average * 100).toFixed(2) + "%"
+ const average =
+ percentageValues.reduce((sum, value) => sum + value, 0) /
+ percentageValues.length;
+ sums[index] = (average * 100).toFixed(2) + "%";
} else {
- sums[index] = "0.00%"
+ sums[index] = "0.00%";
}
} else {
const values = data.map((item) => {
- const value = item[column.property]
- if (value === "-" || value === "" || value === null) return 0
- return Number(value) || 0
- })
+ const value = item[column.property];
+ if (value === "-" || value === "" || value === null) return 0;
+ return Number(value) || 0;
+ });
if (!values.every((value) => isNaN(value))) {
- sums[index] = values.reduce((prev, curr) => prev + curr, 0)
- sums[index] = this.formatNumber(sums[index])
+ sums[index] = values.reduce((prev, curr) => prev + curr, 0);
+ sums[index] = this.formatNumber(sums[index]);
} else {
- sums[index] = "-"
+ sums[index] = "-";
}
}
- })
+ });
- return sums
+ return sums;
},
getInnerSummaries(param) {
- const { columns, data } = param
- const sums = []
+ const { columns, data } = param;
+ const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
- sums[index] = "灏忚"
- return
+ sums[index] = "灏忚";
+ return;
}
if (column.property === "drname" || column.property === "deptname") {
- sums[index] = "-"
- return
+ sums[index] = "-";
+ return;
}
if (column.property === "followUpRate" || column.property === "rate") {
const percentageValues = data
.map((item) => {
- const value = item[column.property]
- if (!value || value === "-" || value === "0%") return null
+ const value = item[column.property];
+ if (!value || value === "-" || value === "0%") return null;
if (typeof value === "string" && value.includes("%")) {
- const numValue = parseFloat(value.replace("%", "")) / 100
- return isNaN(numValue) ? null : numValue
+ const numValue = parseFloat(value.replace("%", "")) / 100;
+ return isNaN(numValue) ? null : numValue;
} else {
- const numValue = parseFloat(value)
- return isNaN(numValue) ? null : numValue
+ const numValue = parseFloat(value);
+ return isNaN(numValue) ? null : numValue;
}
})
- .filter((value) => value !== null && value !== 0)
+ .filter((value) => value !== null && value !== 0);
if (percentageValues.length > 0) {
- const average = percentageValues.reduce((sum, value) => sum + value, 0) / percentageValues.length
- sums[index] = (average * 100).toFixed(2) + "%"
+ const average =
+ percentageValues.reduce((sum, value) => sum + value, 0) /
+ percentageValues.length;
+ sums[index] = (average * 100).toFixed(2) + "%";
} else {
- sums[index] = "0.00%"
+ sums[index] = "0.00%";
}
} else {
const values = data.map((item) => {
- const value = item[column.property]
- if (value === "-" || value === "" || value === null) return 0
- return Number(value) || 0
- })
+ const value = item[column.property];
+ if (value === "-" || value === "" || value === null) return 0;
+ return Number(value) || 0;
+ });
if (!values.every((value) => isNaN(value))) {
- sums[index] = values.reduce((prev, curr) => prev + curr, 0)
- sums[index] = this.formatNumber(sums[index])
+ sums[index] = values.reduce((prev, curr) => prev + curr, 0);
+ sums[index] = this.formatNumber(sums[index]);
} else {
- sums[index] = "-"
+ sums[index] = "-";
}
}
- })
+ });
- return sums
+ return sums;
},
formatNumber(num) {
- if (isNaN(num)) return "-"
- return Number.isInteger(num) ? num.toString() : num.toFixed(0)
+ if (isNaN(num)) return "-";
+ return Number.isInteger(num) ? num.toString() : num.toFixed(0);
},
handleSelectionChange(selection) {
- this.ids = selection.map((item) => item.tagid)
+ this.ids = selection.map((item) => item.tagid);
},
handleViewDetails(row, infoKey, titleSuffix) {
- const title = `${row.leavehospitaldistrictname || row.deptname}${titleSuffix}`
- this.$emit('view-details', row[infoKey], title)
+ const title = `${
+ row.leavehospitaldistrictname || row.deptname
+ }${titleSuffix}`;
+ this.$emit("view-details", row[infoKey], title);
},
handleSeeDetails(row) {
- this.$emit('see-details', row)
+ this.$emit("see-details", row);
},
async exportTable() {
try {
- let dateRangeString = ""
- let sheetNameSuffix = ""
+ let dateRangeString = "";
+ let sheetNameSuffix = "";
- if (this.queryParams.dateRange && this.queryParams.dateRange.length === 2) {
- const startDateStr = this.queryParams.dateRange[0]
- const endDateStr = this.queryParams.dateRange[1]
+ if (
+ this.queryParams.dateRange &&
+ this.queryParams.dateRange.length === 2
+ ) {
+ const startDateStr = this.queryParams.dateRange[0];
+ const endDateStr = this.queryParams.dateRange[1];
const formatDateForDisplay = (dateTimeStr) => {
- return dateTimeStr.split(" ")[0]
- }
- const startDateFormatted = formatDateForDisplay(startDateStr)
- const endDateFormatted = formatDateForDisplay(endDateStr)
- dateRangeString = `${startDateFormatted}鑷�${endDateFormatted}`
- sheetNameSuffix = `${startDateFormatted}鑷�${endDateFormatted}`
+ return dateTimeStr.split(" ")[0];
+ };
+ const startDateFormatted = formatDateForDisplay(startDateStr);
+ const endDateFormatted = formatDateForDisplay(endDateStr);
+ dateRangeString = `${startDateFormatted}鑷�${endDateFormatted}`;
+ sheetNameSuffix = `${startDateFormatted}鑷�${endDateFormatted}`;
} else {
- const now = new Date()
- const currentMonth = now.getMonth() + 1
- dateRangeString = `${currentMonth}鏈坄
- sheetNameSuffix = `${currentMonth}鏈坄
+ const now = new Date();
+ const currentMonth = now.getMonth() + 1;
+ dateRangeString = `${currentMonth}鏈坄;
+ sheetNameSuffix = `${currentMonth}鏈坄;
}
- const excelName = `棣栨鍑洪櫌闅忚缁熻琛╛${dateRangeString}.xlsx`
- const worksheetName = `棣栨闅忚缁熻_${sheetNameSuffix}`
+ const excelName = `棣栨鍑洪櫌闅忚缁熻琛╛${dateRangeString}.xlsx`;
+ const worksheetName = `棣栨闅忚缁熻_${sheetNameSuffix}`;
if (!this.tableData || this.tableData.length === 0) {
- this.$message.warning("鏆傛棤棣栨闅忚鏁版嵁鍙鍑�")
- return false
+ this.$message.warning("鏆傛棤棣栨闅忚鏁版嵁鍙鍑�");
+ return false;
}
- const workbook = new ExcelJS.Workbook()
- const worksheet = workbook.addWorksheet(worksheetName)
+ const workbook = new ExcelJS.Workbook();
+ const worksheet = workbook.addWorksheet(worksheetName);
// 鏋勫缓琛ㄦ牸
- this.buildExportSheet(worksheet, sheetNameSuffix)
+ this.buildExportSheet(worksheet, sheetNameSuffix);
- const buffer = await workbook.xlsx.writeBuffer()
+ const buffer = await workbook.xlsx.writeBuffer();
const blob = new Blob([buffer], {
- type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
- })
- saveAs(blob, excelName)
+ type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ });
+ saveAs(blob, excelName);
- this.$message.success("瀵煎嚭鎴愬姛")
- return true
+ this.$message.success("瀵煎嚭鎴愬姛");
+ return true;
} catch (error) {
- console.error("瀵煎嚭澶辫触:", error)
- this.$message.error(`瀵煎嚭澶辫触: ${error.message}`)
- return false
+ console.error("瀵煎嚭澶辫触:", error);
+ this.$message.error(`瀵煎嚭澶辫触: ${error.message}`);
+ return false;
}
},
buildExportSheet(worksheet, sheetNameSuffix) {
const titleStyle = {
- font: { name: "寰蒋闆呴粦", size: 16, bold: true, color: { argb: "FF000000" } },
- fill: { type: "pattern", pattern: "solid", fgColor: { argb: "FFE6F3FF" } },
+ font: {
+ name: "寰蒋闆呴粦",
+ size: 16,
+ bold: true,
+ color: { argb: "FF000000" },
+ },
+ fill: {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFE6F3FF" },
+ },
alignment: { vertical: "middle", horizontal: "center", wrapText: true },
border: {
top: { style: "thin", color: { argb: "FFD0D0D0" } },
left: { style: "thin", color: { argb: "FFD0D0D0" } },
bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
- right: { style: "thin", color: { argb: "FFD0D0D0" } }
- }
- }
+ right: { style: "thin", color: { argb: "FFD0D0D0" } },
+ },
+ };
const headerStyle = {
- font: { name: "寰蒋闆呴粦", size: 11, bold: true, color: { argb: "FF000000" } },
- fill: { type: "pattern", pattern: "solid", fgColor: { argb: "FFF5F7FA" } },
+ font: {
+ name: "寰蒋闆呴粦",
+ size: 11,
+ bold: true,
+ color: { argb: "FF000000" },
+ },
+ fill: {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFF5F7FA" },
+ },
alignment: { vertical: "middle", horizontal: "center", wrapText: true },
border: {
top: { style: "thin", color: { argb: "FFD0D0D0" } },
left: { style: "thin", color: { argb: "FFD0D0D0" } },
bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
- right: { style: "thin", color: { argb: "FFD0D0D0" } }
- }
- }
+ right: { style: "thin", color: { argb: "FFD0D0D0" } },
+ },
+ };
const cellStyle = {
font: { name: "瀹嬩綋", size: 10, color: { argb: "FF000000" } },
@@ -543,176 +902,243 @@
top: { style: "thin", color: { argb: "FFD0D0D0" } },
left: { style: "thin", color: { argb: "FFD0D0D0" } },
bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
- right: { style: "thin", color: { argb: "FFD0D0D0" } }
- }
- }
+ right: { style: "thin", color: { argb: "FFD0D0D0" } },
+ },
+ };
const summaryStyle = {
- font: { name: "瀹嬩綋", size: 10, bold: true, color: { argb: "FF409EFF" } },
- fill: { type: "pattern", pattern: "solid", fgColor: { argb: "FFF5F7FA" } },
+ font: {
+ name: "瀹嬩綋",
+ size: 10,
+ bold: true,
+ color: { argb: "FF409EFF" },
+ },
+ fill: {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFF5F7FA" },
+ },
alignment: { vertical: "middle", horizontal: "center" },
border: {
top: { style: "thin", color: { argb: "FFD0D0D0" } },
left: { style: "thin", color: { argb: "FFD0D0D0" } },
bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
- right: { style: "thin", color: { argb: "FFD0D0D0" } }
- }
- }
+ right: { style: "thin", color: { argb: "FFD0D0D0" } },
+ },
+ };
// 娣诲姞鏍囬琛�
- worksheet.mergeCells(1, 1, 1, 16)
- const titleCell = worksheet.getCell(1, 1)
- titleCell.value = `棣栨鍑洪櫌闅忚缁熻琛╛${sheetNameSuffix}`
- titleCell.style = titleStyle
- worksheet.getRow(1).height = 35
+ worksheet.mergeCells(1, 1, 1, 16);
+ const titleCell = worksheet.getCell(1, 1);
+ titleCell.value = `棣栨鍑洪櫌闅忚缁熻琛╛${sheetNameSuffix}`;
+ titleCell.style = titleStyle;
+ worksheet.getRow(1).height = 35;
// 琛ㄥご
const secondRowHeaders = [
- "", "鍑洪櫌鐥呭尯", "绉戝", "鍑洪櫌浜烘", "鏃犻渶闅忚浜烘", "搴旈殢璁夸汉娆�",
- "闇�闅忚", "寰呴殢璁�", "闅忚鎴愬姛", "闅忚澶辫触", "闅忚鐜�", "鍙婃椂鐜�", "浜哄伐", "鐭俊", "寰俊"
- ]
+ "",
+ "鍑洪櫌鐥呭尯",
+ "绉戝",
+ "鍑洪櫌浜烘",
+ "鏃犻渶闅忚浜烘",
+ "搴旈殢璁夸汉娆�",
+ "闇�闅忚",
+ "寰呴殢璁�",
+ "闅忚鎴愬姛",
+ "闅忚澶辫触",
+ "闅忚鐜�",
+ "鍙婃椂鐜�",
+ "浜哄伐",
+ "鐭俊",
+ "寰俊",
+ ];
secondRowHeaders.forEach((header, index) => {
- const cell = worksheet.getCell(3, index + 1)
- cell.value = header
- cell.style = headerStyle
- })
+ const cell = worksheet.getCell(3, index + 1);
+ cell.value = header;
+ cell.style = headerStyle;
+ });
// 鍚堝苟鍗曞厓鏍�
for (let i = 1; i <= 6; i++) {
- worksheet.mergeCells(2, i, 3, i)
- const cell = worksheet.getCell(2, i)
- cell.style = headerStyle
+ worksheet.mergeCells(2, i, 3, i);
+ const cell = worksheet.getCell(2, i);
+ cell.style = headerStyle;
}
- worksheet.getCell(2, 1).value = ""
- worksheet.getCell(2, 2).value = "鍑洪櫌鐥呭尯"
- worksheet.getCell(2, 3).value = "绉戝"
- worksheet.getCell(2, 4).value = "鍑洪櫌浜烘"
- worksheet.getCell(2, 5).value = "鏃犻渶闅忚浜烘"
- worksheet.getCell(2, 6).value = "搴旈殢璁夸汉娆�"
+ worksheet.getCell(2, 1).value = "";
+ worksheet.getCell(2, 2).value = "鍑洪櫌鐥呭尯";
+ worksheet.getCell(2, 3).value = "绉戝";
+ worksheet.getCell(2, 4).value = "鍑洪櫌浜烘";
+ worksheet.getCell(2, 5).value = "鏃犻渶闅忚浜烘";
+ worksheet.getCell(2, 6).value = "搴旈殢璁夸汉娆�";
- worksheet.mergeCells(2, 7, 2, 15)
- worksheet.getCell(2, 7).value = "棣栨鍑洪櫌闅忚"
- worksheet.getCell(2, 7).style = headerStyle
+ worksheet.mergeCells(2, 7, 2, 15);
+ worksheet.getCell(2, 7).value = "棣栨鍑洪櫌闅忚";
+ worksheet.getCell(2, 7).style = headerStyle;
- worksheet.getRow(2).height = 28
- worksheet.getRow(3).height = 25
+ worksheet.getRow(2).height = 28;
+ worksheet.getRow(3).height = 25;
// 鏁版嵁琛�
this.tableData.forEach((item, rowIndex) => {
- const dataRow = worksheet.addRow([
- "",
- item.leavehospitaldistrictname || "",
- item.deptname || "",
- item.dischargeCount || 0,
- item.nonFollowUp || 0,
- item.followUpNeeded || 0,
- item.needFollowUp || 0,
- item.pendingFollowUp || 0,
- item.followUpSuccess || 0,
- item.followUpFail || 0,
- item.followUpRate || "0%",
- item.rate ? (Number(item.rate) * 100).toFixed(2) + "%" : "0%",
- item.manual || 0,
- item.sms || 0,
- item.weChat || 0
- ], rowIndex + 4)
+ const dataRow = worksheet.addRow(
+ [
+ "",
+ item.leavehospitaldistrictname || "",
+ item.deptname || "",
+ item.dischargeCount || 0,
+ item.nonFollowUp || 0,
+ item.followUpNeeded || 0,
+ item.needFollowUp || 0,
+ item.pendingFollowUp || 0,
+ item.followUpSuccess || 0,
+ item.followUpFail || 0,
+ item.followUpRate || "0%",
+ item.rate ? (Number(item.rate) * 100).toFixed(2) + "%" : "0%",
+ item.manual || 0,
+ item.sms || 0,
+ item.weChat || 0,
+ ],
+ rowIndex + 4
+ );
dataRow.eachCell((cell) => {
- cell.style = cellStyle
- })
- dataRow.height = 24
- })
+ cell.style = cellStyle;
+ });
+ dataRow.height = 24;
+ });
// 鍚堣琛�
- const summaries = this.getExportSummaries()
- const summaryRow = worksheet.addRow(summaries)
+ const summaries = this.getExportSummaries();
+ const summaryRow = worksheet.addRow(summaries);
summaryRow.eachCell((cell, colNumber) => {
- cell.style = summaryStyle
+ cell.style = summaryStyle;
if (colNumber === 1) {
- cell.value = "鍚堣"
+ cell.value = "鍚堣";
}
- })
- summaryRow.height = 28
+ });
+ summaryRow.height = 28;
// 鍒楀
worksheet.columns = [
- { width: 8 }, { width: 20 }, { width: 15 }, { width: 12 }, { width: 12 }, { width: 12 },
- { width: 10 }, { width: 10 }, { width: 10 }, { width: 10 }, { width: 12 }, { width: 12 },
- { width: 8 }, { width: 8 }, { width: 8 }
- ]
+ { width: 8 },
+ { width: 20 },
+ { width: 15 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 10 },
+ { width: 10 },
+ { width: 10 },
+ { width: 10 },
+ { width: 12 },
+ { width: 12 },
+ { width: 8 },
+ { width: 8 },
+ { width: 8 },
+ ];
},
getExportSummaries() {
- const summaries = ["鍚堣", "/", "/", 0, 0, 0, 0, 0, 0, 0, "0%", "0%", 0, 0, 0]
+ const summaries = [
+ "鍚堣",
+ "/",
+ "/",
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ "0%",
+ "0%",
+ 0,
+ 0,
+ 0,
+ ];
this.tableData.forEach((item) => {
- summaries[3] += Number(item.dischargeCount) || 0
- summaries[4] += Number(item.nonFollowUp) || 0
- summaries[5] += Number(item.followUpNeeded) || 0
- summaries[6] += Number(item.needFollowUp) || 0
- summaries[7] += Number(item.pendingFollowUp) || 0
- summaries[8] += Number(item.followUpSuccess) || 0
- summaries[9] += Number(item.followUpFail) || 0
- summaries[12] += Number(item.manual) || 0
- summaries[13] += Number(item.sms) || 0
- summaries[14] += Number(item.weChat) || 0
- })
+ summaries[3] += Number(item.dischargeCount) || 0;
+ summaries[4] += Number(item.nonFollowUp) || 0;
+ summaries[5] += Number(item.followUpNeeded) || 0;
+ summaries[6] += Number(item.needFollowUp) || 0;
+ summaries[7] += Number(item.pendingFollowUp) || 0;
+ summaries[8] += Number(item.followUpSuccess) || 0;
+ summaries[9] += Number(item.followUpFail) || 0;
+ summaries[12] += Number(item.manual) || 0;
+ summaries[13] += Number(item.sms) || 0;
+ summaries[14] += Number(item.weChat) || 0;
+ });
const followUpRateValues = this.tableData
.map((item) => this.extractPercentageValue(item.followUpRate))
- .filter((value) => value !== null)
+ .filter((value) => value !== null);
const rateValues = this.tableData
.map((item) => this.extractPercentageValue(item.rate))
- .filter((value) => value !== null)
+ .filter((value) => value !== null);
if (followUpRateValues.length > 0) {
- const avgFollowUpRate = followUpRateValues.reduce((sum, val) => sum + val, 0) / followUpRateValues.length
- summaries[10] = (avgFollowUpRate * 100).toFixed(2) + "%"
+ const avgFollowUpRate =
+ followUpRateValues.reduce((sum, val) => sum + val, 0) /
+ followUpRateValues.length;
+ summaries[10] = (avgFollowUpRate * 100).toFixed(2) + "%";
}
if (rateValues.length > 0) {
- const avgRate = rateValues.reduce((sum, val) => sum + val, 0) / rateValues.length
- summaries[11] = (avgRate * 100).toFixed(2) + "%"
+ const avgRate =
+ rateValues.reduce((sum, val) => sum + val, 0) / rateValues.length;
+ summaries[11] = (avgRate * 100).toFixed(2) + "%";
}
- summaries[3] = this.formatNumber(summaries[3])
- summaries[4] = this.formatNumber(summaries[4])
- summaries[5] = this.formatNumber(summaries[5])
- summaries[6] = this.formatNumber(summaries[6])
- summaries[7] = this.formatNumber(summaries[7])
- summaries[8] = this.formatNumber(summaries[8])
- summaries[9] = this.formatNumber(summaries[9])
- summaries[12] = this.formatNumber(summaries[12])
- summaries[13] = this.formatNumber(summaries[13])
- summaries[14] = this.formatNumber(summaries[14])
+ summaries[3] = this.formatNumber(summaries[3]);
+ summaries[4] = this.formatNumber(summaries[4]);
+ summaries[5] = this.formatNumber(summaries[5]);
+ summaries[6] = this.formatNumber(summaries[6]);
+ summaries[7] = this.formatNumber(summaries[7]);
+ summaries[8] = this.formatNumber(summaries[8]);
+ summaries[9] = this.formatNumber(summaries[9]);
+ summaries[12] = this.formatNumber(summaries[12]);
+ summaries[13] = this.formatNumber(summaries[13]);
+ summaries[14] = this.formatNumber(summaries[14]);
- return summaries
+ return summaries;
},
extractPercentageValue(value) {
- if (!value) return null
+ if (!value) return null;
if (typeof value === "string" && value.includes("%")) {
- const num = parseFloat(value.replace("%", ""))
- return isNaN(num) ? null : num / 100
+ const num = parseFloat(value.replace("%", ""));
+ return isNaN(num) ? null : num / 100;
}
- const num = parseFloat(value)
- return isNaN(num) ? null : num
+ const num = parseFloat(value);
+ return isNaN(num) ? null : num;
},
selectTimelyRate(row, dateRange) {
- const params = {
- ...this.patientqueryParams,
- starttime: this.parseTime(dateRange[0]),
- endtime: this.parseTime(dateRange[1]),
- deptcode: row.deptcode
- }
- return selectTimelyRate(params)
- }
- }
-}
+ console.log(row, dateRange, 88);
+
+ // const params = {
+ // ...this.patientqueryParams,
+ // starttime: this.parseTime(dateRange[0]),
+ // endtime: this.parseTime(dateRange[1]),
+ // deptcode: row.deptcode,
+ // };
+ this.patientqueryParams.starttime = this.parseTime(dateRange[0]);
+ this.patientqueryParams.endtime = this.parseTime(dateRange[1]);
+ this.patientqueryParams.deptcode = row.deptcode;
+ return selectTimelyRate(this.patientqueryParams);
+ },
+ selectTimelyRates(dateRange) {
+ this.patientqueryParams.pn = dateRange.pageNum;
+ this.patientqueryParams.ps = dateRange.pageSize;
+
+ return selectTimelyRate(this.patientqueryParams);
+ },
+ },
+};
</script>
<style lang="scss" scoped>
diff --git a/src/views/sfstatistics/percentage/components/TimelyRateDialog.vue b/src/views/sfstatistics/percentage/components/TimelyRateDialog.vue
index e3122a4..f58d55c 100644
--- a/src/views/sfstatistics/percentage/components/TimelyRateDialog.vue
+++ b/src/views/sfstatistics/percentage/components/TimelyRateDialog.vue
@@ -115,8 +115,8 @@
<pagination
v-show="total > 0"
:total="total"
- :page.sync="queryParams.pn"
- :limit.sync="queryParams.ps"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
@pagination="handlePagination"
/>
</div>
@@ -126,13 +126,10 @@
</template>
<script>
-import Pagination from '@/components/Pagination'
export default {
name: 'TimelyRateDialog',
- components: {
- Pagination
- },
+
dicts: ['sys_yujing', 'sys_suggest'],
props: {
visible: {
@@ -154,8 +151,8 @@
queryParams: {
type: Object,
default: () => ({
- pn: 1,
- ps: 10
+ pageNum: 1,
+ pageSize: 10
})
}
},
@@ -182,8 +179,8 @@
resetQuery() {
this.localQueryParams = {
- pn: 1,
- ps: 10,
+ pageNum: 1,
+ pageSize: 10,
name: '',
leavediagname: ''
}
@@ -191,8 +188,11 @@
},
handlePagination(pagination) {
- this.localQueryParams.pn = pagination.page
- this.localQueryParams.ps = pagination.limit
+ this.localQueryParams.pageNum = pagination.page
+ this.localQueryParams.pageSize = pagination.limit
+ console.log(pagination,'pagination');
+ console.log(this.localQueryParams,'this.localQueryParams');
+
this.$emit('search', this.localQueryParams)
},
diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index 911156a..4474fbb 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -184,13 +184,14 @@
logsheetlist: [],
Seedloading: false,
patientqueryParams: {
- pn: 1,
- ps: 10
+ pageNum: 1,
+ pageSize: 10
}
}
},
created() {
this.getDeptTree()
+ this.loadCurrentTabData()
},
methods: {
getDeptTree() {
@@ -305,7 +306,9 @@
},
Seedetailstion() {
- this.$refs.firstFollowUp.selectTimelyRate(this.patientqueryParams)
+ console.log(this.patientqueryParams);
+
+ this.$refs.firstFollowUp.selectTimelyRates(this.patientqueryParams)
.then(response => {
this.logsheetlist = response.data.detail
this.patienttotal = response.data.total
--
Gitblit v1.9.3