From e06cd3953ba8a6e0eee11c235bce9ced419a2800 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期三, 03 六月 2026 14:05:08 +0800
Subject: [PATCH] 测试完成
---
src/views/sfstatistics/percentage/index copy.vue | 2
vue.config.js | 6
src/views/followvisit/zbAgain/index.vue | 68
src/views/repositoryai/templateku/configurat/index.vue | 8
src/api/AiCentre/Qtemplate.js | 17
src/views/followvisit/record/TracingInfo/index.vue | 12
src/views/knowledge/questionnaire/compilequer/index.vue | 277 +
src/views/patient/subsequent/index.vue | 96
src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue | 6
src/views/followvisit/zysatisfaction/index.vue | 96
src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue | 897 ++++
src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue | 9
src/store/getters.js | 28
src/views/followvisit/discharge/outpatientService.vue | 66
src/api/AiCentre/questionnaire.js | 8
src/views/followvisit/technology/index.vue | 75
src/views/patient/physical/index.vue | 96
src/views/sfstatistics/percentage/components/SecondFollowUp.vue | 1640 ++++++++--
src/store/modules/user.js | 16
src/views/knowledge/education/examine/index.vue | 4
src/views/followvisit/Tracking/index.vue | 68
src/views/sfstatistics/percentage/components/FirstFollowUp.vue | 782 ++++
src/views/followvisit/record/detailpage/index copy.vue | 10
src/views/followvisit/OutpatientAgain/index.vue | 68
src/api/AiCentre/satisfactionse.js | 15
src/views/sfstatistics/percentage/index.vue | 307 +
src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue | 174 +
src/views/knowledge/questionnaire/index.vue | 6
src/views/outsideChain.vue | 6
src/views/repositoryai/templateku/index.vue | 4
src/views/followvisit/outpatient/index.vue | 96
dist.zip | 0
src/components/optionalModule/index.vue | 208
src/views/followvisit/Continue/ContinueFordetails.vue | 10
src/views/Satisfaction/sfstatistics/components/visitStatistics.vue | 3
src/views/patient/propaganda/QuestionnaireTask.vue | 180 +
src/views/followvisit/mzsatisfaction/index.vue | 94
随访通用.zip | 0
src/views/followvisit/record/detailpage/index.vue | 116
src/views/knowledge/questionbank/particulars/index.vue | 45
src/views/outsideChainwtnew.vue | 370 ++
src/views/followvisit/complaint/index.vue | 62
src/views/followvisit/tasklist/index.vue | 1
src/api/system/user.js | 22
src/views/followvisit/tasklist/FollowupDetails/index.vue | 4
src/views/followvisit/SpecificDisease/index.vue | 71
src/views/followvisit/again/index.vue | 74
src/views/monitor/job/index.vue | 2
src/views/followvisit/operation/index.vue | 2321 ++++++++++++++
src/views/sfstatistics/percentage/satisfaction.vue | 5
src/views/followvisit/beHospitalized/followUp.vue | 76
src/views/patient/questionnaire/index.vue | 96
src/views/followvisit/record/index.vue | 97
src/views/followvisit/Continue/index.vue | 64
src/views/loginSSO.vue | 316 +
src/views/repositoryai/templateku/configurat/taskub.vue | 4
src/views/followvisit/HistoricalFollow/index.vue | 69
src/views/patient/shadow/index.vue | 96
src/views/knowledge/questionnaire/examine/index.vue | 4
src/views/patient/propaganda/particty.vue | 109
src/views/followvisit/discharge/index.vue | 104
61 files changed, 7,622 insertions(+), 1,964 deletions(-)
diff --git a/dist.zip b/dist.zip
new file mode 100644
index 0000000..a8843f1
--- /dev/null
+++ b/dist.zip
Binary files differ
diff --git a/src/api/AiCentre/Qtemplate.js b/src/api/AiCentre/Qtemplate.js
index 70232e4..3c5e873 100644
--- a/src/api/AiCentre/Qtemplate.js
+++ b/src/api/AiCentre/Qtemplate.js
@@ -25,6 +25,14 @@
params: data,
});
}
+// 闂嵎妯℃澘鍒楄〃(绉戝鐥呭尯鏌ヨ)
+export function getSviLibTemplateByDeptCode(data) {
+ return request({
+ url: "/smartor/svyLibTemplate/getSviLibTemplateByDeptCode",
+ method: "post",
+ data: data,
+ });
+}
// 闂嵎妯℃澘璇︽儏
export function Qtemplateinfo(Id) {
return request({
@@ -165,6 +173,13 @@
params: data,
});
}
+export function depthospgetsonlistnopage(data) {
+ return request({
+ url: "/smartor/td/listnopage",
+ method: "get",
+ params: data,
+ });
+}
//浠诲姟绉戝鐥呭尯妯℃澘鍏宠仈鏌ヨ
export function taskdepthospgetsonlist(data) {
return request({
@@ -204,7 +219,7 @@
// 鑾峰彇浠诲姟鐤剧梾鍏宠仈
export function taskdiaggetlist(data) {
return request({
- url: "/smartor/taskdiag/list",
+ url: "/smartor/taskdiag/listnopage",
method: "post",
data: data,
});
diff --git a/src/api/AiCentre/questionnaire.js b/src/api/AiCentre/questionnaire.js
index 9792a3f..1c8670c 100644
--- a/src/api/AiCentre/questionnaire.js
+++ b/src/api/AiCentre/questionnaire.js
@@ -38,7 +38,13 @@
data: data,
});
}
-
+// 鑾峰彇绮剧畝瀛楀吀
+export function gettypeout(dictType) {
+ return request({
+ url: '/system/dict/data/typeout/' + dictType,
+ method: 'get'
+ })
+}
// 鏂板闂嵎闂鍒嗙被
export function addissueclassify(data) {
return request({
diff --git a/src/api/AiCentre/satisfactionse.js b/src/api/AiCentre/satisfactionse.js
index fef0537..a89badc 100644
--- a/src/api/AiCentre/satisfactionse.js
+++ b/src/api/AiCentre/satisfactionse.js
@@ -19,6 +19,15 @@
});
}
+// 鏌ヨ璇︽儏
+export function getSfStatisticsHyperlink(data) {
+ return request({
+ url: "/smartor/serviceSubtask/getSfStatisticsHyperlink",
+ method: "post",
+ data: data,
+ });
+}
+
// 淇敼婊℃剰搴�
export function updatesatisfaction(data) {
return request({
@@ -59,9 +68,3 @@
data: data,
});
}
-
-
-
-
-
-
diff --git a/src/api/system/user.js b/src/api/system/user.js
index 6d5b155..da1bec6 100644
--- a/src/api/system/user.js
+++ b/src/api/system/user.js
@@ -177,7 +177,7 @@
});
}
// 淇濆瓨鎺堟潈瑙掕壊
-export function removeusertd(userid,deptcode) {
+export function removeusertd(userid, deptcode) {
return request({
url: "/smartor/userdept/removeByCode/" + userid + "/" + deptcode,
method: "get",
@@ -187,8 +187,8 @@
// 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋�
export function deptTreeSelect(type) {
const data = {
- deptType:type,
- orgid:localStorage.getItem("orgid"),
+ deptType: type,
+ orgid: localStorage.getItem("orgid"),
};
return request({
url: "/system/user/deptTree",
@@ -220,3 +220,19 @@
data: data,
});
}
+// 鐪佺珛鍚屽痉缁村害棰樼洰鏄庣粏
+export function statisticsByDimension(data) {
+ return request({
+ url: "/smartor/satisfaction/statisticsByDimension",
+ method: "post",
+ data: data,
+ });
+}
+// 鐪佺珛鍚屽痉缁村害鏌辩姸鍥�
+export function satisfactionGraphDimension(data) {
+ return request({
+ url: "/smartor/satisfaction/satisfactionGraphDimension",
+ method: "post",
+ data: data,
+ });
+}
diff --git a/src/components/optionalModule/index.vue b/src/components/optionalModule/index.vue
index 1adc7f0..be43f16 100644
--- a/src/components/optionalModule/index.vue
+++ b/src/components/optionalModule/index.vue
@@ -28,8 +28,6 @@
</el-form>
</div>
-
-
<!-- 妯℃澘閫夋嫨鎶藉眽 -->
<el-drawer
title="闂嵎鍐呭鍒楄〃"
@@ -52,6 +50,15 @@
@keyup.enter.native="handleSearch"
></el-input>
</el-form-item>
+ <el-form-item label="鎮h�呰寖鍥�" prop="status">
+ <el-cascader
+ v-model="scopetype"
+ placeholder="榛樿鍏ㄩ儴"
+ :options="sourcetype"
+ :props="{ expandTrigger: 'hover' }"
+ @change="handleChange"
+ ></el-cascader>
+ </el-form-item>
<el-form-item>
<el-button
type="primary"
@@ -60,10 +67,7 @@
@click="handleSearch"
>鎼滅储</el-button
>
- <el-button
- icon="el-icon-refresh"
- size="medium"
- @click="handleReset"
+ <el-button icon="el-icon-refresh" size="medium" @click="handleReset"
>閲嶇疆</el-button
>
</el-form-item>
@@ -211,12 +215,9 @@
<div class="preview-content">
<div v-for="item in questionList" :key="item.sort">
<!-- 鍗曢�� -->
- <div
- class="scriptTopic-dev"
- v-if="item.scriptType == 1"
- >
+ <div class="scriptTopic-dev" v-if="item.scriptType == 1">
<div class="dev-text">
- {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark" disabled>
@@ -232,12 +233,9 @@
</div>
<!-- 澶氶�� -->
- <div
- class="scriptTopic-dev"
- v-if="item.scriptType == 2"
- >
+ <div class="scriptTopic-dev" v-if="item.scriptType == 2">
<div class="dev-text">
- {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="item.qremark" disabled>
@@ -253,12 +251,9 @@
</div>
<!-- 濉┖ -->
- <div
- class="scriptTopic-dev"
- v-if="item.scriptType == 4"
- >
+ <div class="scriptTopic-dev" v-if="item.scriptType == 4">
<div class="dev-text">
- {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-input
@@ -282,11 +277,7 @@
>
閫夋嫨浣跨敤
</el-button>
- <el-button
- v-else
- type="primary"
- @click="handleConfirmReplace"
- >
+ <el-button v-else type="primary" @click="handleConfirmReplace">
鏇挎崲浣跨敤
</el-button>
</span>
@@ -295,67 +286,86 @@
</template>
<script>
-import { getQtemplatelist, getQtemplateobj, getQtemplateclassify } from "@/api/AiCentre/index";
+import {
+ getSviLibTemplateByDeptCode,
+ getQtemplateobj,
+ getQtemplateclassify,
+} from "@/api/AiCentre/index";
import store from "@/store";
import pagination from "@/components/Pagination";
export default {
name: "TemplateSelector",
components: {
- pagination
+ pagination,
},
props: {
// 褰撳墠閫変腑鐨勬ā鏉縄D
value: {
type: [String, Number],
- default: null
+ default: null,
},
// 褰撳墠閫変腑鐨勬ā鏉垮悕绉�
templateName: {
type: String,
- default: ''
+ default: "",
},
// 鏄惁鍙紪杈�
isEditable: {
type: Boolean,
- default: true
+ default: true,
},
// 鏄惁鏄剧ず鍙橀噺閰嶇疆
showVariableConfig: {
type: Boolean,
- default: true
+ default: true,
},
// 鏈嶅姟绫诲瀷锛岀敤浜庤繃婊ゆā鏉�
serviceType: {
type: [String, Number],
- default: null
- }
+ default: null,
+ },
},
data() {
return {
// 缁勪欢鐘舵��
drawerVisible: false,
previewVisible: false,
- activeTab: 'basic',
+ activeTab: "basic",
loading: false,
// 妯℃澘鏁版嵁
selectedTemplateId: null,
- selectedTemplateName: '',
+ selectedTemplateName: "",
selectedTemplateData: null,
-
+ scopetype: [],
// 鍒楄〃鏁版嵁
templateList: [],
questionList: [],
variableList: [],
previewData: {},
-
+ sourcetype: [
+ {
+ value: 1,
+ label: "绉戝",
+ children: [],
+ },
+ {
+ value: 2,
+ label: "鐥呭尯",
+ children: [],
+ },
+ {
+ value: 3,
+ label: "鍏ㄩ儴",
+ },
+ ],
// 鏌ヨ鍙傛暟
queryParams: {
- pageNum: 1,
- pageSize: 10,
- svyname: '',
- isenable: ''
+ type: 1,
+ deptType: "1",
+ svyname: "",
+ deptCode: "",
},
total: 0,
@@ -364,7 +374,7 @@
appraisalOptions: store.getters.appraiselist || [],
usableOptions: [
{ value: "0", label: "鍙敤" },
- { value: "1", label: "鍋滅敤" }
+ { value: "1", label: "鍋滅敤" },
],
// 榛樿鍙橀噺
@@ -373,21 +383,21 @@
name: "濮撳悕",
value: "${name}",
fill: "娲惧彂鏃惰嚜鍔ㄥ尮閰�",
- default: true
+ default: true,
},
{
name: "鍦板潃",
value: "${dzz}",
fill: "娲惧彂鏃惰嚜鍔ㄥ尮閰�",
- default: true
+ default: true,
},
{
name: "鏅鸿兘璇煶",
value: "${dhh}",
fill: "娲惧彂鏃惰嚜鍔ㄥ尮閰�",
- default: true
- }
- ]
+ default: true,
+ },
+ ],
};
},
watch: {
@@ -395,26 +405,36 @@
immediate: true,
handler(newVal) {
this.selectedTemplateId = newVal;
- }
+ },
},
templateName: {
immediate: true,
handler(newVal) {
-
this.selectedTemplateName = newVal;
- }
+ },
},
selectedTemplateId(newVal) {
- this.$emit('input', newVal);
+ this.$emit("input", newVal);
},
selectedTemplateName(newVal) {
- this.$emit('update:templateName', newVal);
- }
+ this.$emit("update:templateName", newVal);
+ },
},
created() {
+ 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.loadCategories();
- this.handleSearch();
-
+ this.handleSearch();
},
methods: {
// 鍔犺浇妯℃澘鍒嗙被
@@ -425,7 +445,7 @@
this.categoryOptions = response.rows;
}
} catch (error) {
- console.error('鍔犺浇鍒嗙被澶辫触:', error);
+ console.error("鍔犺浇鍒嗙被澶辫触:", error);
}
},
@@ -433,26 +453,29 @@
async handleSearch() {
try {
this.loading = true;
- const response = await getQtemplatelist(this.queryParams);
+ const response = await getSviLibTemplateByDeptCode(this.queryParams);
if (response.code === 200) {
this.templateList = response.rows;
this.total = response.total;
}
} catch (error) {
- console.error('鎼滅储妯℃澘澶辫触:', error);
- this.$modal.msgError('鎼滅储妯℃澘澶辫触');
+ console.error("鎼滅储妯℃澘澶辫触:", error);
+ this.$modal.msgError("鎼滅储妯℃澘澶辫触");
} finally {
this.loading = false;
}
},
-
+ handleChange(value) {
+ this.queryParams.deptType = value[0].toString();
+ this.queryParams.deptCode = value.slice(-1)[0];
+ },
// 閲嶇疆鎼滅储
handleReset() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
- svyname: '',
- isenable: ''
+ svyname: "",
+ isenable: "",
};
this.handleSearch();
},
@@ -480,7 +503,7 @@
this.questionList = templateData.svyTemplateLibScripts || [];
// 鍒濆鍖栭棶棰樼姸鎬�
- this.questionList.forEach(item => {
+ this.questionList.forEach((item) => {
item.qremark = [];
});
@@ -491,8 +514,8 @@
this.drawerVisible = false;
}
} catch (error) {
- console.error('鍔犺浇妯℃澘璇︽儏澶辫触:', error);
- this.$modal.msgError('鍔犺浇妯℃澘璇︽儏澶辫触');
+ console.error("鍔犺浇妯℃澘璇︽儏澶辫触:", error);
+ this.$modal.msgError("鍔犺浇妯℃澘璇︽儏澶辫触");
} finally {
this.loading = false;
}
@@ -502,20 +525,20 @@
extractVariables(scripts) {
let variableList = [];
- scripts.forEach(script => {
+ scripts.forEach((script) => {
try {
- const otherData = JSON.parse(script.otherdata || '[]');
- otherData.forEach(item => {
+ const otherData = JSON.parse(script.otherdata || "[]");
+ otherData.forEach((item) => {
if (item.default != 1) {
variableList.push({
value: item.variate,
fill: "",
- name: item.variatename
+ name: item.variatename,
});
}
});
} catch (e) {
- console.warn('瑙f瀽otherdata澶辫触:', e);
+ console.warn("瑙f瀽otherdata澶辫触:", e);
}
});
@@ -523,9 +546,7 @@
const uniqueVariables = variableList.filter(
(obj, index, self) =>
index ===
- self.findIndex(
- t => t.name === obj.name && t.value === obj.value
- )
+ self.findIndex((t) => t.name === obj.name && t.value === obj.value)
);
this.variableList = [...this.transitionList, ...uniqueVariables];
@@ -534,7 +555,7 @@
// 棰勮宸查�夋ā鏉�
handlePreview() {
if (!this.selectedTemplateId) {
- this.$modal.msgWarning('璇峰厛閫夋嫨妯℃澘');
+ this.$modal.msgWarning("璇峰厛閫夋嫨妯℃澘");
return;
}
@@ -544,7 +565,7 @@
// 纭閫夋嫨妯℃澘
handleConfirmSelect() {
if (!this.selectedTemplateData) {
- this.$modal.msgWarning('璇峰厛閫夋嫨妯℃澘');
+ this.$modal.msgWarning("璇峰厛閫夋嫨妯℃澘");
return;
}
@@ -553,27 +574,29 @@
// 杞崲鍙橀噺鏍煎紡
const filteredVariables = this.variableList.filter(
- item => item.name !== "濮撳悕" && item.name !== "鐢佃瘽" && item.name !== "鍦板潃"
+ (item) =>
+ item.name !== "濮撳悕" && item.name !== "鐢佃瘽" && item.name !== "鍦板潃"
);
const textParam = this.convertFormat2ToFormat1(filteredVariables);
// 瑙﹀彂閫夋嫨浜嬩欢
- this.$emit('select', {
+ this.$emit("select", {
templateId: this.selectedTemplateId,
templateName: this.selectedTemplateName,
templateData: this.previewData,
variableList: this.variableList,
- textParam: textParam
+ textParam: textParam,
});
this.previewVisible = false;
- this.$modal.msgSuccess('閫夋嫨妯℃澘鎴愬姛');
+ this.$modal.msgSuccess("閫夋嫨妯℃澘鎴愬姛");
},
// 纭鏇挎崲妯℃澘
handleConfirmReplace() {
- this.$modal.confirm('纭畾瑕佹浛鎹㈠綋鍓嶆ā鏉垮悧锛�')
+ this.$modal
+ .confirm("纭畾瑕佹浛鎹㈠綋鍓嶆ā鏉垮悧锛�")
.then(() => {
this.handleConfirmSelect();
})
@@ -583,31 +606,31 @@
// 鍙栨秷棰勮
handleCancelPreview() {
this.previewVisible = false;
- this.$emit('cancel');
+ this.$emit("cancel");
},
// 鍏抽棴鎶藉眽
handleDrawerClose(done) {
done();
- this.$emit('drawer-close');
+ this.$emit("drawer-close");
},
// 鍏抽棴棰勮
handlePreviewClose(done) {
done();
- this.$emit('preview-close');
+ this.$emit("preview-close");
},
// 鍒犻櫎鍙橀噺
handleVariableDelete(index, row) {
this.variableList.splice(index, 1);
- this.$emit('variable-delete', row);
+ this.$emit("variable-delete", row);
},
// 鍙橀噺鏍煎紡杞崲锛氭暟缁勮浆瀵硅薄
convertFormat2ToFormat1(data) {
let result = {};
- data.forEach(item => {
+ data.forEach((item) => {
let innerObj = {};
innerObj[item.value] = item.fill;
result[item.name] = innerObj;
@@ -623,7 +646,7 @@
result.push({
name: key,
value: innerKey,
- fill: data[key][innerKey]
+ fill: data[key][innerKey],
});
}
return result;
@@ -640,20 +663,21 @@
// 娓呴櫎閫夋嫨
clear() {
this.selectedTemplateId = null;
- this.selectedTemplateName = '';
+ this.selectedTemplateName = "";
this.selectedTemplateData = null;
this.variableList = [...this.transitionList];
- this.$emit('clear');
+ this.$emit("clear");
},
// 鑾峰彇鍙橀噺鏁版嵁
getVariables() {
const filteredVariables = this.variableList.filter(
- item => item.name !== "濮撳悕" && item.name !== "鐢佃瘽" && item.name !== "鍦板潃"
+ (item) =>
+ item.name !== "濮撳悕" && item.name !== "鐢佃瘽" && item.name !== "鍦板潃"
);
return this.convertFormat2ToFormat1(filteredVariables);
- }
- }
+ },
+ },
};
</script>
diff --git a/src/store/getters.js b/src/store/getters.js
index a8b2816..a65dc24 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -759,25 +759,33 @@
value: 13,
label: "涓撶梾闅忚",
raw: {
- cssClass: "",
- listClass: "",
+ cssClass: "",
+ listClass: "",
+ },
},
- },
- {
+ {
value: 17,
label: "瀹f暀鍏虫��锛堝叆闄級",
raw: {
- cssClass: "",
- listClass: "",
+ cssClass: "",
+ listClass: "",
+ },
},
- },
- {
+ {
value: 18,
label: "鍏ラ櫌闅忚",
raw: {
- cssClass: "",
- listClass: "",
+ cssClass: "",
+ listClass: "",
+ },
},
+ {
+ value: 19,
+ label: "鎵嬫湳闅忚",
+ raw: {
+ cssClass: "",
+ listClass: "",
+ },
},
],
};
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 031657f..af87801 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -176,6 +176,12 @@
localStorage.setItem("deptCode", "");
localStorage.setItem("YongHuID", "1462582201425072129");
localStorage.setItem("YongHuXM", "JYZYY");
+ } else if (orgid == "47246103233112211A1001") {
+ localStorage.setItem("orgname", "缂欎簯绗簩浜烘皯鍖婚櫌");
+ localStorage.setItem("ZuHuID", "1429338802177000013");
+ localStorage.setItem("deptCode", "");
+ localStorage.setItem("YongHuID", "");
+ localStorage.setItem("YongHuXM", "");
} else if (orgid == "47240018433118111A2101") {
localStorage.setItem("orgname", "榫欐硥甯備腑鍖诲尰闄�");
localStorage.setItem("ZuHuID", "1429338802177000003");
@@ -259,11 +265,11 @@
return new Promise((resolve, reject) => {
getInfo()
.then((res) => {
- const user = res.user;
- const avatar =
- user.avatar == "" || user.avatar == null
- ? require("@/assets/images/profile.jpg")
- : process.env.VUE_APP_BASE_API + user.avatar;
+ const user = res.user || {};
+
+ const avatar = !user.avatar
+ ? require("@/assets/images/profile.jpg")
+ : process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) {
// 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁�
commit("SET_ROLES", res.roles);
diff --git a/src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue b/src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue
index 1219d47..42ee116 100644
--- a/src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue
+++ b/src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue
@@ -134,7 +134,7 @@
v-if="item.scriptType == 1 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ index + 1 }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.scriptResult" disabled>
@@ -169,7 +169,7 @@
v-if="item.scriptType == 2 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ index + 1 }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="item.scriptResult" disabled>
@@ -194,7 +194,7 @@
v-if="item.scriptType == 4 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+ {{ index + 1 }}. [闂瓟]<span>{{ item.scriptContent }}</span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
</div>
<div class="dev-xx" v-if="item.valueType == 3">
diff --git a/src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue b/src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue
index 8de4434..20938e3 100644
--- a/src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue
+++ b/src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue
@@ -206,6 +206,7 @@
</el-table-column>
<el-table-column
+ v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'"
label="鍙婃椂鐜�"
align="center"
key="rate"
@@ -381,6 +382,7 @@
// 鍔犺浇鐘舵��
loading: false,
+ orgname: "",
// 閫変腑鐨勮
ids: [],
@@ -439,6 +441,8 @@
},
created() {
+ this.orgname = localStorage.getItem("orgname");
+
this.initData();
},
@@ -446,7 +450,7 @@
// 鍒濆鍖栨暟鎹�
async initData() {
await this.getDeptTree();
- await this.getList();
+ // await this.getList();
},
// 鑾峰彇绉戝鏍�
@@ -814,8 +818,7 @@
const response = await getSfStatisticsJoyInfo(params);
this.topiclist = response.data || [];
- this.topicVisible = true;
-
+ this.topicVisible = true;
} catch (error) {
console.error("鑾峰彇婊℃剰搴﹁鎯呭け璐�:", error);
this.$message.error("鑾峰彇璇︽儏澶辫触");
diff --git a/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue b/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
index 2d78fdf..3ff1958 100644
--- a/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
+++ b/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
@@ -24,13 +24,16 @@
</el-select>
</el-form-item>
- <el-form-item label="绉戝" prop="deptCode">
+ <!-- 绉戝閫夋嫨 -->
+ <el-form-item label="绉戝" prop="deptCodes">
<el-select
- v-model="queryParams.deptCode"
+ v-model="queryParams.deptCodes"
placeholder="璇烽�夋嫨绉戝"
clearable
filterable
- style="width: 200px"
+ multiple
+ collapse-tags
+ style="width: 300px"
@change="handleDeptChange"
>
<el-option
@@ -42,13 +45,16 @@
</el-select>
</el-form-item>
- <el-form-item label="鐥呭尯" prop="wardCode">
+ <!-- 鐥呭尯閫夋嫨 -->
+ <el-form-item label="鐥呭尯" prop="wardCodes">
<el-select
- v-model="queryParams.wardCode"
+ v-model="queryParams.wardCodes"
placeholder="璇烽�夋嫨鐥呭尯"
clearable
filterable
- style="width: 200px"
+ multiple
+ collapse-tags
+ style="width: 300px"
@change="handleWardChange"
>
<el-option
@@ -95,7 +101,7 @@
<el-card shadow="never">
<div class="chart-container">
<div class="chart-header">
- <h3 class="chart-title">婊℃剰搴︾被鍨嬪~鎶ユ瘮渚嬬粺璁�</h3>
+ <h3 class="chart-title">{{ getChartTitle() }}</h3>
<div class="statistic-info">
<div class="statistic-item">
<span class="statistic-label">鍙戦�侀棶鍗锋�婚噺锛�</span>
@@ -117,6 +123,20 @@
</div>
</div>
</div>
+
+ <!-- 鏍囩椤靛垏鎹� -->
+ <el-tabs
+ v-model="activeChartTab"
+ @tab-click="handleChartTabClick"
+ class="chart-tabs"
+ >
+ <el-tab-pane
+ label="婊℃剰搴︾被鍨�"
+ name="satisfactionType"
+ ></el-tab-pane>
+ <el-tab-pane label="缁村害缁熻" name="dimension"></el-tab-pane>
+ </el-tabs>
+
<div
id="satisfactionBarChart"
style="width: 100%; height: 400px"
@@ -304,6 +324,179 @@
</div>
</el-tab-pane>
+ <el-tab-pane label="缁村害棰樼洰鏄庣粏" name="dimensionDetail">
+ <!-- 缁村害棰樼洰鏄庣粏琛ㄦ牸 -->
+ <div class="dimension-detail-section">
+ <el-table
+ v-loading="dimensionDetailLoading"
+ :data="dimensionDetailData"
+ :border="true"
+ style="width: 100%"
+ row-class-name="dimension-row"
+ >
+ <el-table-column type="expand" width="60">
+ <template slot-scope="{ row }">
+ <div class="option-detail">
+ <el-table
+ :data="row.options"
+ :border="true"
+ style="width: 100%"
+ class="inner-table"
+ >
+ <el-table-column
+ label="閫夐」"
+ prop="optionText"
+ align="center"
+ min-width="200"
+ />
+ <el-table-column
+ label="閫夋嫨浜烘暟"
+ prop="chosenQuantity"
+ align="center"
+ min-width="120"
+ />
+ <el-table-column
+ label="閫夋嫨姣斾緥"
+ prop="chosenPercentage"
+ align="center"
+ min-width="120"
+ >
+ <template slot-scope="{ row: option }">
+ {{ formatPercent(option.chosenPercentage) }}
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="搴忓彿"
+ type="index"
+ align="center"
+ width="60"
+ />
+
+ <el-table-column
+ label="棰樼洰"
+ prop="scriptContent"
+ align="center"
+ min-width="300"
+ >
+ <template slot-scope="{ row }">
+ <span>{{ row.scriptContent }}</span>
+ <el-tag
+ :type="row.scriptType === 1 ? 'primary' : 'success'"
+ size="mini"
+ style="margin-left: 5px"
+ >
+ {{ row.scriptType === 1 ? "鍗曢�夐" : "澶氶�夐" }}
+ </el-tag>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="缁村害"
+ prop="dimensionName"
+ align="center"
+ width="120"
+ >
+ <template slot-scope="{ row }">
+ <el-tag type="info" size="small">
+ {{ getDimensionLabel(row.dimension) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="骞冲潎寰楀垎"
+ prop="averageScore"
+ align="center"
+ width="120"
+ >
+ <template slot-scope="{ row }">
+ <span class="score-text">{{
+ row.averageScore.toFixed(1)
+ }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="鏈�楂樺緱鍒�"
+ prop="maxScore"
+ align="center"
+ width="120"
+ >
+ <template slot-scope="{ row }">
+ <span class="score-text">{{
+ row.maxScore.toFixed(1)
+ }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="鏈�浣庡緱鍒�"
+ prop="minScore"
+ align="center"
+ width="120"
+ >
+ <template slot-scope="{ row }">
+ <span class="score-text">{{
+ row.minScore.toFixed(1)
+ }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="绛旈浜烘暟"
+ prop="answerPerson"
+ align="center"
+ width="100"
+ />
+
+ <el-table-column
+ label="鏈瓟棰樹汉鏁�"
+ prop="noAnswerPerson"
+ align="center"
+ width="100"
+ />
+
+ <el-table-column
+ label="绛旈鐜�"
+ prop="answerRate"
+ align="center"
+ width="100"
+ >
+ <template slot-scope="{ row }">
+ {{ formatPercent(row.answerRate) }}
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <!-- 缁村害缁熻姹囨�� -->
+ <div class="dimension-summary-row">
+ <div class="dimension-summary-content">
+ <div class="dimension-summary-item">
+ <span class="label">棰樼洰鎬绘暟锛�</span>
+ <span class="value">{{ dimensionDetailData.length }}</span>
+ </div>
+ <div class="dimension-summary-item">
+ <span class="label">缁村害骞冲潎鍒嗭細</span>
+ <span class="value">{{
+ dimensionAverageScore.toFixed(1)
+ }}</span>
+ </div>
+ <div class="dimension-summary-item">
+ <span class="label">鎬讳綋绛旈鐜囷細</span>
+ <span class="value">{{
+ formatPercent(dimensionTotalAnswerRate)
+ }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </el-tab-pane>
+
<el-tab-pane label="鍚勭被鍨嬬粺璁℃槑缁�" name="typeDetail">
<!-- 鍚勭被鍨嬬粺璁℃槑缁嗚〃鏍� -->
<div class="type-detail-section">
@@ -414,40 +607,6 @@
</template>
</el-table-column>
- <!-- <el-table-column
- label="瓒嬪娍"
- prop="trend"
- align="center"
- width="120"
- >
- <template slot-scope="{ row }">
- <div class="trend-cell">
- <i
- v-if="row.trend === 'up'"
- class="el-icon-top trend-up"
- :style="{ color: '#67C23A' }"
- />
- <i
- v-else-if="row.trend === 'down'"
- class="el-icon-bottom trend-down"
- :style="{ color: '#F56C6C' }"
- />
- <i
- v-else
- class="el-icon-minus trend-stable"
- :style="{ color: '#909399' }"
- />
- <span class="trend-text">{{
- row.trend === "up"
- ? "涓婂崌"
- : row.trend === "down"
- ? "涓嬮檷"
- : "绋冲畾"
- }}</span>
- </div>
- </template>
- </el-table-column> -->
-
<el-table-column
label="鎿嶄綔"
align="center"
@@ -508,25 +667,31 @@
<script>
import * as echarts from "echarts";
-import { statistics, satisfactionGraph } from "@/api/system/user";
+import {
+ statistics,
+ satisfactionGraph,
+ statisticsByDimension,
+ satisfactionGraphDimension,
+} from "@/api/system/user";
import store from "@/store";
export default {
name: "SatisfactionStatistics",
+ dicts: ["dimensionality_type"],
data() {
return {
// 鏌ヨ鍙傛暟
queryParams: {
type: 2,
patientSource: "",
- deptCode: "",
- wardCode: "",
+ deptCodes: [], // 鏀逛负鏁扮粍锛屾敮鎸佸閫�
+ wardCodes: [], // 鏀逛负鏁扮粍锛屾敮鎸佸閫�
dateRange: [],
},
-
// 褰撳墠婵�娲荤殑tab
activeTab: "questionDetail",
-
+ // 褰撳墠婵�娲荤殑鍥捐〃tab
+ activeChartTab: "satisfactionType",
// 鎮h�呮潵婧愰�夐」
patientSourceList: [
{ value: "1", label: "闂ㄨ瘖" },
@@ -548,9 +713,13 @@
loading: false,
detailLoading: false,
typeDetailLoading: false,
+ dimensionDetailLoading: false,
// 棰樼洰鏄庣粏鏁版嵁
questionDetailData: [],
+
+ // 缁村害棰樼洰鏄庣粏鏁版嵁
+ dimensionDetailData: [],
// 棰樼洰鏄庣粏鏌ヨ鍙傛暟
detailQueryParams: {
@@ -561,10 +730,24 @@
// 棰樼洰鏄庣粏鎬绘暟
detailTotal: 0,
+ // 缁村害鏄庣粏鏌ヨ鍙傛暟
+ dimensionQueryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ },
+
+ // 缁村害鏄庣粏鎬绘暟
+ dimensionTotal: 0,
+
// 缁煎悎寰楀垎
totalScore: 0,
totalAnswerCount: 0,
totalAnswerRate: 0,
+
+ // 缁村害缁熻姹囨��
+ dimensionTotalAnswerCount: 0,
+ dimensionTotalAnswerRate: 0,
+ dimensionAverageScore: 0,
// 鍚勭被鍨嬬粺璁℃槑缁嗘暟鎹�
typeDetailData: [],
@@ -660,16 +843,16 @@
// 璁$畻绉戝缂栫爜鏁扮粍
deptCodes() {
- if (this.queryParams.deptCode) {
- return [this.queryParams.deptCode];
+ if (this.queryParams.deptCodes && this.queryParams.deptCodes.length > 0) {
+ return this.queryParams.deptCodes;
}
return this.deptList.map((dept) => dept.value);
},
// 璁$畻鐥呭尯缂栫爜鏁扮粍
hospitalDistrictCodes() {
- if (this.queryParams.wardCode) {
- return [this.queryParams.wardCode];
+ if (this.queryParams.wardCodes && this.queryParams.wardCodes.length > 0) {
+ return this.queryParams.wardCodes;
}
return this.wardList.map((ward) => ward.value);
},
@@ -729,6 +912,13 @@
});
},
+ // 鑾峰彇鍥捐〃鏍囬
+ getChartTitle() {
+ return this.activeChartTab === "satisfactionType"
+ ? "婊℃剰搴︾被鍨嬪~鎶ユ瘮渚嬬粺璁�"
+ : "缁村害濉姤姣斾緥缁熻";
+ },
+
// 鍔犺浇鏁版嵁
async loadData() {
await Promise.all([
@@ -742,23 +932,10 @@
async loadChartData() {
this.loading = true;
try {
- const params = {
- type: this.queryParams.type,
- startTime: this.startTime,
- endTime: this.endTime,
- deptcodes: this.deptCodes,
- hospitaldistrictcodes: this.hospitalDistrictCodes,
- templateid: this.templateId,
- };
-
- const response = await satisfactionGraph(params);
-
- if (response.code === 200) {
- this.processChartData(response);
+ if (this.activeChartTab === "satisfactionType") {
+ await this.loadSatisfactionTypeChartData();
} else {
- this.$message.error(response.msg || "鑾峰彇鍥捐〃鏁版嵁澶辫触");
- // 浣跨敤mock鏁版嵁
- await this.generateMockChartData();
+ await this.loadDimensionChartData();
}
} catch (error) {
console.error("鑾峰彇鍥捐〃鏁版嵁鍑洪敊:", error);
@@ -770,14 +947,54 @@
}
},
- // 澶勭悊鍥捐〃鏁版嵁
- processChartData(apiData) {
+ // 鍔犺浇婊℃剰搴︾被鍨嬪浘琛ㄦ暟鎹�
+ async loadSatisfactionTypeChartData() {
+ const params = {
+ type: this.queryParams.type,
+ startTime: this.startTime,
+ endTime: this.endTime,
+ deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+ hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
+ templateid: this.templateId,
+ };
+
+ const response = await satisfactionGraph(params);
+ if (response.code === 200) {
+ this.processSatisfactionTypeChartData(response);
+ } else {
+ this.$message.error(response.msg || "鑾峰彇鍥捐〃鏁版嵁澶辫触");
+ await this.generateMockChartData();
+ }
+ },
+
+ // 鍔犺浇缁村害鍥捐〃鏁版嵁
+ async loadDimensionChartData() {
+ const params = {
+ type: this.queryParams.type,
+ startTime: this.startTime,
+ endTime: this.endTime,
+ deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+ hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
+ templateid: this.templateId,
+ };
+
+ const response = await satisfactionGraphDimension(params);
+ if (response.code === 200) {
+ this.processDimensionChartData(response);
+ } else {
+ this.$message.error(response.msg || "鑾峰彇缁村害鍥捐〃鏁版嵁澶辫触");
+ await this.generateMockDimensionChartData();
+ }
+ },
+
+ // 澶勭悊婊℃剰搴︾被鍨嬪浘琛ㄦ暟鎹�
+ processSatisfactionTypeChartData(apiData) {
if (!apiData || !apiData.rows || Object.keys(apiData.rows).length === 0) {
this.chartData = [];
this.totalSendCount = 0;
this.totalReceiveCount = 0;
this.overallRecoveryRate = 0;
- this.renderChart([]);
+ this.renderChart([], "satisfactionType");
return;
}
@@ -811,7 +1028,64 @@
this.overallRecoveryRate = totalSend > 0 ? totalReceive / totalSend : 0;
this.chartData = chartData;
- this.renderChart(chartData);
+ this.renderChart(chartData, "satisfactionType");
+ },
+
+ // 澶勭悊缁村害鍥捐〃鏁版嵁
+ processDimensionChartData(apiData) {
+ if (!apiData || !apiData.rows || Object.keys(apiData.rows).length === 0) {
+ this.chartData = [];
+ this.totalSendCount = 0;
+ this.totalReceiveCount = 0;
+ this.overallRecoveryRate = 0;
+ this.renderChart([], "dimension");
+ return;
+ }
+
+ const chartData = [];
+ let totalSend = 0;
+ let totalReceive = 0;
+ let index = 0;
+
+ // 澶勭悊鎺ュ彛杩斿洖鐨勭淮搴︾粺璁�
+ Object.entries(apiData.rows).forEach(([dimensionCode, dimensionStat]) => {
+ const sendCount = dimensionStat.subidAll || 0;
+ const receiveCount = dimensionStat.fillCountAll || 0;
+ const recoveryRate = dimensionStat.receiveRate || 0;
+
+ // 鑾峰彇缁村害鏍囩
+ const dimensionName = this.getDimensionLabel(dimensionCode);
+
+ chartData.push({
+ name: dimensionName,
+ value: (recoveryRate * 100).toFixed(2), // 杞崲涓虹櫨鍒嗘瘮
+ sendCount: sendCount,
+ receiveCount: receiveCount,
+ averageScore: dimensionStat.averageScore || 0,
+ dimension: dimensionCode,
+ itemStyle: { color: this.getChartColor(index) },
+ });
+
+ totalSend += sendCount;
+ totalReceive += receiveCount;
+ index++;
+ });
+
+ this.totalSendCount = totalSend;
+ this.totalReceiveCount = totalReceive;
+ this.overallRecoveryRate = totalSend > 0 ? totalReceive / totalSend : 0;
+ this.chartData = chartData;
+
+ this.renderChart(chartData, "dimension");
+ },
+
+ // 鑾峰彇缁村害鏍囩
+ getDimensionLabel(dimensionCode) {
+ if (!this.dict.type.dimensionality_type) return dimensionCode;
+ const dimension = this.dict.type.dimensionality_type.find(
+ (item) => item.value.toString() === dimensionCode.toString()
+ );
+ return dimension ? dimension.label : dimensionCode;
},
// 鍔犺浇棰樼洰鏄庣粏鏁版嵁
@@ -823,6 +1097,8 @@
startTime: this.startTime,
endTime: this.endTime,
scriptids: this.scriptIds,
+ deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+ hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
templateid: this.templateId,
};
@@ -898,6 +1174,85 @@
this.totalAnswerRate = apiData.totalAnswerRate || 0;
},
+ // 鍔犺浇缁村害鏄庣粏鏁版嵁
+ async loadDimensionDetailData() {
+ this.dimensionDetailLoading = true;
+ try {
+ const params = {
+ type: this.queryParams.type,
+ startTime: this.startTime,
+ endTime: this.endTime,
+ deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+ hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
+ templateid: this.templateId,
+ questionType: this.queryParams.type || null,
+ serviceTypes: this.defaultServiceTypes,
+ };
+
+ const response = await statisticsByDimension(params);
+
+ if (response.code === 200) {
+ this.processDimensionDetailData(response.rows);
+ } else {
+ this.$message.error(response.msg || "鑾峰彇缁村害鏄庣粏鏁版嵁澶辫触");
+ const mockData = await this.generateMockDimensionDetail();
+ this.dimensionDetailData = mockData;
+ this.calculateDimensionSummary(mockData);
+ }
+ } catch (error) {
+ console.error("鑾峰彇缁村害鏄庣粏鏁版嵁鍑洪敊:", error);
+ this.$message.error("鑾峰彇缁村害鏄庣粏鏁版嵁澶辫触");
+ const mockData = await this.generateMockDimensionDetail();
+ this.dimensionDetailData = mockData;
+ this.calculateDimensionSummary(mockData);
+ } finally {
+ this.dimensionDetailLoading = false;
+ }
+ },
+
+ // 澶勭悊缁村害鏄庣粏鏁版嵁
+ processDimensionDetailData(apiData) {
+ if (!apiData || !apiData.patSatisfactionDetailEntities) {
+ this.dimensionDetailData = [];
+ this.calculateDimensionSummary([]);
+ return;
+ }
+
+ const detailData = apiData.patSatisfactionDetailEntities.map((item) => {
+ const options = [];
+ if (item.matchedtextStats) {
+ Object.keys(item.matchedtextStats).forEach((key) => {
+ const stat = item.matchedtextStats[key];
+ options.push({
+ optionText: key,
+ chosenQuantity: stat.count || 0,
+ chosenPercentage: (stat.ratio || 0) / 100,
+ });
+ });
+ }
+
+ return {
+ scriptContent: item.scriptContent || "",
+ dimension: item.dimension || "0", // 缁村害浠g爜
+ dimensionName: this.getDimensionLabel(item.dimension || "0"), // 缁村害鍚嶇О
+ scriptType: 1,
+ answerPerson: item.answerPerson || 0,
+ noAnswerPerson: item.noAnswerPerson || 0,
+ answerCount: item.answerPerson || 0,
+ averageScore: item.averageScore || 0,
+ maxScore: item.maxScore || 0,
+ minScore: item.minScore || 0,
+ answerRate: item.answerRate || 0,
+ totalCount: (item.answerPerson || 0) + (item.noAnswerPerson || 0),
+ options: options,
+ };
+ });
+
+ this.dimensionDetailData = detailData;
+ this.dimensionTotal = detailData.length;
+ this.calculateDimensionSummary(detailData);
+ },
+
// 鍔犺浇绫诲瀷鏄庣粏鏁版嵁
async loadTypeDetailData() {
this.typeDetailLoading = true;
@@ -906,8 +1261,8 @@
type: this.queryParams.type,
startTime: this.startTime,
endTime: this.endTime,
- deptcodes: this.deptCodes,
- hospitaldistrictcodes: this.hospitalDistrictCodes,
+ deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+ hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
templateid: this.templateId,
};
@@ -915,8 +1270,6 @@
if (response.code === 200) {
this.processTypeDetailData(response);
- console.log(11);
-
} else {
this.$message.error(response.msg || "鑾峰彇绫诲瀷鏄庣粏鏁版嵁澶辫触");
const mockData = await this.generateMockTypeDetail();
@@ -965,8 +1318,6 @@
});
this.typeDetailData = typeDetail;
- console.log(this.typeDetailData,'this.typeDetailData');
-
this.calculateTypeSummary(typeDetail);
},
@@ -977,13 +1328,6 @@
if (score >= 3.0) return "涓�鑸�";
if (score >= 2.0) return "杈冨樊";
return "鏈煡";
- },
-
- // 鑾峰彇瓒嬪娍
- getTrend(trend) {
- if (trend > 0.1) return "up";
- if (trend < -0.1) return "down";
- return "stable";
},
// 璁$畻缁煎悎寰楀垎
@@ -1002,6 +1346,32 @@
data.list.length > 0 ? totalScore / data.list.length : 0;
this.totalAnswerCount = totalAnswerCount;
this.totalAnswerRate = totalCount > 0 ? totalAnswerCount / totalCount : 0;
+ },
+
+ // 璁$畻缁村害缁熻姹囨��
+ calculateDimensionSummary(data) {
+ if (data.length === 0) {
+ this.dimensionTotalAnswerCount = 0;
+ this.dimensionTotalAnswerRate = 0;
+ this.dimensionAverageScore = 0;
+ return;
+ }
+
+ let totalScore = 0;
+ let totalAnswerCount = 0;
+ let totalCount = 0;
+
+ data.forEach((item) => {
+ totalScore += item.averageScore;
+ totalAnswerCount += item.answerPerson;
+ totalCount += item.answerPerson + item.noAnswerPerson;
+ });
+
+ this.dimensionAverageScore =
+ data.length > 0 ? totalScore / data.length : 0;
+ this.dimensionTotalAnswerCount = totalAnswerCount;
+ this.dimensionTotalAnswerRate =
+ totalCount > 0 ? totalAnswerCount / totalCount : 0;
},
// 璁$畻绫诲瀷缁熻姹囨��
@@ -1043,7 +1413,7 @@
},
// 娓叉煋鍥捐〃
- renderChart(chartData) {
+ renderChart(chartData, chartType = "satisfactionType") {
if (!this.barChart) return;
if (!chartData || chartData.length === 0) {
const emptyOption = {
@@ -1063,6 +1433,14 @@
this.barChart.setOption(emptyOption);
return;
}
+
+ const yAxisName =
+ chartType === "satisfactionType" ? "濉姤姣斾緥 (%)" : "濉姤姣斾緥 (%)";
+ const tooltipFormatter =
+ chartType === "satisfactionType"
+ ? this.getSatisfactionTypeTooltipFormatter
+ : this.getDimensionTooltipFormatter;
+
const option = {
title: {
text: "",
@@ -1073,28 +1451,7 @@
axisPointer: {
type: "shadow",
},
- formatter: (params) => {
- const data = params[0];
- return `
- <div style="margin-bottom: 5px; font-weight: bold; color: #333;">
- ${data.name}
- </div>
- <div style="margin: 2px 0;">
- <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:${
- data.color
- };margin-right:5px;"></span>
- 濉姤姣斾緥: <strong>${data.value}%</strong>
- </div>
- <div style="margin: 2px 0;">
- <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
- 鍙戦�侀棶鍗�: <strong>${data.data.sendCount.toLocaleString()}</strong>
- </div>
- <div style="margin: 2px 0;">
- <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
- 鍥炴敹闂嵎: <strong>${data.data.receiveCount.toLocaleString()}</strong>
- </div>
- `;
- },
+ formatter: tooltipFormatter,
},
grid: {
left: "3%",
@@ -1123,7 +1480,7 @@
},
yAxis: {
type: "value",
- name: "濉姤姣斾緥 (%)",
+ name: yAxisName,
min: 0,
max: 100,
axisLabel: {
@@ -1167,6 +1524,66 @@
this.barChart.setOption(option);
},
+ // 婊℃剰搴︾被鍨媡ooltip鏍煎紡鍖�
+ getSatisfactionTypeTooltipFormatter(params) {
+ const data = params[0];
+ return `
+ <div style="margin-bottom: 5px; font-weight: bold; color: #333;">
+ ${data.name}
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:${
+ data.color
+ };margin-right:5px;"></span>
+ 濉姤姣斾緥: <strong>${data.value}%</strong>
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+ 鍙戦�侀棶鍗�: <strong>${data.data.sendCount.toLocaleString()}</strong>
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+ 鍥炴敹闂嵎: <strong>${data.data.receiveCount.toLocaleString()}</strong>
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+ 骞冲潎鍒�: <strong>${data.data.averageScore.toFixed(1)}</strong>
+ </div>
+ `;
+ },
+
+ // 缁村害tooltip鏍煎紡鍖�
+ getDimensionTooltipFormatter(params) {
+ const data = params[0];
+ return `
+ <div style="margin-bottom: 5px; font-weight: bold; color: #333;">
+ ${data.name}
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:${
+ data.color
+ };margin-right:5px;"></span>
+ 濉姤姣斾緥: <strong>${data.value}%</strong>
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+ 鍙戦�侀棶鍗�: <strong>${data.data.sendCount.toLocaleString()}</strong>
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+ 鍥炴敹闂嵎: <strong>${data.data.receiveCount.toLocaleString()}</strong>
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+ 骞冲潎鍒�: <strong>${data.data.averageScore.toFixed(1)}</strong>
+ </div>
+ <div style="margin: 2px 0;">
+ <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+ 缁村害浠g爜: <strong>${data.data.dimension}</strong>
+ </div>
+ `;
+ },
+
// 鐢熸垚Mock鍥捐〃鏁版嵁
generateMockChartData() {
return new Promise((resolve) => {
@@ -1201,11 +1618,69 @@
value: item.recoveryRate * 100,
sendCount: item.sendCount,
receiveCount: item.receiveCount,
+ averageScore: 4.2 + Math.random() * 0.8,
itemStyle: { color: item.color },
}));
this.chartData = chartData;
- this.renderChart(chartData);
+ this.renderChart(chartData, "satisfactionType");
+ resolve();
+ }, 300);
+ });
+ },
+
+ // 鐢熸垚Mock缁村害鍥捐〃鏁版嵁
+ generateMockDimensionChartData() {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ // 妯℃嫙缁村害鏁版嵁
+ const dimensionLabels = this.dict.type.dimensionality_type || [
+ { value: "1", label: "缁村害1" },
+ { value: "2", label: "缁村害2" },
+ { value: "3", label: "缁村害3" },
+ { value: "4", label: "缁村害4" },
+ { value: "5", label: "缁村害5" },
+ ];
+
+ const data = dimensionLabels.map((dim, index) => ({
+ name: dim.label,
+ recoveryRate: Math.random() * 0.3 + 0.6,
+ sendCount: Math.floor(Math.random() * 2000) + 1000,
+ receiveCount: 0,
+ averageScore: 3.5 + Math.random() * 1.5,
+ dimension: dim.value,
+ color: this.getChartColor(index),
+ }));
+
+ data.forEach((item) => {
+ item.receiveCount = Math.floor(item.sendCount * item.recoveryRate);
+ });
+
+ this.totalSendCount = data.reduce(
+ (sum, item) => sum + item.sendCount,
+ 0
+ );
+ this.totalReceiveCount = data.reduce(
+ (sum, item) => sum + item.receiveCount,
+ 0
+ );
+ this.overallRecoveryRate =
+ this.totalSendCount > 0
+ ? this.totalReceiveCount / this.totalSendCount
+ : 0;
+
+ const chartData = data.map((item) => ({
+ name: item.name,
+ value: item.recoveryRate * 100,
+ sendCount: item.sendCount,
+ receiveCount: item.receiveCount,
+ averageScore: item.averageScore,
+ dimension: item.dimension,
+ itemStyle: { color: item.color },
+ }));
+
+ this.chartData = chartData;
+ this.renderChart(chartData, "dimension");
resolve();
}, 300);
});
@@ -1305,6 +1780,111 @@
});
},
+ // 鐢熸垚Mock缁村害璇︽儏鏁版嵁
+ generateMockDimensionDetail() {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ const questions = [
+ {
+ scriptContent: "鍖绘姢浜哄憳鏈嶅姟鎬佸害",
+ dimension: "1",
+ dimensionName: "鏈嶅姟鎬佸害",
+ scriptType: 1,
+ answerPerson: 120,
+ noAnswerPerson: 30,
+ answerCount: 120,
+ totalCount: 150,
+ averageScore: 4.2,
+ maxScore: 5.0,
+ minScore: 1.0,
+ answerRate: 0.8,
+ options: [
+ {
+ optionText: "闈炲父婊℃剰",
+ chosenQuantity: 60,
+ chosenPercentage: 0.5,
+ },
+ {
+ optionText: "婊℃剰",
+ chosenQuantity: 36,
+ chosenPercentage: 0.3,
+ },
+ {
+ optionText: "涓�鑸�",
+ chosenQuantity: 18,
+ chosenPercentage: 0.15,
+ },
+ ],
+ },
+ {
+ scriptContent: "鍖荤枟鎶�鏈按骞�",
+ dimension: "2",
+ dimensionName: "鎶�鏈按骞�",
+ scriptType: 1,
+ answerPerson: 145,
+ noAnswerPerson: 11,
+ answerCount: 145,
+ totalCount: 156,
+ averageScore: 4.5,
+ maxScore: 5,
+ minScore: 3,
+ answerRate: 0.93,
+ options: [
+ {
+ optionText: "闈炲父婊℃剰",
+ chosenQuantity: 89,
+ chosenPercentage: 0.61,
+ },
+ {
+ optionText: "婊℃剰",
+ chosenQuantity: 45,
+ chosenPercentage: 0.31,
+ },
+ {
+ optionText: "涓�鑸�",
+ chosenQuantity: 8,
+ chosenPercentage: 0.06,
+ },
+ ],
+ },
+ {
+ scriptContent: "灏卞尰鐜璁炬柦",
+ dimension: "3",
+ dimensionName: "鐜璁炬柦",
+ scriptType: 1,
+ answerPerson: 98,
+ noAnswerPerson: 22,
+ answerCount: 98,
+ totalCount: 120,
+ averageScore: 4.0,
+ maxScore: 5,
+ minScore: 2,
+ answerRate: 0.82,
+ options: [
+ {
+ optionText: "闈炲父婊℃剰",
+ chosenQuantity: 45,
+ chosenPercentage: 0.46,
+ },
+ {
+ optionText: "婊℃剰",
+ chosenQuantity: 40,
+ chosenPercentage: 0.41,
+ },
+ {
+ optionText: "涓�鑸�",
+ chosenQuantity: 10,
+ chosenPercentage: 0.1,
+ },
+ ],
+ },
+ ];
+
+ resolve(questions);
+ }, 300);
+ });
+ },
+
// 鐢熸垚Mock绫诲瀷鏄庣粏鏁版嵁
generateMockTypeDetail() {
return new Promise((resolve) => {
@@ -1378,6 +1958,12 @@
"#FF9D4D",
"#9B8DFF",
"#FF6B6B",
+ "#66C2A5",
+ "#FC8D62",
+ "#8DA0CB",
+ "#E78AC3",
+ "#A6D854",
+ "#FFD92F",
];
return colors[index % colors.length];
},
@@ -1389,14 +1975,21 @@
}
},
+ // 澶勭悊鍥捐〃Tab鍒囨崲
+ handleChartTabClick(tab) {
+ this.activeChartTab = tab.name;
+ this.loadChartData();
+ },
+
// 澶勭悊鏌ヨ
handleSearch() {
this.detailQueryParams.pageNum = 1;
+ this.dimensionQueryParams.pageNum = 1;
this.loadData();
// 寮哄埗閲嶆柊娓叉煋鍥捐〃
setTimeout(() => {
if (this.chartData.length === 0) {
- this.renderChart([]);
+ this.renderChart([], this.activeChartTab);
}
}, 100);
},
@@ -1405,14 +1998,30 @@
handleReset() {
this.$refs.queryForm.resetFields();
this.queryParams.dateRange = [];
+ this.queryParams.deptCodes = []; // 閲嶇疆涓烘暟缁�
+ this.queryParams.wardCodes = []; // 閲嶇疆涓烘暟缁�
this.detailQueryParams.pageNum = 1;
+ this.dimensionQueryParams.pageNum = 1;
this.loadData();
},
// 澶勭悊Tab鍒囨崲
handleTabClick(tab) {
- if (tab.name === "typeDetail" && this.typeDetailData.length === 0) {
+ if (
+ tab.name === "dimensionDetail" &&
+ this.dimensionDetailData.length === 0
+ ) {
+ this.loadDimensionDetailData();
+ } else if (
+ tab.name === "typeDetail" &&
+ this.typeDetailData.length === 0
+ ) {
this.loadTypeDetailData();
+ } else if (
+ tab.name === "questionDetail" &&
+ this.questionDetailData.length === 0
+ ) {
+ this.loadQuestionDetailData();
}
},
@@ -1427,6 +2036,19 @@
handleDetailPageChange(page) {
this.detailQueryParams.pageNum = page;
this.loadQuestionDetailData();
+ },
+
+ // 澶勭悊缁村害鏄庣粏鍒嗛〉澶у皬鍙樺寲
+ handleDimensionSizeChange(size) {
+ this.dimensionQueryParams.pageSize = size;
+ this.dimensionQueryParams.pageNum = 1;
+ this.loadDimensionDetailData();
+ },
+
+ // 澶勭悊缁村害鏄庣粏椤电爜鍙樺寲
+ handleDimensionPageChange(page) {
+ this.dimensionQueryParams.pageNum = page;
+ this.loadDimensionDetailData();
},
// 澶勭悊绫诲瀷璇︽儏
@@ -1549,6 +2171,14 @@
}
}
}
+
+ .chart-tabs {
+ margin-bottom: 20px;
+
+ ::v-deep .el-tabs__header {
+ margin-bottom: 0;
+ }
+ }
}
.tab-section {
@@ -1561,7 +2191,8 @@
}
}
- .detail-table-section {
+ .detail-table-section,
+ .dimension-detail-section {
.option-detail {
padding: 15px;
background: #f8f9fa;
@@ -1581,7 +2212,8 @@
padding: 12px 0;
}
- .question-row {
+ .question-row,
+ .dimension-row {
td {
background-color: #fff;
}
@@ -1600,19 +2232,22 @@
font-size: 16px;
}
- .summary-row {
+ .summary-row,
+ .dimension-summary-row {
margin-top: 20px;
padding: 20px;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
border-radius: 8px;
border: 1px solid #dee2e6;
- .summary-content {
+ .summary-content,
+ .dimension-summary-content {
display: flex;
justify-content: space-around;
align-items: center;
- .summary-item {
+ .summary-item,
+ .dimension-summary-item {
text-align: center;
.label {
@@ -1684,24 +2319,6 @@
color: #409eff;
font-size: 15px;
}
-
- .trend-cell {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 5px;
-
- .trend-up,
- .trend-down,
- .trend-stable {
- font-size: 16px;
- }
-
- .trend-text {
- font-size: 13px;
- color: #666;
- }
- }
}
.type-summary-row {
@@ -1763,7 +2380,13 @@
}
}
}
-
+/* 纭繚澶氶�変笅鎷夋鏍峰紡姝g‘ */
+::v-deep .el-select__tags {
+ max-width: 200px;
+ .el-tag {
+ margin: 2px 0 2px 6px;
+ }
+}
@media (max-width: 768px) {
.satisfaction-statistics {
padding: 10px;
@@ -1795,8 +2418,10 @@
}
}
- .detail-table-section {
- .summary-content {
+ .detail-table-section,
+ .dimension-detail-section {
+ .summary-content,
+ .dimension-summary-content {
flex-direction: column;
gap: 15px;
}
diff --git a/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue b/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
index 46e59de..7b6fa0a 100644
--- a/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
+++ b/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
@@ -1,5 +1,18 @@
<template>
<div class="topic-dialog">
+ <div class="dialog-header">
+ <span class="title"> {{ configTitle }}鎸囨爣璇︽儏 </span>
+ <el-button
+ type="primary"
+ size="mini"
+ icon="el-icon-download"
+ :disabled="!processedTopicList.length"
+ @click="exportTopicDetail"
+ >
+ 瀵煎嚭
+ </el-button>
+ </div>
+
<div class="topicdia">
<div style="overflow-x: hidden; overflow-y: auto; max-height: 65vh">
<!-- 淇敼杩欓噷锛氫娇鐢� processedTopicList 鑰屼笉鏄� topicList -->
@@ -74,6 +87,8 @@
</template>
<script>
+import ExcelJS from "exceljs";
+import { saveAs } from "file-saver";
export default {
name: "TopicDialog",
props: {
@@ -94,6 +109,13 @@
return {
processedTopicList: [], // 澶勭悊鍚庣殑鏁版嵁
};
+ },
+ computed: {
+ configTitle() {
+ // 浠庣埗绾� queryParams 涓鍙�
+ const key = this.queryParams?.configKey;
+ return key === "returnVisitCount" ? "澶嶈瘖閫氱煡" : "婊℃剰搴�";
+ },
},
watch: {
// 鐩戝惉鐖剁粍浠朵紶閫掔殑鏁版嵁鍙樺寲
@@ -141,7 +163,146 @@
console.log("澶勭悊鍚庣殑鏁版嵁:", result);
this.processedTopicList = result;
},
+ /** 瀵煎嚭棰樼洰鏄庣粏 */
+ async exportTopicDetail() {
+ if (!this.processedTopicList.length) {
+ this.$message.warning("鏆傛棤鏁版嵁鍙鍑�");
+ return;
+ }
+ const workbook = new ExcelJS.Workbook();
+ const sheetName = `${
+ this.rowData.leavehospitaldistrictname || this.rowData.deptname
+ }${this.configTitle}鏄庣粏`;
+ const worksheet = workbook.addWorksheet(sheetName);
+
+ /* ---------- 鏍峰紡 ---------- */
+ const titleStyle = {
+ font: { name: "寰蒋闆呴粦", size: 14, bold: true },
+ alignment: { horizontal: "center", vertical: "middle" },
+ fill: {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFF5F7FA" },
+ },
+ };
+
+ const subtitleStyle = {
+ font: { name: "寰蒋闆呴粦", size: 12, bold: true },
+ alignment: { horizontal: "left", vertical: "middle" },
+ };
+
+ const headerStyle = {
+ font: { name: "寰蒋闆呴粦", size: 11, bold: true },
+ fill: {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFEBEEF5" },
+ },
+ alignment: { horizontal: "center", vertical: "middle" },
+ border: {
+ top: { style: "thin" },
+ left: { style: "thin" },
+ bottom: { style: "thin" },
+ right: { style: "thin" },
+ },
+ };
+
+ const cellStyle = {
+ font: { name: "瀹嬩綋", size: 10 },
+ alignment: { horizontal: "center", vertical: "middle" },
+ border: {
+ top: { style: "thin" },
+ left: { style: "thin" },
+ bottom: { style: "thin" },
+ right: { style: "thin" },
+ },
+ };
+
+ /* ---------- 鏍囬鍖� ---------- */
+ worksheet.mergeCells(1, 1, 1, 4);
+ worksheet.getCell(1, 1).value = `${this.configTitle}棰樼洰鏄庣粏`;
+ worksheet.getCell(1, 1).style = titleStyle;
+
+ worksheet.mergeCells(2, 1, 2, 4);
+ worksheet.getCell(2, 1).value = `缁熻瀵硅薄锛�${
+ this.rowData.leavehospitaldistrictname || this.rowData.deptname
+ }`;
+ worksheet.getCell(2, 1).style = subtitleStyle;
+
+ worksheet.mergeCells(3, 1, 3, 4);
+ worksheet.getCell(3, 1).value = `缁熻鏃堕棿锛�${
+ this.queryParams.dateRange?.[0] || "-"
+ } 鑷� ${this.queryParams.dateRange?.[1] || "-"}`;
+ worksheet.getCell(3, 1).style = subtitleStyle;
+
+ let currentRow = 5;
+
+ /* ---------- 閫愰鍐欏叆 ---------- */
+ this.processedTopicList.forEach((item, index) => {
+ worksheet.mergeCells(currentRow, 1, currentRow, 4);
+ worksheet.getCell(currentRow, 1).value = `绗�${index + 1}棰橈細${
+ item.scriptContent
+ } [${item.scriptType == 1 ? "鍗曢�夐" : "澶氶�夐"}]`;
+ worksheet.getCell(currentRow, 1).style = subtitleStyle;
+ currentRow++;
+
+ const headerRow = worksheet.addRow([
+ "闂閫夐」",
+ "閫夋嫨浜烘暟",
+ "鍗犳瘮",
+ "",
+ ]);
+ headerRow.eachCell((cell) => {
+ cell.style = headerStyle;
+ });
+ currentRow++;
+
+ item.details.forEach((detail) => {
+ const percent =
+ detail.chosenPercentage != null
+ ? (Number(detail.chosenPercentage) * 100).toFixed(2) + "%"
+ : "-";
+
+ const row = worksheet.addRow([
+ detail.optionText,
+ detail.chosenQuantity || 0,
+ percent,
+ "",
+ ]);
+ row.eachCell((cell) => {
+ cell.style = cellStyle;
+ });
+ currentRow++;
+ });
+
+ currentRow++;
+ });
+
+ /* ---------- 鍒楀 ---------- */
+ worksheet.columns = [
+ { width: 40 },
+ { width: 12 },
+ { width: 12 },
+ { width: 10 },
+ ];
+
+ /* ---------- 瀵煎嚭 ---------- */
+ const buffer = await workbook.xlsx.writeBuffer();
+ const fileName =
+ `${this.rowData.leavehospitaldistrictname || this.rowData.deptname}` +
+ `${this.configTitle}鏄庣粏_` +
+ `${this.queryParams.dateRange?.[0]}鑷�${this.queryParams.dateRange?.[1]}.xlsx`;
+
+ saveAs(
+ new Blob([buffer], {
+ type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ }),
+ fileName
+ );
+
+ this.$message.success("瀵煎嚭鎴愬姛");
+ },
// 鏍煎紡鍖栫櫨鍒嗘瘮
formatPercent(value) {
if (value === null || value === undefined) return "-";
@@ -193,7 +354,20 @@
overflow: hidden;
font-size: 14px;
}
+ .dialog-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 12px 16px;
+ border-bottom: 1px solid #ebeef5;
+ background: #fafafa;
+ .title {
+ font-size: 16px;
+ font-weight: 600;
+ color: #303133;
+ }
+ }
::v-deep .el-table th {
background-color: #f1f5f9;
color: #333;
diff --git a/src/views/Satisfaction/sfstatistics/components/visitStatistics.vue b/src/views/Satisfaction/sfstatistics/components/visitStatistics.vue
index 1b77e5a..d751be2 100644
--- a/src/views/Satisfaction/sfstatistics/components/visitStatistics.vue
+++ b/src/views/Satisfaction/sfstatistics/components/visitStatistics.vue
@@ -206,6 +206,7 @@
</el-table-column>
<el-table-column
+ v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'"
label="鍙婃椂鐜�"
align="center"
key="rate"
@@ -446,7 +447,7 @@
// 鍒濆鍖栨暟鎹�
async initData() {
await this.getDeptTree();
- await this.getList();
+ // await this.getList();
},
// 鑾峰彇绉戝鏍�
diff --git a/src/views/followvisit/Continue/ContinueFordetails.vue b/src/views/followvisit/Continue/ContinueFordetails.vue
index c07bcef..d20c246 100644
--- a/src/views/followvisit/Continue/ContinueFordetails.vue
+++ b/src/views/followvisit/Continue/ContinueFordetails.vue
@@ -256,7 +256,7 @@
v-if="item.scriptType == 1 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{
+ {{ index + 1 }}. [鍗曢�塢<span>{{
item.scriptContent
}}</span>
</div>
@@ -301,7 +301,7 @@
v-if="item.scriptType == 2 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕澶氶�塢<span>{{
+ {{ index + 1 }}. [澶氶�塢<span>{{
item.scriptContent
}}</span>
</div>
@@ -334,7 +334,7 @@
v-if="item.scriptType == 4 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{
+ {{ index + 1 }}. [闂瓟]<span>{{
item.scriptContent
}}</span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
@@ -369,7 +369,7 @@
>
<div v-if="item.targetvalue">
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{
+ {{ index + 1 }}. [鍗曢�塢<span>{{
item.questiontext
}}</span>
</div>
@@ -391,7 +391,7 @@
</div>
<div class="scriptTopic-dev" :key="index" v-else>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{
+ {{ index + 1 }}. [闂瓟]<span>{{
item.scriptContent
}}</span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
diff --git a/src/views/followvisit/Continue/index.vue b/src/views/followvisit/Continue/index.vue
index 896131a..3381ea3 100644
--- a/src/views/followvisit/Continue/index.vue
+++ b/src/views/followvisit/Continue/index.vue
@@ -172,8 +172,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -323,10 +323,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -336,37 +336,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
+ <div v-if="scope.row.sendstateView == 5">
<el-tag type="danger" :disable-transitions="false"
- >瓒呮椂</el-tag
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -1173,38 +1165,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
value: null,
label: "鍏ㄩ儴",
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
diff --git a/src/views/followvisit/HistoricalFollow/index.vue b/src/views/followvisit/HistoricalFollow/index.vue
index 6c25bb3..aca9f10 100644
--- a/src/views/followvisit/HistoricalFollow/index.vue
+++ b/src/views/followvisit/HistoricalFollow/index.vue
@@ -31,8 +31,8 @@
placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
></el-input>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -115,10 +115,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -128,32 +128,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 1">
<el-tag type="primary" :disable-transitions="false"
>寰呴殢璁�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 3">
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
<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.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -654,31 +651,23 @@
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
{
- value: 7,
- label: "瓒呮椂",
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
diff --git a/src/views/followvisit/OutpatientAgain/index.vue b/src/views/followvisit/OutpatientAgain/index.vue
index 283a56f..651130f 100644
--- a/src/views/followvisit/OutpatientAgain/index.vue
+++ b/src/views/followvisit/OutpatientAgain/index.vue
@@ -125,8 +125,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -294,10 +294,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -307,37 +307,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
+ <div v-if="scope.row.sendstateView == 5">
<el-tag type="danger" :disable-transitions="false"
- >瓒呮椂</el-tag
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -1006,7 +998,7 @@
topqueryParams: {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鏈嶅姟鏃堕棿(姝e簭) 1 鏈嶅姟鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
serviceType: 3,
searchscope: 3,
@@ -1019,38 +1011,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
value: null,
label: "鍏ㄩ儴",
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
@@ -1403,7 +1387,7 @@
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: 2, //0 鏈嶅姟鏃堕棿(姝e簭) 1 鏈嶅姟鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
serviceType: 3,
searchscope: 3,
diff --git a/src/views/followvisit/SpecificDisease/index.vue b/src/views/followvisit/SpecificDisease/index.vue
index f8aaec2..cb2734b 100644
--- a/src/views/followvisit/SpecificDisease/index.vue
+++ b/src/views/followvisit/SpecificDisease/index.vue
@@ -108,8 +108,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -224,11 +224,11 @@
>
</template>
</el-table-column>
- <el-table-column
- label="浠诲姟鐘舵��"
+ <el-table-column
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -238,32 +238,29 @@
:content="scope.row.remark"
placement="top-start"
>
- <div v-if="scope.row.sendstate == 1">
+ <div v-if="scope.row.sendstateView == 1">
<el-tag type="primary" :disable-transitions="false"
- >琚鍙�</el-tag
+ >寰呴殢璁�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 2">
+ <div v-if="scope.row.sendstateView == 2">
<el-tag type="primary" :disable-transitions="false"
- >寰呭彂閫�</el-tag
+ >闅忚涓�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 3">
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
<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.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -875,34 +872,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
+ {
+ value: null,
+ label: "鍏ㄩ儴",
+ },
{
value: 1,
- label: "琚鍙�",
+ label: "寰呴殢璁�",
},
{
value: 2,
- label: "寰呭彂閫�",
+ label: "闅忚涓�",
},
{
value: 3,
- label: "宸插彂閫佹湭棰嗗彇",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
diff --git a/src/views/followvisit/Tracking/index.vue b/src/views/followvisit/Tracking/index.vue
index 252dc77..8579ede 100644
--- a/src/views/followvisit/Tracking/index.vue
+++ b/src/views/followvisit/Tracking/index.vue
@@ -64,8 +64,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -233,10 +233,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -246,37 +246,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
+ <div v-if="scope.row.sendstateView == 5">
<el-tag type="danger" :disable-transitions="false"
- >瓒呮椂</el-tag
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -945,7 +937,7 @@
topqueryParams: {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 寤剁画鎶ょ悊鏃堕棿(姝e簭) 1 寤剁画鎶ょ悊鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
serviceType: 3,
searchscope: 3,
@@ -958,38 +950,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
value: null,
label: "鍏ㄩ儴",
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
@@ -1342,7 +1326,7 @@
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: 2, //0 寤剁画鎶ょ悊鏃堕棿(姝e簭) 1 寤剁画鎶ょ悊鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
serviceType: 3,
searchscope: 3,
diff --git a/src/views/followvisit/again/index.vue b/src/views/followvisit/again/index.vue
index 73b5797..5833d59 100644
--- a/src/views/followvisit/again/index.vue
+++ b/src/views/followvisit/again/index.vue
@@ -125,8 +125,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -302,7 +302,7 @@
:show-overflow-tooltip="true"
>
</el-table-column>
- <el-table-column
+ <!-- <el-table-column
label="浠诲姟鐘舵��"
align="center"
key="sendstate"
@@ -346,6 +346,48 @@
</div>
<div v-if="scope.row.sendstate == 7">
<el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+ </div>
+ </el-tooltip>
+ </template>
+ </el-table-column> -->
+ <el-table-column
+ label="闅忚鐘舵��"
+ align="center"
+ key="sendstateView"
+ prop="sendstateView"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
+ >
</div>
</el-tooltip>
</template>
@@ -1005,7 +1047,7 @@
topqueryParams: {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
serviceType: 2,
searchscope: 3,
@@ -1025,31 +1067,23 @@
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
{
- value: 7,
- label: "瓒呮椂",
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
@@ -1403,7 +1437,7 @@
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
serviceType: 2,
searchscope: 3,
diff --git a/src/views/followvisit/beHospitalized/followUp.vue b/src/views/followvisit/beHospitalized/followUp.vue
index a252b74..e8bd9a4 100644
--- a/src/views/followvisit/beHospitalized/followUp.vue
+++ b/src/views/followvisit/beHospitalized/followUp.vue
@@ -172,8 +172,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -368,7 +368,7 @@
:show-overflow-tooltip="true"
>
</el-table-column>
- <el-table-column
+ <!-- <el-table-column
label="浠诲姟鐘舵��"
align="center"
key="sendstate"
@@ -412,6 +412,48 @@
</div>
<div v-if="scope.row.sendstate == 7">
<el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+ </div>
+ </el-tooltip>
+ </template>
+ </el-table-column> -->
+ <el-table-column
+ label="闅忚鐘舵��"
+ align="center"
+ key="sendstateView"
+ prop="sendstateView"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
+ >
</div>
</el-tooltip>
</template>
@@ -1263,8 +1305,8 @@
topqueryParams: {
pageNum: 1,
pageSize: 10,
- sendstate:
- localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 2,
+ sendstateView:
+ localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 1,
sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
serviceType: 18,
searchscope: 3,
@@ -1284,31 +1326,23 @@
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
{
- value: 7,
- label: "瓒呮椂",
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
@@ -1740,7 +1774,7 @@
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
serviceType: 18,
searchscope: 3,
diff --git a/src/views/followvisit/complaint/index.vue b/src/views/followvisit/complaint/index.vue
index 4d71869..0c6e97b 100644
--- a/src/views/followvisit/complaint/index.vue
+++ b/src/views/followvisit/complaint/index.vue
@@ -133,8 +133,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -304,10 +304,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -317,37 +317,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
+ <div v-if="scope.row.sendstateView == 5">
<el-tag type="danger" :disable-transitions="false"
- >瓒呮椂</el-tag
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -1120,31 +1112,23 @@
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue
index 196684e..e14bc4f 100644
--- a/src/views/followvisit/discharge/index.vue
+++ b/src/views/followvisit/discharge/index.vue
@@ -172,8 +172,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -183,6 +183,7 @@
</el-option>
</el-select>
</el-form-item>
+
<el-form-item label="鎺掑簭鏂瑰紡" prop="status">
<el-select v-model="topqueryParams.sort" placeholder="璇烽�夋嫨">
<el-option
@@ -368,11 +369,12 @@
:show-overflow-tooltip="true"
>
</el-table-column>
+
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -382,47 +384,34 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
- <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+ <div v-if="scope.row.sendstateView == 5">
+ <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="澶勭悊鎰忚"
@@ -438,7 +427,18 @@
/>
</template>
</el-table-column>
-
+ <el-table-column
+ label="浠诲姟鎵ц鏂瑰紡"
+ align="center"
+ key="preachform"
+ prop="preachform"
+ width="160"
+ :show-overflow-tooltip="true"
+ >
+ <template slot-scope="scope">
+ <span v-for="item in scope.row.preachform">{{ item }}銆� </span>
+ </template>
+ </el-table-column>
<el-table-column
label="闅忚瀹屾垚鏃堕棿"
sortable
@@ -565,18 +565,7 @@
prop="templatename"
width="200"
/>
- <el-table-column
- label="浠诲姟鎵ц鏂瑰紡"
- align="center"
- key="preachform"
- prop="preachform"
- width="160"
- :show-overflow-tooltip="true"
- >
- <template slot-scope="scope">
- <span v-for="item in scope.row.preachform">{{ item }}銆� </span>
- </template>
- </el-table-column>
+
<!-- <el-table-column
label="浠诲姟鍙戦�佹祦绋�"
align="center"
@@ -1263,8 +1252,8 @@
topqueryParams: {
pageNum: 1,
pageSize: 10,
- sendstate:
- localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 2,
+ sendstateView:
+ localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 1,
sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
serviceType: 2,
searchscope: 3,
@@ -1284,33 +1273,26 @@
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
{
- value: 7,
- label: "瓒呮椂",
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
+
sextype: [
{
value: 1,
@@ -1739,7 +1721,7 @@
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
serviceType: 2,
searchscope: 3,
diff --git a/src/views/followvisit/discharge/outpatientService.vue b/src/views/followvisit/discharge/outpatientService.vue
index 62b91fd..38bcdea 100644
--- a/src/views/followvisit/discharge/outpatientService.vue
+++ b/src/views/followvisit/discharge/outpatientService.vue
@@ -131,8 +131,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -300,10 +300,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -313,37 +313,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
+ <div v-if="scope.row.sendstateView == 5">
<el-tag type="danger" :disable-transitions="false"
- >瓒呮椂</el-tag
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -1006,38 +998,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
value: null,
label: "鍏ㄩ儴",
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
@@ -1377,7 +1361,7 @@
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
serviceType: 3,
searchscope: 3,
diff --git a/src/views/followvisit/mzsatisfaction/index.vue b/src/views/followvisit/mzsatisfaction/index.vue
index 25c9e19..13205f5 100644
--- a/src/views/followvisit/mzsatisfaction/index.vue
+++ b/src/views/followvisit/mzsatisfaction/index.vue
@@ -132,8 +132,11 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select
+ v-model="topqueryParams.sendstateView"
+ placeholder="璇烽�夋嫨"
+ >
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -187,7 +190,7 @@
<el-col :span="1.5">
<el-button
type="primary"
- icon="el-icon-plus"
+ icon="el-icon-plus"
size="medium"
@click="handleAdd"
>鏂板</el-button
@@ -257,7 +260,6 @@
</div>
</div>
</el-col>
-
</el-row>
<el-table
v-loading="loading"
@@ -290,11 +292,11 @@
type="text"
@click="
gettoken360(
- scope.row.sfzh,
- scope.row.drcode,
- scope.row.drname,
- scope.row.patid
- )
+ scope.row.sfzh,
+ scope.row.drcode,
+ scope.row.drname,
+ scope.row.patid
+ )
"
><span class="button-textsc">{{
scope.row.sendname
@@ -302,11 +304,11 @@
>
</template>
</el-table-column>
- <el-table-column
- label="浠诲姟鐘舵��"
+ <el-table-column
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -316,37 +318,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
+ <div v-if="scope.row.sendstateView == 5">
<el-tag type="danger" :disable-transitions="false"
- >瓒呮椂</el-tag
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -483,7 +477,7 @@
:show-overflow-tooltip="true"
>
</el-table-column>
- <el-table-column
+ <el-table-column
label="闅忚浜哄憳"
align="center"
key="updateBy"
@@ -984,7 +978,7 @@
addserviceSubtask,
query360PatInfo,
addsatisfaction,
- query360PatInfonh
+ query360PatInfonh,
} from "@/api/AiCentre/index";
import { alterpatient, particularpatient } from "@/api/patient/homepage";
import Treeselect from "@riophae/vue-treeselect";
@@ -1157,38 +1151,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
value: null,
label: "鍏ㄩ儴",
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
@@ -1359,7 +1345,7 @@
});
},
affiliation() {
- this.topqueryParams.managementDoctorCode= store.getters.hisUserId;
+ this.topqueryParams.managementDoctorCode = store.getters.hisUserId;
this.getList(1);
},
@@ -1762,9 +1748,9 @@
Seedetails(row) {
let type = "";
console.log(row, "rwo");
- if (row.type == 1) {
- type = 1;
- }
+ if (row.type == 1) {
+ type = 1;
+ }
this.$router.push({
path: "/followvisit/record/detailpage/",
query: {
diff --git a/src/views/followvisit/operation/index.vue b/src/views/followvisit/operation/index.vue
new file mode 100644
index 0000000..759b943
--- /dev/null
+++ b/src/views/followvisit/operation/index.vue
@@ -0,0 +1,2321 @@
+<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 ? item.value : 0 }}
+ </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-col :span="2.5" v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'">
+ <div class="jgleftvlue">
+ <el-card shadow="hover ">
+ <div style="padding: 8px">
+ <span>璀﹀憡</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ jgvalue }}
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ <el-row :gutter="20">
+ <!--鐢ㄦ埛鏁版嵁-->
+ <el-form
+ :model="topqueryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
+ <el-form-item label="浠诲姟鍚嶇О">
+ <el-input
+ v-model="topqueryParams.taskName"
+ placeholder="璇烽�夋嫨浠诲姟鍚嶇О"
+ ></el-input>
+ </el-form-item>
+
+ <el-form-item label="鎵嬫湳瀹屾垚鏃堕棿">
+ <el-date-picker
+ v-model="dateRange"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="搴旈殢璁挎椂闂�">
+ <el-date-picker
+ v-model="dateRangefs"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ ></el-date-picker>
+ </el-form-item>
+
+ <el-form-item label="鎮h�呭鍚�" prop="sendname">
+ <el-input
+ v-model="topqueryParams.sendname"
+ placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="璇婃柇鍚嶇О" prop="leavediagname">
+ <el-input
+ v-model="topqueryParams.leavediagname"
+ placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="闅忚浜哄憳" prop="updateBy">
+ <el-input
+ v-model="topqueryParams.updateBy"
+ placeholder="璇疯緭鍏ラ殢璁夸汉鍛�"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="涓绘不鍖荤敓" prop="drname">
+ <el-input
+ v-model="topqueryParams.drname"
+ placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="缁忕鍖荤敓" prop="managementDoctor">
+ <el-input
+ v-model="topqueryParams.managementDoctor"
+ placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鏃ユ湡闄愬埗" prop="status">
+ <el-select v-model="endOut" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in endOuts"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <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.sendstateView" 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="鎺掑簭鏂瑰紡" prop="status">
+ <el-select v-model="topqueryParams.sort" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in topicoptionssort"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleQuery(1)"
+ >鎼滅储</el-button
+ >
+ <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+ >閲嶇疆</el-button
+ >
+ </el-form-item>
+ </el-form>
+ <el-divider></el-divider>
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <div class="documentf">
+ <div class="document">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-upload2"
+ size="medium"
+ @click="handleExport"
+ >瀵煎嚭</el-button
+ >
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ icon="el-icon-plus"
+ size="medium"
+ @click="handleAdd"
+ >鏂板</el-button
+ >
+ </el-col>
+
+ <el-col :span="1.5">
+ <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
+ size="medium"
+ @click="buidegetTasklist()"
+ >寰呭姙鏈嶅姟</el-button
+ >
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-table
+ v-loading="loading"
+ ref="userform"
+ :data="userList"
+ :row-class-name="tableRowClassName"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column
+ label="浠诲姟鍚嶇О"
+ fixed
+ width="150"
+ show-overflow-tooltip
+ align="center"
+ key="taskName"
+ prop="taskName"
+ />
+ <!-- <el-table-column label="搴忓彿" fixed align="center" key="id" prop="id" /> -->
+ <el-table-column
+ label="濮撳悕"
+ width="100"
+ align="center"
+ key="sendname"
+ prop="sendname"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ gettoken360(
+ scope.row.sfzh,
+ scope.row.drcode,
+ scope.row.drname,
+ scope.row.patid
+ )
+ "
+ ><span class="button-textsc">{{
+ scope.row.sendname
+ }}</span></el-button
+ >
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="璇婃柇鍚嶇О"
+ align="center"
+ key="leavediagname"
+ prop="leavediagname"
+ width="120"
+ :show-overflow-tooltip="true"
+ >
+ </el-table-column>
+ <!-- <el-table-column
+ label="浠诲姟鐘舵��"
+ align="center"
+ key="sendstate"
+ prop="sendstate"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <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 == 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="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 7">
+ <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+ </div>
+ </el-tooltip>
+ </template>
+ </el-table-column> -->
+ <el-table-column
+ label="闅忚鐘舵��"
+ align="center"
+ key="sendstateView"
+ prop="sendstateView"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <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="suggest"
+ prop="suggest"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <dict-tag
+ :options="dict.type.sys_suggest"
+ :value="scope.row.suggest"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="浠诲姟鎵ц鏂瑰紡"
+ align="center"
+ key="preachform"
+ prop="preachform"
+ width="160"
+ :show-overflow-tooltip="true"
+ >
+ <template slot-scope="scope">
+ <span v-for="item in scope.row.preachform">{{ item }}銆� </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="鍑洪櫌鏃ユ湡"
+ width="200"
+ align="center"
+ key="endtime"
+ prop="endtime"
+ >
+ <template slot-scope="scope">
+ <span>{{ formatTime(scope.row.endtime) }}</span>
+ </template></el-table-column
+ >
+ <el-table-column
+ label="搴旈殢璁挎棩鏈�"
+ width="200"
+ align="center"
+ key="visitTime"
+ prop="visitTime"
+ >
+ <template slot-scope="scope">
+ <span>{{ formatTime(scope.row.visitTime) }}</span>
+ </template></el-table-column
+ >
+ <!-- 鍘� -->
+ <el-table-column
+ label="涓绘不鍖荤敓"
+ width="120"
+ align="center"
+ key="drname"
+ prop="drname"
+ />
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="闅忚浜哄憳"
+ align="center"
+ key="updateBy"
+ prop="updateBy"
+ width="120"
+ />
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="缁忕鍖荤敓"
+ align="center"
+ key="managementDoctor"
+ prop="managementDoctor"
+ width="120"
+ />
+ <el-table-column
+ label="鍑洪櫌澶╂暟"
+ width="120"
+ align="center"
+ key="endDay"
+ prop="endDay"
+ >
+ <template slot-scope="scope">
+ <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"
+ align="center"
+ key="nurseName"
+ prop="nurseName"
+ />
+
+ <!-- <el-table-column
+ label="鐥呭巻鍙�"
+ align="center"
+ sortable
+ key="medicalRecordNo"
+ prop="medicalRecordNo"
+ width="120"
+ /> -->
+
+ <!-- <el-table-column label="骞撮緞" align="center" key="age" prop="age" /> -->
+ <!-- <el-table-column label="鎬у埆"width="100" align="center" key="sex" prop="sex" /> -->
+ <!-- <el-table-column label="搴婂彿" align="center" key="badNo" prop="badNo" /> -->
+ <el-table-column
+ label="绉戝"
+ align="center"
+ key="deptname"
+ prop="deptname"
+ width="120"
+ >
+ </el-table-column>
+ <el-table-column
+ label="鐥呭尯"
+ align="center"
+ key="leavehospitaldistrictname"
+ prop="leavehospitaldistrictname"
+ width="120"
+ >
+ </el-table-column>
+
+ <el-table-column
+ label="鍑洪櫌闅忚妯℃澘鍚嶇О"
+ align="center"
+ key="templatename"
+ prop="templatename"
+ width="200"
+ />
+
+ <!-- <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="220"
+ align="center"
+ key="remark"
+ prop="remark"
+ >
+ <template slot-scope="scope" v-if="scope.row.remark">
+ <el-tooltip
+ :content="scope.row.remark"
+ placement="top"
+ effect="dark"
+ >
+ <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>
+ </el-tooltip>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ fixed="right"
+ width="300"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <!-- <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍐嶆闅忚"
+ placement="top"
+ >
+ <el-button
+ size="medium"
+ type="text"
+ v-if="scope.row.isVisitAgain!=2"
+ @click="followupvisit(scope.row)"
+ ><span class="button-bb"
+ ><i class="el-icon-s-promotion"></i>鍐嶆闅忚</span
+ ></el-button
+ >
+ </el-tooltip>
+ <el-tooltip
+ v-if="scope.row.sendstate == 1 || scope.row.sendstate == 2"
+ class="item"
+ effect="dark"
+ content="鏆傚仠鏈嶅姟"
+ placement="top"
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="handlestop(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-sc"
+ ><i class="el-icon-remove-outline"></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="handleUpdate(scope.row)"
+ ><span class="button-textxga"
+ ><i class="el-icon-edit"></i>鎮h�呰繃婊�</span
+ ></el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="topqueryParams.pageNum"
+ :limit.sync="topqueryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-row>
+ <!-- 婊℃剰搴﹀脊妗� -->
+ <el-dialog
+ title="闅忚婊℃剰搴﹁瘎鍒�"
+ :visible.sync="scoreDialogVisible"
+ width="80%"
+ :close-on-click-modal="false"
+ >
+ <el-table :data="selectedRows" border style="width: 100%">
+ <el-table-column
+ label="濮撳悕"
+ width="100"
+ align="center"
+ prop="sendname"
+ />
+ <el-table-column
+ label="浠诲姟鍚嶇О"
+ width="180"
+ align="center"
+ prop="taskName"
+ />
+ <!-- 鏂板璇勫垎鍒� -->
+ <el-table-column
+ label="鐪熷疄鎬�(20)"
+ align="center"
+ key="authenticity"
+ prop="authenticity"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.authenticity"
+ :min="0"
+ :max="20"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="涓�鍛ㄥ唴瀹屾垚(20)"
+ align="center"
+ key="weekFinish"
+ prop="weekFinish"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.weekFinish"
+ :min="0"
+ :max="20"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="瑙勮寖鎬�(10)"
+ align="center"
+ key="standard"
+ prop="standard"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.standard"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍙婃椂鎬�(10)"
+ align="center"
+ key="timeliness"
+ prop="timeliness"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.timeliness"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="瀹f暀鎯呭喌(10)"
+ align="center"
+ key="library"
+ prop="library"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.library"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鐜婊℃剰搴�(10)"
+ align="center"
+ key="environment"
+ prop="environment"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.environment"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍖荤敓婊℃剰搴�(10)"
+ align="center"
+ key="doctorSatisfaction"
+ prop="doctorSatisfaction"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.doctorSatisfaction"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎶ゅ+婊℃剰搴�(10)"
+ align="center"
+ key="nurseSatisfaction"
+ prop="nurseSatisfaction"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.nurseSatisfaction"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎬诲垎"
+ align="center"
+ key="total"
+ prop="total"
+ fixed="right"
+ >
+ <template slot-scope="scope">
+ <span>{{ calculateTotal(scope.row) }}</span>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="scoreDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="saveScores">淇濆瓨</el-button>
+ </div>
+ </el-dialog>
+ <!-- 娣诲姞鎴栦慨鏀瑰奖鍍忛殢璁垮璇濇 -->
+ <el-dialog
+ :title="amendtag ? '淇敼鎮h�呬俊鎭�' : '鏂板鎮h��'"
+ :visible.sync="Labelchange"
+ width="900px"
+ >
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+ <el-row>
+ <el-col :span="8">
+ <el-form-item label="濮撳悕" width="100" prop="name">
+ <el-input
+ v-model="form.name"
+ placeholder="璇疯緭鍏ュ鍚�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鎬у埆" width="100" prop="sex">
+ <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+ <el-option
+ v-for="dict in sextype"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="骞撮緞" prop="age">
+ <el-input
+ v-model="form.age"
+ placeholder="璇疯緭鍏ュ勾榫�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="8">
+ <el-form-item label="杩囨护鍖荤敓" width="100" prop="filterDrname">
+ <el-input
+ v-model="form.filterDrname"
+ placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="杩囨护鍘熷洜">
+ <el-input
+ v-model="form.notrequiredreason"
+ type="textarea"
+ placeholder="璇疯緭鍏ヨ繃婊ゅ師鍥�"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ <!-- 淇敼鍙戦�佹椂闂村璇濇 -->
+ <el-dialog
+ title="鍙戦�佹椂闂磋缃�"
+ :visible.sync="modificationVisible"
+ width="45%"
+ >
+ <div style="margin-bottom: 20px; color: red">
+ 缁熶竴淇敼褰撳ぉ鏈彂閫佺殑浠诲姟鏃堕棿
+ </div>
+
+ <el-form
+ :model="ruleForm"
+ :rules="rules"
+ ref="ruleForm"
+ label-width="120px"
+ class="demo-ruleForm"
+ >
+ <el-form-item label="鍙戦�佹棩鏈�">
+ <el-date-picker
+ v-model="ruleForm.value1"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
+ </el-date-picker>
+ </el-form-item>
+
+ <el-form-item label="鏃堕棿娈�" prop="type">
+ <el-checkbox-group v-model="ruleForm.type">
+ <el-checkbox label="涓婂崍" name="type"></el-checkbox>
+ <el-checkbox label="涓嬪崍" name="type"></el-checkbox>
+ <el-checkbox label="鏅氫笂" name="type"></el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+ <el-form-item label="涓婂崍鏃堕棿鍖洪棿" required>
+ <el-time-picker
+ is-range
+ v-model="ruleForm.value2"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ placeholder="閫夋嫨鏃堕棿鑼冨洿"
+ >
+ </el-time-picker>
+ </el-form-item>
+ <el-form-item label="涓嬪崍鏃堕棿鍖洪棿" required>
+ <el-time-picker
+ is-range
+ v-model="ruleForm.value3"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ placeholder="閫夋嫨鏃堕棿鑼冨洿"
+ >
+ </el-time-picker>
+ </el-form-item>
+ <el-form-item label="鏅氫笂鏃堕棿鍖洪棿" required>
+ <el-time-picker
+ is-range
+ v-model="ruleForm.value4"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ placeholder="閫夋嫨鏃堕棿鑼冨洿"
+ >
+ </el-time-picker>
+ </el-form-item>
+ </el-form>
+
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="modificationVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="modificationVisible = false"
+ >纭� 瀹�</el-button
+ >
+ </span>
+ </el-dialog>
+ <!-- 鍐嶆闅忚 -->
+ <el-dialog title="鎮h�呭啀娆¢殢璁�" :visible.sync="dialogFormVisible">
+ <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px">
+ <el-form-item label="浠诲姟鍚嶇О">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.taskName"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鎮h�呭悕绉�">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.sendname"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="骞撮緞">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.age"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="绉戝">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.deptname"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鐥呭尯">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.leavehospitaldistrictname"
+ ></el-input>
+ </el-form-item>
+
+ <el-form-item label="闅忚鏂瑰紡" prop="resource">
+ <el-radio-group v-model="zcform.resource">
+ <el-radio label="1">鏈梾鍖洪殢璁�</el-radio>
+ <el-radio label="2">闅忚涓績闅忚</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <!-- <el-form-item label="鍗冲埢鍙戦��">
+ <el-switch v-model="zcform.delivery"></el-switch>
+ </el-form-item> -->
+ <el-form-item label="鎵嬫湳瀹屾垚鏃堕棿">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.endtime"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="闅忚瀹屾垚鏃堕棿" prop="date1">
+ <el-date-picker
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ v-model="zcform.date1"
+ style="width: 100%"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="闅忚璁板綍">
+ <el-input type="textarea" v-model="zcform.remark"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="setupsubtask">纭鍒涘缓鏈嶅姟</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ delUser,
+ addUser,
+ updateUser,
+ resetUserPwd,
+ changeUserStatus,
+} from "@/api/system/user";
+import {
+ getTaskservelist,
+ buidegetTasklist,
+ addserviceSubtask,
+ query360PatInfo,
+ addsatisfaction,
+ query360PatInfonh,
+} from "@/api/AiCentre/index";
+import { alterpatient, particularpatient } from "@/api/patient/homepage";
+import Treeselect from "@riophae/vue-treeselect";
+import store from "@/store";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+ name: "Discharge",
+ dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
+ components: { Treeselect },
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ dialogFormVisible: false,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+ userList: null,
+ // 寮瑰嚭灞傛爣棰�
+ title: "鏂板褰卞儚闅忚",
+ // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰
+ addalteropen: false,
+ // 淇敼鍙戦�佹椂闂村璇濇
+ modificationVisible: false,
+ // 閮ㄩ棬鍚嶇О
+ deptName: undefined,
+ // 榛樿瀵嗙爜
+ initPassword: undefined,
+ // 鏃ユ湡鑼冨洿
+ dateRange: [],
+ dateRangefs: [],
+ // 宀椾綅閫夐」
+ postOptions: [],
+ ruleForm: {
+ type: [],
+ },
+ zcform: {},
+ dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
+ inputVisible: false,
+ Labelchange: false,
+ ycvalue: "",
+ jgvalue: "",
+ yfsvalue: "",
+ inputValue: "",
+ preachform: "",
+ previewVisible: false, //褰卞儚闅忚棰勮寮规
+ radio: "",
+ radios: [],
+ previewtype: 2, //棰勮褰卞儚闅忚绫诲瀷
+ total: 0, // 鎬绘潯鏁�
+ // 婊℃剰搴﹁皟鏌ユ暟鎹�
+ scoreDialogVisible: false,
+ selectedRows: [],
+
+ value: [],
+ list: [],
+
+ sourcetype: [
+ {
+ value: 1,
+ label: "绉戝",
+ children: [],
+ },
+ {
+ value: 2,
+ label: "鐥呭尯",
+ children: [],
+ },
+ {
+ value: 3,
+ label: "鍏ㄩ儴",
+ },
+ ],
+ loading: false,
+ cardlist: [
+ {
+ name: "鎵嬫湳鎬婚噺",
+ value: 0,
+ },
+ // {
+ // name: "鎮h�呰繃婊�",
+ // value: 0,
+ // },
+ {
+ name: "闇�闅忚",
+ value: 0,
+ },
+ {
+ name: "鍙戦�佸け璐�",
+ value: 0,
+ },
+ {
+ name: "寰呴殢璁�",
+ value: 0,
+ },
+ // {
+ // name: "宸插彂閫�",
+ // value: 0,
+ // },
+
+ // {
+ // name: "琛ㄥ崟宸插彂閫�",
+ // value: 0,
+ // },
+ ],
+ zcrules: {
+ date1: [
+ { required: true, message: "璇烽�夋嫨闅忚鏂瑰紡", trigger: "change" },
+ ],
+ resource: [
+ { required: true, message: "璇烽�夋嫨闅忚鏃堕棿", trigger: "blur" },
+ ],
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {
+ phonenumber: "",
+ totagid: "",
+ types: "",
+ nickName: "",
+ qystatus: "",
+ btstatus: "",
+ },
+ // endOut: 1,
+ endOut: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 0 : 1, //0 鎵嬫湳瀹屾垚鏃堕棿(姝e簭) 1 鎵嬫湳瀹屾垚鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+ endOuts: [
+ {
+ value: 0,
+ label: "鎴鑷冲綋鏃ユ湇鍔�",
+ },
+ {
+ value: 1,
+ label: "鍏ㄩ儴鏈嶅姟",
+ },
+ ],
+ topicoptionssort: [
+ {
+ value: 0,
+ label: "鎵嬫湳瀹屾垚鏃堕棿(姝e簭)",
+ },
+ {
+ value: 1,
+ label: "鎵嬫湳瀹屾垚鏃堕棿(鍊掑簭)",
+ },
+ {
+ value: 2,
+ label: "鍙戦�佹椂闂�(姝e簭)",
+ },
+ {
+ value: 3,
+ label: "鍙戦�佹椂闂�(鍊掑簭)",
+ },
+ {
+ value: 7,
+ label: "搴旈殢璁挎棩鏈�(姝e簭)",
+ },
+ {
+ value: 8,
+ label: "搴旈殢璁挎棩鏈�(鍊掑簭)",
+ },
+ {
+ value: 9,
+ label: "鎸夌収鎮h�呮帓搴�",
+ },
+ ],
+ // 鏌ヨ鍙傛暟
+ topqueryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ sendstateView:
+ localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 1,
+ sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鎵嬫湳瀹屾垚鏃堕棿(姝e簭) 1 鎵嬫湳瀹屾垚鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+ serviceType: 19,
+ searchscope: 3,
+ visitCount: 1,
+ scopetype: [],
+ leaveldeptcodes: [],
+ leavehospitaldistrictcodes: [],
+ },
+ orgname: "",
+ propss: { multiple: true },
+ options: [],
+
+ topicoptions: [
+ {
+ value: null,
+ label: "鍏ㄩ儴",
+ },
+ {
+ value: 1,
+ label: "寰呴殢璁�",
+ },
+ {
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
+ value: 3,
+ label: "鏈畬鎴�",
+ },
+ {
+ value: 4,
+ label: "宸插畬鎴�",
+ },
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
+ },
+ ],
+ sextype: [
+ {
+ value: 1,
+ label: "鐢�",
+ },
+ {
+ value: 2,
+ label: "濂�",
+ },
+ ],
+ topicoptionsyj: [
+ {
+ value: 1,
+ label: "寮傚父",
+ },
+ {
+ value: 2,
+ label: "璀﹀憡",
+ },
+ {
+ value: 0,
+ label: "姝e父",
+ },
+ ],
+ url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo",
+ postData: {
+ XiaoXiTou: {
+ FaSongFCSJC: "ZJHES",
+ FaSongJGID: localStorage.getItem("orgid"),
+ FaSongJGMC: localStorage.getItem("orgname"),
+ FaSongSJ: "2025-01-09聽17:29:36",
+ FaSongXTJC: "SUIFANGXT",
+ FaSongXTMC: "闅忚绯荤粺",
+ XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171",
+ XiaoXiLX: "SC_LC_360STCX",
+ XiaoXiMC: "360聽瑙嗗浘鏌ヨ",
+ ZuHuID: localStorage.getItem("ZuHuID"),
+ ZuHuMC: localStorage.getItem("orgname"),
+ },
+ YeWuXX: {
+ BingRenXX: {
+ ZhengJianHM: "",
+ ZhengJianLXDM: "01",
+ ZhengJianLXMC: "灞呮皯韬唤璇�",
+ ZuZhiJGID: localStorage.getItem("orgid"),
+ ZuZhiJGMC: localStorage.getItem("orgname"),
+ },
+ YongHuXX: {
+ XiTongID: "SUIFANGXT",
+ XiTongMC: "闅忚绯荤粺",
+ YongHuID: localStorage.getItem("YongHuID"),
+ YongHuXM: localStorage.getItem("YongHuXM"),
+ ZuZhiJGID: localStorage.getItem("orgid"),
+ ZuZhiJGMC: localStorage.getItem("orgname"),
+ idp: "lyra",
+ },
+ },
+ },
+ amendtag: false,
+ errtype: "",
+ leavehospitaldistrictcode: "",
+ serviceState: [],
+ checkboxlist: [],
+ // 琛ㄥ崟鏍¢獙
+ rules: {},
+ };
+ },
+ watch: {
+ // 鐩戝惉璺敱鍙傛暟鍙樺寲
+ "$route.query": {
+ handler(newQuery, oldQuery) {
+ if (newQuery.errtype !== oldQuery.errtype) {
+ console.log(22);
+
+ this.loadData(); // 閲嶆柊鍔犺浇鏁版嵁
+ }
+ },
+ immediate: true,
+ },
+ },
+ created() {
+ this.serviceState = store.getters.serviceState;
+ this.checkboxlist = store.getters.checkboxlist;
+ this.orgname = localStorage.getItem("orgname");
+ 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 (this.errtype == 1) {
+ this.toleadExport(2);
+ } else if (this.errtype == 2) {
+ // 寰呴殢璁�
+ this.toleadExport(3);
+ } else if (this.errtype == 3) {
+ // 澶辫触
+ this.toleadExport(4);
+ } else if (this.errtype == 4) {
+ // 寮傚父
+ this.toleadExport(2);
+ } else if (this.errtype == 5) {
+ // 鍏ㄩ儴
+ this.toleadExport(5);
+ } else {
+ this.getList(1);
+ }
+ this.getConfigKey("sys.user.initPassword").then((response) => {
+ this.initPassword = response.msg;
+ });
+ },
+ activated() {
+ this.errtype = this.$route.query.errtype;
+ if (this.errtype == 1) {
+ this.toleadExport(2);
+ } else if (this.errtype == 2) {
+ // 寰呴殢璁�
+ this.toleadExport(3);
+ } else if (this.errtype == 3) {
+ // 澶辫触
+ this.toleadExport(4);
+ } else if (this.errtype == 4) {
+ // 寮傚父
+ this.toleadExport(2);
+ } else if (this.errtype == 5) {
+ // 鍏ㄩ儴
+ this.toleadExport(5);
+ } else {
+ this.getList(1);
+ }
+ },
+ methods: {
+ /** 鏌ヨ闅忚鏈嶅姟鍒楄〃 */
+ 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.endOut == 0) {
+ this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+ this.getEndOfDay()
+ );
+ } else {
+ // this.topqueryParams.endSendDateTime = null;
+ }
+ // 鎺ュ彈寮傚父璺宠浆
+ if (this.errtype) {
+ this.topqueryParams.leavehospitaldistrictcodes.push(
+ this.leavehospitaldistrictcode
+ );
+ }
+ this.loading = true;
+ if (
+ this.topqueryParams.leavehospitaldistrictcodes[0] &&
+ this.topqueryParams.leaveldeptcodes[0]
+ ) {
+ this.topqueryParams.deptOrDistrict = 2;
+ } else {
+ this.topqueryParams.deptOrDistrict = 1;
+ }
+ if (!this.followupAuthority()) {
+ this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+ return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
+ }
+
+ getTaskservelist(this.topqueryParams).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) +
+ Number(response.rows[0].fssb);
+ // this.cardlist[1].value = response.rows[0].wzx;
+ this.cardlist[1].value = response.rows[0].ysf;
+ this.ycvalue = response.rows[0].yc;
+ this.jgvalue = response.rows[0].jg;
+ this.cardlist[2].value = response.rows[0].fssb;
+ this.cardlist[3].value = response.rows[0].dsf;
+ // this.cardlist[4].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;
+ });
+ },
+ loadData() {
+ this.errtype = this.$route.query.errtype;
+ if (this.errtype == 1) {
+ this.toleadExport(2);
+ } else if (this.errtype == 2) {
+ // 寰呴殢璁�
+ this.toleadExport(3);
+ } else if (this.errtype == 3) {
+ // 澶辫触
+ this.toleadExport(4);
+ } else if (this.errtype == 4) {
+ // 寮傚父
+ this.toleadExport(2);
+ } else if (this.errtype == 5) {
+ // 鍏ㄩ儴
+ this.toleadExport(5);
+ } else {
+ this.getList(1);
+ }
+ },
+ // 鏃堕棿
+ getEndOfDay() {
+ const date = new Date(); // 鍒涘缓涓�涓〃绀哄綋鍓嶆椂闂寸殑Date瀵硅薄
+ date.setHours(23, 59, 59, 0); // 灏嗘椂闂磋缃负23:59:59.000
+ return date;
+ },
+ formatDateToYYYYMMDDHHMMSS(date) {
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, "0"); // 鏈堜唤琛ラ浂
+ const day = String(date.getDate()).padStart(2, "0"); // 鏃ユ湡琛ラ浂
+ const hours = String(date.getHours()).padStart(2, "0");
+ const minutes = String(date.getMinutes()).padStart(2, "0");
+ const seconds = String(date.getSeconds()).padStart(2, "0");
+
+ return `${year}-${month}-${day}`;
+ },
+ affiliation() {
+ this.topqueryParams.managementDoctorCode = store.getters.hisUserId;
+ this.getList(1);
+ },
+ onthatday() {
+ this.topqueryParams.startSendDateTime = this.getCurrentDate();
+ this.topqueryParams.endSendDateTime = this.getCurrentDate();
+ this.getList(1);
+ },
+ getCurrentDate() {
+ const now = new Date();
+ return now.toISOString().slice(0, 10); // 鎴彇鍓�10涓瓧绗︼紝鍗� YYYY-MM-DD
+ },
+ 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;
+ 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.jgvalue = response.rows[0].jg;
+ 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;
+ });
+ },
+ // 鏌ョ湅闂ㄨ瘖闅忚璇︽儏
+ Referencequestion(row) {
+ this.previewVisible = true;
+ },
+ // 娣诲姞寮规鎼滅储
+ remoteMethod(query) {
+ if (query !== "") {
+ this.loading = true;
+ setTimeout(() => {
+ this.loading = false;
+ this.options = this.list.filter((item) => {
+ return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
+ });
+ }, 200);
+ } else {
+ this.options = [];
+ }
+ },
+ // 褰卞儚闅忚鐘舵�佷慨鏀�
+ handleStatusChange(row) {
+ let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+ this.$modal
+ .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵')
+ .then(function () {
+ return changeUserStatus(row.userId, row.status);
+ })
+ .then(() => {
+ this.$modal.msgSuccess(text + "鎴愬姛");
+ })
+ .catch(function () {
+ row.status = row.status === "0" ? "1" : "0";
+ });
+ },
+
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ userId: undefined,
+ deptId: undefined,
+ userName: undefined,
+ nickName: undefined,
+ password: undefined,
+ phonenumber: undefined,
+ email: undefined,
+ sex: undefined,
+ status: "0",
+ remark: undefined,
+ postIds: [],
+ roleIds: [],
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery(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);
+ }
+ this.topqueryParams.pageNum = 1;
+ // 鍒ゆ柇鏄笉鏄伐浣滃彴蹇嵎鏌ヨ
+ if (this.errtype != 2) {
+ this.topqueryParams.startOutHospTime = this.dateRange[0];
+ this.topqueryParams.endOutHospTime = this.dateRange[1];
+ this.topqueryParams.startSendDateTime = this.dateRangefs[0];
+ this.topqueryParams.endSendDateTime = this.dateRangefs[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.dateRangefs = [];
+ this.topqueryParams = {
+ pageNum: 1,
+ pageSize: 10,
+ sendstateView: 1,
+ sort: 2, //0 鎵嬫湳瀹屾垚鏃堕棿(姝e簭) 1 鎵嬫湳瀹屾垚鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
+ serviceType: 19,
+ searchscope: 3,
+ visitCount: 1,
+ scopetype: [],
+ leaveldeptcodes: [],
+ leavehospitaldistrictcodes: [],
+ };
+ this.handleQuery(1);
+ },
+ handleSelectionChange(rows) {
+ this.selectedRows = rows.map((row) => {
+ // 鍒濆鍖栬瘎鍒嗗瓧娈�
+ return {
+ ...row,
+ authenticity: row.authenticity || 0,
+ weekFinish: row.weekFinish || 0,
+ standard: row.standard || 0,
+ timeliness: row.timeliness || 0,
+ library: row.library || 0,
+ environment: row.environment || 0,
+ doctorSatisfaction: row.doctorSatisfaction || 0,
+ nurseSatisfaction: row.nurseSatisfaction || 0,
+ };
+ });
+
+ if (this.selectedRows.length > 0) {
+ this.multiple = false;
+ } else {
+ this.multiple = true;
+ }
+ },
+
+ // 璁$畻鎬诲垎
+ calculateTotal(row) {
+ return (
+ (row.authenticity || 0) +
+ (row.weekFinish || 0) +
+ (row.standard || 0) +
+ (row.timeliness || 0) +
+ (row.library || 0) +
+ (row.environment || 0) +
+ (row.doctorSatisfaction || 0) +
+ (row.nurseSatisfaction || 0)
+ );
+ },
+
+ // 淇濆瓨璇勫垎
+ saveScores() {
+ this.selectedRows.forEach((item) => {
+ item.createBy = null;
+ item.patName = item.sendname;
+ item.hospitaldistrictname = item.leavehospitaldistrictname;
+ });
+ addsatisfaction(this.selectedRows).then((res) => {
+ if (res.code == 200) {
+ this.$message.success("璇勫垎淇濆瓨鎴愬姛");
+ this.scoreDialogVisible = false;
+ this.selectedRows = [];
+ this.$refs.userform.clearSelection();
+ } else {
+ this.$modal.msgWarning("璇勫垎淇濆瓨澶辫触");
+ this.scoreDialogVisible = false;
+ this.selectedRows = [];
+ this.$refs.userform.clearSelection();
+ }
+ });
+ // 杩欓噷鍙互娣诲姞淇濆瓨閫昏緫锛屽璋冪敤API淇濆瓨璇勫垎
+ },
+ //鍒犻櫎閫夐」
+ handleClose(tag) {
+ this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
+ },
+ //瑙﹀彂鏂板杈撳叆
+ showInput() {
+ this.inputVisible = true;
+ this.$nextTick((_) => {
+ this.$refs.saveTagInput.$refs.input.focus();
+ });
+ },
+ //鑾峰彇澶卞幓鐒︾偣瑙﹀彂
+ handleInputConfirm() {
+ let inputValue = this.inputValue;
+ if (inputValue) {
+ this.dynamicTags.push(inputValue);
+ }
+ this.inputVisible = false;
+ this.inputValue = "";
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.$router.push({
+ path: "/followvisit/QuestionnaireTask",
+ query: {
+ type: 2,
+ serviceType: 19,
+ },
+ });
+ },
+ //鎮h��360璺宠浆
+ gettoken360(sfzh, drcode, drname, id) {
+ const orgname = localStorage.getItem("orgname");
+ if (orgname == "鍗楀崕澶у闄勫睘绗竴鍖婚櫌") {
+ query360PatInfonh(id).then((res) => {
+ if (res.data) {
+ window.open(res.data, "_blank");
+ } else {
+ this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+ }
+ });
+ return;
+ } else if (
+ orgname == "绗竴浜烘皯鍖婚櫌婀栨花闄㈠尯" ||
+ orgname == "绗竴浜烘皯鍖婚櫌鍚村北闄㈠尯"
+ ) {
+ let url = `http://192.200.81.189:9100/blj/view?BINGRENID=${id}&YONGHUID=DBA`;
+ window.open(url, "_blank");
+ return;
+ }
+
+ this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh;
+
+ query360PatInfo(this.postData).then((res) => {
+ if (res.data.url) {
+ window.open(res.data.url, "_blank");
+ // this.linkUrl = res.data.url;
+ } else {
+ this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+ }
+ });
+ },
+
+ /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
+ handleResetPwd(row) {
+ this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ closeOnClickModal: false,
+ inputPattern: /^.{5,20}$/,
+ inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ })
+ .then(({ value }) => {
+ resetUserPwd(row.userId, value).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
+ });
+ })
+ .catch(() => {});
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.Labelchange = false;
+ this.reset();
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm: function () {
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ this.form.isoperation = 2;
+ this.form.notrequiredFlag = 1;
+ alterpatient(this.form)
+ .then((response) => {
+ console.log(response);
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgSuccess("鎮h�呰繃婊ゆ垚鍔�");
+ });
+
+ this.reset();
+ this.Labelchange = false;
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const userIds = row.userId || this.ids;
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+ .then(function () {
+ return delUser(userIds);
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ // 鍏ㄩ儴鍋滄
+ AllStop() {
+ this.$modal
+ .confirm("鏄惁鍋滄鍏ㄩ儴浠诲姟锛�")
+ .then(function () {
+ return console.log("鍋滄鎴愬姛");
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgWarning("鍋滄鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ // 鍏ㄩ儴寮�濮�
+ AllStarted() {
+ this.$modal
+ .confirm("鏄惁寮�鍚叏閮ㄤ换鍔★紵")
+ .then(function () {
+ return console.log("寮�鍚垚鍔�");
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgSuccess("寮�鍚垚鍔�");
+ })
+ .catch(() => {});
+ },
+ // 浠诲姟閲嶇疆
+ TaskReset() {
+ this.$modal
+ .confirm("鏄惁閲嶇疆閫変腑鐨勪换鍔¢」锛�")
+ .then(function () {
+ return console.log("閫変腑鎴愬姛");
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgSuccess("閲嶇疆鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ // 璁剧疆鍙戦�佹椂闂�
+ Sendtimesetting() {
+ this.modificationVisible = true;
+ },
+ // 璺宠浆璇︽儏椤�
+ Seedetails(row) {
+ let type = "";
+ console.log(row, "rwo");
+ if (row.type == 1) {
+ type = 1;
+ }
+ this.$router.push({
+ path: "/followvisit/record/detailpage/",
+ query: {
+ taskid: row.taskid,
+ patid: row.patid,
+ id: row.id,
+ Voicetype: type,
+ visitCount: this.topqueryParams.visitCount,
+ },
+ });
+ },
+ // 鍐嶆闅忚
+ followupvisit(row) {
+ this.zcform = row;
+ this.zcform.endtime = this.formatTime(this.zcform.endtime);
+ this.dialogFormVisible = true;
+ },
+ onSubmit() {},
+ // 鏆傚仠鏈嶅姟
+ handlestop(row) {
+ let objson = row;
+ this.$modal
+ .confirm(
+ '鏄惁纭鏆傚仠浠诲姟鍚嶇О涓�"' +
+ row.taskName +
+ '鎮h�呭悕绉颁负"' +
+ row.sendname +
+ '"鐨勬暟鎹」锛�'
+ )
+ .then(() => {
+ getTaskservelist({
+ patid: row.patid,
+ taskid: row.taskid,
+ }).then((res) => {
+ if (res.code == 200) {
+ objson.sendstate = 4;
+ objson.remark = "鏈嶅姟鏆傚仠";
+ Editsingletaskson(objson).then((res) => {
+ if (res.code) {
+ this.$modal.msgSuccess("璁板綍鎴愬姛");
+ this.getList(1);
+ }
+ });
+ }
+ });
+ })
+ .catch(() => {});
+ },
+ // 鎮h�呰繃婊よЕ鍙�
+ handleUpdate(row) {
+ particularpatient(row.patid).then((response) => {
+ this.form = response.data;
+ this.form.filterDrname = store.getters.nickName;
+ });
+ this.amendtag = true;
+ this.Labelchange = true;
+ },
+ // 渚挎嵎鎸夐挳
+ toleadExport(too) {
+ console.log(too, "too");
+
+ if (too == 1) {
+ this.topqueryParams.sendstate = 4;
+ this.topqueryParams.excep = null;
+ } else if (too == 2) {
+ this.topqueryParams.excep = 1;
+ this.topqueryParams.sendstate = null;
+ } else if (too == 3) {
+ this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+ this.getEndOfDay()
+ );
+ console.log(1111, this.topqueryParams.endSendDateTime);
+
+ this.topqueryParams.excep = null;
+ this.topqueryParams.sendstate = 2;
+ this.topqueryParams.scopetype = null;
+ } else if (too == 4) {
+ this.topqueryParams.excep = null;
+ this.topqueryParams.sendstate = 5;
+ this.topqueryParams.scopetype = null;
+ } else if (too == 5) {
+ this.topqueryParams.excep = null;
+ this.topqueryParams.sendstate = null;
+ this.topqueryParams.scopetype = null;
+ }
+ this.handleQuery(1);
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ const originalPageNum = this.topqueryParams.pageNum;
+ const originalPageSize = this.topqueryParams.pageSize;
+ this.topqueryParams.pageNum = null;
+ this.topqueryParams.pageSize = null;
+ this.download(
+ "smartor/serviceSubtask/patItemExport",
+ {
+ ...this.topqueryParams,
+ },
+ `user_${new Date().getTime()}.xlsx`
+ ).finally(() => {
+ // 瀵煎嚭鍚庢仮澶嶅垎椤靛弬鏁�
+ this.topqueryParams.pageNum = originalPageNum;
+ this.topqueryParams.pageSize = originalPageSize;
+ this.getList();
+ });
+ },
+ // 寮傚父鍒楁覆鏌�
+ tableRowClassName({ row, rowIndex }) {
+ if (row.excep == 1) {
+ return "warning-row";
+ } else if (row.excep == 2) {
+ return "remind-row";
+ }
+ return "";
+ },
+ // 鍒涘缓鍐嶆闅忚鏈嶅姟
+ setupsubtask() {
+ this.$refs["zcform"].validate((valid) => {
+ if (valid) {
+ this.zcform.remark =
+ this.zcform.remark + "銆�" + this.getCurrentTime() + "銆�";
+ let form = structuredClone(this.zcform);
+ form.visitTime = this.formatTime(form.date1);
+ form.finishtime = "";
+ if (form.resource) {
+ if (form.resource == 2) {
+ form.serviceType = 13;
+ }
+ } else {
+ this.$modal.msgError("鏈�夋嫨闅忚鏂瑰紡");
+ }
+ form.id = null;
+ form.sendstate = 2;
+ form.preachform = form.preachformson;
+ form.longTask = 0;
+ addserviceSubtask(form).then((res) => {
+ if (res.code == 200) {
+ this.$modal.msgSuccess("鍒涘缓鎴愬姛");
+ } else {
+ this.$modal.msgError("鍒涘缓澶辫触");
+ }
+ this.dialogFormVisible = false;
+ });
+ }
+ });
+ },
+ getCurrentTime() {
+ const now = new Date();
+ const year = now.getFullYear();
+ const month = String(now.getMonth() + 1).padStart(2, "0");
+ const day = String(now.getDate()).padStart(2, "0");
+ const hours = String(now.getHours()).padStart(2, "0");
+ const minutes = String(now.getMinutes()).padStart(2, "0");
+ const seconds = String(now.getSeconds()).padStart(2, "0");
+
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-button--primary.is-plain {
+ color: #ffffff;
+ background: #409eff;
+ border-color: #4fabe9;
+}
+
+.document {
+ // width: 100px;
+ height: 50px;
+}
+::v-deep.el-table .warning-row {
+ background: #eec4c4;
+}
+::v-deep.el-table .remind-row {
+ background: #fcf5aa;
+}
+
+.documentf {
+ display: flex;
+ justify-content: flex-end;
+}
+
+.download {
+ text-align: center;
+
+ .el-upload__tip {
+ font-size: 23px;
+ }
+
+ .el-upload__text {
+ font-size: 23px;
+ }
+}
+
+.uploading {
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #ffffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+
+.el-tag + .el-tag {
+ margin-left: 10px;
+}
+
+.button-new-tag {
+ margin-left: 10px;
+ height: 32px;
+ line-height: 30px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+.input-new-tag {
+ width: 90px;
+ margin-left: 10px;
+ vertical-align: bottom;
+}
+
+.drexamine {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 30px;
+ background: #daeaf5;
+
+ img {
+ width: 100px;
+ height: 100px;
+ }
+}
+
+.qrcode-dialo {
+ // text-align: center;
+ // display: flex;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+
+ .topic-dev {
+ margin-bottom: 25px;
+ font-size: 20px !important;
+
+ .dev-text {
+ margin-bottom: 10px;
+ }
+ }
+}
+::v-deep.leftvlue .el-card__body {
+ background: #f2f8ff;
+ color: #324a9b;
+}
+::v-deep.leftvlue .el-card__body:hover {
+ background: #3664d9;
+ color: #fff;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.errleftvlue .el-card__body {
+ background: #fdd0d7;
+}
+::v-deep.errleftvlue .el-card__body:hover {
+ background: #f88d96;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.jgleftvlue .el-card__body:hover {
+ background: #f7f075;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+
+::v-deep.ysfleftvlue .el-card__body {
+ background: #d0fdd8;
+}
+::v-deep.ysfleftvlue .el-card__body:hover {
+ background: #0abc54;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+.button-bb {
+ font-weight: 500;
+ background-color: #2ba05c;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
+.button-xq {
+ font-weight: 500;
+ background-color: #409eff;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
+.button-sc {
+ font-weight: 500;
+ background-color: #b3a21f;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
+.button-zx {
+ background: #324a9b;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
+
+::v-deep.el-radio-group {
+ span {
+ font-size: 24px;
+ }
+}
+.purple-button {
+ background-color: #7e22ce;
+ border-color: #7e22ce;
+ color: #fff;
+}
+
+.purple-button:hover,
+.purple-button:focus {
+ background-color: #9333ea;
+ border-color: #9333ea;
+}
+
+.purple-button:active {
+ background-color: #6b21a8;
+ border-color: #6b21a8;
+}
+.button-textxga {
+ color: #de7897;
+}
+.purple-button.is-disabled {
+ background-color: #d8b4fe;
+ border-color: #d8b4fe;
+ opacity: 1; /* 淇濇寔绂佺敤鐘舵�侀�忔槑搴� */
+}
+// 閫夐」瀛椾綋鏀惧ぇ
+// ::v-deep.el-checkbox-group {
+// span {
+// font-size: 24px;
+// }
+// }
+</style>
diff --git a/src/views/followvisit/outpatient/index.vue b/src/views/followvisit/outpatient/index.vue
index c1ec77d..5638b93 100644
--- a/src/views/followvisit/outpatient/index.vue
+++ b/src/views/followvisit/outpatient/index.vue
@@ -108,8 +108,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -228,39 +228,45 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
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
- >
- </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
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
+ >
+ </div>
+ </el-tooltip>
</template>
</el-table-column>
<!-- <el-table-column
@@ -786,34 +792,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
- value: 1,
- label: "琛ㄥ崟宸查鍙�",
+ value: null,
+ label: "鍏ㄩ儴",
},
{
- value: 2,
+ value: 1,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
diff --git a/src/views/followvisit/record/TracingInfo/index.vue b/src/views/followvisit/record/TracingInfo/index.vue
index 67a0074..c3dc4b5 100644
--- a/src/views/followvisit/record/TracingInfo/index.vue
+++ b/src/views/followvisit/record/TracingInfo/index.vue
@@ -273,7 +273,7 @@
v-if="item.scriptType == 1 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{
+ {{ index + 1 }}. [鍗曢�塢<span>{{
item.scriptContent
}}</span>
</div>
@@ -326,7 +326,7 @@
v-if="item.scriptType == 2 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕澶氶�塢<span>{{
+ {{ index + 1 }}. [澶氶�塢<span>{{
item.scriptContent
}}</span>
</div>
@@ -360,7 +360,7 @@
v-if="item.scriptType == 4 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{
+ {{ index + 1 }}. [闂瓟]<span>{{
item.scriptContent
}}</span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
@@ -396,7 +396,7 @@
>
<div v-if="item.targetvalue">
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{
+ {{ index + 1 }}. [鍗曢�塢<span>{{
item.questiontext
}}</span>
</div>
@@ -429,7 +429,7 @@
<div class="scriptTopic-dev" :key="index" v-else>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{
+ {{ index + 1 }}. [闂瓟]<span>{{
item.scriptContent
}}</span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
@@ -676,7 +676,7 @@
<el-input type="textarea" v-model="form.remark"></el-input>
</el-form-item>
- <el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
+ <el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'||orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'">
<el-radio-group v-model="form.taskSituation">
<el-radio
v-for="city in cities"
diff --git a/src/views/followvisit/record/detailpage/index copy.vue b/src/views/followvisit/record/detailpage/index copy.vue
index ac60502..1424ea3 100644
--- a/src/views/followvisit/record/detailpage/index copy.vue
+++ b/src/views/followvisit/record/detailpage/index copy.vue
@@ -290,7 +290,7 @@
v-if="item.scriptType == 1 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{
+ {{ index + 1 }}. [鍗曢�塢<span>{{
item.scriptContent
}}</span>
</div>
@@ -343,7 +343,7 @@
v-if="item.scriptType == 2 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕澶氶�塢<span>{{
+ {{ index + 1 }}. [澶氶�塢<span>{{
item.scriptContent
}}</span>
</div>
@@ -377,7 +377,7 @@
v-if="item.scriptType == 4 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{
+ {{ index + 1 }}. [闂瓟]<span>{{
item.scriptContent
}}</span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
@@ -413,7 +413,7 @@
>
<div v-if="item.targetvalue">
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{
+ {{ index + 1 }}. [鍗曢�塢<span>{{
item.questiontext
}}</span>
</div>
@@ -446,7 +446,7 @@
<div class="scriptTopic-dev" :key="index" v-else>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{
+ {{ index + 1 }}. [闂瓟]<span>{{
item.scriptContent
}}</span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index 67bd809..e1f3830 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -95,43 +95,45 @@
>
</el-table-column>
<el-table-column
- prop="sendstate"
+ label="闅忚鐘舵��"
align="center"
- width="200"
- label="浠诲姟鐘舵��"
+ key="sendstateView"
+ prop="sendstateView"
+ 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
- >
- </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="success" :disable-transitions="false"
- >宸插畬鎴�</el-tag
- >
- </div>
- <div v-if="scope.row.sendstate == 7">
- <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
- </div>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
+ >
+ </div>
+ </el-tooltip>
</template>
</el-table-column>
<el-table-column
@@ -263,7 +265,7 @@
<div class="call-action">
<div class="call-container">
<template-selector
- v-if="orgname=='鍗楀崕澶у闄勫睘绗竴鍖婚櫌'&&!Voicetype"
+ v-if="orgname == '鍗楀崕澶у闄勫睘绗竴鍖婚櫌' && !Voicetype"
v-model="form.templateid"
:templateName="form.templatename"
:service-type="form.serviceType"
@@ -296,9 +298,14 @@
v-if="item.scriptType == 1 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{
- item.scriptContent
- }}</span>
+ {{ index + 1 }}. [鍗曢�塢
+
+ <span> {{ item.scriptContent }}</span>
+ <span style="margin-left: 20px"
+ ><dict-tag
+ :options="dict.type.dimensionality_type"
+ :value="item.dimension"
+ /></span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.scriptResult">
@@ -349,9 +356,14 @@
v-if="item.scriptType == 2 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕澶氶�塢<span>{{
+ {{ index + 1 }}. [澶氶�塢<span>{{
item.scriptContent
}}</span>
+ <span style="margin-left: 20px"
+ ><dict-tag
+ :options="dict.type.dimensionality_type"
+ :value="item.dimension"
+ /></span>
</div>
<div class="dev-xx">
<el-checkbox-group
@@ -383,9 +395,14 @@
v-if="item.scriptType == 4 && !item.astrict"
>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{
+ {{ index + 1 }}. [闂瓟]<span>{{
item.scriptContent
}}</span>
+ <span style="margin-left: 20px"
+ ><dict-tag
+ :options="dict.type.dimensionality_type"
+ :value="item.dimension"
+ /></span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
</div>
<div class="dev-xx" v-if="item.valueType == 3">
@@ -419,9 +436,8 @@
>
<div v-if="item.targetvalue">
<div class="dev-text">
- {{ index + 1 }}銆乕鍗曢�塢<span>{{
- item.questiontext
- }}</span>
+ {{ index + 1 }}. [鍗曢�塢
+ <span>{{ item.questiontext }}</span>
</div>
<div class="dev-xx">
<el-radio-group
@@ -452,7 +468,7 @@
<div class="scriptTopic-dev" :key="index" v-else>
<div class="dev-text">
- {{ index + 1 }}銆乕闂瓟]<span>{{
+ {{ index + 1 }}. [闂瓟]<span>{{
item.questiontext
}}</span>
<span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
@@ -798,7 +814,13 @@
</el-form-item>
<!-- 闅忚鎯呭喌 -->
- <el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
+ <el-form-item
+ label="闅忚鎯呭喌"
+ v-if="
+ orgname == '涓芥按甯備腑鍖婚櫌' ||
+ orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'
+ "
+ >
<el-radio-group v-model="form.taskSituation">
<el-radio
v-for="city in cities"
@@ -1246,6 +1268,7 @@
},
dicts: [
"sys_normal_disable",
+ "dimensionality_type",
"quickfollow_up",
"sys_user_sex",
"sys_yujing",
@@ -2326,6 +2349,8 @@
if (res.code == 200) {
objson = res.rows[0].serviceSubtaskList[0];
objson.suggest = son;
+ objson.remark = this.form.remark;
+ objson.taskSituation = this.form.taskSituation;
Editsingletaskson(objson).then((res) => {
if (res.code) {
this.$modal.msgSuccess("鏈嶅姟璁板綍鎴愬姛");
@@ -3100,6 +3125,7 @@
.dev-text {
margin-bottom: 10px;
+ display: flex;
}
}
}
diff --git a/src/views/followvisit/record/index.vue b/src/views/followvisit/record/index.vue
index 21cd74a..7e7d92e 100644
--- a/src/views/followvisit/record/index.vue
+++ b/src/views/followvisit/record/index.vue
@@ -107,7 +107,7 @@
@change="handleChange"
></el-cascader>
</el-form-item>
- <el-form-item label="鏃ユ湡闄愬埗" prop="status">
+ <el-form-item label="鏃ユ湡闄愬埗" prop="status">
<el-select v-model="endOut" placeholder="璇烽�夋嫨">
<el-option
v-for="item in endOuts"
@@ -124,8 +124,11 @@
placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
></el-input>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select
+ v-model="topqueryParams.sendstateView"
+ placeholder="璇烽�夋嫨"
+ >
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -265,11 +268,11 @@
type="text"
@click="
gettoken360(
- scope.row.sfzh,
- scope.row.drcode,
- scope.row.drname,
- scope.row.patid
- )
+ scope.row.sfzh,
+ scope.row.drcode,
+ scope.row.drname,
+ scope.row.patid
+ )
"
><span class="button-textsc">{{
scope.row.sendname
@@ -278,10 +281,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -291,32 +294,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 1">
<el-tag type="primary" :disable-transitions="false"
>寰呴殢璁�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 3">
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
<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.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -768,7 +768,7 @@
getTaskservelist,
buidegetTasklist,
query360PatInfo,
- query360PatInfonh
+ query360PatInfonh,
} from "@/api/AiCentre/index";
import Treeselect from "@riophae/vue-treeselect";
import store from "@/store";
@@ -864,7 +864,7 @@
},
value: [],
list: [],
- endOut: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 0 : 1, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+ endOut: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 0 : 1, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
endOuts: [
{
value: 0,
@@ -960,31 +960,23 @@
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
@@ -1073,7 +1065,7 @@
this.topqueryParams.leavehospitaldistrictcodes =
store.getters.belongWards.map((obj) => obj.districtCode);
}
- if (this.endOut == 0) {
+ if (this.endOut == 0) {
this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
this.getEndOfDay()
);
@@ -1179,7 +1171,7 @@
date.setHours(23, 59, 59, 0); // 灏嗘椂闂磋缃负23:59:59.000
return date;
},
- formatDateToYYYYMMDDHHMMSS(date) {
+ formatDateToYYYYMMDDHHMMSS(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0"); // 鏈堜唤琛ラ浂
const day = String(date.getDate()).padStart(2, "0"); // 鏃ユ湡琛ラ浂
@@ -1533,8 +1525,7 @@
'"鐨勬暟鎹」锛�'
)
.then(() => {
-
- getTaskservelist({
+ getTaskservelist({
patid: row.patid,
taskid: row.taskid,
}).then((res) => {
diff --git a/src/views/followvisit/tasklist/FollowupDetails/index.vue b/src/views/followvisit/tasklist/FollowupDetails/index.vue
index 3fcbb81..0b6c727 100644
--- a/src/views/followvisit/tasklist/FollowupDetails/index.vue
+++ b/src/views/followvisit/tasklist/FollowupDetails/index.vue
@@ -147,7 +147,7 @@
</el-select>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
<el-select
v-model="topqueryParams.topic"
placeholder="璇烽�夋嫨"
@@ -659,7 +659,7 @@
</el-select>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
<el-select
v-model="deliverytopqueryParams.topic"
placeholder="璇烽�夋嫨"
diff --git a/src/views/followvisit/tasklist/index.vue b/src/views/followvisit/tasklist/index.vue
index 9640683..3fb13fe 100644
--- a/src/views/followvisit/tasklist/index.vue
+++ b/src/views/followvisit/tasklist/index.vue
@@ -685,6 +685,7 @@
this.tasktopic == 7 ||
this.tasktopic == 5 ||
this.tasktopic == 18 ||
+ this.tasktopic == 19 ||
this.tasktopic == 6
) {
if (!this.topqueryParams.type) this.topqueryParams.type = "2";
diff --git a/src/views/followvisit/technology/index.vue b/src/views/followvisit/technology/index.vue
index 841430c..0887b30 100644
--- a/src/views/followvisit/technology/index.vue
+++ b/src/views/followvisit/technology/index.vue
@@ -108,8 +108,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -238,10 +238,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -251,32 +251,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 1">
<el-tag type="primary" :disable-transitions="false"
>寰呴殢璁�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 3">
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
<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.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -888,34 +885,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
- value: 1,
- label: "琛ㄥ崟宸查鍙�",
+ value: null,
+ label: "鍏ㄩ儴",
},
{
- value: 2,
+ value: 1,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
diff --git a/src/views/followvisit/zbAgain/index.vue b/src/views/followvisit/zbAgain/index.vue
index 9a9d5b4..6a0d0c9 100644
--- a/src/views/followvisit/zbAgain/index.vue
+++ b/src/views/followvisit/zbAgain/index.vue
@@ -125,8 +125,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -294,10 +294,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -307,37 +307,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
+ <div v-if="scope.row.sendstateView == 5">
<el-tag type="danger" :disable-transitions="false"
- >瓒呮椂</el-tag
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -996,7 +988,7 @@
topqueryParams: {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
serviceType: 13,
searchscope: 3,
@@ -1009,38 +1001,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
value: null,
label: "鍏ㄩ儴",
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
@@ -1393,7 +1377,7 @@
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
- sendstate: 2,
+ sendstateView: 1,
sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
serviceType: 13,
searchscope: 3,
diff --git a/src/views/followvisit/zysatisfaction/index.vue b/src/views/followvisit/zysatisfaction/index.vue
index 964ab9e..720b30b 100644
--- a/src/views/followvisit/zysatisfaction/index.vue
+++ b/src/views/followvisit/zysatisfaction/index.vue
@@ -132,8 +132,11 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select
+ v-model="topqueryParams.sendstateView"
+ placeholder="璇烽�夋嫨"
+ >
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -289,11 +292,11 @@
type="text"
@click="
gettoken360(
- scope.row.sfzh,
- scope.row.drcode,
- scope.row.drname,
- scope.row.patid
- )
+ scope.row.sfzh,
+ scope.row.drcode,
+ scope.row.drname,
+ scope.row.patid
+ )
"
><span class="button-textsc">{{
scope.row.sendname
@@ -302,10 +305,10 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
width="120"
>
<template slot-scope="scope">
@@ -315,37 +318,29 @@
: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 == 2">
+ <div v-if="scope.row.sendstateView == 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 v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :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 v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 6">
+ <div v-if="scope.row.sendstateView == 4">
<el-tag type="success" :disable-transitions="false"
>宸插畬鎴�</el-tag
>
</div>
- <div v-if="scope.row.sendstate == 7">
+ <div v-if="scope.row.sendstateView == 5">
<el-tag type="danger" :disable-transitions="false"
- >瓒呮椂</el-tag
+ >鏃犻渶闅忚</el-tag
>
</div>
</el-tooltip>
@@ -945,7 +940,7 @@
addserviceSubtask,
query360PatInfo,
addsatisfaction,
- query360PatInfonh
+ query360PatInfonh,
} from "@/api/AiCentre/index";
import { alterpatient, particularpatient } from "@/api/patient/homepage";
import Treeselect from "@riophae/vue-treeselect";
@@ -1091,7 +1086,8 @@
{
value: 3,
label: "鍙戦�佹椂闂�(鍊掑簭)",
- },{
+ },
+ {
value: 7,
label: "搴旈殢璁挎棩鏈�(姝e簭)",
},
@@ -1104,7 +1100,8 @@
topqueryParams: {
pageNum: 1,
pageSize: 10,
- sendstate: 6,
+ sendstateView:
+ localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 1,
sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
serviceType: 6,
searchscope: 3,
@@ -1116,38 +1113,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
value: null,
label: "鍏ㄩ儴",
},
{
value: 1,
- label: "琛ㄥ崟宸查鍙�",
- },
- {
- value: 2,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
sextype: [
@@ -1486,7 +1475,7 @@
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
- sendstate: 6,
+ sendstateView: 1,
sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
serviceType: 6,
searchscope: 3,
@@ -1721,9 +1710,9 @@
Seedetails(row) {
let type = "";
console.log(row, "rwo");
- if (row.type == 1) {
- type = 1;
- }
+ if (row.type == 1) {
+ type = 1;
+ }
this.$router.push({
path: "/followvisit/record/detailpage/",
query: {
@@ -1749,8 +1738,7 @@
'"鐨勬暟鎹」锛�'
)
.then(() => {
-
- getTaskservelist({
+ getTaskservelist({
patid: row.patid,
taskid: row.taskid,
}).then((res) => {
diff --git a/src/views/knowledge/education/examine/index.vue b/src/views/knowledge/education/examine/index.vue
index 4813531..e2ac871 100644
--- a/src/views/knowledge/education/examine/index.vue
+++ b/src/views/knowledge/education/examine/index.vue
@@ -62,7 +62,7 @@
<!-- 鍗曢�� -->
<div class="topic-dev" v-for="item in valssu" :key="item.aaa">
<div class="dev-text">
- {{ item.idd }}銆乕鍗曢�塢  <span>{{ item.wssd }}</span>
+ {{ item.idd }}. [鍗曢�塢  <span>{{ item.wssd }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="radio">
@@ -78,7 +78,7 @@
<!-- 澶氶�� -->
<div class="topic-dev" v-for="item in valssu" :key="item.aaa">
<div class="dev-text">
- {{ item.idd }}銆乕澶氶�塢  <span>{{ item.wssd }}</span>
+ {{ item.idd }}. [澶氶�塢  <span>{{ item.wssd }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="radios">
diff --git a/src/views/knowledge/questionbank/particulars/index.vue b/src/views/knowledge/questionbank/particulars/index.vue
index e98c06a..b44e2cf 100644
--- a/src/views/knowledge/questionbank/particulars/index.vue
+++ b/src/views/knowledge/questionbank/particulars/index.vue
@@ -136,18 +136,19 @@
</el-radio-group>
</el-form-item></el-col
>
- <!-- <el-col :span="8">
- <el-form-item label="鏄惁蹇呭~" prop="ismandatory">
- <el-radio-group v-model="topicobj.ismandatory">
- <el-radio
- @change="$forceUpdate()"
- v-for="(item, index) in required"
- :label="item.value"
- >{{ item.label }}</el-radio
- >
- </el-radio-group>
- </el-form-item>
- </el-col> -->
+ <el-col :span="8"
+ ><el-form-item label="闂缁村害" prop="suitway">
+ <el-select
+ v-model="topicobj.dimension"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="dict in dict.type.dimensionality_type"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option></el-select></el-form-item
+ ></el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8"
@@ -443,7 +444,7 @@
><el-form-item label="閫夐」鍚嶇О">
<el-input
type="text"
- placeholder="璇疯緭鍏ラ�夐」鍒嗗��"
+ placeholder="璇疯緭鍏ラ�夐」鍚嶇О"
v-model="item.optioncontent"
show-word-limit
>
@@ -735,6 +736,8 @@
import { getToken } from "@/utils/auth";
export default {
+ dicts: ["dimensionality_type", "sys_patientfrom"],
+
data() {
return {
topicobj: {
@@ -928,24 +931,26 @@
this.drawer = true;
});
},
- categoryidChange(id) {
+ categoryidChange(id) {
// 閬嶅巻鎵�鏈夊垎缁勶紝鍦ㄦ瘡涓垎缁勭殑 svyLibScriptCategoryList 涓煡鎵�
let targetOption = null;
for (const group of this.classifylist) {
- targetOption = group.svyLibScriptCategoryList.find(item => item.id == id);
+ targetOption = group.svyLibScriptCategoryList.find(
+ (item) => item.id == id
+ );
if (targetOption) break;
}
if (targetOption) {
- console.log('閫変腑鐨勯�夐」:', targetOption);
+ console.log("閫変腑鐨勯�夐」:", targetOption);
// 娉ㄦ剰锛氳繖閲� targetOption.name 鏄�夐」鍚嶏紝濡傗�滀綇闄㈡弧鎰忓害璋冩煡鈥�
- if (targetOption.name.includes('浣忛櫌')) {
+ if (targetOption.name.includes("浣忛櫌")) {
this.topicobj.type = "zymyd";
- } else if (targetOption.name.includes('闂ㄨ瘖')) {
+ } else if (targetOption.name.includes("闂ㄨ瘖")) {
this.topicobj.type = "mzmyd";
- } else if (targetOption.name.includes('鍑洪櫌')) {
+ } else if (targetOption.name.includes("鍑洪櫌")) {
this.topicobj.type = "cymyd";
- } else if (targetOption.name.includes('甯哥敤')) {
+ } else if (targetOption.name.includes("甯哥敤")) {
this.topicobj.type = "cymyd"; // 娉ㄦ剰锛氳繖閲屽拰鈥滃嚭闄⑩�濋噸澶嶄簡锛岀‘璁ゆ槸鍚﹂渶鍖哄垎
}
}
diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue
index 0bcaf6d..3f34e32 100644
--- a/src/views/knowledge/questionnaire/compilequer/index.vue
+++ b/src/views/knowledge/questionnaire/compilequer/index.vue
@@ -117,27 +117,6 @@
</el-form-item>
</el-col>
</el-row>
- <!-- <el-row :gutter="20">
- <el-col :span="10">
- <el-form-item label="闀挎湡浠诲姟" prop="longTemp">
- <el-radio-group v-model="ruleForm.longTemp">
- <el-radio
- v-for="(item, index) in longtype"
- :label="item.value"
- >{{ item.label }}</el-radio
- >
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :span="8" v-if="ruleForm.longTemp">
- <el-form-item label="浠诲姟鍛ㄦ湡锛堝嚑澶╁悗锛�" prop="name">
- <el-input
- v-model="ruleForm.sendDay"
- placeholder="榛樿5澶╁悗"
- ></el-input>
- </el-form-item>
- </el-col>
- </el-row> -->
<el-row>
<el-form-item prop="dynamicTags">
@@ -396,6 +375,20 @@
<dict-tag
:options="askvaluetype"
:value="scope.row.scriptType"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="缁村害"
+ align="center"
+ key="dimension"
+ prop="dimension"
+ :show-overflow-tooltip="true"
+ >
+ <template slot-scope="scope">
+ <dict-tag
+ :options="dict.type.dimensionality_type"
+ :value="scope.row.dimension"
/>
</template>
</el-table-column>
@@ -673,43 +666,42 @@
</el-row>
<el-row>
<el-col :span="12">
- <el-form-item label="鍏宠仈鏈嶅姟">
- <div
- v-if="item.sendTaskname"
- class="service-tag-container"
- >
- <el-tag
- type="success"
- closable
- @close="removeService(item)"
- class="service-tag"
+ <el-form-item label="鍏宠仈鏈嶅姟">
+ <div
+ v-if="item.sendTaskname"
+ class="service-tag-container"
>
- <i class="el-icon-connection service-icon"></i>
- {{ item.sendTaskname }}
- </el-tag>
- </div>
- <div v-else class="service-add-btn">
- <el-button
- type="success"
- size="small"
- icon="el-icon-plus"
- @click="openServiceDialog(item)"
- class="add-service-btn"
- >
- 閫夋嫨浠诲姟
- </el-button>
- </div>
- </el-form-item>
+ <el-tag
+ type="success"
+ closable
+ @close="removeService(item)"
+ class="service-tag"
+ >
+ <i class="el-icon-connection service-icon"></i>
+ {{ item.sendTaskname }}
+ </el-tag>
+ </div>
+ <div v-else class="service-add-btn">
+ <el-button
+ type="success"
+ size="small"
+ icon="el-icon-plus"
+ @click="openServiceDialog(item)"
+ class="add-service-btn"
+ >
+ 閫夋嫨浠诲姟
+ </el-button>
+ </div>
+ </el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item label="榛樿閫夐」">
+ <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">
@@ -732,7 +724,7 @@
label="璀﹀憡"
:style="{ color: '#FFBA00' }"
>
- <span style="color: #FFBA00">鈼� 璀﹀憡</span>
+ <span style="color: #ffba00">鈼� 璀﹀憡</span>
</el-option>
<el-option
:value="1"
@@ -798,6 +790,14 @@
</div>
<div v-else>
<div class="topicxq">
+ <el-row>
+ <el-form-item label="鏄惁浣滀负鎰忚鏀堕泦棰樼洰">
+ <el-radio-group v-model="topicobj.isMydException">
+ <el-radio label="1">鏄�</el-radio>
+ <el-radio label="0">鍚�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-row>
<el-row :gutter="10">
<el-form-item label="绛旀">
<el-input
@@ -858,7 +858,7 @@
v-if="item.scriptType == 1"
>
<div class="dev-text">
- {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark">
@@ -878,7 +878,7 @@
v-if="item.scriptType == 2"
>
<div class="dev-text">
- {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="qremark">
@@ -1198,15 +1198,15 @@
<div class="basics">
閫夐」璁剧疆
<span style="margin-left: 30px"
- ><el-button type="primary" round @click="addoption"
- >+鏂板</el-button
+ ><el-button class="addoption-btn" @click="addoption"
+ >+鏂板閫夐」</el-button
></span
>
</div>
</div>
<el-divider></el-divider>
<div
- class="topicxq"
+ class="topic-card"
v-for="item in indexform.svyLibTemplateTargetoptions"
v-if="item.isoperation != 3"
>
@@ -1216,7 +1216,7 @@
<el-input
style="width: 400px"
type="text"
- placeholder="璇疯緭鍏ラ�夐」鍒嗗��"
+ placeholder="璇疯緭鍏ラ�夐」鍚嶇О"
v-model="item.optioncontent"
show-word-limit
>
@@ -1494,8 +1494,12 @@
import { deptTreeSelect } from "@/api/system/user";
export default {
- name: "Questionnaireinfo",
- dicts: ["sys_normal_disable", "sys_user_sex", "task_status"],
+ dicts: [
+ "sys_normal_disable",
+ "dimensionality_type",
+ "sys_user_sex",
+ "task_status",
+ ],
components: { OptionalForm },
data() {
@@ -2161,14 +2165,19 @@
'鏄惁纭鏂板鍚嶇О涓�"' + this.indexform.scriptTopic + '"鐨勯棶棰樻暟鎹紵'
)
.then(() => {
+ // 鉁� 寮哄埗鍒濆鍖�
+ if (!Array.isArray(this.indexform.svyLibTemplateTargetoptions)) {
+ this.$set(this.indexform, "svyLibTemplateTargetoptions", []);
+ }
+
this.indexform.isoperation = 1;
this.indexform.svyLibTemplateTargetoptions.forEach((item) => {
item.isoperation = 1;
});
+
this.ruleForm.svyTemplateLibScripts.push(this.indexform);
this.indexform = { svyTemplateLibScripts: [] };
this.drawer = false;
-
this.sortFn();
this.$modal.msgSuccess("闂鏂板鎴愬姛锛屼繚瀛樻ā鏉垮け鏁�");
});
@@ -2560,14 +2569,22 @@
// ---------------------------------------------------------
// 鏂伴棶棰樻柊澧�
addoption() {
- if (!this.indexform.svyLibTemplateTargetoptions) {
- this.indexform.svyLibTemplateTargetoptions = [];
+ if (!Array.isArray(this.indexform.svyLibTemplateTargetoptions)) {
+ this.$set(this.indexform, "svyLibTemplateTargetoptions", []);
}
+
this.indexform.svyLibTemplateTargetoptions.push({
+ tempId: Date.now() + Math.random(),
+ optioncontent: "",
score: "",
isoperation: 1,
});
- console.log(this.indexform.svyLibTemplateTargetoptions);
+ },
+ deletexuanx(item) {
+ this.indexform.svyLibTemplateTargetoptions =
+ this.indexform.svyLibTemplateTargetoptions.filter(
+ (opt) => opt.tempId !== item.tempId
+ );
},
// 閫夐」鏂囦欢涓婁紶
handleChange(item, response, file, fileList) {
@@ -2598,9 +2615,16 @@
</script>
<style lang="scss" scoped>
+$radius: 8px;
+$border: #e4e7ed;
+$bg-light: #f7f9fb;
+$primary: #409eff;
+$text-main: #303133;
+$text-sub: #606266;
.Questionnairemanagement {
// display: flex;
}
+
.sidecolumn {
margin: 10px 20px 0 20px;
padding: 20px;
@@ -2609,6 +2633,7 @@
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
}
+
.leftvlue {
// // display: flex;
// // flex: 1;
@@ -2622,20 +2647,25 @@
border: 1px solid #dcdfe6;
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
+
.mulsz {
font-size: 20px;
}
+
.leftvlue-jbxx {
- display: flex; /* 浣跨敤 Flexbox 甯冨眬 */
+ display: flex;
+ /* 浣跨敤 Flexbox 甯冨眬 */
justify-content: space-between;
font-size: 24px;
border-left: 5px solid #41a1be;
padding-left: 5px;
margin: 15px 0;
}
+
.demo-cascader {
margin-right: 20px;
}
+
.PreviewTemplate {
color: #02a7f0;
cursor: pointer;
@@ -2643,6 +2673,7 @@
margin: 0 20px;
}
}
+
.preview-left {
margin: 20px;
// margin: 20px;
@@ -2651,14 +2682,17 @@
border: 1px solid #dcdfe6;
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
+
.scriptTopic-dev {
margin-bottom: 25px;
font-size: 20px !important;
+
.dev-text {
margin-bottom: 10px;
}
}
}
+
.headline {
display: flex;
justify-content: space-between;
@@ -2667,6 +2701,7 @@
padding-left: 5px;
margin: 15px 0;
}
+
.xinz-inf {
font-size: 18px;
white-space: nowrap;
@@ -2678,6 +2713,7 @@
.el-tag + .el-tag {
margin-left: 10px;
}
+
.button-new-tag {
margin-left: 10px;
height: 32px;
@@ -2685,12 +2721,14 @@
padding-top: 0;
padding-bottom: 0;
}
+
.input-new-tag {
width: 90px;
margin-left: 10px;
vertical-align: bottom;
}
}
+
.xinz-infs {
font-size: 18px;
line-height: 48px;
@@ -2699,54 +2737,123 @@
margin-left: 10px;
}
}
+
.addtopic {
margin-top: 30px;
}
+
.presentation {
margin: 20px 0;
display: flex;
+
.presentation-left {
width: 45%;
max-height: 80vh;
padding: 0 20px;
font-size: 18px;
overflow: auto;
+
.button-textxg {
color: #024df0;
}
+
.button-textsc {
color: #f52727;
}
}
+
.spresentation-left {
width: 100%;
+
// height: 500px;
.button-textxg {
color: #024df0;
}
+
.button-textsc {
color: #f52727;
}
}
+
.presentation-right {
- width: 55%;
+ flex: 6;
+ min-width: 360px;
max-height: 80vh;
- padding: 0 20px;
- font-size: 18px;
overflow: auto;
+ padding: 20px;
+
.headline {
- font-size: 20px;
- border-left: 3px solid #41a1be;
- padding-left: 5px;
- margin: 15px 0;
- }
- .topicxq {
- background-color: #e2f5fc;
- border-radius: 4px;
- margin-top: 10px;
+ font-size: 18px;
+ font-weight: 600;
+ color: $text-main;
padding-left: 10px;
- padding-top: 15px;
+ border-left: 4px solid $primary;
+ margin-bottom: 16px;
}
+
+ .topic-card {
+ background: #fff;
+ border: 1px solid $border;
+ border-radius: $radius;
+ padding: 20px;
+ margin-bottom: 16px;
+ transition: box-shadow 0.2s;
+
+ &:hover {
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
+ }
+
+ .el-form-item {
+ margin-bottom: 16px;
+ }
+
+ .el-form-item__label {
+ font-size: 14px;
+ color: $text-sub;
+ }
+ }
+ }
+}
+.demo-drawer {
+ .preview-left {
+ padding: 20px;
+
+ .headline {
+ font-size: 18px;
+ font-weight: 600;
+ margin-bottom: 12px;
+ }
+
+ .topic-card {
+ background: #fff;
+ border: 1px solid $border;
+ border-radius: $radius;
+ padding: 16px;
+ margin-bottom: 12px;
+
+ .el-form-item {
+ margin-bottom: 14px;
+ }
+
+ .el-button--primary {
+ background: $primary;
+ border-radius: 20px;
+ padding: 8px 16px;
+ }
+ }
+ }
+}
+.addoption-btn {
+ width: 100%;
+ border: 1px dashed $border;
+ color: $text-sub;
+ background: $bg-light;
+ border-radius: $radius;
+ height: 40px;
+
+ &:hover {
+ border-color: $primary;
+ color: $primary;
}
}
.topicxq {
@@ -2760,6 +2867,7 @@
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
}
+
.service-tag-container {
display: inline-block;
@@ -2862,6 +2970,7 @@
opacity: 0;
transform: scale(0.8) translateY(-5px);
}
+
to {
opacity: 1;
transform: scale(1) translateY(0);
@@ -2889,9 +2998,12 @@
}
}
}
+
.custom-width {
- width: 100px; /* 璁剧疆瀹藉害鏍峰紡 */
+ width: 100px;
+ /* 璁剧疆瀹藉害鏍峰紡 */
}
+
.el-select {
width: 280px;
}
@@ -2899,6 +3011,7 @@
.el-cascader {
width: 40%;
}
+
::v-deep .addtopic-input {
input {
background: #02a7f0;
@@ -2906,25 +3019,31 @@
width: 150px;
}
}
+
::v-deep.el-step.is-vertical .el-step__title {
font-size: 25px;
}
+
::v-deep.el-input--medium {
font-size: 18px !important;
}
+
::v-deep.ruleFormaa.el-select {
display: inline-block;
position: relative;
width: 700px;
}
+
.el-select__tags {
font-size: 20px;
max-width: 888px !important;
}
+
::v-deep.el-radio__inner {
width: 22px;
height: 22px;
}
+
// ::v-deep.scriptTopic-dev.el-radio__label {
// font-size: 24px;
// }
@@ -2933,11 +3052,13 @@
font-size: 24px;
}
}
+
::v-deep.el-checkbox-group {
span {
font-size: 24px;
}
}
+
// ::v-deep.el-form-item--medium .el-form-item__content {
// line-height: 36px;
// display: flex;
diff --git a/src/views/knowledge/questionnaire/examine/index.vue b/src/views/knowledge/questionnaire/examine/index.vue
index 4c840fc..9465112 100644
--- a/src/views/knowledge/questionnaire/examine/index.vue
+++ b/src/views/knowledge/questionnaire/examine/index.vue
@@ -63,7 +63,7 @@
<!-- 鍗曢�� -->
<div class="topic-dev" v-for="item in valssu" :key="item.aaa">
<div class="dev-text">
- {{ item.idd }}銆乕鍗曢�塢  <span>{{ item.wssd }}</span>
+ {{ item.idd }}. [鍗曢�塢  <span>{{ item.wssd }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="radio">
@@ -79,7 +79,7 @@
<!-- 澶氶�� -->
<div class="topic-dev" v-for="item in valssu" :key="item.aaa">
<div class="dev-text">
- {{ item.idd }}銆乕澶氶�塢  <span>{{ item.wssd }}</span>
+ {{ item.idd }}. [澶氶�塢  <span>{{ item.wssd }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="radios">
diff --git a/src/views/knowledge/questionnaire/index.vue b/src/views/knowledge/questionnaire/index.vue
index 6c1622e..d6ecc7f 100644
--- a/src/views/knowledge/questionnaire/index.vue
+++ b/src/views/knowledge/questionnaire/index.vue
@@ -398,7 +398,7 @@
v-if="item.scriptType == 1"
>
<div class="dev-text">
- {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark">
@@ -418,7 +418,7 @@
v-if="item.scriptType == 2"
>
<div class="dev-text">
- {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="item.qremark">
@@ -439,7 +439,7 @@
v-if="item.scriptType == 4"
>
<div class="dev-text">
- {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
diff --git a/src/views/loginSSO.vue b/src/views/loginSSO.vue
index 6cd082c..d195a79 100644
--- a/src/views/loginSSO.vue
+++ b/src/views/loginSSO.vue
@@ -11,13 +11,14 @@
<div v-else class="loading-content">
<i class="el-icon-loading"></i>
<p>鍗曠偣鐧诲綍涓紝璇风◢鍊�...</p>
+ <p class="loading-detail">{{ loadingDetail }}</p>
</div>
</div>
</div>
</template>
<script>
-import { setToken } from "@/utils/auth";
+import { setToken, removeToken } from "@/utils/auth";
export default {
name: "SSORedirect",
@@ -25,96 +26,205 @@
return {
errorMessage: "",
loading: true,
+ loadingDetail: "姝e湪澶勭悊SSO浠ょ墝...",
};
},
created() {
this.handleSSORedirect();
},
methods: {
- // 鍖归厤orgid
+ // 鍖归厤orgid - 浼樺寲涓哄璞℃槧灏�
mateOrgid(orgid) {
- if (orgid == "30001002") {
- localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌缈犺嫅闄㈠尯");
- localStorage.setItem("ZuHuID", "1400361376454545408");
- localStorage.setItem("deptCode", "1017");
- } else if (orgid == "30001003") {
- localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌涔嬫睙闄㈠尯");
- localStorage.setItem("ZuHuID", "1400360867068907520");
- localStorage.setItem("deptCode", "01040201");
- } else if (orgid == "30001004") {
- localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌闂叉灄闄㈠尯");
- localStorage.setItem("ZuHuID", "1429338802177000002");
- localStorage.setItem("deptCode", "");
- } else if (orgid == "30001005") {
- localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌澶╃洰灞辫矾闄㈠尯");
- localStorage.setItem("ZuHuID", "1429338802177000003");
- localStorage.setItem("deptCode", "");
- } else if (orgid == "30001006") {
- localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌闈掑北婀栭櫌鍖�");
- localStorage.setItem("ZuHuID", "1429338802177000004");
- localStorage.setItem("deptCode", "");
- } else if (orgid == "30001007") {
- localStorage.setItem("orgname", "娴嬭瘯闄㈠尯");
- localStorage.setItem("ZuHuID", "1429338802177000005");
- localStorage.setItem("deptCode", "");
+ const orgMap = {
+ "30001002": {
+ orgname: "鐪佺珛鍚屽痉缈犺嫅闄㈠尯",
+ ZuHuID: "1400361376454545408",
+ deptCode: "1017",
+ },
+ "30001003": {
+ orgname: "鐪佺珛鍚屽痉涔嬫睙闄㈠尯",
+ ZuHuID: "1400360867068907520",
+ deptCode: "01040201",
+ },
+ "30001004": {
+ orgname: "鐪佺珛鍚屽痉闂叉灄闄㈠尯",
+ ZuHuID: "1429338802177000002",
+ deptCode: "",
+ },
+ "30001005": {
+ orgname: "鐪佺珛鍚屽痉澶╃洰灞辫矾闄㈠尯",
+ ZuHuID: "1429338802177000003",
+ deptCode: "",
+ },
+ "30001006": {
+ orgname: "鐪佺珛鍚屽痉闈掑北婀栭櫌鍖�",
+ ZuHuID: "1429338802177000004",
+ deptCode: "",
+ },
+ "30001007": {
+ orgname: "娴嬭瘯闄㈠尯",
+ ZuHuID: "1429338802177000005",
+ deptCode: "",
+ },
+ };
+
+ const orgInfo = orgMap[orgid];
+ if (orgInfo) {
+ localStorage.setItem("orgname", orgInfo.orgname);
+ localStorage.setItem("ZuHuID", orgInfo.ZuHuID);
+ localStorage.setItem("deptCode", orgInfo.deptCode);
+ return orgInfo;
}
+ return null;
},
- async handleSSORedirect() {
+
+ // 娓呯悊鏃х郴缁熺殑鏈湴瀛樺偍
+ clearOldSystemData() {
+ // 娓呯悊鍙兘鍐茬獊鐨勬棫绯荤粺鏁版嵁
+ const oldKeys = ["old-token", "old-user-info", "old-session"];
+ oldKeys.forEach((key) => {
+ localStorage.removeItem(key);
+ sessionStorage.removeItem(key);
+ });
+
+ // 娓呯悊鐗瑰畾鍓嶇紑鐨勫瓨鍌�
+ Object.keys(localStorage).forEach((key) => {
+ if (key.startsWith("old-system-") || key.startsWith("legacy-")) {
+ localStorage.removeItem(key);
+ }
+ });
+ },
+
+ // 鑾峰彇榛樿閲嶅畾鍚戣矾寰�
+ getDefaultRedirectPath() {
try {
- console.log(11);
- // 浠嶶RL鍙傛暟涓幏鍙杢oken鍜屾満鏋勪俊鎭�
- let { token, orgid, orgname, ZuHuID, deptCode } = this.$route.query;
- // token =
- // "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijc5MWVkODNlLWE2MWYtNDI2MS05ZDZlLTNhOTVjYTU2YjZhMiJ9.q6jrRj8fwtb3FOqqwaxIFDr824hf85DW8heCj4qWYgRE55Pn0vkmcujFsYMrz9qqo047Gl7lv3rnok8pk7SKYQ"; // 楠岃瘉蹇呰鍙傛暟
- // orgid = "30001002";
- if (!token) {
- throw new Error("缂哄皯璁よ瘉浠ょ墝(token)");
- }
- console.log(token);
- console.log(orgid);
- console.log(orgname);
- // console.log(redirect,'redirect');
-
- this.mateOrgid(orgid);
- setToken(token);
- this.$store.commit("SET_TOKEN", token);
-
- // 瀛樺偍鏈烘瀯淇℃伅鍒發ocalStorage
- if (orgid) {
- localStorage.setItem("orgid", orgid);
- this.$store.dispatch("UpdateOrgId", orgid);
- }
- if (orgname) localStorage.setItem("orgname", orgname);
- if (ZuHuID) localStorage.setItem("ZuHuID", ZuHuID);
- if (deptCode) localStorage.setItem("deptCode", deptCode);
-
- // 鑾峰彇鐢ㄦ埛淇℃伅
- await this.$store.dispatch("GetInfo");
-
- // 纭畾閲嶅畾鍚戣矾寰�
- let redirectPath = "/index";
- // if (redirect) {
- // console.log(redirect,'888');
-
- // redirectPath = decodeURIComponent(redirect);
- // } else {
- // 鏍规嵁鐢ㄦ埛瑙掕壊鍐冲畾榛樿璺宠浆椤甸潰
- const roles = this.$store.state.user.roles;
- const username = this.$store.state.user.name;
+ const roles = this.$store.state.user?.roles || [];
+ const username = this.$store.state.user?.name || "";
if (roles.includes("admin") || username === "admin") {
- redirectPath = "/index";
- } else {
- redirectPath = "/followvisit/discharge";
+ return "/index";
}
- // }
+ return "/followvisit/discharge";
+ } catch (error) {
+ console.warn("鑾峰彇榛樿閲嶅畾鍚戣矾寰勫け璐�:", error);
+ return "/followvisit/discharge";
+ }
+ },
- // 璺宠浆鍒扮洰鏍囬〉闈�
- this.$router.replace({ path: redirectPath });
+ // 楠岃瘉SSO鍙傛暟
+ validateSSOParams(params) {
+ const { token, orgid } = params;
+
+ if (!token) {
+ throw new Error("缂哄皯璁よ瘉浠ょ墝(token)");
+ }
+
+ if (!orgid) {
+ console.warn("SSO鐧诲綍缂哄皯orgid鍙傛暟");
+ }
+
+ // 楠岃瘉token鏍煎紡锛堢畝鍗曢獙璇侊級
+ if (token.length < 10) {
+ throw new Error("浠ょ墝鏍煎紡鏃犳晥");
+ }
+
+ return true;
+ },
+
+ // 涓诲鐞嗗嚱鏁�
+ async handleSSORedirect() {
+ try {
+ console.log("SSO閲嶅畾鍚戝紑濮嬪鐞�...");
+
+ // 1. 鑾峰彇URL鍙傛暟
+ const params = this.$route.query;
+ console.log("SSO鍙傛暟:", params);
+
+ // 2. 楠岃瘉蹇呰鍙傛暟
+ this.validateSSOParams(params);
+ this.loadingDetail = "楠岃瘉浠ょ墝涓�...";
+
+ // 3. 娓呯悊鏃х郴缁熸暟鎹�
+ this.clearOldSystemData();
+
+ const { token, orgid, orgname, ZuHuID, deptCode, redirect } = params;
+
+ // 4. 瀛樺偍token
+ setToken(token);
+ this.$store.commit("SET_TOKEN", token);
+ this.loadingDetail = "璁剧疆鐢ㄦ埛浠ょ墝...";
+
+ // 5. 澶勭悊鏈烘瀯淇℃伅
+ if (orgid) {
+ // 浼樺厛浣跨敤mateOrgid鏄犲皠
+ const orgInfo = this.mateOrgid(orgid);
+ if (!orgInfo) {
+ // 濡傛灉娌℃湁鏄犲皠锛屼娇鐢ㄤ紶鍏ョ殑鍙傛暟
+ if (orgname) localStorage.setItem("orgname", orgname);
+ if (ZuHuID) localStorage.setItem("ZuHuID", ZuHuID);
+ if (deptCode) localStorage.setItem("deptCode", deptCode);
+ }
+
+ localStorage.setItem("orgid", orgid);
+ if (this.$store.dispatch && typeof this.$store.dispatch === "function") {
+ await this.$store.dispatch("UpdateOrgId", orgid);
+ }
+ }
+ this.loadingDetail = "璁剧疆鏈烘瀯淇℃伅...";
+
+ // 6. 鑾峰彇鐢ㄦ埛淇℃伅
+ if (this.$store.dispatch && typeof this.$store.dispatch === "function") {
+ await this.$store.dispatch("GetInfo");
+ }
+ this.loadingDetail = "鑾峰彇鐢ㄦ埛淇℃伅...";
+
+ // 7. 澶勭悊閲嶅畾鍚戣矾寰�
+ let redirectPath = "/followvisit/discharge";
+
+ if (redirect) {
+ // 瑙g爜浼犲叆鐨勯噸瀹氬悜璺緞
+ try {
+ redirectPath = decodeURIComponent(redirect);
+ console.log("浣跨敤浼犲叆鐨勯噸瀹氬悜璺緞:", redirectPath);
+ } catch (e) {
+ console.error("瑙g爜閲嶅畾鍚戣矾寰勫け璐�:", e);
+ redirectPath = this.getDefaultRedirectPath();
+ }
+ } else {
+ redirectPath = this.getDefaultRedirectPath();
+ }
+
+ // 8. 绉婚櫎URL涓殑token鍙傛暟锛堝畨鍏ㄨ�冭檻锛�
+ this.$router.replace({ query: {} });
+
+ // 9. 寤惰繜璺宠浆锛岀‘淇濈姸鎬佸凡鏇存柊
+ setTimeout(() => {
+ this.loadingDetail = "璺宠浆鍒扮洰鏍囬〉闈�...";
+ console.log("鍑嗗璺宠浆鍒�:", redirectPath);
+
+ // 鉁� 浣跨敤 push 鑰屼笉鏄� replace锛屼繚鐣欏巻鍙茶褰�
+ this.$router.push({ path: redirectPath }).then(() => {
+ console.log("SSO鐧诲綍鎴愬姛锛岃烦杞畬鎴�");
+ }).catch((error) => {
+ console.error("璺敱璺宠浆澶辫触:", error);
+ // 鍥為��鍒伴粯璁ら〉闈�
+ this.$router.push({ path: "/followvisit/discharge" });
+ });
+ }, 500);
+
} catch (error) {
console.error("SSO鐧诲綍澶辫触:", error);
this.errorMessage = `鍗曠偣鐧诲綍澶辫触: ${error.message || "鏈煡閿欒"}`;
this.loading = false;
+
+ // 娓呯悊token
+ removeToken();
+ this.$store.commit("SET_TOKEN", "");
+
+ // 鏄剧ず閿欒璇︽儏锛堝紑鍙戠幆澧冿級
+ if (process.env.NODE_ENV === "development") {
+ this.errorMessage += ` (璇︽儏: ${error.toString()})`;
+ }
// 5绉掑悗璺宠浆鍒版櫘閫氱櫥褰曢〉
setTimeout(() => {
@@ -132,29 +242,73 @@
justify-content: center;
align-items: center;
height: 100vh;
+ min-height: 500px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
background-color: #f5f7fa;
+ padding: 20px;
+ box-sizing: border-box;
}
.loading-container {
text-align: center;
- padding: 20px;
- background: white;
- border-radius: 4px;
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ padding: 40px 60px;
+ background: rgba(255, 255, 255, 0.95);
+ border-radius: 12px;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+ min-width: 400px;
+ max-width: 500px;
+ backdrop-filter: blur(10px);
+ border: 1px solid rgba(255, 255, 255, 0.2);
}
.loading-content {
- padding: 20px;
+ padding: 30px 20px;
}
.el-icon-loading {
- font-size: 40px;
+ font-size: 60px;
color: #409eff;
- margin-bottom: 10px;
+ margin-bottom: 20px;
+ animation: spin 1.5s linear infinite;
}
-p {
+@keyframes spin {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+}
+
+.loading-content p {
margin: 0;
color: #606266;
+ font-size: 16px;
+ line-height: 1.6;
+}
+
+.loading-detail {
+ margin-top: 10px !important;
+ font-size: 14px !important;
+ color: #909399 !important;
+ opacity: 0.8;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+ .sso-redirect {
+ padding: 10px;
+ }
+
+ .loading-container {
+ padding: 30px 20px;
+ min-width: 300px;
+ max-width: 90vw;
+ }
+
+ .el-icon-loading {
+ font-size: 50px;
+ }
+
+ .loading-content p {
+ font-size: 15px;
+ }
}
</style>
diff --git a/src/views/monitor/job/index.vue b/src/views/monitor/job/index.vue
index 31108b5..807fd55 100644
--- a/src/views/monitor/job/index.vue
+++ b/src/views/monitor/job/index.vue
@@ -19,7 +19,7 @@
/>
</el-select>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
<el-select v-model="queryParams.status" placeholder="璇烽�夋嫨浠诲姟鐘舵��" clearable>
<el-option
v-for="dict in dict.type.sys_job_status"
diff --git a/src/views/outsideChain.vue b/src/views/outsideChain.vue
index 4245057..45824b1 100644
--- a/src/views/outsideChain.vue
+++ b/src/views/outsideChain.vue
@@ -15,7 +15,7 @@
v-if="item.scriptType == 1"
>
<div class="dev-text">
- {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark">
@@ -35,7 +35,7 @@
v-if="item.scriptType == 2"
>
<div class="dev-text">
- {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="qremark">
@@ -56,7 +56,7 @@
v-if="item.scriptType == 4"
>
<div class="dev-text">
- {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
diff --git a/src/views/outsideChainwtnew.vue b/src/views/outsideChainwtnew.vue
index e435d5c..3882e7f 100644
--- a/src/views/outsideChainwtnew.vue
+++ b/src/views/outsideChainwtnew.vue
@@ -1,6 +1,6 @@
<template>
<div class="questionnaire-optimized">
- <div v-if="loading" class="loading-container">
+ <div v-if="loading && !accomplish" class="loading-container">
<div class="loading-content">
<i class="el-icon-loading loading-icon"></i>
<div class="loading-text">闂嵎鍔犺浇涓紝璇风◢鍊�...</div>
@@ -27,8 +27,146 @@
<el-divider class="custom-divider"></el-divider>
- <!-- 闂嵎棰樼洰鍖哄煙 -->
- <div class="questions-section">
+ <!-- 鎸夌淮搴﹀垎缁勭殑棰樼洰鍖哄煙 -->
+ <div class="dimension-section" v-if="hasDimension">
+ <!-- 閬嶅巻缁村害鍒嗙粍 -->
+ <div
+ class="dimension-group"
+ v-for="(group, dimensionKey) in dimensionGroups"
+ :key="dimensionKey"
+ >
+ <!-- 缁村害鏍囬 - 鍙樉绀烘湁缁村害鏍囩鐨� -->
+ <div class="dimension-title" v-if="group.dimensionLabel">
+ <h3>{{ group.dimensionLabel }}</h3>
+ </div>
+
+ <!-- 璇ョ淮搴︿笅鐨勯鐩� -->
+ <div class="questions-section">
+ <div
+ class="question-item"
+ v-for="(item, index) in group.questions"
+ :key="item.id"
+ :class="{
+ 'has-warning':
+ item.prompt &&
+ item.scriptResult &&
+ (item.scriptType !== 2 || item.scriptResult.length > 0),
+ }"
+ >
+ <!-- 棰樼洰棰樺共 -->
+ <div class="question-stem">
+ <span class="question-number"
+ >{{ getQuestionNumber(group, index) }}.</span
+ >
+ <span class="question-text">{{ item.scriptContent }}</span>
+ <span class="question-type-tag">
+ {{
+ item.scriptType == 1
+ ? "[鍗曢�塢"
+ : item.scriptType == 2
+ ? "[澶氶�塢"
+ : "[闂瓟]"
+ }}
+ </span>
+ </div>
+
+ <!-- 鍗曢�夐鐩� -->
+ <div
+ class="question-options"
+ v-if="item.scriptType == 1 && !item.ishide"
+ >
+ <el-radio-group
+ class="options-group"
+ v-model="item.scriptResult"
+ >
+ <el-radio
+ v-for="(
+ option, optionIndex
+ ) in item.svyTaskTemplateTargetoptions"
+ :key="optionIndex"
+ :label="option.optioncontent"
+ :class="{
+ 'abnormal-option':
+ option.isabnormal &&
+ item.scriptResult == option.optioncontent,
+ }"
+ @click.native.prevent="
+ handleRadioToggle(
+ item,
+ getGlobalIndex(dimension, group, index),
+ item.svyTaskTemplateTargetoptions,
+ option.optioncontent
+ )
+ "
+ class="option-radio"
+ >
+ <span class="option-text">{{
+ option.optioncontent
+ }}</span>
+ </el-radio>
+ </el-radio-group>
+ </div>
+
+ <!-- 澶氶�夐鐩� -->
+ <div class="question-options" v-if="item.scriptType == 2">
+ <el-checkbox-group
+ class="options-group"
+ v-model="item.scriptResult"
+ >
+ <el-checkbox
+ v-for="(
+ option, optionIndex
+ ) in item.svyTaskTemplateTargetoptions"
+ :key="optionIndex"
+ :label="option.optioncontent"
+ :class="{
+ 'abnormal-option': option.isabnormal,
+ }"
+ @change="$forceUpdate()"
+ class="option-checkbox"
+ >
+ <span class="option-text">{{
+ option.optioncontent
+ }}</span>
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+
+ <!-- 濉┖棰樼洰 -->
+ <div class="question-input" v-if="item.scriptType == 4">
+ <el-input
+ type="textarea"
+ :rows="3"
+ placeholder="璇疯緭鍏ユ偍鐨勫洖绛�"
+ v-model="item.scriptResult"
+ clearable
+ class="answer-textarea"
+ ></el-input>
+ </div>
+
+ <!-- 鎻愮ず淇℃伅 -->
+ <div
+ class="question-warning"
+ v-show="
+ item.prompt &&
+ item.scriptResult &&
+ (item.scriptType !== 2 || item.scriptResult.length > 0)
+ "
+ >
+ <el-alert
+ :title="item.prompt"
+ type="warning"
+ :closable="false"
+ class="warning-alert"
+ ></el-alert>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- 鏃犵淮搴︽椂鐨勯鐩尯鍩燂紙淇濇寔鍘熸牱锛� -->
+ <div class="questions-section" v-else>
<div
class="question-item"
v-for="(item, index) in visibleQuestions"
@@ -48,9 +186,9 @@
<span class="question-text">{{ item.scriptContent }}</span>
<span class="question-type-tag">
{{
- item.scriptType === 1
+ item.scriptType == 1
? "[鍗曢�塢"
- : item.scriptType === 2
+ : item.scriptType == 2
? "[澶氶�塢"
: "[闂瓟]"
}}
@@ -182,6 +320,7 @@
getExternalfollowup,
getCachequestionnaire,
Cachequestionnaire,
+ gettypeout,
Submitaquestionnaire,
geturlinfo,
} from "@/api/AiCentre/index";
@@ -202,6 +341,23 @@
dialogVisible: false,
Endornot: true,
accomplish: false,
+ dimensionTypes: [
+ {
+ value: 1,
+ label: "缁村害1",
+ listClass: "primary",
+ },
+ {
+ value: 2,
+ label: "缁村害浜�",
+ listClass: "primary",
+ },
+ {
+ value: 3,
+ label: "缁村害涓�",
+ listClass: "primary",
+ },
+ ],
// 鍓嶇鍏挜
publicKey:
"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKR0yHv0rbJWQE+Sc7/FwpW66qMd9qX2k6z+SDgkSdxWh/1GbBoAP7bDQQRF6vXmoKsD2ya42H6XRLSDXAoayuMCAwEAAQ== ",
@@ -222,6 +378,7 @@
// window.removeEventListener("beforeunload", this.cache);
},
created() {
+ this.gettypeout();
this.geturlinfo();
},
computed: {
@@ -231,6 +388,79 @@
return [];
}
return this.questionList.filter((question) => !question.ishide);
+ },
+
+ // 璁$畻灞炴�э細妫�鏌ユ槸鍚︽湁缁村害瀛楁
+ hasDimension() {
+ if (!this.questionList || this.questionList.length == 0) {
+ return false;
+ }
+ // 妫�鏌ヤ换鎰忎竴涓鐩槸鍚︽湁dimension瀛楁
+ return this.questionList.some(
+ (question) =>
+ question.dimension && this.getDimensionLabel(question.dimension)
+ );
+ },
+
+ // 璁$畻灞炴�э細鎸夌淮搴︽暣鐞嗛鐩�
+ dimensionGroups() {
+ if (!this.questionList || this.questionList.length == 0) {
+ return {};
+ }
+
+ const groups = {};
+ let currentGroupKey = null;
+ let groupStartIndex = 0; // 璁板綍褰撳墠缁村害缁勭殑寮�濮嬬储寮�
+
+ this.visibleQuestions.forEach((question, index) => {
+ const dimensionValue = question.dimension;
+ const dimensionLabel = this.getDimensionLabel(dimensionValue);
+
+ // 鐢熸垚缁刱ey锛氭湁缁村害鐢ㄧ淮搴﹀�硷紝鏃犵淮搴︾敤鐗规畩鏍囪+璧峰绱㈠紩
+ let groupKey;
+ if (dimensionValue && dimensionLabel) {
+ groupKey = `dimension-${dimensionValue}`;
+ } else {
+ // 鏃犵淮搴︽垨缁村害鏄犲皠涓嶅瓨鍦ㄧ殑棰樼洰鍗曠嫭鍒嗙粍
+ groupKey = `no-dimension-${groupStartIndex}`;
+ }
+
+ // 鍒涘缓鎴栬幏鍙栫淮搴︾粍
+ if (!groups[groupKey]) {
+ groups[groupKey] = {
+ questions: [],
+ startIndex: groupStartIndex,
+ dimensionValue: dimensionValue, // 淇濆瓨缁村害鍊肩敤浜庡悗缁鐞�
+ dimensionLabel: dimensionLabel, // 淇濆瓨缁村害鏍囩
+ isNoDimension: !dimensionValue || !dimensionLabel,
+ };
+ currentGroupKey = groupKey;
+ }
+
+ // 灏嗛鐩坊鍔犲埌瀵瑰簲鐨勭淮搴︾粍
+ groups[groupKey].questions.push(question);
+
+ // 濡傛灉涓嬩竴涓鐩淮搴︿笉鍚岋紝閲嶆柊寮�濮嬭鏁�
+ const nextQuestion = this.visibleQuestions[index + 1];
+ if (nextQuestion) {
+ const nextDimensionValue = nextQuestion.dimension;
+ const nextDimensionLabel = this.getDimensionLabel(nextDimensionValue);
+ const currentDimensionLabel = this.getDimensionLabel(dimensionValue);
+
+ // 鍒ゆ柇缁村害鏄惁鐩稿悓
+ if (
+ dimensionValue !== nextDimensionValue ||
+ (dimensionValue &&
+ nextDimensionValue &&
+ ((!dimensionValue && nextDimensionValue) ||
+ (dimensionValue && !nextDimensionValue)))
+ ) {
+ groupStartIndex = index + 1;
+ }
+ }
+ });
+
+ return groups;
},
},
methods: {
@@ -253,6 +483,23 @@
this.param6 = res.data.param6;
}
});
+ },
+ // 鑾峰彇瀛楀吀
+ gettypeout() {
+ gettypeout("dimensionality_type").then((res) => {
+ if (res.code == 200) {
+ this.dimensionTypes = res.data;
+ }
+ });
+ },
+ // 鏍规嵁缁村害鍊艰幏鍙栫淮搴︽爣绛�
+ getDimensionLabel(dimensionValue) {
+ if (!dimensionValue) return "";
+
+ const dimensionType = this.dimensionTypes.find(
+ (item) => item.dictValue == Number(dimensionValue)
+ );
+ return dimensionType ? dimensionType.dictLabel : "";
},
// extractLastSegmentFromUrl(url) {
// // 鎵惧埌鏈�鍚庝竴涓�'/'鐨勪綅缃�
@@ -431,19 +678,42 @@
getVisibleQuestionIndex(index) {
return index + 1;
},
+
+ // 鑾峰彇缁村害鍐呴鐩殑搴忓彿
+ getQuestionNumber(group, index) {
+ return group.startIndex + index + 1;
+ },
+
+ // 鑾峰彇棰樼洰鍦ㄥ叏閲忔暟缁勪腑鐨勭储寮�
+ getGlobalIndex(dimension, group, localIndex) {
+ return group.startIndex + localIndex;
+ },
+ // 鍦ㄦā鏉夸腑浣跨敤
+ getDimensionLabelForDisplay(dimensionKey) {
+ if (dimensionKey.startsWith("no-dimension-")) {
+ return "";
+ }
+ const dimensionValue = dimensionKey.replace("dimension-", "");
+ return this.getDimensionLabel(dimensionValue);
+ },
// 鏂板鐨勫垏鎹㈤�変腑/鍙栨秷閫変腑鏂规硶
- handleRadioToggle(questionItem, index, options, optionValue) {
+ handleRadioToggle(questionItem, globalIndex, options, optionValue) {
// 淇濆瓨褰撳墠鐘舵�佷互渚垮悗缁瘮杈�
const previousState = JSON.parse(JSON.stringify(this.questionList));
// 鍘熸湁鐨勫鐞嗛�昏緫
- if (questionItem.scriptResult === optionValue) {
+ if (questionItem.scriptResult == optionValue) {
questionItem.scriptResult = "";
questionItem.isabnormal = 0;
questionItem.showAppendInput = false;
} else {
questionItem.scriptResult = optionValue;
- this.handleOptionChange(optionValue, index, options, questionItem);
+ this.handleOptionChange(
+ optionValue,
+ globalIndex,
+ options,
+ questionItem
+ );
}
// 澶勭悊瀹屾垚鍚庯紝纭繚閲嶆柊璁$畻鍙棰樼洰鐨勫簭鍙�
@@ -517,12 +787,12 @@
}
// 褰撳墠棰樼洰鎬绘槸鍙
- if (index === questionIndex) {
+ if (index == questionIndex) {
return { ...item, ishide: 0, hiddenByEnd: false };
}
// 鏄剧ず鐩爣涓嬩竴棰�
- if (index === nextQuestionIndex) {
+ if (index == nextQuestionIndex) {
return { ...item, ishide: 0, hiddenByEnd: false };
}
@@ -544,8 +814,8 @@
// 濡傛灉娌℃湁璺宠浆锛屽彧闇�纭繚涓嬩竴棰樺彲瑙�
this.questionList = this.questionList.map((item, index) => ({
...item,
- ishide: index === questionIndex + 1 ? 0 : item.ishide,
- hiddenByEnd: index === questionIndex + 1 ? false : item.hiddenByEnd,
+ ishide: index == questionIndex + 1 ? 0 : item.ishide,
+ hiddenByEnd: index == questionIndex + 1 ? false : item.hiddenByEnd,
}));
}
@@ -554,32 +824,6 @@
this.$forceUpdate();
});
},
- // 澶勭悊鍗曢�夐�夐」
- // handleOptionChange(selectedvalue, index, arr) {
- // // 鏌ユ壘閫変腑鐨勯�夐」瀵硅薄
- // const selectedOption = arr.svyTaskTemplateTargetoptions.find(
- // (option) => option.optioncontent == selectedvalue
- // );
- // if (selectedOption) {
- // this.questionList[index].nextScriptno = selectedOption.nextQuestion;
- // this.questionList[index].score = selectedOption.score;
- // this.questionList[index].prompt = selectedOption.prompt;
- // }
- // },
- // 澶勭悊澶氶�夐�夐」
- // updateScore(selectedvalues, index, arr) {
- // // 锟斤拷鍔犲垎鏁�
- // let score = 0;
- // selectedvalues.forEach((value) => {
- // const selectedOption = arr.svyTaskTemplateTargetoptions.find(
- // (option) => option.optioncontent == value
- // );
- // if (selectedOption) {
- // score += Number(selectedOption.score);
- // }
- // });
- // this.questionList[index].score = score;
- // },
},
};
</script>
@@ -632,12 +876,40 @@
background-color: #eaeef2;
}
+/* 缁村害鍒嗙粍鏍峰紡 */
+.dimension-section {
+ margin-bottom: 20px;
+}
+
+.dimension-group {
+ margin-bottom: 30px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.dimension-title {
+ background: linear-gradient(135deg, #e8f4ff 0%, #d1e7ff 100%);
+ padding: 12px 20px;
+ border-radius: 8px;
+ margin-bottom: 20px;
+ border-left: 4px solid #175997;
+
+ h3 {
+ color: #175997;
+ font-size: 20px;
+ font-weight: 600;
+ margin: 0;
+ }
+}
+
.questions-section {
- margin-bottom: 40px;
+ margin-bottom: 10px;
}
.question-item {
- margin-bottom: 35px;
+ margin-bottom: 25px;
padding: 20px;
border-radius: 8px;
border: 1px solid #eaeef2;
@@ -650,6 +922,10 @@
&.has-warning {
border-left: 4px solid #e6a23c;
+ }
+
+ &:last-child {
+ margin-bottom: 0;
}
}
@@ -756,6 +1032,8 @@
.submit-section {
text-align: center;
padding: 20px 0 10px;
+ border-top: 1px solid #eaeef2;
+ margin-top: 20px;
}
.submit-button {
@@ -849,6 +1127,14 @@
padding: 15px;
}
+ .dimension-title {
+ padding: 10px 15px;
+
+ h3 {
+ font-size: 18px;
+ }
+ }
+
.completion-content {
padding: 30px 20px;
}
@@ -874,6 +1160,10 @@
.completion-icon {
font-size: 60px;
}
+
+ .dimension-title h3 {
+ font-size: 16px;
+ }
}
.loading-container {
display: flex;
diff --git a/src/views/patient/physical/index.vue b/src/views/patient/physical/index.vue
index 95ed6d6..fcbfb71 100644
--- a/src/views/patient/physical/index.vue
+++ b/src/views/patient/physical/index.vue
@@ -108,8 +108,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -228,39 +228,45 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
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
- >
- </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
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
+ >
+ </div>
+ </el-tooltip>
</template>
</el-table-column>
<!-- <el-table-column
@@ -786,34 +792,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
- value: 1,
- label: "琛ㄥ崟宸查鍙�",
+ value: null,
+ label: "鍏ㄩ儴",
},
{
- value: 2,
+ value: 1,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
diff --git a/src/views/patient/propaganda/QuestionnaireTask.vue b/src/views/patient/propaganda/QuestionnaireTask.vue
index 80b2bc3..2613017 100644
--- a/src/views/patient/propaganda/QuestionnaireTask.vue
+++ b/src/views/patient/propaganda/QuestionnaireTask.vue
@@ -291,6 +291,83 @@
<!-- <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> -->
</el-form-item>
</div>
+ <div
+ style="
+ margin-bottom: 20px;
+ padding: 8px 12px;
+ background-color: #f0f9ff;
+ border-left: 4px solid #409eff;
+ "
+ >
+ <p
+ style="
+ margin: 0;
+ color: #606266;
+ font-size: 13px;
+ line-height: 1.4;
+ "
+ >
+ <i
+ class="el-icon-info"
+ style="color: #409eff; margin-right: 6px"
+ ></i>
+ 閽堝鍚屼竴鐤剧梾鍦ㄥ绉戝/鐥呭尯涓嬪瓨鍦ㄧ殑鎯呭喌锛屽彲閫夋嫨鎬ч厤缃浐瀹氱瀹�/鐥呭尯
+ </p>
+ </div>
+ <!-- 鏂板锛氱柧鐥呭叧鑱斾笅鐨勭瀹ら厤缃紙鍗曢�夛級 -->
+ <el-row :gutter="20" style="margin-top: 20px">
+ <el-col :span="12">
+ <el-form-item label="鍏宠仈绉戝" prop="diseaseDept">
+ <el-select
+ v-model="diseaseDept"
+ style="width: 100%"
+ clearable
+ filterable
+ placeholder="璇烽�夋嫨绉戝锛堝彲閫夛級"
+ value-key="deptCode"
+ @change="handleDiseaseDeptChange"
+ >
+ <el-option
+ v-for="item in belongDepts"
+ :key="item.deptCode"
+ :label="item.deptName"
+ :value="item"
+ ></el-option>
+ </el-select>
+ <div v-if="diseaseDept" class="selected-info">
+ 宸查�夋嫨: {{ diseaseDept.deptName }} ({{
+ diseaseDept.deptCode
+ }})
+ </div>
+ </el-form-item>
+ </el-col>
+
+ <el-col :span="12">
+ <el-form-item label="鍏宠仈鐥呭尯" prop="diseaseWard">
+ <el-select
+ v-model="diseaseWard"
+ style="width: 100%"
+ clearable
+ filterable
+ placeholder="璇烽�夋嫨鐥呭尯锛堝彲閫夛級"
+ value-key="districtCode"
+ @change="handleDiseaseWardChange"
+ >
+ <el-option
+ v-for="item in belongWards"
+ :key="item.districtCode"
+ :label="item.districtName"
+ :value="item"
+ ></el-option>
+ </el-select>
+ <div v-if="diseaseWard" class="selected-info">
+ 宸查�夋嫨: {{ diseaseWard.districtName }} ({{
+ diseaseWard.districtCode
+ }})
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
</el-row>
<el-row v-if="form.appltype == 4">
<el-col :span="20"
@@ -615,8 +692,8 @@
<!-- 妯℃澘棰勮 -->
<el-dialog title="妯℃澘棰勮" :visible.sync="previewtf" width="70%">
<el-tabs type="border-card">
- <el-tab-pane label="妯℃澘鍩虹鏁版嵁"
- ><div class="preview-left">
+ <el-tab-pane label="妯℃澘鍩虹鏁版嵁">
+ <div class="preview-left">
<el-form :model="objyl" label-width="100px" class="demo-objyl">
<el-row :gutter="10">
<el-col :span="14">
@@ -706,10 +783,11 @@
>
</el-input
></el-form-item>
- </el-form></div
- ></el-tab-pane>
- <el-tab-pane label="闂灞曠ず"
- ><div class="preview-left">
+ </el-form>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="闂灞曠ず">
+ <div class="preview-left">
<div v-for="item in questionList">
<!-- 鍗曢�� -->
<div
@@ -718,7 +796,7 @@
v-if="item.scriptType == 1"
>
<div class="dev-text">
- {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark">
@@ -738,7 +816,7 @@
v-if="item.scriptType == 2"
>
<div class="dev-text">
- {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="item.qremark">
@@ -759,7 +837,7 @@
v-if="item.scriptType == 4"
>
<div class="dev-text">
- {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-input
@@ -770,8 +848,9 @@
</el-input>
</div>
</div>
- </div></div
- ></el-tab-pane>
+ </div>
+ </div>
+ </el-tab-pane>
</el-tabs>
<span slot="footer" class="dialog-footer">
@@ -1022,6 +1101,10 @@
// 鏃堕棿澶勭悊
daytime: [], //鏃ユ湡
applydaytime: [], //璁$畻鏃ユ湡
+ diseaseDept: null, // 鐤剧梾鍏宠仈涓嬬殑绉戝锛堝瓨鍌ㄦ暣涓璞★級
+ diseaseWard: null, // 鐤剧梾鍏宠仈涓嬬殑鐥呭尯锛堝瓨鍌ㄦ暣涓璞★級
+ diseaseDepts: "",
+ diseaseWards: "",
time1: "", //涓婂崍鏃堕棿娈�
time2: "", //涓嬪崍鏃堕棿娈�
time3: "", //鏅氫笂鏃堕棿娈�
@@ -1370,6 +1453,7 @@
this.form.serviceType == 5 ||
this.form.serviceType == 16 ||
this.form.serviceType == 18 ||
+ this.form.serviceType == 19 ||
this.form.serviceType == 4
) {
this.checkboxlist = [
@@ -1418,7 +1502,7 @@
},
// 淇濆瓨
submitForm(formName) {
- console.log(this.submitLoading);
+ console.log(this.submitLoading, "1");
if (this.submitLoading) {
return;
@@ -1437,6 +1521,8 @@
xh: 1,
},
];
+ console.log(1);
+
if (this.form.appltype == 1) {
this.leavehospitaldistrictcodes = [];
this.form.oplevelcode = null;
@@ -1463,6 +1549,7 @@
return;
}
+ console.log(2);
if (
this.deptcodesWards[0] ||
@@ -1482,6 +1569,7 @@
// this.$modal.msgError("璇烽�夋嫨鐥呬汉");
// return;
// }
+ console.log(3);
if (!this.form.templatename && !this.templateor) {
this.$modal.msgError("鏈�夋嫨妯℃澘");
@@ -1515,11 +1603,24 @@
if (!this.form.type) {
this.form.type = this.$route.query.type;
}
+ console.log(4);
this.form.serviceType = this.serviceType;
this.form.deptcode = this.deptcodesWards.join(",");
this.form.leavehospitaldistrictcode =
this.leavehospitaldistrictcodes.join(",");
// this.form.opcode = this.operationcodes.join(",");
+ if (this.form.appltype == 3) {
+ if (this.diseaseDept) {
+ this.form.deptcode = this.diseaseDept.deptCode;
+ this.form.deptname = this.diseaseDept.deptName;
+ }
+
+ if (this.diseaseWard) {
+ this.form.leavehospitaldistrictcode = this.diseaseWard.districtCode;
+ this.form.leavehospitaldistrictname = this.diseaseWard.districtName;
+ }
+ }
+
this.form.icd10code = this.diagglist
.map((item) => item.icdcode)
.join(",");
@@ -1546,7 +1647,15 @@
// 绗洓姝ワ細鏃犺鎴愬姛鎴栧け璐ワ紝鏈�缁堥兘鍏抽棴鍔犺浇鐘舵��
}
},
+ handleDiseaseDeptChange(dept) {
+ // 褰撻�夋嫨绉戝鏃讹紝瀛樺偍鏁翠釜绉戝瀵硅薄
+ this.diseaseDept = dept;
+ },
+ handleDiseaseWardChange(ward) {
+ // 褰撻�夋嫨鐥呭尯鏃讹紝瀛樺偍鏁翠釜鐥呭尯瀵硅薄
+ this.diseaseWard = ward;
+ },
// ----------------------琛ㄦ牸瀛愮粍浠朵簨浠�
// 閫夋嫨棰勮
selectfn(row, type) {
@@ -1566,6 +1675,8 @@
this.tempbelongWards = [];
this.objyl.suitway = this.objyl.suitway.split(",");
this.questionList = res.rows[0].svyTemplateLibScripts;
+ console.log(this.questionList, "this.questionList");
+
this.questionList.forEach((item) => {
item.qremark = [];
});
@@ -1792,6 +1903,7 @@
handleUpdate() {},
handleDelete() {},
handleExport() {},
+
// 閫夋嫨鎮h�呰〃鏁版嵁
handleSelectionChange(selection) {
this.SelectPatientslist = structuredClone(selection);
@@ -2068,12 +2180,17 @@
if (res.code == 200) {
let arr = res.rows;
arr.forEach((item) => {
- getillnesslist({
- icdcode: item.icd10code,
- }).then((res) => {
- item.icdname = res.rows[0].icdname;
+ if (localStorage.getItem("orgname") == "鍗楀崕澶у闄勫睘绗竴鍖婚櫌") {
+ item.icdname = item.icd10name;
this.diagglist.push(item);
- });
+ } else {
+ getillnesslist({
+ icdname: item.icd10name,
+ }).then((res) => {
+ item.icdname = res.rows[0].icdname;
+ this.diagglist.push(item);
+ });
+ }
this.illnesscodes.push(item.icd10code);
});
}
@@ -2354,9 +2471,11 @@
<style lang="scss" scoped>
.Questionnairemanagement {
}
+
.leftvlue-jbxx {
margin-top: 10px;
}
+
.sidecolumn {
width: 100%;
// min-height: 12vh;
@@ -2368,6 +2487,7 @@
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
}
+
.leftvlue {
// display: flex;
// flex: 1;
@@ -2380,8 +2500,10 @@
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
}
+
.examine-jic {
margin: 20px;
+
.headline {
font-size: 24px;
height: 40px;
@@ -2389,6 +2511,7 @@
padding-left: 5px;
margin-bottom: 10px;
display: flex;
+
// justify-content: space-between;
.Add-details {
font-size: 18px;
@@ -2396,25 +2519,30 @@
cursor: pointer;
}
}
+
.jic-value {
font-size: 20px;
border-top: 1px solid #a7abac;
padding: 10px;
margin-bottom: 10px;
+
.details-jic {
padding: 10px 15px;
border: 1px solid #dcdfe6;
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
+
.details-title {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
+
div:nth-child(2) {
color: #02a7f0;
cursor: pointer;
}
}
+
.details-renw {
background: #e4ebfc;
padding: 15px 5px;
@@ -2424,6 +2552,7 @@
}
}
}
+
.xinz-infs {
font-size: 18px;
line-height: 48px;
@@ -2432,6 +2561,7 @@
margin-left: 10px;
}
}
+
// .leftvlue-jbxx {
// margin-bottom: 50px;
// font-size: 20px;
@@ -2454,36 +2584,43 @@
// margin: 20px;
padding: 30px;
background: #ffff;
+
// border: 1px solid #dcdfe6;
// -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
// 0 0 6px 0 rgba(0, 0, 0, 0.04);
.scriptTopic-dev {
margin-bottom: 25px;
font-size: 20px !important;
+
.dev-text {
margin-bottom: 10px;
}
}
}
+
.jic-value {
font-size: 20px;
border-top: 1px solid #a7abac;
padding: 10px;
margin-bottom: 10px;
+
.details-jic {
padding: 10px 15px;
border: 1px solid #dcdfe6;
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
+
.details-title {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
+
div:nth-child(2) {
color: #02a7f0;
cursor: pointer;
}
}
+
.details-renw {
background: #e4ebfc;
padding: 15px 5px;
@@ -2492,6 +2629,7 @@
}
}
}
+
::v-deep .addtopic-input {
input {
background: #02a7f0;
@@ -2499,12 +2637,15 @@
width: 150px;
}
}
+
::v-deep.el-step.is-vertical .el-step__title {
font-size: 25px;
}
+
::v-deep.el-row {
margin-bottom: 10px;
}
+
// ::v-deep.el-input--medium {
// font-size: 24px !important;
// }
@@ -2513,14 +2654,17 @@
position: relative;
width: 700px;
}
+
.el-select__tags {
font-size: 20px;
max-width: 888px !important;
}
+
::v-deep.el-radio__inner {
width: 22px;
height: 22px;
}
+
// ::v-deep.topic-dev.el-radio__label {
// font-size: 24px;
// }
@@ -2529,12 +2673,14 @@
font-size: 18px;
}
}
+
::v-deep.el-input.is-disabled .el-input__inner {
background-color: #f5f7fa;
border-color: #dfe4ed;
color: rgb(253, 66, 66);
cursor: not-allowed;
}
+
::v-deep.el-checkbox-group {
span {
font-size: 18px;
diff --git a/src/views/patient/propaganda/particty.vue b/src/views/patient/propaganda/particty.vue
index 4eae84f..3be475e 100644
--- a/src/views/patient/propaganda/particty.vue
+++ b/src/views/patient/propaganda/particty.vue
@@ -310,6 +310,83 @@
<!-- <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> -->
</el-form-item>
</div>
+ <div
+ style="
+ margin-bottom: 20px;
+ padding: 8px 12px;
+ background-color: #f0f9ff;
+ border-left: 4px solid #409eff;
+ "
+ >
+ <p
+ style="
+ margin: 0;
+ color: #606266;
+ font-size: 13px;
+ line-height: 1.4;
+ "
+ >
+ <i
+ class="el-icon-info"
+ style="color: #409eff; margin-right: 6px"
+ ></i>
+ 閽堝鍚屼竴鐤剧梾鍦ㄥ绉戝/鐥呭尯涓嬪瓨鍦ㄧ殑鎯呭喌锛屽彲閫夋嫨鎬ч厤缃浐瀹氱瀹�/鐥呭尯
+ </p>
+ </div>
+ <!-- 鏂板锛氱柧鐥呭叧鑱斾笅鐨勭瀹ら厤缃紙鍗曢�夛級 -->
+ <el-row :gutter="20" style="margin-top: 20px">
+ <el-col :span="12">
+ <el-form-item label="鍏宠仈绉戝" prop="diseaseDept">
+ <el-select
+ v-model="diseaseDept"
+ style="width: 100%"
+ clearable
+ filterable
+ placeholder="璇烽�夋嫨绉戝锛堝彲閫夛級"
+ value-key="deptCode"
+ @change="handleDiseaseDeptChange"
+ >
+ <el-option
+ v-for="item in belongDepts"
+ :key="item.deptCode"
+ :label="item.deptName"
+ :value="item"
+ ></el-option>
+ </el-select>
+ <div v-if="diseaseDept" class="selected-info">
+ 宸查�夋嫨: {{ diseaseDept.deptName }} ({{
+ diseaseDept.deptCode
+ }})
+ </div>
+ </el-form-item>
+ </el-col>
+
+ <el-col :span="12">
+ <el-form-item label="鍏宠仈鐥呭尯" prop="diseaseWard">
+ <el-select
+ v-model="diseaseWard"
+ style="width: 100%"
+ clearable
+ filterable
+ placeholder="璇烽�夋嫨鐥呭尯锛堝彲閫夛級"
+ value-key="districtCode"
+ @change="handleDiseaseWardChange"
+ >
+ <el-option
+ v-for="item in belongWards"
+ :key="item.districtCode"
+ :label="item.districtName"
+ :value="item"
+ ></el-option>
+ </el-select>
+ <div v-if="diseaseWard" class="selected-info">
+ 宸查�夋嫨: {{ diseaseWard.districtName }} ({{
+ diseaseWard.districtCode
+ }})
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
</el-row>
<el-row v-if="form.appltype == 4">
<el-col :span="20"
@@ -736,7 +813,7 @@
v-if="item.scriptType == 1"
>
<div class="dev-text">
- {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark">
@@ -758,7 +835,7 @@
v-if="item.scriptType == 2"
>
<div class="dev-text">
- {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="qremark">
@@ -781,7 +858,7 @@
v-if="item.scriptType == 4"
>
<div class="dev-text">
- {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-input
@@ -967,6 +1044,8 @@
donorchargeList: [],
baseoperaList: [],
selectedOrder: [],
+ diseaseDept: null, // 鐤剧梾鍏宠仈涓嬬殑绉戝锛堝瓨鍌ㄦ暣涓璞★級
+ diseaseWard: null, // 鐤剧梾鍏宠仈涓嬬殑鐥呭尯锛堝瓨鍌ㄦ暣涓璞★級
usable: [
{ value: "0", label: "鍙敤" },
@@ -1403,6 +1482,7 @@
} else if (
this.form.serviceType == 2 ||
this.form.serviceType == 18 ||
+ this.form.serviceType == 19 ||
this.form.serviceType == 3 ||
this.form.serviceType == 16 ||
this.form.serviceType == 4
@@ -1548,6 +1628,17 @@
if (!this.form.type) {
this.form.type = this.$route.query.type;
}
+ if (this.form.appltype == 3) {
+ if (this.diseaseDept) {
+ this.form.deptcode = this.diseaseDept.deptCode;
+ this.form.deptname = this.diseaseDept.deptName;
+ }
+
+ if (this.diseaseWard) {
+ this.form.leavehospitaldistrictcode = this.diseaseWard.districtCode;
+ this.form.leavehospitaldistrictname = this.diseaseWard.districtName;
+ }
+ }
this.form.serviceType = this.serviceType;
this.form.deptcode = this.deptcodesWards.join(",");
this.form.leavehospitaldistrictcode =
@@ -1579,7 +1670,17 @@
// 绗洓姝ワ細鏃犺鎴愬姛鎴栧け璐ワ紝鏈�缁堥兘鍏抽棴鍔犺浇鐘舵��
}
},
+ handleDiseaseDeptChange(dept) {
+ console.log(dept, "dept");
+ // 褰撻�夋嫨绉戝鏃讹紝瀛樺偍鏁翠釜绉戝瀵硅薄
+ this.diseaseDept = dept;
+ },
+
+ handleDiseaseWardChange(ward) {
+ // 褰撻�夋嫨鐥呭尯鏃讹紝瀛樺偍鏁翠釜鐥呭尯瀵硅薄
+ this.diseaseWard = ward;
+ },
// ----------------------琛ㄦ牸瀛愮粍浠朵簨浠�
// 閫夋嫨棰勮
@@ -2022,7 +2123,7 @@
let arr = res.rows;
arr.forEach((item) => {
getillnesslist({
- icdcode: item.icd10code,
+ icdname: item.icd10name,
}).then((res) => {
item.icdname = res.rows[0].icdname;
this.diagglist.push(item);
diff --git a/src/views/patient/questionnaire/index.vue b/src/views/patient/questionnaire/index.vue
index b26d81d..8217a3b 100644
--- a/src/views/patient/questionnaire/index.vue
+++ b/src/views/patient/questionnaire/index.vue
@@ -108,8 +108,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -213,39 +213,45 @@
prop="sendname"
/>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
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
- >
- </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
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
+ >
+ </div>
+ </el-tooltip>
</template>
</el-table-column>
<!-- <el-table-column
@@ -772,34 +778,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
- value: 1,
- label: "琛ㄥ崟宸查鍙�",
+ value: null,
+ label: "鍏ㄩ儴",
},
{
- value: 2,
+ value: 1,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
diff --git a/src/views/patient/shadow/index.vue b/src/views/patient/shadow/index.vue
index f5f9997..5b30122 100644
--- a/src/views/patient/shadow/index.vue
+++ b/src/views/patient/shadow/index.vue
@@ -108,8 +108,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -213,39 +213,45 @@
prop="sendname"
/>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
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
- >
- </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
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
+ >
+ </div>
+ </el-tooltip>
</template>
</el-table-column>
<!-- <el-table-column
@@ -772,34 +778,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
- value: 1,
- label: "琛ㄥ崟宸查鍙�",
+ value: null,
+ label: "鍏ㄩ儴",
},
{
- value: 2,
+ value: 1,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
diff --git a/src/views/patient/subsequent/index.vue b/src/views/patient/subsequent/index.vue
index f99bcb0..77a468f 100644
--- a/src/views/patient/subsequent/index.vue
+++ b/src/views/patient/subsequent/index.vue
@@ -108,8 +108,8 @@
></el-cascader>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��" prop="status">
- <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
<el-option
v-for="item in topicoptions"
:key="item.value"
@@ -228,39 +228,45 @@
</template>
</el-table-column>
<el-table-column
- label="浠诲姟鐘舵��"
+ label="闅忚鐘舵��"
align="center"
- key="sendstate"
- prop="sendstate"
+ key="sendstateView"
+ prop="sendstateView"
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
- >
- </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
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstateView == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >闅忚涓�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 3">
+ <el-tag type="warning" :disable-transitions="false"
+ >鏈畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 4">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstateView == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鏃犻渶闅忚</el-tag
+ >
+ </div>
+ </el-tooltip>
</template>
</el-table-column>
<!-- <el-table-column
@@ -786,34 +792,30 @@
propss: { multiple: true },
options: [],
- topicoptions: [
+ topicoptions: [
{
- value: 1,
- label: "琛ㄥ崟宸查鍙�",
+ value: null,
+ label: "鍏ㄩ儴",
},
{
- value: 2,
+ value: 1,
label: "寰呴殢璁�",
},
{
+ value: 2,
+ label: "闅忚涓�",
+ },
+ {
value: 3,
- label: "琛ㄥ崟宸插彂閫�",
+ label: "鏈畬鎴�",
},
{
value: 4,
- label: "涓嶆墽琛�",
- },
- {
- value: 5,
- label: "鍙戦�佸け璐�",
- },
- {
- value: 6,
label: "宸插畬鎴�",
},
- {
- value: 7,
- label: "瓒呮椂",
+ {
+ value: 5,
+ label: "鏃犻渶闅忚",
},
],
topicoptionsyj: [
diff --git a/src/views/repositoryai/templateku/configurat/index.vue b/src/views/repositoryai/templateku/configurat/index.vue
index d64c59c..a34f016 100644
--- a/src/views/repositoryai/templateku/configurat/index.vue
+++ b/src/views/repositoryai/templateku/configurat/index.vue
@@ -871,7 +871,7 @@
v-if="item.valueType == 1"
>
<div class="dev-text">
- {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark">
@@ -891,7 +891,7 @@
v-if="item.valueType == 2"
>
<div class="dev-text">
- {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="item.remark">
@@ -1474,7 +1474,7 @@
import { deptTreeSelect } from "@/api/system/user";
export default {
- name: "tpuconfigurat",
+ // name: "tpuconfigurat",
components: { Regular, OptionalForm },
data() {
return {
@@ -1764,12 +1764,10 @@
if (item.deptType == 1) {
console.log(this.deptlist, "11");
this.deptlist.push(item);
- console.log("22");
this.tempDetpRelevanceslist.push(item.deptCode);
} else if (item.deptType == 2) {
this.hosplist.push(item);
this.tempbelongWards.push(item.deptCode);
- console.log("33");
}
});
}
diff --git a/src/views/repositoryai/templateku/configurat/taskub.vue b/src/views/repositoryai/templateku/configurat/taskub.vue
index 7ad9d52..b6098b3 100644
--- a/src/views/repositoryai/templateku/configurat/taskub.vue
+++ b/src/views/repositoryai/templateku/configurat/taskub.vue
@@ -871,7 +871,7 @@
v-if="item.valueType == 1"
>
<div class="dev-text">
- {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark">
@@ -891,7 +891,7 @@
v-if="item.valueType == 2"
>
<div class="dev-text">
- {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="item.remark">
diff --git a/src/views/repositoryai/templateku/index.vue b/src/views/repositoryai/templateku/index.vue
index bc38fb5..32a155a 100644
--- a/src/views/repositoryai/templateku/index.vue
+++ b/src/views/repositoryai/templateku/index.vue
@@ -424,7 +424,7 @@
v-if="item.valueType == 1"
>
<div class="dev-text">
- {{ item.targetid }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+ {{ item.targetid }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-radio-group v-model="item.remark">
@@ -444,7 +444,7 @@
v-if="item.valueType == 2"
>
<div class="dev-text">
- {{ item.targetid }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+ {{ item.targetid }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
</div>
<div class="dev-xx">
<el-checkbox-group v-model="item.remark">
diff --git a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
index 922ff51..b463732 100644
--- a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
@@ -25,6 +25,26 @@
show-summary
:summary-method="getInnerSummaries"
>
+ <el-table-column label="" align="center" width="96" fixed="left">
+ <template slot="header">
+ <div
+ style="
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ "
+ >
+ <el-button
+ type="primary"
+ size="mini"
+ icon="el-icon-download"
+ @click="exportDoctorTable(props.row)"
+ >
+ 瀵煎嚭
+ </el-button>
+ </div>
+ </template>
+ </el-table-column>
<el-table-column label="鍖荤敓濮撳悕" prop="drname" align="center" />
<el-table-column
label="绉戝"
@@ -32,31 +52,82 @@
prop="deptname"
align="center"
/>
- <el-table-column
- label="鍑洪櫌浜烘"
- prop="dischargeCount"
- align="center"
- />
+
<el-table-column
label="鍑洪櫌浜烘"
align="center"
key="dischargeCount"
prop="dischargeCount"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'dischargeCountInfo',
+ '鍑洪櫌鎮h�呭垪琛�',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.dischargeCount
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column
label="鏃犻渶闅忚浜烘"
align="center"
width="100"
key="nonFollowUp"
prop="nonFollowUp"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'nonFollowUpInfo',
+ '鏃犻渶闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.nonFollowUp }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column
label="搴旈殢璁夸汉娆�"
align="center"
width="100"
key="followUpNeeded"
prop="followUpNeeded"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'followUpNeededInfo',
+ '搴旈殢璁垮垪琛�',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.followUpNeeded
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column align="center" label="棣栨鍑洪櫌闅忚">
<el-table-column
@@ -64,25 +135,118 @@
align="center"
key="needFollowUp"
prop="needFollowUp"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'needFollowUpInfo',
+ '闇�闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.needFollowUp
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<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',
+ '寰呴殢璁垮垪琛�',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.pendingFollowUp
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<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',
+ '闅忚鎴愬姛鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.followUpSuccess
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<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',
+ '闅忚澶辫触鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.followUpFail
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎴愬姛鐜�"
+ align="center"
+ width="120"
+ key="successRate"
+ prop="successRate"
+ >
+ <template slot-scope="scope">
+ <span class="success-rate">{{
+ calculateSuccessRate(
+ scope.row.followUpSuccess,
+ scope.row.needFollowUp,
+ scope.row.pendingFollowUp
+ )
+ }}</span>
+ </template>
+ </el-table-column>
<el-table-column
label="闅忚鐜�"
align="center"
@@ -111,26 +275,101 @@
</template>
</el-table-column>
<el-table-column
- v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
label="浜哄伐"
align="center"
key="manual"
prop="manual"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'manualInfo',
+ '浜哄伐闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.manual }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column
- v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="璇煶"
+ align="center"
+ key="voice"
+ prop="voice"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'voiceInfo',
+ '璇煶闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.voice }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
label="鐭俊"
align="center"
key="sms"
prop="sms"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'smsInfo',
+ '鐭俊闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.sms }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column
- v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
label="寰俊"
align="center"
key="weChat"
prop="weChat"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'weChatInfo',
+ '寰俊闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.weChat }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
</el-table-column>
</el-table>
</template>
@@ -138,6 +377,7 @@
<!-- 琛ㄦ牸鍒楀畾涔� -->
<el-table-column
+ v-if="queryParams.statisticaltype == 1"
label="鍑洪櫌鐥呭尯"
align="center"
sortable
@@ -148,6 +388,7 @@
:sort-method="sortChineseNumber"
/>
<el-table-column
+ v-if="queryParams.statisticaltype == 2"
label="绉戝"
align="center"
key="deptname"
@@ -159,21 +400,61 @@
align="center"
key="dischargeCount"
prop="dischargeCount"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'dischargeCountInfo',
+ '鍑洪櫌鎮h�呭垪琛�'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.dischargeCount }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column
label="鏃犻渶闅忚浜烘"
align="center"
width="100"
key="nonFollowUp"
prop="nonFollowUp"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'nonFollowUpInfo', '鏃犻渶闅忚鍒楄〃')
+ "
+ >
+ <span class="button-zx">{{ scope.row.nonFollowUp }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column
label="搴旈殢璁夸汉娆�"
align="center"
width="100"
key="followUpNeeded"
prop="followUpNeeded"
- />
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'followUpNeededInfo', '搴旈殢璁垮垪琛�')
+ "
+ >
+ <span class="button-zx">{{ scope.row.followUpNeeded }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column align="center" label="棣栨鍑洪櫌闅忚">
<el-table-column
@@ -261,6 +542,23 @@
</template>
</el-table-column>
<el-table-column
+ label="鎴愬姛鐜�"
+ align="center"
+ width="120"
+ key="successRate"
+ prop="successRate"
+ >
+ <template slot-scope="scope">
+ <span class="success-rate">{{
+ calculateSuccessRate(
+ scope.row.followUpSuccess,
+ scope.row.needFollowUp,
+ scope.row.pendingFollowUp
+ )
+ }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
label="闅忚鐜�"
align="center"
width="120"
@@ -288,7 +586,7 @@
</template>
</el-table-column>
<el-table-column
- v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
label="浜哄伐"
align="center"
key="manual"
@@ -306,7 +604,32 @@
</el-button>
</template>
</el-table-column>
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鐭俊" align="center" key="sms" prop="sms">
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="璇煶"
+ align="center"
+ key="voice"
+ prop="voice"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'voiceInfo', '璇煶闅忚鍒楄〃')
+ "
+ >
+ <span class="button-zx">{{ scope.row.voice }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="鐭俊"
+ align="center"
+ key="sms"
+ prop="sms"
+ >
<template slot-scope="scope">
<el-button
size="medium"
@@ -318,7 +641,7 @@
</template>
</el-table-column>
<el-table-column
- v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
label="寰俊"
align="center"
key="weChat"
@@ -340,7 +663,9 @@
<!-- 闅忚鎯呭喌鍒楋紙浠呬附姘村競涓尰闄㈡樉绀猴級 -->
<el-table-column
- v-if="orgname == '涓芥按甯備腑鍖婚櫌'"
+ v-if="
+ orgname == '涓芥按甯備腑鍖婚櫌' || orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'
+ "
align="center"
label="闅忚鎯呭喌"
>
@@ -393,6 +718,8 @@
</template>
<script>
+import { getSfStatisticsHyperlink } from "@/api/AiCentre/index";
+
import { getSfStatistics, selectTimelyRate } from "@/api/system/user";
import ExcelJS from "exceljs";
import { saveAs } from "file-saver";
@@ -447,7 +774,7 @@
delete params.leavehospitaldistrictcodes.all;
delete params.deptcodes.all;
-
+ params.rateDay = 7;
getSfStatistics(params)
.then((response) => {
this.tableData = this.customSort(response.data);
@@ -660,6 +987,8 @@
if (!row.doctorStats) {
this.loading = true;
+ params.rateDay = 7;
+
getSfStatistics(params).then((res) => {
this.$set(row, "doctorStats", res.data);
this.expands = [this.getRowKey(row)];
@@ -669,7 +998,23 @@
this.expands = [this.getRowKey(row)];
}
},
+ // 璁$畻鎴愬姛鐜囩殑鏂规硶
+ calculateSuccessRate(followUpSuccess, needFollowUp, pendingFollowUp) {
+ const success = Number(followUpSuccess) || 0;
+ const need = Number(needFollowUp) || 0;
+ const pending = Number(pendingFollowUp) || 0;
+ // 鍒嗘瘝 = 闇�闅忚 - 寰呴殢璁�
+ const denominator = need - pending;
+
+ if (denominator <= 0) {
+ return "0.00%";
+ }
+
+ const rate = (success / denominator) * 100;
+ return rate.toFixed(2) + "%";
+ },
+ // 鍦ㄧ粺璁℃眹鎬绘柟娉曚腑澶勭悊鎴愬姛鐜�
getSummaries(param) {
const { columns, data } = param;
const sums = [];
@@ -679,12 +1024,36 @@
sums[index] = "鍚堣";
return;
}
- if (index === 1 || index === 2) {
+ if (index === 1) {
sums[index] = "/";
return;
}
- if (column.property === "followUpRate" || column.property === "rate") {
+ if (column.property === "successRate") {
+ // 鎴愬姛鐜囬渶瑕侀噸鏂拌绠楁�荤殑鎴愬姛鐜囷紝鑰屼笉鏄钩鍧囧��
+ const totalSuccess = data.reduce((sum, item) => {
+ return sum + (Number(item.followUpSuccess) || 0);
+ }, 0);
+
+ const totalNeed = data.reduce((sum, item) => {
+ return sum + (Number(item.needFollowUp) || 0);
+ }, 0);
+
+ const totalPending = data.reduce((sum, item) => {
+ return sum + (Number(item.pendingFollowUp) || 0);
+ }, 0);
+
+ const denominator = totalNeed - totalPending;
+
+ if (denominator > 0) {
+ sums[index] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+ } else {
+ sums[index] = "0.00%";
+ }
+ } else if (
+ column.property === "followUpRate" ||
+ column.property === "rate"
+ ) {
const percentageValues = data
.map((item) => {
const value = item[column.property];
@@ -741,7 +1110,31 @@
return;
}
- if (column.property === "followUpRate" || column.property === "rate") {
+ if (column.property === "successRate") {
+ // 鎴愬姛鐜囬渶瑕侀噸鏂拌绠楁�荤殑鎴愬姛鐜囷紝鑰屼笉鏄钩鍧囧��
+ const totalSuccess = data.reduce((sum, item) => {
+ return sum + (Number(item.followUpSuccess) || 0);
+ }, 0);
+
+ const totalNeed = data.reduce((sum, item) => {
+ return sum + (Number(item.needFollowUp) || 0);
+ }, 0);
+
+ const totalPending = data.reduce((sum, item) => {
+ return sum + (Number(item.pendingFollowUp) || 0);
+ }, 0);
+
+ const denominator = totalNeed - totalPending;
+
+ if (denominator > 0) {
+ sums[index] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+ } else {
+ sums[index] = "0.00%";
+ }
+ } else if (
+ column.property === "followUpRate" ||
+ column.property === "rate"
+ ) {
const percentageValues = data
.map((item) => {
const value = item[column.property];
@@ -792,17 +1185,17 @@
this.ids = selection.map((item) => item.tagid);
},
- handleViewDetails(row, infoKey, titleSuffix) {
+ handleViewDetails(row, infoKey, titleSuffix, type) {
const title = `${
row.leavehospitaldistrictname || row.deptname
}${titleSuffix}`;
- this.$emit("view-details", row[infoKey], title);
+ this.$emit("view-details", row, infoKey, title, type);
},
handleSeeDetails(row) {
this.$emit("see-details", row);
},
-
+ // 涓昏〃瀵煎嚭
async exportTable() {
try {
let dateRangeString = "";
@@ -856,7 +1249,219 @@
return false;
}
},
+ // 瀛愯〃瀵煎嚭
+ /** 瀵煎嚭鍖荤敓瀛愯〃 */
+ async exportDoctorTable(row) {
+ try {
+ const areaName =
+ row.leavehospitaldistrictname || row.deptname || "鏈煡鐥呭尯";
+ let dateRangeString = "";
+ if (
+ this.queryParams.dateRange &&
+ this.queryParams.dateRange.length === 2
+ ) {
+ const start = this.queryParams.dateRange[0].split(" ")[0];
+ const end = this.queryParams.dateRange[1].split(" ")[0];
+ dateRangeString = `${start}鑷�${end}`;
+ } else {
+ dateRangeString = `${new Date().getMonth() + 1}鏈坄;
+ }
+
+ const fileName = `${areaName}鍖荤敓闅忚鍒楄〃_${dateRangeString}.xlsx`;
+ const sheetName = `${areaName}鍖荤敓闅忚`;
+
+ if (!row.doctorStats || row.doctorStats.length === 0) {
+ this.$message.warning("褰撳墠鐥呭尯鏆傛棤鍖荤敓闅忚鏁版嵁");
+ return;
+ }
+
+ const workbook = new ExcelJS.Workbook();
+ const worksheet = workbook.addWorksheet(sheetName);
+ console.log(111);
+
+ this.buildDoctorExportSheet(worksheet, row.doctorStats, areaName);
+ console.log(222);
+
+ const buffer = await workbook.xlsx.writeBuffer();
+ saveAs(
+ new Blob([buffer], {
+ type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ }),
+ fileName
+ );
+
+ this.$message.success("鍖荤敓闅忚鍒楄〃瀵煎嚭鎴愬姛");
+ } catch (err) {
+ console.error(err);
+ this.$message.error("瀵煎嚭澶辫触");
+ }
+ },
+ buildDoctorExportSheet(worksheet, data, areaName) {
+ const titleStyle = {
+ font: { name: "寰蒋闆呴粦", size: 16, bold: true },
+ alignment: { horizontal: "center", vertical: "middle" },
+ };
+
+ const headerStyle = {
+ font: { name: "寰蒋闆呴粦", size: 11, bold: true },
+ fill: {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFF5F7FA" },
+ },
+ alignment: { horizontal: "center", vertical: "middle", wrapText: true },
+ border: {
+ top: { style: "thin" },
+ left: { style: "thin" },
+ bottom: { style: "thin" },
+ right: { style: "thin" },
+ },
+ };
+
+ const cellStyle = {
+ font: { name: "瀹嬩綋", size: 10 },
+ alignment: { horizontal: "center", vertical: "middle" },
+ border: {
+ top: { style: "thin" },
+ left: { style: "thin" },
+ bottom: { style: "thin" },
+ right: { style: "thin" },
+ },
+ };
+
+ // 鏍囬
+ worksheet.mergeCells(1, 1, 1, 10);
+ worksheet.getCell(1, 1).value = `${areaName}鍖荤敓闅忚鍒楄〃`;
+ worksheet.getCell(1, 1).style = titleStyle;
+ worksheet.getRow(1).height = 30;
+
+ // 琛ㄥご
+ const headers = [
+ "鍖荤敓濮撳悕",
+ "绉戝",
+ "鍑洪櫌浜烘",
+ "鏃犻渶闅忚",
+ "搴旈殢璁�",
+ "闇�闅忚",
+ "寰呴殢璁�",
+ "闅忚鎴愬姛",
+ "闅忚澶辫触",
+ "鎴愬姛鐜�", // 鏂板
+ "闅忚鐜�", // 鍘熸潵鍦ㄦ垚鍔熺巼浣嶇疆
+ ];
+
+ const headerRow = worksheet.addRow(headers);
+ headerRow.eachCell((cell) => {
+ cell.style = headerStyle;
+ });
+ worksheet.getRow(2).height = 25;
+
+ // 鏁版嵁
+ data.forEach((item) => {
+ const row = worksheet.addRow([
+ item.drname,
+ item.deptname,
+ item.dischargeCount,
+ item.nonFollowUp,
+ item.followUpNeeded,
+ item.needFollowUp,
+ item.pendingFollowUp,
+ item.followUpSuccess,
+ item.followUpFail,
+ this.calculateSuccessRate(
+ item.followUpSuccess,
+ item.needFollowUp,
+ item.pendingFollowUp
+ ),
+ item.followUpRate,
+ ]);
+ row.eachCell((cell) => {
+ cell.style = cellStyle;
+ });
+ });
+
+ // 灏忚琛�
+ const summaryRow = worksheet.addRow(this.getDoctorExportSummary(data));
+ summaryRow.eachCell((cell) => {
+ cell.font = { bold: true };
+ cell.fill = {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFF5F7FA" },
+ };
+ });
+
+ // 鍒楀
+ worksheet.columns = [
+ { width: 15 },
+ { width: 15 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 }, // 鎴愬姛鐜�
+ { width: 12 }, // 闅忚鐜�
+ ];
+ },
+ getDoctorExportSummary(data) {
+ const sums = ["灏忚"];
+
+ const keys = [
+ "dischargeCount",
+ "nonFollowUp",
+ "followUpNeeded",
+ "needFollowUp",
+ "pendingFollowUp",
+ "followUpSuccess",
+ "followUpFail",
+ ];
+
+ keys.forEach((key) => {
+ sums.push(data.reduce((t, r) => t + (Number(r[key]) || 0), 0));
+ });
+
+ // 鎴愬姛鐜囷紙骞冲潎鍊硷級
+ const successRates = data
+ .map((item) => {
+ const success = Number(item.followUpSuccess) || 0;
+ const need = Number(item.needFollowUp) || 0;
+ const pending = Number(item.pendingFollowUp) || 0;
+ const denominator = need - pending;
+ if (denominator <= 0) return 0;
+ return success / denominator;
+ })
+ .filter((rate) => !isNaN(rate));
+
+ sums.push(
+ successRates.length
+ ? (
+ (successRates.reduce((a, b) => a + b, 0) / successRates.length) *
+ 100
+ ).toFixed(2) + "%"
+ : "0.00%"
+ );
+
+ // 闅忚鐜囷紙骞冲潎鍊硷級
+ const followUpRates = data
+ .map((i) => this.extractPercentageValue(i.followUpRate))
+ .filter(Boolean);
+
+ sums.push(
+ followUpRates.length
+ ? (
+ (followUpRates.reduce((a, b) => a + b, 0) /
+ followUpRates.length) *
+ 100
+ ).toFixed(2) + "%"
+ : "0.00%"
+ );
+
+ return sums;
+ },
buildExportSheet(worksheet, sheetNameSuffix) {
const titleStyle = {
font: {
@@ -951,11 +1556,13 @@
"寰呴殢璁�",
"闅忚鎴愬姛",
"闅忚澶辫触",
- "闅忚鐜�",
- "鍙婃椂鐜�",
+ "鎴愬姛鐜�", // 鏂板
+ "闅忚鐜�", // 鍘熶綅缃悗绉�
+ "鍙婃椂鐜�", // 鍙婃椂鐜囧悗绉�
"浜哄伐",
- "鐭俊",
- "寰俊",
+ "璇煶", // 淇锛氬簲璇ユ槸璇煶
+ "鐭俊", // 鐭俊
+ "寰俊", // 寰俊
];
secondRowHeaders.forEach((header, index) => {
@@ -978,7 +1585,7 @@
worksheet.getCell(2, 5).value = "鏃犻渶闅忚浜烘";
worksheet.getCell(2, 6).value = "搴旈殢璁夸汉娆�";
- worksheet.mergeCells(2, 7, 2, 15);
+ worksheet.mergeCells(2, 7, 2, 16); // 浠�7鍚堝苟鍒�16锛堝師鏉ユ槸7-15锛�
worksheet.getCell(2, 7).value = "棣栨鍑洪櫌闅忚";
worksheet.getCell(2, 7).style = headerStyle;
@@ -999,15 +1606,21 @@
item.pendingFollowUp || 0,
item.followUpSuccess || 0,
item.followUpFail || 0,
- item.followUpRate || "0%",
- item.rate ? (Number(item.rate) * 100).toFixed(2) + "%" : "0%",
+ // 鎴愬姛鐜� - 闇�瑕佸姩鎬佽绠�
+ this.calculateSuccessRate(
+ item.followUpSuccess,
+ item.needFollowUp,
+ item.pendingFollowUp
+ ),
+ item.followUpRate || "0%", // 闅忚鐜�
+ item.rate ? (Number(item.rate) * 100).toFixed(2) + "%" : "0%", // 鍙婃椂鐜�
item.manual || 0,
- item.sms || 0,
- item.weChat || 0,
+ item.voice || 0, // 璇煶
+ item.sms || 0, // 鐭俊
+ item.weChat || 0, // 寰俊
],
rowIndex + 4
);
-
dataRow.eachCell((cell) => {
cell.style = cellStyle;
});
@@ -1037,11 +1650,13 @@
{ width: 10 },
{ width: 10 },
{ width: 10 },
- { width: 12 },
- { width: 12 },
- { width: 8 },
- { width: 8 },
- { width: 8 },
+ { width: 12 }, // 鎴愬姛鐜�
+ { width: 12 }, // 闅忚鐜�
+ { width: 12 }, // 鍙婃椂鐜�
+ { width: 8 }, // 浜哄伐
+ { width: 8 }, // 璇煶
+ { width: 8 }, // 鐭俊
+ { width: 8 }, // 寰俊
];
},
@@ -1050,18 +1665,20 @@
"鍚堣",
"/",
"/",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- "0%",
- "0%",
- 0,
- 0,
- 0,
+ 0, // 3: dischargeCount
+ 0, // 4: nonFollowUp
+ 0, // 5: followUpNeeded
+ 0, // 6: needFollowUp
+ 0, // 7: pendingFollowUp
+ 0, // 8: followUpSuccess
+ 0, // 9: followUpFail
+ "0%", // 10: 鎴愬姛鐜�
+ "0%", // 11: 闅忚鐜�
+ "0%", // 12: 鍙婃椂鐜�
+ 0, // 13: manual
+ 0, // 14: voice
+ 0, // 15: sms
+ 0, // 16: weChat
];
this.tableData.forEach((item) => {
@@ -1072,42 +1689,51 @@
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[13] += Number(item.manual) || 0;
+ summaries[14] += Number(item.voice) || 0;
+ summaries[15] += Number(item.sms) || 0;
+ summaries[16] += Number(item.weChat) || 0;
});
+ // 鎴愬姛鐜囪绠�
+ const totalSuccess = summaries[8]; // followUpSuccess鐨勬�诲拰
+ const totalNeed = summaries[6]; // needFollowUp鐨勬�诲拰
+ const totalPending = summaries[7]; // pendingFollowUp鐨勬�诲拰
+ const denominator = totalNeed - totalPending;
+
+ if (denominator > 0) {
+ summaries[10] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+ } else {
+ summaries[10] = "0.00%";
+ }
+
+ // 闅忚鐜囪绠�
const followUpRateValues = this.tableData
.map((item) => this.extractPercentageValue(item.followUpRate))
- .filter((value) => value !== null);
-
- const rateValues = this.tableData
- .map((item) => this.extractPercentageValue(item.rate))
.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) + "%";
+ summaries[11] = (avgFollowUpRate * 100).toFixed(2) + "%";
}
+
+ // 鍙婃椂鐜囪绠�
+ const rateValues = this.tableData
+ .map((item) => this.extractPercentageValue(item.rate))
+ .filter((value) => value !== null);
if (rateValues.length > 0) {
const avgRate =
rateValues.reduce((sum, val) => sum + val, 0) / rateValues.length;
- summaries[11] = (avgRate * 100).toFixed(2) + "%";
+ summaries[12] = (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]);
+ // 鏍煎紡鍖栨暟瀛�
+ [3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 16].forEach((index) => {
+ summaries[index] = this.formatNumber(summaries[index]);
+ });
return summaries;
},
diff --git a/src/views/sfstatistics/percentage/components/SecondFollowUp.vue b/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
index 4b03076..c3a6bae 100644
--- a/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
@@ -25,21 +25,329 @@
show-summary
:summary-method="getInnerSummaries"
>
+ <el-table-column label="" align="center" width="96" fixed="right">
+ <template slot="header">
+ <div
+ style="
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ "
+ >
+ <el-button
+ type="primary"
+ size="mini"
+ icon="el-icon-download"
+ @click="exportDoctorTable(props.row)"
+ >
+ 瀵煎嚭
+ </el-button>
+ </div>
+ </template>
+ </el-table-column>
<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" 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"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'dischargeCountInfo',
+ '鍑洪櫌鎮h�呭垪琛�',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.dischargeCount
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鏃犻渶闅忚浜烘"
+ align="center"
+ width="100"
+ key="nonFollowUp"
+ prop="nonFollowUp"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'nonFollowUpInfo',
+ '鏃犻渶闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.nonFollowUp }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="搴旈殢璁夸汉娆�"
+ align="center"
+ width="100"
+ key="followUpNeeded"
+ prop="followUpNeeded"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'followUpNeededInfo',
+ '搴旈殢璁垮垪琛�',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.followUpNeeded
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
- <el-table-column label="闇�闅忚" align="center" key="needFollowUpAgain" prop="needFollowUpAgain" />
- <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUpAgain" prop="pendingFollowUpAgain" />
- <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccessAgain" prop="followUpSuccessAgain" />
- <el-table-column label="闅忚澶辫触" align="center" key="followUpFailAgain" prop="followUpFailAgain" />
- <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRateAgain" prop="followUpRateAgain" />
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="浜哄伐" align="center" key="manualAgain" prop="manualAgain" />
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鐭俊" align="center" key="smsAgain" prop="smsAgain" />
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="寰俊" align="center" key="weChatAgain" prop="weChatAgain" />
+ <el-table-column
+ label="闇�闅忚"
+ align="center"
+ key="needFollowUpAgain"
+ prop="needFollowUpAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'needFollowUpAgainInfo',
+ '闇�闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.needFollowUpAgain
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="寰呴殢璁�"
+ align="center"
+ key="pendingFollowUpAgain"
+ prop="pendingFollowUpAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'pendingFollowUpAgainInfo',
+ '寰呴殢璁垮垪琛�',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.pendingFollowUpAgain
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="闅忚鎴愬姛"
+ align="center"
+ key="followUpSuccessAgain"
+ prop="followUpSuccessAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'followUpSuccessAgainInfo',
+ '闅忚鎴愬姛鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.followUpSuccessAgain
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="闅忚澶辫触"
+ align="center"
+ key="followUpFailAgain"
+ prop="followUpFailAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'followUpFailAgainInfo',
+ '闅忚澶辫触鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.followUpFailAgain
+ }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎴愬姛鐜�"
+ align="center"
+ width="120"
+ key="successRateAgain"
+ prop="successRateAgain"
+ >
+ <template slot-scope="scope">
+ <span class="success-rate">{{
+ calculateSuccessRate(
+ scope.row.followUpSuccessAgain,
+ scope.row.needFollowUpAgain,
+ scope.row.pendingFollowUpAgain
+ )
+ }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="闅忚鐜�"
+ align="center"
+ width="120"
+ key="followUpRateAgain"
+ prop="followUpRateAgain"
+ />
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="浜哄伐"
+ align="center"
+ key="manualAgain"
+ prop="manualAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'manualAgainInfo',
+ '浜哄伐闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.manualAgain }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="璇煶"
+ align="center"
+ key="voiceAgain"
+ prop="voiceAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'voiceAgainInfo',
+ '璇煶闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.voiceAgain }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="鐭俊"
+ align="center"
+ key="smsAgain"
+ prop="smsAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'smsAgainInfo',
+ '鐭俊闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.smsAgain }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="寰俊"
+ align="center"
+ key="weChatAgain"
+ prop="weChatAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'weChatAgainInfo',
+ '寰俊闅忚鍒楄〃',
+ '1'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.weChatAgain }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
</el-table-column>
</el-table>
</template>
@@ -47,6 +355,7 @@
<!-- 琛ㄦ牸鍒楀畾涔� -->
<el-table-column
+ v-if="queryParams.statisticaltype == 1"
label="鍑洪櫌鐥呭尯"
align="center"
sortable
@@ -56,58 +365,276 @@
: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
+ v-if="queryParams.statisticaltype == 2"
+ label="绉戝"
+ align="center"
+ key="deptname"
+ prop="deptname"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鍑洪櫌浜烘"
+ align="center"
+ key="dischargeCount"
+ prop="dischargeCount"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'dischargeCountInfo',
+ '鍑洪櫌鎮h�呭垪琛�'
+ )
+ "
+ >
+ <span class="button-zx">{{ scope.row.dischargeCount }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鏃犻渶闅忚浜烘"
+ align="center"
+ width="100"
+ key="nonFollowUp"
+ prop="nonFollowUp"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'nonFollowUpInfo', '鏃犻渶闅忚鍒楄〃')
+ "
+ >
+ <span class="button-zx">{{ scope.row.nonFollowUp }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="搴旈殢璁夸汉娆�"
+ align="center"
+ width="100"
+ key="followUpNeeded"
+ prop="followUpNeeded"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'followUpNeededInfo', '搴旈殢璁垮垪琛�')
+ "
+ >
+ <span class="button-zx">{{ scope.row.followUpNeeded }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
<el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
- <el-table-column label="闇�闅忚" align="center" key="needFollowUpAgain" prop="needFollowUpAgain">
+ <el-table-column
+ label="闇�闅忚"
+ align="center"
+ key="needFollowUpAgain"
+ prop="needFollowUpAgain"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'needFollowUpAgainInfo', '鍐嶆闅忚闇�闅忚鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'needFollowUpAgainInfo',
+ '鍐嶆闅忚闇�闅忚鍒楄〃'
+ )
+ "
+ >
<span class="button-zx">{{ scope.row.needFollowUpAgain }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUpAgain" prop="pendingFollowUpAgain">
+ <el-table-column
+ label="寰呴殢璁�"
+ align="center"
+ key="pendingFollowUpAgain"
+ prop="pendingFollowUpAgain"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'pendingFollowUpAgainInfo', '鍐嶆闅忚寰呴殢璁垮垪琛�')">
- <span class="button-zx">{{ scope.row.pendingFollowUpAgain }}</span>
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'pendingFollowUpAgainInfo',
+ '鍐嶆闅忚寰呴殢璁垮垪琛�'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.pendingFollowUpAgain
+ }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccessAgain" prop="followUpSuccessAgain">
+ <el-table-column
+ label="闅忚鎴愬姛"
+ align="center"
+ key="followUpSuccessAgain"
+ prop="followUpSuccessAgain"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'followUpSuccessAgainInfo', '鍐嶆闅忚闅忚鎴愬姛鍒楄〃')">
- <span class="button-zx">{{ scope.row.followUpSuccessAgain }}</span>
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'followUpSuccessAgainInfo',
+ '鍐嶆闅忚闅忚鎴愬姛鍒楄〃'
+ )
+ "
+ >
+ <span class="button-zx">{{
+ scope.row.followUpSuccessAgain
+ }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="闅忚澶辫触" align="center" key="followUpFailAgain" prop="followUpFailAgain">
+ <el-table-column
+ label="闅忚澶辫触"
+ align="center"
+ key="followUpFailAgain"
+ prop="followUpFailAgain"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'followUpFailAgainInfo', '鍐嶆闅忚闅忚澶辫触鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'followUpFailAgainInfo',
+ '鍐嶆闅忚闅忚澶辫触鍒楄〃'
+ )
+ "
+ >
<span class="button-zx">{{ scope.row.followUpFailAgain }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRateAgain" prop="followUpRateAgain" />
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="浜哄伐" align="center" key="manualAgain" prop="manualAgain">
+ <el-table-column
+ label="鎴愬姛鐜�"
+ align="center"
+ width="120"
+ key="successRateAgain"
+ prop="successRateAgain"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'manualAgainInfo', '鍐嶆闅忚浜哄伐闅忚鍒楄〃')">
+ <span class="success-rate">{{
+ calculateSuccessRate(
+ scope.row.followUpSuccessAgain,
+ scope.row.needFollowUpAgain,
+ scope.row.pendingFollowUpAgain
+ )
+ }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="闅忚鐜�"
+ align="center"
+ width="120"
+ key="followUpRateAgain"
+ prop="followUpRateAgain"
+ />
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="浜哄伐"
+ align="center"
+ key="manualAgain"
+ prop="manualAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'manualAgainInfo',
+ '鍐嶆闅忚浜哄伐闅忚鍒楄〃'
+ )
+ "
+ >
<span class="button-zx">{{ scope.row.manualAgain }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鐭俊" align="center" key="smsAgain" prop="smsAgain">
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="璇煶"
+ align="center"
+ key="voiceAgain"
+ prop="voiceAgain"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'smsAgainInfo', '鍐嶆闅忚鐭俊闅忚鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(scope.row, 'voiceAgainInfo', '璇煶闅忚鍒楄〃')
+ "
+ >
+ <span class="button-zx">{{ scope.row.voiceAgain }}</span>
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="鐭俊"
+ align="center"
+ key="smsAgain"
+ prop="smsAgain"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'smsAgainInfo',
+ '鍐嶆闅忚鐭俊闅忚鍒楄〃'
+ )
+ "
+ >
<span class="button-zx">{{ scope.row.smsAgain }}</span>
</el-button>
</template>
</el-table-column>
- <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="寰俊" align="center" key="weChatAgain" prop="weChatAgain">
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="寰俊"
+ align="center"
+ key="weChatAgain"
+ prop="weChatAgain"
+ >
<template slot-scope="scope">
- <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'weChatAgainInfo', '鍐嶆闅忚寰俊闅忚鍒楄〃')">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ handleViewDetails(
+ scope.row,
+ 'weChatAgainInfo',
+ '鍐嶆闅忚寰俊闅忚鍒楄〃'
+ )
+ "
+ >
<span class="button-zx">{{ scope.row.weChatAgain }}</span>
</el-button>
</template>
@@ -124,163 +651,251 @@
import { saveAs } from "file-saver";
export default {
- name: 'SecondFollowUp',
+ name: "SecondFollowUp",
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: [],
+ };
},
methods: {
loadData() {
- this.loading = true
+ this.loading = true;
const params = {
...this.queryParams,
visitCount: 2,
- 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;
+ params.rateDay = 7;
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 = {
@@ -290,222 +905,521 @@
: this.queryParams.deptcodes,
leavehospitaldistrictcodes: [row.leavehospitaldistrictcode],
drcode: "1",
- visitCount: 2
- }
+ visitCount: 2,
+ };
- 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;
+ params.rateDay = 7;
+
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
+ if (index === 1) {
+ sums[index] = "/";
+ return;
}
- if (column.property === "followUpRateAgain") {
+ if (column.property === "successRateAgain") {
+ // 鎴愬姛鐜囬渶瑕侀噸鏂拌绠楁�荤殑鎴愬姛鐜囷紝鑰屼笉鏄钩鍧囧��
+ const totalSuccess = data.reduce((sum, item) => {
+ return sum + (Number(item.followUpSuccessAgain) || 0);
+ }, 0);
+
+ const totalNeed = data.reduce((sum, item) => {
+ return sum + (Number(item.needFollowUpAgain) || 0);
+ }, 0);
+
+ const totalPending = data.reduce((sum, item) => {
+ return sum + (Number(item.pendingFollowUpAgain) || 0);
+ }, 0);
+
+ const denominator = totalNeed - totalPending;
+
+ if (denominator > 0) {
+ sums[index] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+ } else {
+ sums[index] = "0.00%";
+ }
+ } else if (column.property === "followUpRateAgain") {
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 === "followUpRateAgain") {
+ if (column.property === "successRateAgain") {
+ // 鎴愬姛鐜囬渶瑕侀噸鏂拌绠楁�荤殑鎴愬姛鐜囷紝鑰屼笉鏄钩鍧囧��
+ const totalSuccess = data.reduce((sum, item) => {
+ return sum + (Number(item.followUpSuccessAgain) || 0);
+ }, 0);
+
+ const totalNeed = data.reduce((sum, item) => {
+ return sum + (Number(item.needFollowUpAgain) || 0);
+ }, 0);
+
+ const totalPending = data.reduce((sum, item) => {
+ return sum + (Number(item.pendingFollowUpAgain) || 0);
+ }, 0);
+
+ const denominator = totalNeed - totalPending;
+
+ if (denominator > 0) {
+ sums[index] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+ } else {
+ sums[index] = "0.00%";
+ }
+ } else if (column.property === "followUpRateAgain") {
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)
+ handleViewDetails(row, infoKey, titleSuffix, type) {
+ const title = `${
+ row.leavehospitaldistrictname || row.deptname
+ }${titleSuffix}`;
+ this.$emit("view-details", row, infoKey, title, type);
},
+ // 璁$畻鎴愬姛鐜囩殑鏂规硶
+ calculateSuccessRate(followUpSuccess, needFollowUp, pendingFollowUp) {
+ const success = Number(followUpSuccess) || 0;
+ const need = Number(needFollowUp) || 0;
+ const pending = Number(pendingFollowUp) || 0;
+ // 鍒嗘瘝 = 闇�闅忚 - 寰呴殢璁�
+ const denominator = need - pending;
+
+ if (denominator <= 0) {
+ return "0.00%";
+ }
+
+ const rate = (success / denominator) * 100;
+ return rate.toFixed(2) + "%";
+ },
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;
}
},
+ /** 瀵煎嚭鍖荤敓瀛愯〃锛堝啀娆¢殢璁匡級 */
+ async exportDoctorTable(row) {
+ try {
+ const areaName =
+ row.leavehospitaldistrictname || row.deptname || "鏈煡鐥呭尯";
- buildExportSheet(worksheet, sheetNameSuffix) {
- const titleStyle = {
- 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" } }
+ let dateRangeString = "";
+ if (
+ this.queryParams.dateRange &&
+ this.queryParams.dateRange.length === 2
+ ) {
+ const start = this.queryParams.dateRange[0].split(" ")[0];
+ const end = this.queryParams.dateRange[1].split(" ")[0];
+ dateRangeString = `${start}鑷�${end}`;
+ } else {
+ dateRangeString = `${new Date().getMonth() + 1}鏈坄;
}
+
+ const fileName = `${areaName}鍖荤敓鍐嶆闅忚鍒楄〃_${dateRangeString}.xlsx`;
+ const sheetName = `${areaName}鍖荤敓鍐嶆闅忚`;
+
+ if (!row.doctorStats || row.doctorStats.length === 0) {
+ this.$message.warning("褰撳墠鐥呭尯鏆傛棤鍖荤敓鍐嶆闅忚鏁版嵁");
+ return;
+ }
+
+ const workbook = new ExcelJS.Workbook();
+ const worksheet = workbook.addWorksheet(sheetName);
+
+ this.buildDoctorExportSheet(worksheet, row.doctorStats, areaName);
+
+ const buffer = await workbook.xlsx.writeBuffer();
+ saveAs(
+ new Blob([buffer], {
+ type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ }),
+ fileName
+ );
+
+ this.$message.success("鍖荤敓鍐嶆闅忚鍒楄〃瀵煎嚭鎴愬姛");
+ } catch (err) {
+ console.error(err);
+ this.$message.error("瀵煎嚭澶辫触");
}
+ },
+ buildDoctorExportSheet(worksheet, data, areaName) {
+ const titleStyle = {
+ font: { name: "寰蒋闆呴粦", size: 16, bold: true },
+ alignment: { horizontal: "center", vertical: "middle" },
+ };
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 },
+ fill: {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFF5F7FA" },
+ },
+ alignment: { horizontal: "center", vertical: "middle", wrapText: true },
+ border: {
+ top: { style: "thin" },
+ left: { style: "thin" },
+ bottom: { style: "thin" },
+ right: { style: "thin" },
+ },
+ };
+
+ const cellStyle = {
+ font: { name: "瀹嬩綋", size: 10 },
+ alignment: { horizontal: "center", vertical: "middle" },
+ border: {
+ top: { style: "thin" },
+ left: { style: "thin" },
+ bottom: { style: "thin" },
+ right: { style: "thin" },
+ },
+ };
+
+ // 鏍囬
+ worksheet.mergeCells(1, 1, 1, 10);
+ worksheet.getCell(1, 1).value = `${areaName}鍖荤敓鍐嶆闅忚鍒楄〃`;
+ worksheet.getCell(1, 1).style = titleStyle;
+ worksheet.getRow(1).height = 30;
+
+ // 琛ㄥご
+ const headers = [
+ "鍖荤敓濮撳悕",
+ "绉戝",
+ "鍑洪櫌浜烘",
+ "鏃犻渶闅忚",
+ "搴旈殢璁�",
+ "闇�闅忚",
+ "寰呴殢璁�",
+ "闅忚鎴愬姛",
+ "闅忚澶辫触",
+ "鎴愬姛鐜�", // 鏂板
+ "闅忚鐜�", // 鍘熸潵鍦ㄦ垚鍔熺巼浣嶇疆
+ ];
+
+ const headerRow = worksheet.addRow(headers);
+ headerRow.eachCell((cell) => {
+ cell.style = headerStyle;
+ });
+ worksheet.getRow(2).height = 25;
+
+ // 鏁版嵁
+ data.forEach((item) => {
+ const row = worksheet.addRow([
+ item.drname,
+ item.deptname,
+ item.dischargeCount,
+ item.nonFollowUp,
+ item.followUpNeeded,
+ item.needFollowUpAgain,
+ item.pendingFollowUpAgain,
+ item.followUpSuccessAgain,
+ item.followUpFailAgain,
+ this.calculateSuccessRate(
+ item.followUpSuccessAgain,
+ item.needFollowUpAgain,
+ item.pendingFollowUpAgain
+ ),
+ item.followUpRateAgain,
+ ]);
+ row.eachCell((cell) => {
+ cell.style = cellStyle;
+ });
+ });
+
+ // 灏忚琛�
+ const summaryRow = worksheet.addRow(
+ this.getDoctorAgainExportSummary(data)
+ );
+ summaryRow.eachCell((cell) => {
+ cell.font = { bold: true };
+ cell.fill = {
+ type: "pattern",
+ pattern: "solid",
+ fgColor: { argb: "FFF5F7FA" },
+ };
+ });
+
+ // 鍒楀
+ worksheet.columns = [
+ { width: 15 },
+ { width: 15 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 },
+ { width: 12 }, // 鎴愬姛鐜�
+ { width: 12 }, // 闅忚鐜�
+ ];
+ },
+ /** 鍐嶆闅忚 - 鍖荤敓瀛愯〃瀵煎嚭灏忚 */
+ getDoctorAgainExportSummary(data) {
+ const sums = ["灏忚"];
+
+ const keys = [
+ "dischargeCount",
+ "nonFollowUp",
+ "followUpNeeded",
+ "needFollowUpAgain",
+ "pendingFollowUpAgain",
+ "followUpSuccessAgain",
+ "followUpFailAgain",
+ ];
+
+ keys.forEach((key) => {
+ sums.push(data.reduce((t, r) => t + (Number(r[key]) || 0), 0));
+ });
+
+ // 鎴愬姛鐜囷紙骞冲潎鍊硷級
+ const successRates = data
+ .map((item) => {
+ const success = Number(item.followUpSuccessAgain) || 0;
+ const need = Number(item.needFollowUpAgain) || 0;
+ const pending = Number(item.pendingFollowUpAgain) || 0;
+ const denominator = need - pending;
+ if (denominator <= 0) return 0;
+ return success / denominator;
+ })
+ .filter((rate) => !isNaN(rate));
+
+ sums.push(
+ successRates.length
+ ? (
+ (successRates.reduce((a, b) => a + b, 0) / successRates.length) *
+ 100
+ ).toFixed(2) + "%"
+ : "0.00%"
+ );
+
+ // 闅忚鐜囷紙骞冲潎鍊硷級
+ const followUpRates = data
+ .map((i) => this.extractPercentageValue(i.followUpRateAgain))
+ .filter(Boolean);
+
+ sums.push(
+ followUpRates.length
+ ? (
+ (followUpRates.reduce((a, b) => a + b, 0) /
+ followUpRates.length) *
+ 100
+ ).toFixed(2) + "%"
+ : "0.00%"
+ );
+
+ return sums;
+ },
+ buildExportSheet(worksheet, sheetNameSuffix) {
+ const titleStyle = {
+ 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" },
+ },
+ 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" } },
+ },
+ };
const cellStyle = {
font: { name: "瀹嬩綋", size: 10, color: { argb: "FF000000" } },
@@ -514,156 +1428,232 @@
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, 15)
- const titleCell = worksheet.getCell(1, 1)
- titleCell.value = `鍐嶆鍑洪櫌闅忚缁熻琛╛${sheetNameSuffix}`
- titleCell.style = titleStyle
- worksheet.getRow(1).height = 35
+ worksheet.mergeCells(1, 1, 1, 15);
+ 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, 14)
- worksheet.getCell(2, 7).value = "鍐嶆鍑洪櫌闅忚"
- worksheet.getCell(2, 7).style = headerStyle
+ // 娉ㄦ剰锛氱敱浜庡鍔犱簡鎴愬姛鐜囧垪锛屽悎骞跺垪鏁拌澧炲姞
+ worksheet.mergeCells(2, 7, 2, 16); // 浠�7鍚堝苟鍒�16锛堝師鏉ユ槸7-14锛�
+ 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.needFollowUpAgain || 0,
- item.pendingFollowUpAgain || 0,
- item.followUpSuccessAgain || 0,
- item.followUpFailAgain || 0,
- item.followUpRateAgain || "0%",
- item.manualAgain || 0,
- item.smsAgain || 0,
- item.weChatAgain || 0
- ], rowIndex + 4)
+ const dataRow = worksheet.addRow(
+ [
+ "",
+ item.leavehospitaldistrictname || "",
+ item.deptname || "",
+ item.dischargeCount || 0,
+ item.nonFollowUp || 0,
+ item.followUpNeeded || 0,
+ item.needFollowUpAgain || 0,
+ item.pendingFollowUpAgain || 0,
+ item.followUpSuccessAgain || 0,
+ item.followUpFailAgain || 0,
+ // 鎴愬姛鐜� - 闇�瑕佸姩鎬佽绠�
+ this.calculateSuccessRate(
+ item.followUpSuccessAgain,
+ item.needFollowUpAgain,
+ item.pendingFollowUpAgain
+ ),
+ item.followUpRateAgain || "0%", // 闅忚鐜�
+ item.manualAgain || 0,
+ item.voiceAgain || 0,
+ item.smsAgain || 0,
+ item.weChatAgain || 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: 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 }, // 鐭俊
+ { width: 8 }, // 寰俊
+ ];
},
getExportSummaries() {
- const summaries = ["鍚堣", "/", "/", 0, 0, 0, 0, 0, 0, 0, "0%", 0, 0, 0]
+ const summaries = [
+ "鍚堣",
+ "/",
+ "/",
+ 0, // 3: dischargeCount
+ 0, // 4: nonFollowUp
+ 0, // 5: followUpNeeded
+ 0, // 6: needFollowUpAgain
+ 0, // 7: pendingFollowUpAgain
+ 0, // 8: followUpSuccessAgain
+ 0, // 9: followUpFailAgain
+ "0%", // 10: 鎴愬姛鐜�
+ "0%", // 11: 闅忚鐜�
+ 0, // 12: manualAgain
+ 0, // 13: voiceAgain
+ 0, // 14: smsAgain
+ 0, // 15: weChatAgain
+ ];
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.needFollowUpAgain) || 0
- summaries[7] += Number(item.pendingFollowUpAgain) || 0
- summaries[8] += Number(item.followUpSuccessAgain) || 0
- summaries[9] += Number(item.followUpFailAgain) || 0
- summaries[11] += Number(item.manualAgain) || 0
- summaries[12] += Number(item.smsAgain) || 0
- summaries[13] += Number(item.weChatAgain) || 0
- })
+ summaries[3] += Number(item.dischargeCount) || 0;
+ summaries[4] += Number(item.nonFollowUp) || 0;
+ summaries[5] += Number(item.followUpNeeded) || 0;
+ summaries[6] += Number(item.needFollowUpAgain) || 0;
+ summaries[7] += Number(item.pendingFollowUpAgain) || 0;
+ summaries[8] += Number(item.followUpSuccessAgain) || 0;
+ summaries[9] += Number(item.followUpFailAgain) || 0;
+ summaries[12] += Number(item.manualAgain) || 0;
+ summaries[13] += Number(item.voiceAgain) || 0;
+ summaries[14] += Number(item.smsAgain) || 0;
+ summaries[15] += Number(item.weChatAgain) || 0;
+ });
- const followUpRateAgainValues = this.tableData
- .map((item) => this.extractPercentageValue(item.followUpRateAgain))
- .filter((value) => value !== null)
+ // 鎴愬姛鐜囪绠�
+ const totalSuccess = summaries[8]; // followUpSuccessAgain鐨勬�诲拰
+ const totalNeed = summaries[6]; // needFollowUpAgain鐨勬�诲拰
+ const totalPending = summaries[7]; // pendingFollowUpAgain鐨勬�诲拰
+ const denominator = totalNeed - totalPending;
- if (followUpRateAgainValues.length > 0) {
- const avgFollowUpRateAgain = followUpRateAgainValues.reduce((sum, val) => sum + val, 0) / followUpRateAgainValues.length
- summaries[10] = (avgFollowUpRateAgain * 100).toFixed(2) + "%"
+ if (denominator > 0) {
+ summaries[10] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+ } else {
+ summaries[10] = "0.00%";
}
- 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[11] = this.formatNumber(summaries[11])
- summaries[12] = this.formatNumber(summaries[12])
- summaries[13] = this.formatNumber(summaries[13])
+ // 闅忚鐜囪绠�
+ const followUpRateAgainValues = this.tableData
+ .map((item) => this.extractPercentageValue(item.followUpRateAgain))
+ .filter((value) => value !== null);
- return summaries
+ if (followUpRateAgainValues.length > 0) {
+ const avgFollowUpRateAgain =
+ followUpRateAgainValues.reduce((sum, val) => sum + val, 0) /
+ followUpRateAgainValues.length;
+ summaries[11] = (avgFollowUpRateAgain * 100).toFixed(2) + "%";
+ }
+
+ // 鏍煎紡鍖栨暟瀛�
+ [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15].forEach((index) => {
+ summaries[index] = this.formatNumber(summaries[index]);
+ });
+
+ 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;
+ },
+ },
+};
</script>
<style lang="scss" scoped>
diff --git a/src/views/sfstatistics/percentage/index copy.vue b/src/views/sfstatistics/percentage/index copy.vue
index d025fa2..15f46c8 100644
--- a/src/views/sfstatistics/percentage/index copy.vue
+++ b/src/views/sfstatistics/percentage/index copy.vue
@@ -220,7 +220,7 @@
</el-table-column>
<!-- 闅忚鎯呭喌鍒楋紙浠呬附姘村競涓尰闄㈡樉绀猴級 -->
- <el-table-column v-if="orgname == '涓芥按甯備腑鍖婚櫌'" align="center" label="闅忚鎯呭喌">
+ <el-table-column v-if="orgname == '涓芥按甯備腑鍖婚櫌'||orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'" align="center" label="闅忚鎯呭喌">
<el-table-column label="姝e父璇煶" align="center" width="100" key="taskSituation1"
prop="taskSituation1">
</el-table-column><el-table-column label="鎮h�呮嫆鎺ユ垨鎷掕" align="center" width="100" key="taskSituation2"
diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index b82a720..dd731d8 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -2,10 +2,25 @@
<div class="follow-up-statistics">
<!-- 鎼滅储琛ㄥ崟鍖哄煙 -->
<div class="search-section">
- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
<el-form-item label="缁熻绫诲瀷" prop="userName">
- <el-select v-model="queryParams.statisticaltype" placeholder="璇烽�夋嫨缁熻绫诲瀷">
- <el-option v-for="item in Statisticallist" :key="item.value" :label="item.label" :value="item.value" />
+ <el-select
+ v-model="queryParams.statisticaltype"
+ placeholder="璇烽�夋嫨缁熻绫诲瀷"
+ >
+ <el-option
+ v-for="item in Statisticallist"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
</el-select>
<el-select
style="margin-left: 10px"
@@ -16,7 +31,12 @@
filterable
placeholder="璇烽�夋嫨鐥呭尯"
>
- <el-option v-for="item in flatArrayhospit" :key="item.value" :label="item.label" :value="item.value" />
+ <el-option
+ v-for="item in flatArrayhospit"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
</el-select>
<el-select
v-else-if="queryParams.statisticaltype == 2"
@@ -26,13 +46,27 @@
filterable
placeholder="璇烽�夋嫨绉戝"
>
- <el-option v-for="item in flatArraydept" :key="item.value" :label="item.label" :value="item.value" />
+ <el-option
+ v-for="item in flatArraydept"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
</el-select>
</el-form-item>
<el-form-item label="鏈嶅姟绫诲瀷" prop="userName">
- <el-select v-model="queryParams.serviceType" multiple placeholder="璇烽�夋嫨">
- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+ <el-select
+ v-model="queryParams.serviceType"
+ multiple
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
</el-select>
</el-form-item>
@@ -49,12 +83,34 @@
</el-form-item>
<el-form-item>
- <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button>
- <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleQuery"
+ >鎼滅储</el-button
+ >
+ <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+ >閲嶇疆</el-button
+ >
</el-form-item>
- <el-button type="warning" plain icon="el-icon-download" size="medium" @click="handleExport">瀵煎嚭</el-button>
- <el-button type="primary" plain icon="el-icon-data-line" size="medium" @click="showChartDialog">缁熻瓒嬪娍鍥�</el-button>
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="medium"
+ @click="handleExport"
+ >瀵煎嚭</el-button
+ >
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-data-line"
+ size="medium"
+ @click="showChartDialog"
+ >缁熻瓒嬪娍鍥�</el-button
+ >
</el-form>
</div>
@@ -86,7 +142,11 @@
/>
</el-tab-pane>
- <el-tab-pane label="寤剁画鎶ょ悊缁熻" name="continued" v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'">
+ <el-tab-pane
+ label="寤剁画鎶ょ悊缁熻"
+ name="continued"
+ v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'"
+ >
<ContinuedCare
ref="continuedCare"
:query-params="queryParams"
@@ -132,39 +192,40 @@
</template>
<script>
-import FirstFollowUp from './components/FirstFollowUp.vue'
-import SecondFollowUp from './components/SecondFollowUp.vue'
-import ContinuedCare from './components/ContinuedCare.vue'
-import ChartDialog from './components/ChartDialog.vue'
-import DetailDialog from './components/DetailDialog.vue'
-import TimelyRateDialog from './components/TimelyRateDialog.vue'
+import FirstFollowUp from "./components/FirstFollowUp.vue";
+import SecondFollowUp from "./components/SecondFollowUp.vue";
+import ContinuedCare from "./components/ContinuedCare.vue";
+import ChartDialog from "./components/ChartDialog.vue";
+import DetailDialog from "./components/DetailDialog.vue";
+import TimelyRateDialog from "./components/TimelyRateDialog.vue";
+import { getSfStatisticsHyperlink } from "@/api/AiCentre/index";
export default {
- name: 'FollowUpStatistics',
+ name: "FollowUpStatistics",
components: {
FirstFollowUp,
SecondFollowUp,
ContinuedCare,
ChartDialog,
DetailDialog,
- TimelyRateDialog
+ TimelyRateDialog,
},
data() {
return {
- activeTab: 'first',
- orgname: localStorage.getItem('orgname') || '',
+ activeTab: "first",
+ orgname: localStorage.getItem("orgname") || "",
Statisticallist: [
- { label: '鐥呭尯缁熻', value: 1 },
- { label: '绉戝缁熻', value: 2 }
+ { label: "鐥呭尯缁熻", value: 1 },
+ { label: "绉戝缁熻", value: 2 },
],
options: this.$store.getters.tasktypes,
queryParams: {
serviceType: [2],
dateRange: [],
statisticaltype: 1,
- leavehospitaldistrictcodes: ['all'],
- deptcodes: []
+ leavehospitaldistrictcodes: ["all"],
+ deptcodes: [],
},
flatArrayhospit: [],
flatArraydept: [],
@@ -177,21 +238,21 @@
chartData: [],
infotitleVisible: false,
SeedetailsVisible: false,
- searchName: '',
- infotitle: '',
+ searchName: "",
+ infotitle: "",
infotitlelist: [],
patienttotal: 0,
logsheetlist: [],
Seedloading: false,
patientqueryParams: {
pageNum: 1,
- pageSize: 10
- }
- }
+ pageSize: 10,
+ },
+ };
},
created() {
- this.getDeptTree()
- this.loadCurrentTabData()
+ this.getDeptTree();
+ this.loadCurrentTabData();
},
methods: {
getDeptTree() {
@@ -199,146 +260,174 @@
this.flatArraydept = this.$store.getters.belongDepts.map((dept) => {
return {
label: dept.deptName,
- value: dept.deptCode
- }
- })
- this.allDeptCodes = this.$store.getters.belongDepts.map((dept) => dept.deptCode)
+ value: dept.deptCode,
+ };
+ });
+ this.allDeptCodes = this.$store.getters.belongDepts.map(
+ (dept) => dept.deptCode
+ );
// 鐥呭尯鍒楄〃
this.flatArrayhospit = this.$store.getters.belongWards.map((ward) => {
return {
label: ward.districtName,
- value: ward.districtCode
- }
- })
- this.allWardCodes = this.$store.getters.belongWards.map((ward) => ward.districtCode)
+ value: ward.districtCode,
+ };
+ });
+ this.allWardCodes = this.$store.getters.belongWards.map(
+ (ward) => ward.districtCode
+ );
- this.flatArraydept.push({ label: '鍏ㄩ儴', value: 'all' })
- this.flatArrayhospit.push({ label: '鍏ㄩ儴', value: 'all' })
+ this.flatArraydept.push({ label: "鍏ㄩ儴", value: "all" });
+ this.flatArrayhospit.push({ label: "鍏ㄩ儴", value: "all" });
},
handleTabClick(tab) {
- this.activeTab = tab.name
- this.loadCurrentTabData()
+ this.activeTab = tab.name;
+ this.loadCurrentTabData();
},
loadCurrentTabData() {
switch (this.activeTab) {
- case 'first':
- this.$refs.firstFollowUp.loadData()
- break
- case 'second':
- this.$refs.secondFollowUp.loadData()
- break
- case 'continued':
- this.$refs.continuedCare.loadData()
- break
+ case "first":
+ this.$refs.firstFollowUp.loadData();
+ break;
+ case "second":
+ this.$refs.secondFollowUp.loadData();
+ break;
+ case "continued":
+ this.$refs.continuedCare.loadData();
+ break;
}
},
handleQuery() {
- this.queryParams.startTime = this.parseTime(this.queryParams.dateRange[0])
- this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1])
+ this.queryParams.startTime = this.parseTime(
+ this.queryParams.dateRange[0]
+ );
+ this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1]);
if (this.queryParams.statisticaltype == 1) {
- this.queryParams.deptcodes = []
+ this.queryParams.deptcodes = [];
} else if (this.queryParams.statisticaltype == 2) {
- this.queryParams.leavehospitaldistrictcodes = []
+ this.queryParams.leavehospitaldistrictcodes = [];
}
- this.loadCurrentTabData()
+ this.loadCurrentTabData();
},
resetQuery() {
- this.queryParams.dateRange = []
- this.queryParams.leavehospitaldistrictcodes = []
- this.handleQuery()
+ this.queryParams.dateRange = [];
+ this.queryParams.leavehospitaldistrictcodes = [];
+ this.handleQuery();
},
async handleExport() {
switch (this.activeTab) {
- case 'first':
- await this.$refs.firstFollowUp.exportTable()
- break
- case 'second':
- await this.$refs.secondFollowUp.exportTable()
- break
- case 'continued':
- await this.$refs.continuedCare.exportTable()
- break
+ case "first":
+ await this.$refs.firstFollowUp.exportTable();
+ break;
+ case "second":
+ await this.$refs.secondFollowUp.exportTable();
+ break;
+ case "continued":
+ await this.$refs.continuedCare.exportTable();
+ break;
}
},
showChartDialog() {
- this.chartData = this.getCurrentTabData()
- this.chartDialogVisible = true
+ this.chartData = this.getCurrentTabData();
+ this.chartDialogVisible = true;
},
getCurrentTabData() {
switch (this.activeTab) {
- case 'first':
- return this.$refs.firstFollowUp.tableData
- case 'second':
- return this.$refs.secondFollowUp.tableData
- case 'continued':
- return this.$refs.continuedCare.tableData
+ case "first":
+ return this.$refs.firstFollowUp.tableData;
+ case "second":
+ return this.$refs.secondFollowUp.tableData;
+ case "continued":
+ return this.$refs.continuedCare.tableData;
default:
- return []
+ return [];
}
},
- viewDetails(row, title) {
- this.infotitle = title
- this.infotitlelist = row
- this.infotitleVisible = true
+ viewDetails(row, infoKey, title, type) {
+ this.infotitle = title;
+
+ let obj = {
+ hyperLinkInfoType: infoKey,
+ leavehospitaldistrictcodes: this.queryParams.leavehospitaldistrictcodes,
+ serviceType: this.queryParams.serviceType,
+ };
+ if (type == 1) {
+ obj.drcode = row.drcode;
+ }
+ if (this.queryParams.statisticaltype == 1) {
+ obj.leavehospitaldistrictcodes = [row.leavehospitaldistrictcode];
+ obj.deptcodes = [];
+ } else {
+ obj.deptcodes = [row.deptcode];
+ obj.leavehospitaldistrictcodes = [];
+ }
+
+ getSfStatisticsHyperlink(obj).then((response) => {
+ this.infotitlelist = response.data;
+ });
+
+ this.infotitleVisible = true;
},
Seedetails(row) {
- this.SeedetailsVisible = true
- this.Seedloading = true
+ this.SeedetailsVisible = true;
+ this.Seedloading = true;
- this.$refs.firstFollowUp.selectTimelyRate(row, this.queryParams)
- .then(response => {
- this.logsheetlist = response.data.detail
- this.patienttotal = response.data.total
- this.Seedloading = false
- })
+ this.$refs.firstFollowUp
+ .selectTimelyRate(row, this.queryParams)
+ .then((response) => {
+ this.logsheetlist = response.data.detail;
+ this.patienttotal = response.data.total;
+ this.Seedloading = false;
+ });
},
Seedetailstion() {
console.log(this.patientqueryParams);
- this.$refs.firstFollowUp.selectTimelyRates(this.patientqueryParams)
- .then(response => {
- this.logsheetlist = response.data.detail
- this.patienttotal = response.data.total
- })
+ this.$refs.firstFollowUp
+ .selectTimelyRates(this.patientqueryParams)
+ .then((response) => {
+ this.logsheetlist = response.data.detail;
+ this.patienttotal = response.data.total;
+ });
},
SeedetailsgGo(row) {
- this.SeedetailsVisible = false
- let type = ''
- if (row.preachformson && row.preachformson.includes('3')) {
- type = 1
+ this.SeedetailsVisible = false;
+ let type = "";
+ if (row.preachformson && row.preachformson.includes("3")) {
+ type = 1;
}
setTimeout(() => {
this.$router.push({
- path: '/followvisit/record/detailpage/',
+ path: "/followvisit/record/detailpage/",
query: {
taskid: row.taskid,
patid: row.patid,
id: row.id,
- Voicetype: type
- }
- })
- }, 300)
+ Voicetype: type,
+ },
+ });
+ }, 300);
},
handleSearch() {
// 鎼滅储閫昏緫
- }
- }
-}
+ },
+ },
+};
</script>
<style lang="scss" scoped>
diff --git a/src/views/sfstatistics/percentage/satisfaction.vue b/src/views/sfstatistics/percentage/satisfaction.vue
index be3d69b..3858b3b 100644
--- a/src/views/sfstatistics/percentage/satisfaction.vue
+++ b/src/views/sfstatistics/percentage/satisfaction.vue
@@ -186,6 +186,7 @@
</template> -->
</el-table-column>
<el-table-column
+ v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'"
label="鍙婃椂鐜�"
align="center"
key="rate"
@@ -613,6 +614,8 @@
idds: "", //鍒嗙被id
// 鎬绘潯鏁�
total: 0,
+ orgname: "",
+
flatArrayhospit: [],
flatArraydept: [],
patienttotal: 0,
@@ -748,6 +751,8 @@
},
watch: {},
created() {
+ this.orgname = localStorage.getItem("orgname");
+
this.getDeptTree();
this.getList();
},
diff --git a/vue.config.js b/vue.config.js
index 2f448b9..252f723 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -37,13 +37,13 @@
[process.env.VUE_APP_BASE_API]: {
// target: `https://www.health-y.cn/lssf`,
// target: `http://192.168.100.10:8096`,
- // target: `http://192.168.100.10:8094`,//鐪佺珛鍚屽痉
+ target: `http://192.168.100.10:8094`,//鐪佺珛鍚屽痉
// target: `http://192.168.100.10:8095`,//鏂板崕
// target: `http://192.168.100.10:8098`,//甯備竴
- target:`http://localhost:8095`,
+ // target:`http://localhost:8095`,
// target:`http://35z1t16164.qicp.vip`,
// target: `http://192.168.100.172:8095`,
- // target: `http://192.168.100.10:8083`,//鍗楀崕
+ // target: `http://192.168.100.10:8089`,//鍗楀崕
// target: `http://192.168.191.181:8095`,
changeOrigin: true,
pathRewrite: {
diff --git "a/\351\232\217\350\256\277\351\200\232\347\224\250.zip" "b/\351\232\217\350\256\277\351\200\232\347\224\250.zip"
new file mode 100644
index 0000000..3135270
--- /dev/null
+++ "b/\351\232\217\350\256\277\351\200\232\347\224\250.zip"
Binary files differ
--
Gitblit v1.9.3