From d3c60e18b95b50751f8088fa2d23cd8ff7f173bc Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期三, 01 七月 2026 11:05:17 +0800
Subject: [PATCH] 测试完成
---
src/views/repositoryai/verbaltrick/index.vue | 2
src/views/sfstatistics/percentage/components/SecondFollowUp.vue | 302 ++++---
vue.config.js | 4
src/components/Assistant/index.vue | 402 +++++++++
src/api/smartor/smstemplet.js | 6
src/views/knowledge/questionbank/index.vue | 2
src/views/sfstatistics/percentage/components/FirstFollowUp.vue | 298 ++++---
随访通用 (2).zip | 0
/dev/null | 0
src/views/knowledge/questionnaire/smsConfig/index.vue | 1015 +++++++-----------------
src/views/followvisit/HistoricalFollow/index.vue | 42
随访通用.zip | 0
src/views/followvisit/record/detailpage/index.vue | 11
src/views/repositoryai/verbaltrick/particulars/index.vue | 65
src/views/knowledge/questionbank/particulars/index.vue | 1
src/views/followvisit/record/detailpage/MergeAndModify.vue | 8
外链.zip | 0
src/views/repositoryai/intention/index.vue | 2
src/views/followvisit/discharge/index.vue | 166 +++
src/views/outsideChainwtnew.vue | 78 +
20 files changed, 1,333 insertions(+), 1,071 deletions(-)
diff --git "a/dist \0502\051.zip" "b/dist \0502\051.zip"
deleted file mode 100644
index db4bc7e..0000000
--- "a/dist \0502\051.zip"
+++ /dev/null
Binary files differ
diff --git a/dist.zip b/dist.zip
deleted file mode 100644
index b42bd7e..0000000
--- a/dist.zip
+++ /dev/null
Binary files differ
diff --git a/src/api/smartor/smstemplet.js b/src/api/smartor/smstemplet.js
index 9fce27f..b761845 100644
--- a/src/api/smartor/smstemplet.js
+++ b/src/api/smartor/smstemplet.js
@@ -4,8 +4,8 @@
export function listSmstemplet(query) {
return request({
url: '/smartor/smstemplet/list',
- method: 'get',
- params: query
+ method: 'post',
+ data: query
})
}
@@ -20,7 +20,7 @@
// 鏂板鐭俊妯℃澘
export function addSmstemplet(data) {
return request({
- url: '/smartor/smstemplet',
+ url: '/smartor/smstemplet/add',
method: 'post',
data: data
})
diff --git a/src/components/Assistant/index.vue b/src/components/Assistant/index.vue
index e7c16a4..51d7c7b 100644
--- a/src/components/Assistant/index.vue
+++ b/src/components/Assistant/index.vue
@@ -175,29 +175,99 @@
<el-dialog
title="鐭俊鍙戦��"
:visible.sync="smsDialogVisible"
- width="500px"
+ width="800px"
:close-on-click-modal="false"
append-to-body
>
<el-form ref="smsForm" :model="smsForm" label-width="100px">
<el-form-item label="鎮h�呭悕绉�">
- <el-input v-model="smsForm.sendname" readonly></el-input>
+ <el-input v-model="smsForm.sendname"></el-input>
</el-form-item>
<el-form-item label="骞撮緞">
- <el-input v-model="smsForm.age" readonly></el-input>
+ <el-input v-model="smsForm.age"></el-input>
</el-form-item>
<el-form-item label="鐢佃瘽">
- <el-input v-model="smsForm.telcode" readonly></el-input>
+ <el-input v-model="smsForm.telcode"></el-input>
</el-form-item>
<el-form-item label="绉戝">
- <el-input v-model="smsForm.deptname" readonly></el-input>
+ <el-input v-model="smsForm.deptname"></el-input>
</el-form-item>
<el-form-item label="鐥呭尯">
- <el-input
- v-model="smsForm.leavehospitaldistrictname"
- readonly
- ></el-input>
+ <el-input v-model="smsForm.leavehospitaldistrictname"></el-input>
</el-form-item>
+ <!-- 鐭俊鍙戦�佸璇濇 - 妯℃澘閫夋嫨鍖哄煙锛堝寮虹増锛� -->
+ <el-form-item label="閫夋嫨妯℃澘">
+ <el-row :gutter="10">
+ <el-col :span="7">
+ <el-select
+ v-model="templateFilterDept"
+ placeholder="鎸夌瀹�"
+ filterable
+ clearable
+ style="width: 100%"
+ @change="filterTemplates"
+ >
+ <el-option
+ v-for="dept in departmentOptions"
+ :key="dept.value"
+ :label="dept.label"
+ :value="dept.value"
+ />
+ </el-select>
+ </el-col>
+ <el-col :span="7">
+ <el-select
+ v-model="templateFilterWard"
+ placeholder="鎸夌梾鍖�"
+ filterable
+ clearable
+ style="width: 100%"
+ @change="filterTemplates"
+ >
+ <el-option
+ v-for="ward in wardOptions"
+ :key="ward.value"
+ :label="ward.label"
+ :value="ward.value"
+ />
+ </el-select>
+ </el-col>
+ <el-col :span="10">
+ <el-select
+ v-model="selectedTemplateId"
+ placeholder="璇烽�夋嫨鐭俊妯℃澘"
+ filterable
+ clearable
+ style="width: 100%"
+ @change="handleTemplateSelect"
+ >
+ <el-option
+ v-for="tmpl in filteredTemplateOptions"
+ :key="tmpl.templetid"
+ :label="`銆�${tmpl.templetno}銆�${tmpl.templetname}`"
+ :value="tmpl.templetid"
+ >
+ <span style="float: left">{{ tmpl.templetname }}</span>
+ <span style="float: right; color: #909399; font-size: 12px">
+ {{ tmpl.deptName || "閫氱敤" }} /
+ {{ tmpl.wardName || "鍏ㄩ儴" }}
+ </span>
+ </el-option>
+ </el-select>
+ </el-col>
+ <el-col :span="6">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ @click="openQuickCreateTemplate"
+ >
+ 鏂板缓
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form-item>
+
<el-form-item label="鐭俊鍐呭">
<el-input
type="textarea"
@@ -215,13 +285,109 @@
纭鍙戦��
</el-button>
</div>
+ <!-- 鍐呭祵锛氬揩閫熸柊寤烘ā鏉垮璇濇 -->
+ <!-- 蹇�熸柊寤烘ā鏉垮璇濇锛堝寮虹増锛� -->
+ <el-dialog
+ title="鏂板缓鐭俊妯℃澘"
+ :visible.sync="quickCreateVisible"
+ width="500px"
+ append-to-body
+ :close-on-click-modal="false"
+ >
+ <el-form
+ :model="quickTemplateForm"
+ :rules="quickTemplateRules"
+ ref="quickTemplateForm"
+ label-width="90px"
+ >
+ <el-form-item label="妯℃澘缂栧彿" prop="templetno">
+ <el-input
+ v-model="quickTemplateForm.templetno"
+ placeholder="璇疯緭鍏ユā鏉跨紪鍙�"
+ />
+ </el-form-item>
+ <el-form-item label="妯℃澘鍚嶇О" prop="templetname">
+ <el-input
+ v-model="quickTemplateForm.templetname"
+ placeholder="璇疯緭鍏ユā鏉垮悕绉�"
+ />
+ </el-form-item>
+ <el-form-item label="鎵�灞炵瀹�">
+ <el-select
+ v-model="quickTemplateForm.deptCode"
+ placeholder="璇烽�夋嫨绉戝"
+ filterable
+ clearable
+ style="width: 100%"
+ @change="
+ (val) => {
+ const dept = departmentOptions.find((d) => d.value === val);
+ quickTemplateForm.deptName = dept ? dept.label : '';
+ }
+ "
+ >
+ <el-option
+ v-for="dept in departmentOptions"
+ :key="dept.value"
+ :label="dept.label"
+ :value="dept.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎵�灞炵梾鍖�">
+ <el-select
+ v-model="quickTemplateForm.wardCode"
+ placeholder="璇烽�夋嫨鐥呭尯"
+ filterable
+ clearable
+ style="width: 100%"
+ >
+ <el-option
+ v-for="ward in wardOptions"
+ :key="ward.value"
+ :label="ward.label"
+ :value="ward.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="妯℃澘鍐呭" prop="templetcontent">
+ <el-input
+ v-model="quickTemplateForm.templetcontent"
+ type="textarea"
+ :rows="4"
+ placeholder="璇疯緭鍏ョ煭淇℃ā鏉垮唴瀹�"
+ maxlength="500"
+ show-word-limit
+ />
+ </el-form-item>
+ </el-form>
+ <div slot="footer">
+ <el-button @click="quickCreateVisible = false">鍙� 娑�</el-button>
+ <el-button
+ type="primary"
+ @click="submitQuickTemplate"
+ :loading="quickCreateLoading"
+ >
+ 淇濆瓨骞朵娇鐢�
+ </el-button>
+ </div>
+ </el-dialog>
</el-dialog>
</div>
</template>
<script>
-import { getCurrentUserServiceSubtaskCount } from "@/api/AiCentre/index";
-import { sendMsg } from "@/api/AiCentre/index";
+import {
+ getCurrentUserServiceSubtaskCount,
+ sendMsg,
+} from "@/api/AiCentre/index";
+import {
+ listSmstemplet,
+ getSmstemplet,
+ addSmstemplet,
+ updateSmstemplet,
+ delSmstemplet,
+} from "@/api/smartor/smstemplet";
export default {
name: "FloatBall",
@@ -269,6 +435,34 @@
hideTimer: null,
updateTime: "",
roles: null,
+ templateOptions: [], // 妯℃澘涓嬫媺鍒楄〃
+ selectedTemplateId: "", // 閫変腑鐨勬ā鏉縄D
+ templateLoading: false, // 妯℃澘鍒楄〃鍔犺浇鐘舵��
+ // 妯℃澘绛涢��
+ templateFilterDept: "",
+ templateFilterWard: "", // 鏂板锛氱梾鍖虹瓫閫�
+ filteredTemplateOptions: [],
+
+ // 绉戝閫夐」锛堜粠 Vuex 鑾峰彇锛�
+ departmentOptions: [],
+ // 鏂板锛氱梾鍖洪�夐」锛堜粠 Vuex 鑾峰彇锛�
+ wardOptions: [],
+ // 蹇�熸柊寤烘ā鏉�
+ quickCreateVisible: false,
+ quickCreateLoading: false,
+ quickTemplateForm: {
+ templetno: "",
+ templetname: "",
+ templetcontent: "",
+ },
+ quickTemplateRules: {
+ templetname: [
+ { required: true, message: "璇疯緭鍏ユā鏉垮悕绉�", trigger: "blur" },
+ ],
+ templetcontent: [
+ { required: true, message: "璇疯緭鍏ユā鏉垮唴瀹�", trigger: "blur" },
+ ],
+ },
// 鐭俊鍙戦�佸璇濇
// smsDialogVisible: false,
smsLoading: false, // 鉁� 鏂板鍔犺浇鐘舵��
@@ -367,19 +561,25 @@
},
watch: {
// 鉁� 鐩戝惉 Vuex 瀵硅瘽妗嗙姸鎬�
- "$store.state.sms.smsDialogVisible"(val) {
- if (val) {
- const patientData = this.$store.state.sms.patientData;
- this.smsForm = { ...patientData };
- this.smsContent = this.$store.state.sms.smsTemplate || "";
+ "$store.state.sms.smsDialogVisible": {
+ handler(val) {
+ if (val) {
+ const patientData = this.$store.state.sms.patientData;
+ this.smsForm = { ...patientData };
+ this.smsContent = this.$store.state.sms.smsTemplate || "";
- // 灞曞紑鎮诞鐞�
- if (!this.isExpanded) {
- this.isExpanded = true;
- this.isHidden = false;
- clearTimeout(this.hideTimer);
+ // 灞曞紑鎮诞鐞�
+ if (!this.isExpanded) {
+ this.isExpanded = true;
+ this.isHidden = false;
+ clearTimeout(this.hideTimer);
+ }
+
+ // 鈽呪槄鈽� 鍏抽敭淇锛氬湪杩欓噷鍒濆鍖栨ā鏉跨浉鍏虫暟鎹� 鈽呪槄鈽�
+ this.initTemplateData();
}
- }
+ },
+ immediate: false,
},
},
mounted() {
@@ -404,6 +604,33 @@
},
methods: {
+ initTemplateData() {
+ // 鍒濆鍖栫瀹ら�夐」
+ if (this.$store.getters.belongDepts) {
+ this.departmentOptions = this.$store.getters.belongDepts.map(
+ (dept) => ({
+ label: dept.deptName,
+ value: dept.deptCode,
+ })
+ );
+ }
+
+ // 鈽呪槄鈽� 鏂板锛氬垵濮嬪寲鐥呭尯閫夐」 鈽呪槄鈽�
+ if (this.$store.getters.belongWards) {
+ this.wardOptions = this.$store.getters.belongWards.map((ward) => ({
+ label: ward.districtName,
+ value: ward.districtCode,
+ }));
+ }
+
+ // 閲嶇疆绛涢��
+ this.templateFilterDept = "";
+ this.templateFilterWard = ""; // 鏂板
+ this.selectedTemplateId = "";
+
+ // 鍔犺浇妯℃澘鍒楄〃
+ this.loadTemplates();
+ },
toggleExpand() {
this.isExpanded = !this.isExpanded;
if (this.isExpanded) {
@@ -412,7 +639,85 @@
this.updateStats();
}
},
+ async loadTemplates() {
+ this.templateLoading = true;
+ try {
+ // const { listSmstemplet } = await import("@/api/smartor/smstemplet");
+ const res = await listSmstemplet({ pageNum: 1, pageSize: 999 });
+ this.templateOptions = res.rows || [];
+ this.filterTemplates(); // 搴旂敤绛涢��
+ } catch (error) {
+ console.error("鍔犺浇鐭俊妯℃澘澶辫触:", error);
+ this.templateOptions = [];
+ this.filteredTemplateOptions = [];
+ } finally {
+ this.templateLoading = false;
+ }
+ },
+ handleTemplateSelect(templateId) {
+ if (!templateId) {
+ this.smsContent = "";
+ return;
+ }
+ const selected = this.templateOptions.find(
+ (t) => t.templetid === templateId
+ );
+ if (selected) {
+ this.smsContent = selected.templetcontent || "";
+ }
+ },
+ openQuickCreateTemplate() {
+ this.quickTemplateForm = {
+ templetno: "",
+ templetname: "",
+ templetcontent: "",
+ };
+ this.quickCreateVisible = true;
+ this.$nextTick(() => {
+ if (this.$refs.quickTemplateForm) {
+ this.$refs.quickTemplateForm.clearValidate();
+ }
+ });
+ },
+ /**
+ * 鎻愪氦蹇�熸柊寤烘ā鏉�
+ */
+ async submitQuickTemplate() {
+ this.$refs.quickTemplateForm.validate(async (valid) => {
+ if (!valid) return;
+ this.quickCreateLoading = true;
+ try {
+ // const { addSmstemplet } = await import("@/api/smartor/smstemplet");
+ const res = await addSmstemplet(this.quickTemplateForm);
+
+ if (res.code === 200) {
+ this.$modal.msgSuccess("妯℃澘鍒涘缓鎴愬姛");
+
+ // 鍒锋柊妯℃澘鍒楄〃
+ await this.loadTemplates();
+
+ // 鑷姩閫変腑鍒氬垱寤虹殑妯℃澘
+ const newTmpl = this.templateOptions.find(
+ (t) => t.templetname === this.quickTemplateForm.templetname
+ );
+ if (newTmpl) {
+ this.selectedTemplateId = newTmpl.templetid;
+ this.smsContent = newTmpl.templetcontent;
+ }
+
+ this.quickCreateVisible = false;
+ } else {
+ this.$modal.msgError(res.msg || "鍒涘缓澶辫触");
+ }
+ } catch (error) {
+ console.error("鍒涘缓妯℃澘澶辫触:", error);
+ this.$modal.msgError("鍒涘缓澶辫触锛岃绋嶅悗閲嶈瘯");
+ } finally {
+ this.quickCreateLoading = false;
+ }
+ });
+ },
handleMouseEnter() {
this.isHovering = true;
if (this.autoHide) {
@@ -542,18 +847,54 @@
}
},
// 鎵撳紑鐭俊鍙戦�佸璇濇
- openSmsDialog() {
- // 浠庢偓娴悆鍐呴儴鎵撳紑鏃讹紝娓呯┖琛ㄥ崟锛堝洜涓烘病鏈夐�変腑鎮h�咃級
+ /**
+ * 鏀归�犲師鏈夌殑 openSmsDialog 鏂规硶
+ */
+ openSmsDialog(patientData = {}) {
+ // 閲嶇疆绛涢��
+ this.templateFilterDept = "";
+
+ // 閲嶇疆閫夋嫨
+ this.selectedTemplateId = "";
+ this.smsContent = patientData.smsTemplate || "";
+
+ // 鍔犺浇妯℃澘鍒楄〃
+ this.loadTemplates();
+
+ // 鎵撳紑瀵硅瘽妗嗭紙閫氳繃 Vuex锛�
this.$store.dispatch("sms/openSmsDialog", {
- name: "",
- age: "",
- phone: "",
- deptName: "",
- wardName: "",
- smsTemplate: "",
+ name: patientData.name || "",
+ age: patientData.age || "",
+ phone: patientData.phone || "",
+ deptName: patientData.deptName || "",
+ wardName: patientData.wardName || "",
+ smsTemplate: patientData.smsTemplate || "",
});
},
+ // 鏂板锛氱瓫閫夋ā鏉�
+ filterTemplates() {
+ let filtered = [...this.templateOptions];
+ // 鎸夌瀹ょ瓫閫�
+ if (this.templateFilterDept) {
+ filtered = filtered.filter(
+ (tmpl) => tmpl.deptCode === this.templateFilterDept || !tmpl.deptCode
+ );
+ }
+
+ // 鈽呪槄鈽� 鏂板锛氭寜鐥呭尯绛涢�� 鈽呪槄鈽�
+ if (this.templateFilterWard) {
+ filtered = filtered.filter(
+ (tmpl) => tmpl.wardCode === this.templateFilterWard || !tmpl.wardCode
+ );
+ }
+
+ this.filteredTemplateOptions = filtered;
+
+ // 娓呯┖宸查��
+ this.selectedTemplateId = "";
+ this.smsContent = "";
+ },
// 鍙戦�佺煭淇�
async sendSms() {
if (!this.smsContent.trim()) {
@@ -586,6 +927,7 @@
this.$modal.msgError("鍙戦�佸け璐ワ紝璇风◢鍚庨噸璇�");
} finally {
this.smsLoading = false;
+ this.selectedTemplateId = "";
}
},
async updateStats() {
diff --git a/src/views/followvisit/HistoricalFollow/index.vue b/src/views/followvisit/HistoricalFollow/index.vue
index 28b3354..ae8f453 100644
--- a/src/views/followvisit/HistoricalFollow/index.vue
+++ b/src/views/followvisit/HistoricalFollow/index.vue
@@ -10,7 +10,7 @@
size="small"
:inline="true"
v-show="showSearch"
- label-width="98px"
+ label-width="110px"
>
<el-form-item label="浠诲姟鍚嶇О">
<el-input
@@ -30,6 +30,18 @@
v-model="topqueryParams.leavediagname"
placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
></el-input>
+ </el-form-item>
+ <el-form-item label="鍑洪櫌鏃堕棿鑼冨洿" required>
+ <el-date-picker
+ type="daterange"
+ v-model="TimeRange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ value-format="yyyy-MM-dd"
+ placeholder="閫夋嫨鏃堕棿鑼冨洿"
+ >
+ </el-date-picker>
</el-form-item>
<el-form-item label="闅忚鐘舵��" prop="status">
<el-cascader
@@ -101,11 +113,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
@@ -121,7 +133,7 @@
width="120"
>
<template slot-scope="scope">
- <el-tooltip
+ <el-tooltip
class="item"
effect="dark"
:content="scope.row.remark"
@@ -296,7 +308,7 @@
prop="templatename"
width="200"
/>
- <el-table-column
+ <el-table-column
label="浠诲姟鐘舵��"
align="center"
key="sendstate"
@@ -513,7 +525,7 @@
historservelist,
buidegetTasklist,
query360PatInfo,
- query360PatInfonh
+ query360PatInfonh,
} from "@/api/AiCentre/index";
import Treeselect from "@riophae/vue-treeselect";
import store from "@/store";
@@ -550,8 +562,8 @@
deptName: undefined,
// 榛樿瀵嗙爜
initPassword: undefined,
- // 鏃ユ湡鑼冨洿
- dateRange: [],
+
+ TimeRange: [],
// 宀椾綅閫夐」
postOptions: [],
ruleForm: {
@@ -661,7 +673,7 @@
children: [{ value: 4, label: "涓嶆墽琛�" }],
},
],
- cardlist: [
+ cardlist: [
{
name: "鎮h�呮湇鍔℃�婚噺",
value: 0,
@@ -1000,8 +1012,8 @@
store.getters.belongWards.map((obj) => obj.districtCode);
}
this.topqueryParams.pageNum = 1;
- this.topqueryParams.startOutHospTime = this.dateRange[0];
- this.topqueryParams.endOutHospTime = this.dateRange[1];
+ this.topqueryParams.startOutHospTime = this.TimeRange[0];
+ this.topqueryParams.endOutHospTime = this.TimeRange[1];
this.getList(refresh);
},
@@ -1057,7 +1069,7 @@
},
/** 閲嶇疆鎸夐挳鎿嶄綔 */
resetQuery() {
- this.dateRange = [];
+ this.TimeRange = [];
this.topqueryParams = {
pageNum: 1,
pageSize: 10,
diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue
index 8725d92..0ed1b45 100644
--- a/src/views/followvisit/discharge/index.vue
+++ b/src/views/followvisit/discharge/index.vue
@@ -243,12 +243,27 @@
</div>
</el-col>
</el-row>
+ <div class="selected-info">
+ 宸查�変腑
+ <span style="color: #409eff; font-weight: bold">{{
+ getSelectedCount()
+ }}</span>
+ 鏉℃暟鎹�
+ <el-button
+ v-if="getSelectedCount() > 0"
+ type="text"
+ @click="clearAllSelection"
+ >
+ 娓呴櫎閫変腑
+ </el-button>
+ </div>
<el-table
v-loading="loading"
ref="userform"
:data="userList"
:row-class-name="tableRowClassName"
@selection-change="handleSelectionChange"
+ @select-all="handleSelectAll"
>
<el-table-column type="selection" width="50" align="center" />
<el-table-column
@@ -1103,6 +1118,7 @@
inputValue: "",
preachform: "",
previewVisible: false, //褰卞儚闅忚棰勮寮规
+ isRestoring: false,
radio: "",
radios: [],
previewtype: 2, //棰勮褰卞儚闅忚绫诲瀷
@@ -1110,6 +1126,8 @@
// 婊℃剰搴﹁皟鏌ユ暟鎹�
scoreDialogVisible: false,
selectedRows: [],
+ selectedRowMap: new Map(), // key: row.id, value: row 鏁版嵁
+
// 绾ц仈閫夋嫨鍣ㄧ粦瀹氬��
serviceStatusValue: 10,
cascaderProps: {
@@ -1435,7 +1453,7 @@
},
methods: {
/** 鏌ヨ闅忚鏈嶅姟鍒楄〃 */
- getList(refresh) {
+ async getList(refresh) {
// 榛樿鍏ㄩ儴
if (this.topqueryParams.searchscope == 3) {
this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
@@ -1448,16 +1466,17 @@
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]
@@ -1466,18 +1485,33 @@
} else {
this.topqueryParams.deptOrDistrict = 1;
}
+
if (!this.followupAuthority()) {
this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+ this.loading = false;
return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
}
- getTaskservelist(this.topqueryParams).then((response) => {
+ try {
+ const response = await getTaskservelist(this.topqueryParams);
+
+ // 鉁� 绗竴姝ワ細鍏堥攣瀹氭仮澶嶇姸鎬�
+ this.isRestoring = true;
+
+ // 鉁� 绗簩姝ワ細鍐嶆洿鏂版暟鎹紙杩欎細瑙﹀彂 selection-change锛屼絾琚攣浣忎簡锛�
this.userList = response.rows[0].serviceSubtaskList;
this.total = response.total;
+
+ // 鉁� 绗笁姝ワ細鎭㈠閫変腑鐘舵��
+ // this.restoreSelection();
+ this.$nextTick(() => {
+ this.restoreSelection();
+ });
+
+ // 鉁� 绗洓姝ワ細澶勭悊鍏朵粬鏁版嵁
if (refresh) {
this.cardlist[0].value =
Number(response.rows[0].wxsf) + Number(response.rows[0].xsf) || 0;
- // this.cardlist[1].value = response.rows[0].wzx;
this.cardlist[1].value = response.rows[0].wxsf || 0;
this.ycvalue = Number(response.rows[0].yc) || 0;
this.jgvalue = response.rows[0].jg;
@@ -1486,7 +1520,8 @@
this.cardlist[4].value = response.rows[0].ywc || 0;
this.yfsvalue = response.rows[0].yfs;
}
- this.loading = false;
+
+ // 鉁� 绗簲姝ワ細澶勭悊 preachform 绛夊叾浠栨暟鎹�
this.userList.forEach((item) => {
let idArray = null;
if (item.endtime) {
@@ -1500,17 +1535,26 @@
}
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;
- });
+ this.loading = false;
+
+ // 鉁� 绗叚姝ワ細瑙i攣
+ this.$nextTick(() => {
+ this.isRestoring = false;
+ });
+ } catch (error) {
+ console.error("鑾峰彇鍒楄〃澶辫触:", error);
+ this.loading = false;
+ this.isRestoring = false;
+ }
},
loadData() {
this.errtype = this.$route.query.errtype;
@@ -1772,11 +1816,17 @@
this.handleQuery(1);
},
handleSelectionChange(rows) {
- console.log(rows, 911);
+ // 鉁� 濡傛灉鏄仮澶嶉�変腑鐘舵�佽Е鍙戠殑锛岀洿鎺ヨ繑鍥�
+ if (this.isRestoring) {
+ console.log("姝e湪鎭㈠閫変腑鐘舵�侊紝璺宠繃 handleSelectionChange");
+ return;
+ }
- this.selectedRows = rows.map((row) => {
- // 鍒濆鍖栬瘎鍒嗗瓧娈�
- return {
+ console.log("handleSelectionChange 琚Е鍙戯紝閫変腑琛屾暟:", rows.length);
+
+ // 鍙仛娣诲姞鎿嶄綔
+ rows.forEach((row) => {
+ this.selectedRowMap.set(row.id, {
...row,
authenticity: row.authenticity || 0,
weekFinish: row.weekFinish || 0,
@@ -1786,14 +1836,11 @@
environment: row.environment || 0,
doctorSatisfaction: row.doctorSatisfaction || 0,
nurseSatisfaction: row.nurseSatisfaction || 0,
- };
+ });
});
- if (this.selectedRows.length > 0) {
- this.multiple = false;
- } else {
- this.multiple = true;
- }
+ this.selectedRows = Array.from(this.selectedRowMap.values());
+ this.multiple = this.selectedRows.length === 0;
},
// 璁$畻鎬诲垎
@@ -2116,6 +2163,76 @@
}
return "";
},
+ restoreSelection() {
+ if (!this.$refs.userform) {
+ console.log("琛ㄦ牸寮曠敤涓嶅瓨鍦�");
+ return;
+ }
+
+ console.log("鎵ц restoreSelection");
+
+ // 娓呴櫎褰撳墠椤电殑鎵�鏈夐�変腑鐘舵��
+ this.$refs.userform.clearSelection();
+
+ // 鎵惧嚭褰撳墠椤典腑鍝簺琛屾槸琚�変腑鐨�
+ const toBeSelected = this.userList.filter((row) =>
+ this.selectedRowMap.has(row.id)
+ );
+
+ console.log("闇�瑕佹仮澶嶇殑琛屾暟:", toBeSelected.length);
+
+ // 閲嶆柊閫変腑杩欎簺琛�
+ toBeSelected.forEach((row) => {
+ this.$refs.userform.toggleRowSelection(row, true);
+ });
+ },
+ // 鉁� 澶勭悊琛ㄥご鍏ㄩ�変簨浠�
+ handleSelectAll(selection) {
+ console.log("鍏ㄩ�変簨浠惰Е鍙戯紝閫変腑琛屾暟:", selection.length);
+
+ // 濡傛灉 selection 闀垮害绛変簬褰撳墠椤佃鏁帮紝璇存槑鏄叏閫�
+ if (selection.length === this.userList.length) {
+ // 鍏ㄩ�夊綋鍓嶉〉
+ this.userList.forEach((row) => {
+ this.selectedRowMap.set(row.id, {
+ ...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,
+ });
+ });
+ } else {
+ // 鍙栨秷鍏ㄩ�夛細娓呴櫎褰撳墠椤电殑閫変腑鐘舵��
+ this.userList.forEach((row) => {
+ this.selectedRowMap.delete(row.id);
+ });
+ }
+
+ // 鏇存柊 selectedRows
+ this.selectedRows = Array.from(this.selectedRowMap.values());
+ this.multiple = this.selectedRows.length === 0;
+ },
+
+ // 娓呴櫎鎵�鏈夐�変腑
+ clearAllSelection() {
+ this.selectedRowMap.clear();
+ this.selectedRows = [];
+ this.multiple = true;
+
+ if (this.$refs.userform) {
+ this.$refs.userform.clearSelection();
+ }
+ },
+
+ // 鑾峰彇閫変腑鏁伴噺
+ getSelectedCount() {
+ return this.selectedRowMap.size;
+ },
// 鍒涘缓鍐嶆闅忚鏈嶅姟
setupsubtask() {
this.$refs["zcform"].validate((valid) => {
@@ -2385,4 +2502,15 @@
flex-shrink: 0;
margin-top: 2px;
}
+
+::v-deep .el-table__row.selected-row:hover > td {
+ background-color: #e6f7ff !important;
+}
+
+/* 閫変腑淇℃伅鏄剧ず */
+.selected-info {
+ padding: 10px 0;
+ font-size: 14px;
+ color: #666;
+}
</style>
diff --git a/src/views/followvisit/record/detailpage/MergeAndModify.vue b/src/views/followvisit/record/detailpage/MergeAndModify.vue
index 6449d1e..92b2e1b 100644
--- a/src/views/followvisit/record/detailpage/MergeAndModify.vue
+++ b/src/views/followvisit/record/detailpage/MergeAndModify.vue
@@ -39,7 +39,7 @@
handleOptionChange(
$event,
index,
- question.svyLibTemplateTargetoptions,
+ question.svyTaskTemplateTargetoptions,
question
)
"
@@ -47,7 +47,7 @@
<el-radio
v-for="(
option, optIndex
- ) in question.svyLibTemplateTargetoptions"
+ ) in question.svyTaskTemplateTargetoptions"
:key="optIndex"
:label="option.optioncontent"
:class="option.isabnormal ? 'red-star' : ''"
@@ -61,10 +61,10 @@
<div class="dev-xx" v-if="question.scriptType == 2">
<el-checkbox-group
v-model="question.mergedResult"
- @change="updateScore($event, index, question.options, question)"
+ @change="updateScore($event, index, question.svyTaskTemplateTargetoptions, question)"
>
<el-checkbox
- v-for="(option, optIndex) in question.options"
+ v-for="(option, optIndex) in question.svyTaskTemplateTargetoptions"
:key="optIndex"
:label="option.optioncontent"
:class="option.isabnormal ? 'red-star' : ''"
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index ed5040e..9d0f20f 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -2417,8 +2417,15 @@
},
// 璋冭捣鐭俊鍙戦�佸璇濇
sendAgainmsg() {
- this.smsDialogVisible = true;
- // 鍙互鍦ㄨ繖閲屽垵濮嬪寲 smsContent锛屼緥濡� this.smsContent = '';
+ // this.smsDialogVisible = true;
+ this.$store.dispatch("sms/openSmsDialog", {
+ name: this.form.sendname,
+ age: this.form.age,
+ phone: this.userform.telcode,
+ deptName: this.form.deptname,
+ wardName: this.form.leavehospitaldistrictname,
+ smsTemplate: `灏婃暚鐨�${this.form.sendname}锛屾偍濂斤紒`,
+ });
},
// 鍙戦�佺煭淇$殑鏂规硶
diff --git a/src/views/knowledge/questionbank/index.vue b/src/views/knowledge/questionbank/index.vue
index 7402482..7123ef1 100644
--- a/src/views/knowledge/questionbank/index.vue
+++ b/src/views/knowledge/questionbank/index.vue
@@ -456,7 +456,7 @@
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
- name: "questionnaire",
+ name: "Questionbank",
components: { Treeselect },
data() {
return {
diff --git a/src/views/knowledge/questionbank/particulars/index.vue b/src/views/knowledge/questionbank/particulars/index.vue
index b44e2cf..39c5718 100644
--- a/src/views/knowledge/questionbank/particulars/index.vue
+++ b/src/views/knowledge/questionbank/particulars/index.vue
@@ -745,6 +745,7 @@
svyLibScriptTagList: [],
suitway: "1",
scoretype: "4",
+ isavailable: "0",
language: "鏅�氳瘽",
},
headers: {
diff --git a/src/views/knowledge/questionnaire/smsConfig/index.vue b/src/views/knowledge/questionnaire/smsConfig/index.vue
index a6207bd..0397cdd 100644
--- a/src/views/knowledge/questionnaire/smsConfig/index.vue
+++ b/src/views/knowledge/questionnaire/smsConfig/index.vue
@@ -1,274 +1,222 @@
<template>
<div class="smsConfig-management">
- <!-- 宸︿晶鏍� -->
- <div class="sidecolumn">
- <div class="sidecolumn-top">
- <div class="top-wj">妯℃澘鍒嗙被</div>
- <div class="top-tj" @click="Newcategory">+娣诲姞</div>
- </div>
- <div class="center-ss">
- <el-input
- placeholder="璇疯緭鍏ュ唴瀹�"
- v-model="sidecolumnval"
- class="input-with-select"
- size="medium"
- >
- </el-input>
- </div>
- <div class="head-container" style="margin-top: 20px">
- <el-tree
- :data="deptOptions"
- :props="defaultProps"
- :expand-on-click-node="false"
- :filter-node-method="filterNode"
- ref="tree"
- node-key="id"
- default-expand-all
- highlight-current
- @node-click="handleNodeClick"
- >
- <span class="custom-tree-node" slot-scope="{ node, data }">
- <span class="tree-node-label">{{ node.label }}</span>
- <span v-if="data.id > 0">
+ <div class="main-content">
+ <el-row :gutter="20">
+ <el-col :span="24" :xs="24">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="88px"
+ >
+ <el-form-item label="妯℃澘缂栧彿" prop="templetno">
+ <el-input
+ v-model="queryParams.templetno"
+ placeholder="璇疯緭鍏ユā鏉跨紪鍙�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+
+ <el-form-item label="妯℃澘鍚嶇О" prop="templetname">
+ <el-input
+ v-model="queryParams.templetname"
+ placeholder="璇疯緭鍏ユā鏉垮悕绉�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+
+ <el-form-item label="閮ㄩ棬鍚嶇О" prop="deptName">
+ <el-input
+ v-model="queryParams.deptName"
+ placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+
+ <el-form-item>
<el-button
- type="text"
+ 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-form>
+
+ <el-divider></el-divider>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="medium"
+ @click="handleAdd"
+ >鏂板</el-button
+ >
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
icon="el-icon-delete"
- circle
- size="mini"
- @click="() => remove(node, data)"
+ size="medium"
+ :disabled="multiple"
+ @click="handleDelete"
+ >鍒犻櫎</el-button
>
- </el-button>
- </span>
- <span v-if="data.id > 0">
- <el-button
- type="text"
- circle
- size="mini"
- @click="() => altertag(node, data)"
- >
- <span class="button-textxg">
- <i class="el-icon-edit-outline"></i>
- </span>
- </el-button>
- </span>
- </span>
- </el-tree>
- </div>
- </div>
+ </el-col>
+ </el-row>
- <!-- 鍙充晶鏁版嵁 -->
- <div class="leftvlue">
- <div class="leftvlue-bg">
- <el-row :gutter="20">
- <el-col :span="24" :xs="24">
- <el-form
- :model="queryParams"
- ref="queryForm"
- size="small"
- :inline="true"
- v-show="showSearch"
- label-width="98px"
- >
- <el-form-item label="妯℃澘鍚嶇О" prop="templetname">
- <el-input
- v-model="queryParams.templetname"
- placeholder="璇疯緭鍏ユā鏉垮悕绉�"
- clearable
- style="width: 200px"
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
+ <el-table
+ v-loading="loading"
+ :data="userList"
+ :border="true"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="50" align="center" />
- <el-form-item label="鐭俊绛惧悕" prop="signature">
- <el-input
- v-model="queryParams.signature"
- placeholder="璇疯緭鍏ョ煭淇$鍚�"
- clearable
- style="width: 200px"
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
-
- <el-form-item label="鍚敤鐘舵��" prop="isenable">
- <el-select
- v-model="queryParams.isenable"
- placeholder="璇烽�夋嫨鐘舵��"
- clearable
- style="width: 200px"
- >
- <el-option
- v-for="item in statusOptions"
- :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"
- >鎼滅储</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">
- <el-button
- type="primary"
- plain
- icon="el-icon-plus"
- size="medium"
- @click="handleAdd"
- >鏂板</el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="danger"
- plain
- icon="el-icon-delete"
- size="medium"
- :disabled="multiple"
- @click="handleDelete"
- >鍒犻櫎</el-button>
- </el-col>
- </el-row>
-
- <el-table
- v-loading="loading"
- :data="userList"
- :border="true"
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="50" align="center" />
-
- <el-table-column
- label="妯℃澘鍚嶇О"
- align="center"
- key="templetname"
- prop="templetname"
- width="160"
- :show-overflow-tooltip="true"
- />
-
- <el-table-column
- label="鐭俊绛惧悕"
- align="center"
- key="signature"
- prop="signature"
- width="120"
- />
-
- <el-table-column
- label="妯℃澘鍐呭"
- align="center"
- key="templetcontent"
- prop="templetcontent"
- width="280"
- :show-overflow-tooltip="true"
- />
-
- <el-table-column
- label="妯℃澘绫诲瀷"
- align="center"
- key="templettype"
- prop="templettype"
- width="120"
- >
- <template slot-scope="scope">
- <dict-tag :options="typeOptions" :value="scope.row.templettype" />
- </template>
- </el-table-column>
-
- <el-table-column
- label="鍚敤鐘舵��"
- align="center"
- key="isenable"
- prop="isenable"
- width="100"
- >
- <template slot-scope="scope">
- <dict-tag :options="statusOptions" :value="scope.row.isenable" />
- </template>
- </el-table-column>
-
- <el-table-column
- label="澶囨敞"
- align="center"
- key="remark"
- prop="remark"
- width="180"
- :show-overflow-tooltip="true"
- />
-
- <el-table-column
- label="鍒涘缓鏃堕棿"
- align="center"
- key="createTime"
- prop="createTime"
- width="160"
- />
-
- <el-table-column
- label="鎿嶄綔"
- fixed="right"
- align="center"
- width="240"
- class-name="small-padding fixed-width"
- >
- <template slot-scope="scope">
- <el-button
- size="medium"
- type="text"
- @click="handleUpdate(scope.row)"
- >
- <span class="button-textxg">
- <i class="el-icon-edit"></i>淇敼
- </span>
- </el-button>
- <el-button
- size="medium"
- type="text"
- @click="handlePreview(scope.row)"
- >
- <span class="button-text">
- <i class="el-icon-view"></i>棰勮
- </span>
- </el-button>
- <el-button
- size="medium"
- type="text"
- @click="handleDelete(scope.row)"
- >
- <span class="button-textsc">
- <i class="el-icon-edit"></i>鍒犻櫎
- </span>
- </el-button>
- </template>
- </el-table-column>
- </el-table>
-
- <pagination
- v-show="total > 0"
- :total="total"
- :page.sync="queryParams.pageNum"
- :limit.sync="queryParams.pageSize"
- @pagination="getList"
+ <el-table-column
+ label="妯℃澘缂栧彿"
+ align="center"
+ key="templetno"
+ prop="templetno"
+ width="140"
+ :show-overflow-tooltip="true"
/>
- </el-col>
- </el-row>
- </div>
+
+ <el-table-column
+ label="妯℃澘鍚嶇О"
+ align="center"
+ key="templetname"
+ prop="templetname"
+ width="160"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="妯℃澘鍐呭"
+ align="center"
+ key="templetcontent"
+ prop="templetcontent"
+ width="280"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="閮ㄩ棬鍚嶇О"
+ align="center"
+ key="deptName"
+ prop="deptName"
+ width="120"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="鐥呭尯鍚嶇О"
+ align="center"
+ key="wardName"
+ prop="wardName"
+ width="140"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="鐢ㄦ埛宸ュ彿"
+ align="center"
+ key="userName"
+ prop="userName"
+ width="120"
+ />
+
+ <el-table-column
+ label="鐢ㄦ埛鏄电О"
+ align="center"
+ key="nickName"
+ prop="nickName"
+ width="120"
+ />
+
+ <el-table-column
+ label="鏄惁涓婁紶"
+ align="center"
+ key="isupload"
+ prop="isupload"
+ width="90"
+ />
+
+ <el-table-column
+ label="涓婁紶鏃堕棿"
+ align="center"
+ key="uploadTime"
+ prop="uploadTime"
+ width="160"
+ />
+
+ <el-table-column
+ label="鎿嶄綔"
+ fixed="right"
+ align="center"
+ width="200"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleUpdate(scope.row)"
+ >
+ <span class="button-textxg">
+ <i class="el-icon-edit"></i>淇敼
+ </span>
+ </el-button>
+ <el-button
+ size="medium"
+ type="text"
+ @click="handlePreview(scope.row)"
+ >
+ <span class="button-text">
+ <i class="el-icon-view"></i>棰勮
+ </span>
+ </el-button>
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleDelete(scope.row)"
+ >
+ <span class="button-textsc">
+ <i class="el-icon-edit"></i>鍒犻櫎
+ </span>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-col>
+ </el-row>
</div>
<!-- 娣诲姞/淇敼鐭俊妯℃澘寮规 -->
@@ -285,36 +233,19 @@
label-width="100px"
size="medium"
>
- <el-form-item label="妯℃澘鍒嗙被" prop="categoryid">
- <el-select
- v-model="form.categoryid"
- placeholder="璇烽�夋嫨妯℃澘鍒嗙被"
- clearable
- style="width: 100%"
- >
- <el-option
- v-for="item in categoryOptions"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- >
- </el-option>
- </el-select>
+ <el-form-item label="妯℃澘缂栧彿" prop="templetno">
+ <el-input
+ v-model="form.templetno"
+ placeholder="璇疯緭鍏ユā鏉跨紪鍙�"
+ maxlength="50"
+ />
</el-form-item>
<el-form-item label="妯℃澘鍚嶇О" prop="templetname">
<el-input
v-model="form.templetname"
placeholder="璇疯緭鍏ユā鏉垮悕绉�"
- maxlength="50"
- />
- </el-form-item>
-
- <el-form-item label="鐭俊绛惧悕" prop="signature">
- <el-input
- v-model="form.signature"
- placeholder="璇疯緭鍏ョ煭淇$鍚嶏紙濡傦細銆愪附姘翠汉姘戝尰闄€�戯級"
- maxlength="20"
+ maxlength="100"
/>
</el-form-item>
@@ -329,118 +260,77 @@
/>
</el-form-item>
- <el-form-item label="妯℃澘绫诲瀷" prop="templettype">
+ <el-form-item label="绉戝" prop="deptCode">
<el-select
- v-model="form.templettype"
- placeholder="璇烽�夋嫨妯℃澘绫诲瀷"
+ v-model="form.deptCode"
+ placeholder="璇烽�夋嫨绉戝"
+ filterable
+ clearable
style="width: 100%"
+ @change="handleDeptChange"
>
<el-option
- v-for="item in typeOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
+ v-for="dept in departmentOptions"
+ :key="dept.value"
+ :label="dept.label"
+ :value="dept.value"
+ />
</el-select>
</el-form-item>
- <el-form-item label="鍚敤鐘舵��" prop="isenable">
- <el-radio-group v-model="form.isenable">
- <el-radio
- v-for="item in statusOptions"
- :key="item.value"
- :label="item.value"
- >{{ item.label }}</el-radio>
- </el-radio-group>
- </el-form-item>
-
- <el-form-item label="澶囨敞" prop="remark">
- <el-input
- v-model="form.remark"
- type="textarea"
- :rows="3"
- placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
- maxlength="200"
- show-word-limit
- />
+ <el-form-item label="鐥呭尯" prop="wardCode">
+ <el-select
+ v-model="form.wardCode"
+ placeholder="璇烽�夋嫨鐥呭尯"
+ filterable
+ clearable
+ style="width: 100%"
+ @change="handleWardChange"
+ >
+ <el-option
+ v-for="ward in wardOptions"
+ :key="ward.value"
+ :label="ward.label"
+ :value="ward.value"
+ />
+ </el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelForm">鍙� 娑�</el-button>
- <el-button type="primary" @click="submitForm" :loading="submitLoading">纭� 瀹�</el-button>
+ <el-button type="primary" @click="submitForm" :loading="submitLoading"
+ >纭� 瀹�</el-button
+ >
</div>
</el-dialog>
<!-- 妯℃澘棰勮寮规 -->
- <el-dialog
- title="鐭俊妯℃澘棰勮"
- :visible.sync="previewVisible"
- width="40%"
- >
+ <el-dialog title="鐭俊妯℃澘棰勮" :visible.sync="previewVisible" width="40%">
<div class="preview-box">
<div class="preview-item">
+ <div class="preview-label">妯℃澘缂栧彿锛�</div>
+ <div class="preview-value">{{ previewData.templetno || "-" }}</div>
+ </div>
+ <div class="preview-item">
<div class="preview-label">妯℃澘鍚嶇О锛�</div>
- <div class="preview-value">{{ previewData.templetname }}</div>
+ <div class="preview-value">{{ previewData.templetname || "-" }}</div>
</div>
<div class="preview-item">
- <div class="preview-label">鐭俊绛惧悕锛�</div>
- <div class="preview-value">{{ previewData.signature }}</div>
+ <div class="preview-label">閮ㄩ棬鍚嶇О锛�</div>
+ <div class="preview-value">{{ previewData.deptName || "-" }}</div>
</div>
<div class="preview-item">
- <div class="preview-label">妯℃澘绫诲瀷锛�</div>
- <div class="preview-value">
- <dict-tag :options="typeOptions" :value="previewData.templettype" />
- </div>
+ <div class="preview-label">鐥呭尯鍚嶇О锛�</div>
+ <div class="preview-value">{{ previewData.wardName || "-" }}</div>
</div>
- <div class="preview-item">
- <div class="preview-label">鍚敤鐘舵�侊細</div>
- <div class="preview-value">
- <dict-tag :options="statusOptions" :value="previewData.isenable" />
- </div>
- </div>
+
<el-divider></el-divider>
<div class="preview-content">
<div class="preview-content-label">鐭俊鍐呭棰勮锛�</div>
<div class="preview-content-box">
- {{ previewData.templetcontent || '鏆傛棤鍐呭' }}
+ {{ previewData.templetcontent || "鏆傛棤鍐呭" }}
</div>
</div>
- <div class="preview-item" v-if="previewData.remark">
- <div class="preview-label">澶囨敞锛�</div>
- <div class="preview-value">{{ previewData.remark }}</div>
- </div>
- </div>
- </el-dialog>
-
- <!-- 娣诲姞绫诲埆寮规 -->
- <el-dialog title="绫诲埆缂栬緫" width="30%" :visible.sync="dialogFormVisible">
- <div style="text-align: center; margin-bottom: 20px">
- <el-radio-group v-model="radio">
- <el-radio-button label="涓诲垎绫�"></el-radio-button>
- <el-radio-button label="瀛愬垎绫�"></el-radio-button>
- </el-radio-group>
- </div>
- <el-divider></el-divider>
- <el-form :model="classifyform">
- <el-form-item label="璇烽�夋嫨妯℃澘澶х被" v-if="radio == '瀛愬垎绫�'">
- <el-select v-model="classifyform.pid" placeholder="璇烽�夋嫨">
- <el-option
- v-for="item in deptOptions"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- >
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="璇疯緭鍏ョ被鍒悕绉�">
- <el-input v-model="classifyform.name" autocomplete="off"></el-input>
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="getDeptTree()">鍙� 娑�</el-button>
- <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
</div>
</el-dialog>
</div>
@@ -484,35 +374,10 @@
previewVisible: false,
// 棰勮鏁版嵁
previewData: {},
- // 绫诲埆寮规
- dialogFormVisible: false,
- // 绫诲埆form
- classifyform: {},
- // 涓�/瀛愬垎绫�
- radio: "涓诲垎绫�",
- // 绫诲埆鎼滅储
- sidecolumnval: "",
- // 鏍戞暟鎹�
- deptOptions: [],
- // 鍒嗙被涓嬫媺閫夐」
- categoryOptions: [],
- // 鏍憄rops
- defaultProps: {
- children: "children",
- label: "name",
- },
- // 鐘舵�侀�夐」
- statusOptions: [
- { label: "鍚敤", value: "0" },
- { label: "鍋滅敤", value: "1" },
- ],
- // 绫诲瀷閫夐」
- typeOptions: [
- { label: "楠岃瘉鐮�", value: "0" },
- { label: "閫氱煡", value: "1" },
- { label: "钀ラ攢", value: "2" },
- { label: "闅忚", value: "3" },
- ],
+ // 绉戝閫夐」
+ departmentOptions: [],
+ // 鐥呭尯閫夐」
+ wardOptions: [],
// 鏌ヨ鍙傛暟
queryParams: {
pageNum: 1,
@@ -528,24 +393,40 @@
templetcontent: [
{ required: true, message: "璇疯緭鍏ユā鏉垮唴瀹�", trigger: "blur" },
],
- signature: [
- { required: true, message: "璇疯緭鍏ョ煭淇$鍚�", trigger: "blur" },
- ],
- isenable: [
- { required: true, message: "璇烽�夋嫨鍚敤鐘舵��", trigger: "change" },
- ],
},
};
},
- watch: {
- // 鐩戝惉绫诲埆鎼滅储
- sidecolumnval(val) {
- this.$refs.tree.filter(val);
+ computed: {
+ // 浠� store getters 鑾峰彇绉戝閫夐」
+ computedDepartmentOptions() {
+ if (this.$store.getters.belongDepts) {
+ return this.$store.getters.belongDepts.map((dept) => ({
+ label: dept.deptName,
+ value: dept.deptCode,
+ }));
+ }
+ return [];
+ },
+ // 浠� store getters 鑾峰彇鐥呭尯閫夐」
+ computedWardOptions() {
+ console.log(
+ this.$store.getters.belongWards,
+ "this.$store.getters.belongWards"
+ );
+
+ if (this.$store.getters.belongWards) {
+ return this.$store.getters.belongWards.map((ward) => ({
+ label: ward.districtName,
+ value: ward.districtCode,
+ }));
+ }
+ return [];
},
},
created() {
this.getList();
- this.getDeptTree();
+ this.departmentOptions = this.computedDepartmentOptions;
+ this.wardOptions = this.computedWardOptions;
},
methods: {
/** 鏌ヨ鍒楄〃 */
@@ -581,14 +462,7 @@
handleAdd() {
this.dialogTitle = "鏂板鐭俊妯℃澘";
this.dialogVisible = true;
- this.form = {
- isenable: "0",
- templettype: "1",
- };
- // 濡傛灉鏈夋爲閫変腑鍒嗙被锛岄粯璁ゅ甫鍏�
- if (this.queryParams.categoryid) {
- this.form.categoryid = this.queryParams.categoryid;
- }
+ this.form = {};
this.$nextTick(() => {
if (this.$refs.formRef) {
this.$refs.formRef.clearValidate();
@@ -618,6 +492,30 @@
getSmstemplet(templetid).then((response) => {
this.previewData = response.data;
});
+ },
+
+ /** 绉戝閫夋嫨鍙樺寲 - 鑷姩濉厖绉戝鍚嶇О */
+ handleDeptChange(value) {
+ const selectedDept = this.departmentOptions.find(
+ (dept) => dept.value === value
+ );
+ if (selectedDept) {
+ this.form.deptName = selectedDept.label;
+ } else {
+ this.form.deptName = "";
+ }
+ },
+
+ /** 鐥呭尯閫夋嫨鍙樺寲 - 鑷姩濉厖鐥呭尯鍚嶇О */
+ handleWardChange(value) {
+ const selectedWard = this.wardOptions.find(
+ (ward) => ward.value === value
+ );
+ if (selectedWard) {
+ this.form.wardName = selectedWard.label;
+ } else {
+ this.form.wardName = "";
+ }
},
/** 鎻愪氦琛ㄥ崟 */
@@ -677,260 +575,21 @@
})
.catch(() => {});
},
-
- // 琛ㄥ崟閲嶇疆
- reset() {
- this.form = {
- templetid: undefined,
- templetname: undefined,
- signature: undefined,
- templetcontent: undefined,
- templettype: "1",
- isenable: "0",
- categoryid: undefined,
- remark: undefined,
- };
- this.resetForm("form");
- },
-
- /** 鏌ヨ鍒嗙被鏍� */
- getDeptTree() {
- // 妯℃嫙鍒嗙被鏍戞暟鎹� - 瀹為檯椤圭洰涓簲鏇挎崲涓虹湡瀹濧PI
- this.deptOptions = [
- {
- id: 1,
- name: "闅忚鐭俊",
- children: [
- { id: 11, name: "鍑洪櫌闅忚" },
- { id: 12, name: "澶嶈瘖鎻愰啋" },
- { id: 13, name: "鍋ュ悍瀹f暀" },
- ],
- },
- {
- id: 2,
- name: "閫氱煡鐭俊",
- children: [
- { id: 21, name: "棰勭害閫氱煡" },
- { id: 22, name: "鎶ュ憡閫氱煡" },
- ],
- },
- {
- id: 3,
- name: "楠岃瘉鐮�",
- children: [
- { id: 31, name: "鐧诲綍楠岃瘉" },
- { id: 32, name: "娉ㄥ唽楠岃瘉" },
- ],
- },
- ];
- this.categoryOptions = this.flattenTree(this.deptOptions);
- },
-
- /** 鎵佸钩鍖栨爲鏁版嵁鐢ㄤ簬涓嬫媺閫夋嫨 */
- flattenTree(tree) {
- let result = [];
- tree.forEach((item) => {
- result.push({ id: item.id, name: item.name });
- if (item.children && item.children.length) {
- result = result.concat(item.children);
- }
- });
- return result;
- },
-
- /** 绛涢�夎妭鐐� */
- filterNode(value, data) {
- if (!value) return true;
- return data.name.indexOf(value) !== -1;
- },
-
- /** 鐐瑰嚮鏍戣妭鐐� */
- handleNodeClick(data) {
- if (data.children && data.children.length) return;
- this.queryParams.categoryid = data.id;
- this.getList();
- },
-
- // 鍒嗙被鏍�-----------------------
- /** 鏂板缓鍒嗙被 */
- Newcategory() {
- this.classifyform = {};
- this.radio = "涓诲垎绫�";
- this.dialogFormVisible = true;
- },
-
- /** 淇敼鍒嗙被 */
- altertag(node, data) {
- this.dialogFormVisible = true;
- if (data.children && data.children.length) {
- this.radio = "涓诲垎绫�";
- } else {
- this.radio = "瀛愬垎绫�";
- }
- this.classifyform = { ...data };
- },
-
- /** 鎻愪氦鍒嗙被 */
- submitsidecolumn() {
- if (this.classifyform.id) {
- // 淇敼鍒嗙被 - 瀹為檯椤圭洰涓簲鏇挎崲涓虹湡瀹濧PI
- const index = this.deptOptions.findIndex(
- (obj) => obj.id === this.classifyform.id
- );
- if (index > -1) {
- this.deptOptions[index].name = this.classifyform.name;
- this.$set(this.deptOptions, index, this.deptOptions[index]);
- }
- this.$modal.msgSuccess("淇敼鎴愬姛");
- this.dialogFormVisible = false;
- return;
- }
-
- if (this.radio === "涓诲垎绫�" && this.classifyform.name) {
- // 鏂板涓诲垎绫�
- const newId = Math.max(...this.deptOptions.map((d) => d.id), 0) + 1;
- this.deptOptions.push({
- id: newId,
- name: this.classifyform.name,
- children: [],
- });
- this.$modal.msgSuccess("鏂板鎴愬姛");
- this.dialogFormVisible = false;
- } else if (
- this.radio === "瀛愬垎绫�" &&
- this.classifyform.pid &&
- this.classifyform.name
- ) {
- // 鏂板瀛愬垎绫�
- const parent = this.deptOptions.find(
- (obj) => obj.id === this.classifyform.pid
- );
- if (parent) {
- const newChildId =
- Math.max(...parent.children.map((c) => c.id), parent.id * 10) + 1;
- parent.children.push({
- id: newChildId,
- name: this.classifyform.name,
- });
- }
- this.$modal.msgSuccess("鏂板鎴愬姛");
- this.dialogFormVisible = false;
- } else {
- this.$modal.msgError("璇峰~鍐欏畬鏁翠俊鎭�");
- }
- this.classifyform = {};
- },
-
- /** 鍒犻櫎鍒嗙被 */
- remove(node, data) {
- if (data.children && data.children.length) {
- this.$modal
- .confirm(
- '鏄惁纭鍒犻櫎涓�绾у垎绫�"' + data.name + '"锛熷垹闄ゅ悗鍏朵笅鍒嗙被灏嗘棤娉曚娇鐢�'
- )
- .then(() => {
- const index = this.deptOptions.findIndex(
- (obj) => obj.id === data.id
- );
- if (index > -1) {
- this.deptOptions.splice(index, 1);
- }
- this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
- })
- .catch(() => {});
- } else {
- this.$modal
- .confirm('鏄惁纭鍒犻櫎鍒嗙被椤逛负"' + data.name + '"鐨勬暟鎹」锛�')
- .then(() => {
- this.deptOptions.forEach((parent) => {
- const idx = parent.children.findIndex(
- (child) => child.id === data.id
- );
- if (idx > -1) {
- parent.children.splice(idx, 1);
- }
- });
- this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
- })
- .catch(() => {});
- }
- },
},
};
</script>
<style lang="scss" scoped>
.smsConfig-management {
- display: flex;
+ padding: 20px;
}
-.sidecolumn {
- width: 380px;
- min-height: 100vh;
- text-align: center;
- margin-top: 20px;
- margin: 20px;
+.main-content {
padding: 30px;
background: #fff;
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);
-
- .sidecolumn-top {
- display: flex;
- justify-content: space-between;
- .top-wj {
- font-size: 20px;
- }
- .top-tj {
- font-size: 18px;
- color: rgb(0, 89, 255);
- cursor: pointer;
- }
- }
-
- /* 鏍稿績锛氳缃浐瀹氬搴︼紝瓒呭嚭閮ㄥ垎鏄剧ず鐪佺暐鍙� */
- .tree-node-label {
- display: inline-block;
- max-width: 160px;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- vertical-align: bottom;
- }
-
- /* 鍙�夛細榧犳爣鎮仠鏃跺彇娑堥檺鍒讹紝鏄剧ず鍏ㄦ枃 */
- .custom-tree-node:hover .tree-node-label {
- max-width: none;
- white-space: normal;
- overflow: visible;
- }
-
- .center-ss {
- margin-top: 30px;
- .input-with-select {
- height: 40px !important;
- }
- }
-
- .bottom-fl {
- margin-top: 30px;
- display: center !important;
- }
-}
-
-.leftvlue {
- width: 80%;
- margin-top: 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);
-
- .mulsz {
- font-size: 20px;
- }
}
// 棰勮寮规鏍峰紡
@@ -980,46 +639,8 @@
}
}
-// 娣卞害閫夋嫨鍣�
::v-deep .el-input--medium .el-input__inner {
height: 40px !important;
-}
-
-::v-deep .el-tree-node__content {
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- height: 46px;
- font-size: 20px;
- cursor: pointer;
-}
-
-::v-deep .el-tree {
- position: relative;
- cursor: default;
- border-radius: 5px;
- background: #eff8fe;
- color: #606266;
- border: 1px solid #bbe1fa;
- -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
- 0 0 6px 0 rgba(0, 0, 0, 0.04);
-}
-
-::v-deep
- .el-tree--highlight-current
- .el-tree-node.is-current
- > .el-tree-node__content {
- background-color: #7799fb;
- color: #fff;
-}
-
-::v-deep .el-button--mini.is-circle {
- padding: 7px;
- margin: 0;
- color: red;
}
// 鎸夐挳鏂囧瓧棰滆壊
diff --git a/src/views/outsideChainwtnew.vue b/src/views/outsideChainwtnew.vue
index 32cd4e8..6125e1c 100644
--- a/src/views/outsideChainwtnew.vue
+++ b/src/views/outsideChainwtnew.vue
@@ -897,11 +897,18 @@
}
.questionnaire-title {
- color: #175997;
+ color: #0d3b6b; // 鍩虹娣辫摑鑹�
font-size: 28px;
font-weight: 700;
margin-bottom: 15px;
line-height: 1.3;
+ text-shadow: 0 1px 3px rgba(255, 255, 255, 0.4);
+
+ // 閽堝澶滈棿妯″紡鐨勪紭鍖�
+ @media (prefers-color-scheme: dark) {
+ color: #4a90d9; // 澶滈棿妯″紡浣跨敤鏇翠寒鐨勮摑鑹�
+ text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
+ }
}
.questionnaire-description {
@@ -1023,40 +1030,81 @@
}
.question-options {
- margin: 15px 0;
+ margin: 12px 0;
+ padding: 0 4px;
}
-
+// 淇敼 options-group 鐨勬牱寮�
.options-group {
- display: flex;
- flex-direction: column;
- gap: 12px;
+ display: grid;
+ grid-template-columns: repeat(2, 1fr); // 鏀逛负涓ゅ垪缃戞牸
+ gap: 10px;
+ width: 100%;
}
+// 閽堝澶氶�夌殑 checkbox-group 涔熷簲鐢ㄥ悓鏍风殑缃戞牸甯冨眬
+:deep(.el-checkbox-group) {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 10px;
+ width: 100%;
+ @media (max-width: 420px) {
+ grid-template-columns: 1fr;
+ }
+}
+// 淇敼閫夐」鐨勬牱寮�
.option-radio,
.option-checkbox {
margin: 0;
- padding: 12px 15px;
+ padding: 10px 12px;
border-radius: 6px;
border: 1px solid #e0e0e0;
transition: all 0.2s;
+ display: flex;
+ align-items: center;
+ width: 100%;
+ box-sizing: border-box;
&:hover {
border-color: #c0c4cc;
background-color: #f8fafc;
}
+
+ // 纭繚鍐呴儴鍐呭鑷�傚簲
+ :deep(.el-radio__label),
+ :deep(.el-checkbox__label) {
+ display: inline;
+ font-size: 15px;
+ line-height: 1.4;
+ word-break: break-all; // 鍏佽鍦ㄤ换鎰忓瓧绗﹀鎹㈣
+ white-space: normal; // 鍏佽鑷姩鎹㈣
+ padding-left: 6px;
+ }
+
+ // 纭繚 radio/checkbox 鍥炬爣涓嶅帇缂�
+ :deep(.el-radio__input),
+ :deep(.el-checkbox__input) {
+ flex-shrink: 0;
+ }
}
-:deep(.option-radio .el-radio__label),
-:deep(.option-checkbox .el-checkbox__label) {
- display: flex;
- align-items: center;
- font-size: 16px;
-}
+// :deep(.option-radio .el-radio__label),
+// :deep(.option-checkbox .el-checkbox__label) {
+// display: flex;
+// align-items: center;
+// font-size: 16px;
+// }
.option-text {
- margin-right: 5px;
+ word-break: break-all;
+ white-space: normal;
+ line-height: 1.4;
}
-
+// 鍦ㄥ皬灞忓箷涓婅皟鏁翠负鍗曞垪
+@media (max-width: 300px) {
+ .options-group {
+ grid-template-columns: 1fr; // 瓒呭皬灞忓箷鎭㈠鍗曞垪
+ }
+}
.abnormal-indicator {
color: #f56c6c;
font-weight: bold;
diff --git a/src/views/repositoryai/intention/index.vue b/src/views/repositoryai/intention/index.vue
index 8e7a41d..9bf6dd1 100644
--- a/src/views/repositoryai/intention/index.vue
+++ b/src/views/repositoryai/intention/index.vue
@@ -717,7 +717,7 @@
import store from "@/store";
export default {
- name: "questionnaire",
+ name: "Intention",
dicts: ["sys_normal_disable", "sys_user_sex"],
components: { Treeselect, Regular },
data() {
diff --git a/src/views/repositoryai/verbaltrick/index.vue b/src/views/repositoryai/verbaltrick/index.vue
index c55aa46..4753701 100644
--- a/src/views/repositoryai/verbaltrick/index.vue
+++ b/src/views/repositoryai/verbaltrick/index.vue
@@ -473,7 +473,7 @@
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
- name: "questionnaire",
+ name: "Verbaltrick",
components: { Treeselect },
data() {
return {
diff --git a/src/views/repositoryai/verbaltrick/particulars/index.vue b/src/views/repositoryai/verbaltrick/particulars/index.vue
index 57d2f7a..7e7beee 100644
--- a/src/views/repositoryai/verbaltrick/particulars/index.vue
+++ b/src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -40,7 +40,7 @@
:rules="rules"
label-width="100px"
>
- <el-row :gutter="20">
+ <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="闂涓绘棬" prop="scriptTopic">
<el-input
@@ -52,26 +52,26 @@
</el-col>
</el-row>
<el-form-item label="闂鏂囨湰" prop="scriptContent">
- <el-input
- :rows="2"
- type="textarea"
- id="scriptContent"
- show-word-limit
- placeholder="璇疯緭鍏ュ唴瀹�"
- v-model.sync="indexform.scriptContent"
- @focus="handleInput('scriptContent')"
- />
- </el-form-item>
- <el-form-item label="闂鎻忚堪" prop="scriptDesc">
- <el-input
- :rows="1"
- type="textarea"
- id="scriptDesc"
- show-word-limit
- placeholder="璇疯緭鍏ユ弿杩板唴瀹�"
- v-model.sync="indexform.scriptDesc"
- />
- </el-form-item>
+ <el-input
+ :rows="2"
+ type="textarea"
+ id="scriptContent"
+ show-word-limit
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model.sync="indexform.scriptContent"
+ @focus="handleInput('scriptContent')"
+ />
+ </el-form-item>
+ <el-form-item label="闂鎻忚堪" prop="scriptDesc">
+ <el-input
+ :rows="1"
+ type="textarea"
+ id="scriptDesc"
+ show-word-limit
+ placeholder="璇疯緭鍏ユ弿杩板唴瀹�"
+ v-model.sync="indexform.scriptDesc"
+ />
+ </el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="璇█" prop="deptId">
@@ -90,7 +90,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="鍙敤鐘舵��" prop="status">
- <el-select
+ <!-- <el-select
v-model="indexform.isAvailable"
placeholder="璇烽�夋嫨鐘舵��"
>
@@ -101,7 +101,15 @@
:value="item.value"
>
</el-option>
- </el-select>
+ </el-select> -->
+ <el-radio-group v-model="indexform.isAvailable">
+ <el-radio
+ @change="$forceUpdate()"
+ v-for="(item, index) in usable"
+ :label="item.value"
+ >{{ item.label }}</el-radio
+ >
+ </el-radio-group>
</el-form-item>
</el-col>
</el-row>
@@ -740,9 +748,10 @@
ivrLibaScriptTargetoptionList: [],
ivrLibaScriptTagList: [],
suitway: "2",
- noMatchText:'鎶辨瓑锛屾垜娌℃湁鍚噦锛屾偍鑳藉啀璇翠竴閬嶅悧?',
- noClearlyText:'鎶辨瓑锛屾垜娌℃湁鍚竻鎮ㄨ鐨勮瘽锛屾偍鍙互鍐嶈涓�娆″悧?',
- slienceText:'鎶辨瓑锛屾垜娌℃湁鍚埌鎮ㄨ鐨勮瘽锛屾偍鍙互鍐嶈涓�娆″悧?',
+ isAvailable: "0",
+ noMatchText: "鎶辨瓑锛屾垜娌℃湁鍚噦锛屾偍鑳藉啀璇翠竴閬嶅悧?",
+ noClearlyText: "鎶辨瓑锛屾垜娌℃湁鍚竻鎮ㄨ鐨勮瘽锛屾偍鍙互鍐嶈涓�娆″悧?",
+ slienceText: "鎶辨瓑锛屾垜娌℃湁鍚埌鎮ㄨ鐨勮瘽锛屾偍鍙互鍐嶈涓�娆″悧?",
},
mode: [],
questionclass: [],
@@ -796,7 +805,7 @@
getverbaltrick() {
let id = this.$route.query.id;
this.indexform.language = "鏅�氳瘽";
- this.indexform.isAvailable = "1";
+ this.indexform.isAvailable = "0";
if (id) {
getverbaltrick({ id: id }).then((res) => {
@@ -814,7 +823,7 @@
// 鏍�
getbaltrickclassify({}).then((res) => {
this.questionclass = res.rows;
- if (this.$route.query.assortid) {
+ if (this.$route.query.assortid) {
this.indexform.assortid = Number(this.$route.query.assortid);
}
});
diff --git a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
index bcd91ea..89b4de0 100644
--- a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
@@ -236,6 +236,7 @@
width="120"
key="successRate"
prop="successRate"
+ :render-header="Tooltipcgl"
>
<template slot-scope="scope">
<span class="success-rate">{{
@@ -253,6 +254,7 @@
width="120"
key="followUpRate"
prop="followUpRate"
+ :render-header="Tooltipsfl"
/>
<el-table-column
v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
@@ -261,6 +263,7 @@
width="120"
key="rate"
prop="rate"
+ :render-header="Tooltipjsl"
>
<template slot-scope="scope">
<el-button
@@ -543,6 +546,7 @@
width="120"
key="successRate"
prop="successRate"
+ :render-header="Tooltipcgl"
>
<template slot-scope="scope">
<span class="success-rate">{{
@@ -560,6 +564,7 @@
width="120"
key="followUpRate"
prop="followUpRate"
+ :render-header="Tooltipsfl"
/>
<el-table-column
v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
@@ -568,6 +573,7 @@
width="120"
key="rate"
prop="rate"
+ :render-header="Tooltipjsl"
>
<template slot-scope="scope">
<el-button
@@ -863,7 +869,45 @@
return indexA - indexB;
});
},
-
+ Tooltipcgl(h, { column }) {
+ return h(
+ "el-tooltip",
+ {
+ props: {
+ content: "闅忚鎴愬姛/(闇�闅忚-寰呴殢璁�)",
+ placement: "top",
+ effect: "dark",
+ },
+ },
+ [h("span", column.label)]
+ );
+ },
+ Tooltipjsl(h, { column }) {
+ return h(
+ "el-tooltip",
+ {
+ props: {
+ content: "(搴旈殢璁挎椂闂�+浠诲姟鍛ㄦ湡)灏忎簬瀹屾垚鏃堕棿鍗充负瓒呮椂;(闇�闅忚-瓒呮椂)/闇�闅忚",
+ placement: "top",
+ effect: "dark",
+ },
+ },
+ [h("span", column.label)]
+ );
+ },
+ Tooltipsfl(h, { column }) {
+ return h(
+ "el-tooltip",
+ {
+ props: {
+ content: "(闅忚鎴愬姛+棣栨闅忚澶辫触)/棣栨搴旈殢璁�",
+ placement: "top",
+ effect: "dark",
+ },
+ },
+ [h("span", column.label)]
+ );
+ },
sortChineseNumber(aRow, bRow) {
const a = aRow.leavehospitaldistrictname;
const b = bRow.leavehospitaldistrictname;
@@ -1181,138 +1225,144 @@
},
// 涓昏〃瀵煎嚭
async exportTable() {
- try {
- let dateRangeString = "";
- let sheetNameSuffix = "";
+ try {
+ let dateRangeString = "";
+ let sheetNameSuffix = "";
- // 鍒ゆ柇鏄惁鏄附姘村競涓尰闄�
- const isLishuiHospital = this.orgname == "涓芥按甯備腑鍖婚櫌";
+ // 鍒ゆ柇鏄惁鏄附姘村競涓尰闄�
+ const isLishuiHospital = this.orgname == "涓芥按甯備腑鍖婚櫌";
- 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];
- if (isLishuiHospital) {
- // 涓芥按甯備腑鍖婚櫌锛氬彧鏄剧ず骞存湀
- const formatMonthOnly = (dateTimeStr) => {
- const date = new Date(dateTimeStr);
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- return `${year}骞�${month}鏈坄;
+ if (isLishuiHospital) {
+ // 涓芥按甯備腑鍖婚櫌锛氬彧鏄剧ず骞存湀
+ const formatMonthOnly = (dateTimeStr) => {
+ const date = new Date(dateTimeStr);
+ const year = date.getFullYear();
+ const month = date.getMonth() + 1;
+ return `${year}骞�${month}鏈坄;
+ };
+ const startDateFormatted = formatMonthOnly(startDateStr);
+ const endDateFormatted = formatMonthOnly(endDateStr);
+ dateRangeString = `${startDateFormatted}鑷�${endDateFormatted}`;
+ sheetNameSuffix = `${startDateFormatted}鑷�${endDateFormatted}`;
+ } else {
+ // 鍏朵粬鍖婚櫌锛氭樉绀哄勾鏈堟棩
+ const formatDateForDisplay = (dateTimeStr) => {
+ 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;
+ const currentYear = now.getFullYear();
+
+ if (isLishuiHospital) {
+ // 涓芥按甯備腑鍖婚櫌锛氭樉绀哄勾鏈�
+ dateRangeString = `${currentYear}骞�${currentMonth}鏈坄;
+ sheetNameSuffix = `${currentYear}骞�${currentMonth}鏈坄;
+ } else {
+ // 鍏朵粬鍖婚櫌锛氭樉绀烘湀浠�
+ dateRangeString = `${currentMonth}鏈坄;
+ sheetNameSuffix = `${currentMonth}鏈坄;
+ }
+ }
+
+ // 鏍规嵁 serviceType 鐢熸垚闅忚绫诲瀷鍚嶇О
+ let serviceTypeName = "棣栨鍑洪櫌闅忚"; // 鏂囦欢鍚嶄娇鐢ㄧ殑鍚嶇О
+ let sheetTypeName = "棣栨闅忚"; // 宸ヤ綔琛ㄤ娇鐢ㄧ殑鍚嶇О锛堢畝鍖栫増锛�
+
+ if (
+ this.queryParams.serviceType &&
+ Array.isArray(this.queryParams.serviceType) &&
+ this.queryParams.serviceType.length > 0
+ ) {
+ if (this.tasktypes && Array.isArray(this.tasktypes)) {
+ // 杩囨护鍑哄尮閰嶇殑闅忚绫诲瀷
+ const matchedTypes = this.tasktypes.filter((task) =>
+ this.queryParams.serviceType.includes(task.value)
+ );
+
+ if (matchedTypes.length === 1) {
+ // 鍗曚釜绫诲瀷
+ const label = matchedTypes[0].label;
+ serviceTypeName = `棣栨${label}`;
+ sheetTypeName = `棣栨${label}`;
+ } else if (matchedTypes.length > 1) {
+ // 澶氫釜绫诲瀷
+ const typeNames = matchedTypes.map((task) => task.label);
+
+ // 鏂囦欢鍚嶏細鐢ㄦ枩鏉犲垎闅�
+ serviceTypeName = `棣栨${typeNames.join("/")}`;
+
+ // 宸ヤ綔琛ㄥ悕锛氫娇鐢ㄧ涓�涓被鍨嬫垨绠�鍖栧悕绉�
+ if (matchedTypes.length <= 2) {
+ // 濡傛灉鍙湁2涓被鍨嬶紝閮芥樉绀�
+ sheetTypeName = `棣栨${typeNames[0]}绛塦;
+ } else {
+ // 濡傛灉瓒呰繃2涓被鍨嬶紝鍙樉绀虹涓�涓�
+ sheetTypeName = `棣栨${typeNames[0]}绛塦;
+ }
+ } else if (this.queryParams.serviceType.length > 0) {
+ // 濡傛灉娌℃湁鍖归厤鐨勶紝浣跨敤鍘熷鍊�
+ const typeStr = this.queryParams.serviceType.join("/");
+ serviceTypeName = `棣栨${typeStr}`;
+ sheetTypeName = "棣栨闅忚";
+ }
+ } else if (this.queryParams.serviceType.length > 0) {
+ // 濡傛灉娌℃湁 tasktypes锛屼娇鐢ㄥ師濮嬪��
+ const typeStr = this.queryParams.serviceType.join("/");
+ serviceTypeName = `棣栨${typeStr}`;
+ sheetTypeName = "棣栨闅忚";
+ }
+ }
+
+ const excelName = `${serviceTypeName}缁熻琛╛${dateRangeString}.xlsx`;
+
+ // 娓呯悊宸ヤ綔琛ㄥ悕绉帮紝绉婚櫎闈炴硶瀛楃
+ const cleanSheetName = (name) => {
+ // Excel宸ヤ綔琛ㄥ悕涓嶈兘鍖呭惈鐨勫瓧绗�: * ? : \ / [ ]
+ return name.replace(/[*?:\\/[\]]/g, " ");
};
- const startDateFormatted = formatMonthOnly(startDateStr);
- const endDateFormatted = formatMonthOnly(endDateStr);
- dateRangeString = `${startDateFormatted}鑷�${endDateFormatted}`;
- sheetNameSuffix = `${startDateFormatted}鑷�${endDateFormatted}`;
- } else {
- // 鍏朵粬鍖婚櫌锛氭樉绀哄勾鏈堟棩
- const formatDateForDisplay = (dateTimeStr) => {
- 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;
- const currentYear = now.getFullYear();
- if (isLishuiHospital) {
- // 涓芥按甯備腑鍖婚櫌锛氭樉绀哄勾鏈�
- dateRangeString = `${currentYear}骞�${currentMonth}鏈坄;
- sheetNameSuffix = `${currentYear}骞�${currentMonth}鏈坄;
- } else {
- // 鍏朵粬鍖婚櫌锛氭樉绀烘湀浠�
- dateRangeString = `${currentMonth}鏈坄;
- sheetNameSuffix = `${currentMonth}鏈坄;
- }
- }
-
- // 鏍规嵁 serviceType 鐢熸垚闅忚绫诲瀷鍚嶇О
- let serviceTypeName = "棣栨鍑洪櫌闅忚"; // 鏂囦欢鍚嶄娇鐢ㄧ殑鍚嶇О
- let sheetTypeName = "棣栨闅忚"; // 宸ヤ綔琛ㄤ娇鐢ㄧ殑鍚嶇О锛堢畝鍖栫増锛�
-
- if (this.queryParams.serviceType && Array.isArray(this.queryParams.serviceType) && this.queryParams.serviceType.length > 0) {
- if (this.tasktypes && Array.isArray(this.tasktypes)) {
- // 杩囨护鍑哄尮閰嶇殑闅忚绫诲瀷
- const matchedTypes = this.tasktypes.filter(task =>
- this.queryParams.serviceType.includes(task.value)
+ const worksheetName = cleanSheetName(
+ `${sheetTypeName}缁熻_${sheetNameSuffix}`
);
- if (matchedTypes.length === 1) {
- // 鍗曚釜绫诲瀷
- const label = matchedTypes[0].label;
- serviceTypeName = `棣栨${label}`;
- sheetTypeName = `棣栨${label}`;
- } else if (matchedTypes.length > 1) {
- // 澶氫釜绫诲瀷
- const typeNames = matchedTypes.map(task => task.label);
-
- // 鏂囦欢鍚嶏細鐢ㄦ枩鏉犲垎闅�
- serviceTypeName = `棣栨${typeNames.join("/")}`;
-
- // 宸ヤ綔琛ㄥ悕锛氫娇鐢ㄧ涓�涓被鍨嬫垨绠�鍖栧悕绉�
- if (matchedTypes.length <= 2) {
- // 濡傛灉鍙湁2涓被鍨嬶紝閮芥樉绀�
- sheetTypeName = `棣栨${typeNames[0]}绛塦;
- } else {
- // 濡傛灉瓒呰繃2涓被鍨嬶紝鍙樉绀虹涓�涓�
- sheetTypeName = `棣栨${typeNames[0]}绛塦;
- }
- } else if (this.queryParams.serviceType.length > 0) {
- // 濡傛灉娌℃湁鍖归厤鐨勶紝浣跨敤鍘熷鍊�
- const typeStr = this.queryParams.serviceType.join("/");
- serviceTypeName = `棣栨${typeStr}`;
- sheetTypeName = "棣栨闅忚";
+ if (!this.tableData || this.tableData.length === 0) {
+ this.$message.warning(`鏆傛棤${serviceTypeName}鏁版嵁鍙鍑篳);
+ return false;
}
- } else if (this.queryParams.serviceType.length > 0) {
- // 濡傛灉娌℃湁 tasktypes锛屼娇鐢ㄥ師濮嬪��
- const typeStr = this.queryParams.serviceType.join("/");
- serviceTypeName = `棣栨${typeStr}`;
- sheetTypeName = "棣栨闅忚";
+
+ const workbook = new ExcelJS.Workbook();
+ const worksheet = workbook.addWorksheet(worksheetName);
+
+ // 鏋勫缓琛ㄦ牸
+ this.buildExportSheet(worksheet, sheetNameSuffix);
+
+ const buffer = await workbook.xlsx.writeBuffer();
+ const blob = new Blob([buffer], {
+ type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ });
+ saveAs(blob, excelName);
+
+ this.$message.success("瀵煎嚭鎴愬姛");
+ return true;
+ } catch (error) {
+ console.error("瀵煎嚭澶辫触:", error);
+ this.$message.error(`瀵煎嚭澶辫触: ${error.message}`);
+ return false;
}
- }
-
- const excelName = `${serviceTypeName}缁熻琛╛${dateRangeString}.xlsx`;
-
- // 娓呯悊宸ヤ綔琛ㄥ悕绉帮紝绉婚櫎闈炴硶瀛楃
- const cleanSheetName = (name) => {
- // Excel宸ヤ綔琛ㄥ悕涓嶈兘鍖呭惈鐨勫瓧绗�: * ? : \ / [ ]
- return name.replace(/[*?:\\/[\]]/g, ' ');
- };
-
- const worksheetName = cleanSheetName(`${sheetTypeName}缁熻_${sheetNameSuffix}`);
-
- if (!this.tableData || this.tableData.length === 0) {
- this.$message.warning(`鏆傛棤${serviceTypeName}鏁版嵁鍙鍑篳);
- return false;
- }
-
- const workbook = new ExcelJS.Workbook();
- const worksheet = workbook.addWorksheet(worksheetName);
-
- // 鏋勫缓琛ㄦ牸
- this.buildExportSheet(worksheet, sheetNameSuffix);
-
- const buffer = await workbook.xlsx.writeBuffer();
- const blob = new Blob([buffer], {
- type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
- });
- saveAs(blob, excelName);
-
- this.$message.success("瀵煎嚭鎴愬姛");
- return true;
- } catch (error) {
- console.error("瀵煎嚭澶辫触:", error);
- this.$message.error(`瀵煎嚭澶辫触: ${error.message}`);
- return false;
- }
-},
+ },
// 瀛愯〃瀵煎嚭
/** 瀵煎嚭鍖荤敓瀛愯〃 */
async exportDoctorTable(row) {
diff --git a/src/views/sfstatistics/percentage/components/SecondFollowUp.vue b/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
index 2a6b8e7..c97f352 100644
--- a/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
@@ -234,6 +234,7 @@
width="120"
key="successRateAgain"
prop="successRateAgain"
+ :render-header="Tooltipcgl"
>
<template slot-scope="scope">
<span class="success-rate">{{
@@ -251,6 +252,7 @@
width="120"
key="followUpRateAgain"
prop="followUpRateAgain"
+ :render-header="Tooltipsfl"
/>
<el-table-column
label="浜哄伐"
@@ -529,6 +531,7 @@
width="120"
key="successRateAgain"
prop="successRateAgain"
+ :render-header="Tooltipcgl"
>
<template slot-scope="scope">
<span class="success-rate">{{
@@ -546,6 +549,7 @@
width="120"
key="followUpRateAgain"
prop="followUpRateAgain"
+ :render-header="Tooltipsfl"
/>
<el-table-column
label="浜哄伐"
@@ -707,7 +711,45 @@
this.loading = false;
});
},
-
+ Tooltipcgl(h, { column }) {
+ return h(
+ "el-tooltip",
+ {
+ props: {
+ content: "闅忚鎴愬姛/(闇�闅忚-寰呴殢璁�)",
+ placement: "top",
+ effect: "dark",
+ },
+ },
+ [h("span", column.label)]
+ );
+ },
+ Tooltipjsl(h, { column }) {
+ return h(
+ "el-tooltip",
+ {
+ props: {
+ content: "(搴旈殢璁挎椂闂�+浠诲姟鍛ㄦ湡)灏忎簬瀹屾垚鏃堕棿鍗充负瓒呮椂;(闇�闅忚-瓒呮椂)/闇�闅忚",
+ placement: "top",
+ effect: "dark",
+ },
+ },
+ [h("span", column.label)]
+ );
+ },
+ Tooltipsfl(h, { column }) {
+ return h(
+ "el-tooltip",
+ {
+ props: {
+ content: "(闅忚鎴愬姛+棣栨闅忚澶辫触)/棣栨搴旈殢璁�",
+ placement: "top",
+ effect: "dark",
+ },
+ },
+ [h("span", column.label)]
+ );
+ },
getAllWardCodes() {
return this.flatArrayhospit
.filter((item) => item.value !== "all")
@@ -1107,143 +1149,145 @@
return rate.toFixed(2) + "%";
},
async exportTable() {
- try {
- let dateRangeString = "";
- let sheetNameSuffix = "";
+ try {
+ let dateRangeString = "";
+ let sheetNameSuffix = "";
- // 鍒ゆ柇鏄惁鏄附姘村競涓尰闄�
- const isLishuiHospital = this.orgname == "涓芥按甯備腑鍖婚櫌";
+ // 鍒ゆ柇鏄惁鏄附姘村競涓尰闄�
+ const isLishuiHospital = this.orgname == "涓芥按甯備腑鍖婚櫌";
- 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];
- if (isLishuiHospital) {
- // 涓芥按甯備腑鍖婚櫌锛氬彧鏄剧ず骞存湀
- const formatMonthOnly = (dateTimeStr) => {
- const date = new Date(dateTimeStr);
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- return `${year}骞�${month}鏈坄;
+ if (isLishuiHospital) {
+ // 涓芥按甯備腑鍖婚櫌锛氬彧鏄剧ず骞存湀
+ const formatMonthOnly = (dateTimeStr) => {
+ const date = new Date(dateTimeStr);
+ const year = date.getFullYear();
+ const month = date.getMonth() + 1;
+ return `${year}骞�${month}鏈坄;
+ };
+ const startDateFormatted = formatMonthOnly(startDateStr);
+ const endDateFormatted = formatMonthOnly(endDateStr);
+ dateRangeString = `${startDateFormatted}鑷�${endDateFormatted}`;
+ sheetNameSuffix = `${startDateFormatted}鑷�${endDateFormatted}`;
+ } else {
+ // 鍏朵粬鍖婚櫌锛氭樉绀哄勾鏈堟棩
+ const formatDateForDisplay = (dateTimeStr) => {
+ 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;
+ const currentYear = now.getFullYear();
+
+ if (isLishuiHospital) {
+ // 涓芥按甯備腑鍖婚櫌锛氭樉绀哄勾鏈�
+ dateRangeString = `${currentYear}骞�${currentMonth}鏈坄;
+ sheetNameSuffix = `${currentYear}骞�${currentMonth}鏈坄;
+ } else {
+ // 鍏朵粬鍖婚櫌锛氭樉绀烘湀浠�
+ dateRangeString = `${currentMonth}鏈坄;
+ sheetNameSuffix = `${currentMonth}鏈坄;
+ }
+ }
+
+ // 鏍规嵁 serviceType 鐢熸垚闅忚绫诲瀷鍚嶇О
+ let serviceTypeName = "鍑洪櫌闅忚"; // 鏂囦欢鍚嶄娇鐢ㄧ殑鍚嶇О
+ let sheetTypeName = "鍐嶆闅忚"; // 宸ヤ綔琛ㄤ娇鐢ㄧ殑鍚嶇О锛堢畝鍖栫増锛�
+ console.log(this.queryParams.serviceType);
+
+ if (
+ this.queryParams.serviceType &&
+ Array.isArray(this.queryParams.serviceType) &&
+ this.queryParams.serviceType.length > 0
+ ) {
+ if (this.tasktypes && Array.isArray(this.tasktypes)) {
+ // 杩囨护鍑哄尮閰嶇殑闅忚绫诲瀷
+ const matchedTypes = this.tasktypes.filter((task) =>
+ this.queryParams.serviceType.includes(task.value)
+ );
+
+ if (matchedTypes.length === 1) {
+ // 鍗曚釜绫诲瀷
+ const label = matchedTypes[0].label;
+ serviceTypeName = label;
+ sheetTypeName = label;
+ } else if (matchedTypes.length > 1) {
+ // 澶氫釜绫诲瀷
+ const typeNames = matchedTypes.map((task) => task.label);
+
+ // 鏂囦欢鍚嶏細鐢ㄦ枩鏉犲垎闅�
+ serviceTypeName = typeNames.join("/");
+
+ // 宸ヤ綔琛ㄥ悕锛氫娇鐢ㄧ涓�涓被鍨嬫垨绠�鍖栧悕绉�
+ if (matchedTypes.length <= 2) {
+ // 濡傛灉鍙湁2涓被鍨嬶紝閮芥樉绀�
+ sheetTypeName = `${typeNames[0]}绛塦;
+ } else {
+ // 濡傛灉瓒呰繃2涓被鍨嬶紝鍙樉绀虹涓�涓�
+ sheetTypeName = `${typeNames[0]}绛塦;
+ }
+ } else if (this.queryParams.serviceType.length > 0) {
+ // 濡傛灉娌℃湁鍖归厤鐨勶紝浣跨敤鍘熷鍊�
+ const typeStr = this.queryParams.serviceType.join("/");
+ serviceTypeName = typeStr;
+ sheetTypeName = "鍐嶆闅忚";
+ }
+ } else if (this.queryParams.serviceType.length > 0) {
+ // 濡傛灉娌℃湁 tasktypes锛屼娇鐢ㄥ師濮嬪��
+ const typeStr = this.queryParams.serviceType.join("/");
+ serviceTypeName = typeStr;
+ sheetTypeName = "鍐嶆闅忚";
+ }
+ }
+
+ const excelName = `鍐嶆${serviceTypeName}缁熻琛╛${dateRangeString}.xlsx`;
+
+ // 娓呯悊宸ヤ綔琛ㄥ悕绉帮紝绉婚櫎闈炴硶瀛楃
+ const cleanSheetName = (name) => {
+ // Excel宸ヤ綔琛ㄥ悕涓嶈兘鍖呭惈鐨勫瓧绗�: * ? : \ / [ ]
+ return name.replace(/[*?:\\/[\]]/g, " ");
};
- const startDateFormatted = formatMonthOnly(startDateStr);
- const endDateFormatted = formatMonthOnly(endDateStr);
- dateRangeString = `${startDateFormatted}鑷�${endDateFormatted}`;
- sheetNameSuffix = `${startDateFormatted}鑷�${endDateFormatted}`;
- } else {
- // 鍏朵粬鍖婚櫌锛氭樉绀哄勾鏈堟棩
- const formatDateForDisplay = (dateTimeStr) => {
- 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;
- const currentYear = now.getFullYear();
- if (isLishuiHospital) {
- // 涓芥按甯備腑鍖婚櫌锛氭樉绀哄勾鏈�
- dateRangeString = `${currentYear}骞�${currentMonth}鏈坄;
- sheetNameSuffix = `${currentYear}骞�${currentMonth}鏈坄;
- } else {
- // 鍏朵粬鍖婚櫌锛氭樉绀烘湀浠�
- dateRangeString = `${currentMonth}鏈坄;
- sheetNameSuffix = `${currentMonth}鏈坄;
- }
- }
-
- // 鏍规嵁 serviceType 鐢熸垚闅忚绫诲瀷鍚嶇О
- let serviceTypeName = "鍑洪櫌闅忚"; // 鏂囦欢鍚嶄娇鐢ㄧ殑鍚嶇О
- let sheetTypeName = "鍐嶆闅忚"; // 宸ヤ綔琛ㄤ娇鐢ㄧ殑鍚嶇О锛堢畝鍖栫増锛�
- console.log(this.queryParams.serviceType);
-
- if (
- this.queryParams.serviceType &&
- Array.isArray(this.queryParams.serviceType) &&
- this.queryParams.serviceType.length > 0
- ) {
- if (this.tasktypes && Array.isArray(this.tasktypes)) {
- // 杩囨护鍑哄尮閰嶇殑闅忚绫诲瀷
- const matchedTypes = this.tasktypes.filter((task) =>
- this.queryParams.serviceType.includes(task.value)
+ const worksheetName = cleanSheetName(
+ `鍐嶆${sheetTypeName}缁熻_${sheetNameSuffix}`
);
- if (matchedTypes.length === 1) {
- // 鍗曚釜绫诲瀷
- const label = matchedTypes[0].label;
- serviceTypeName = label;
- sheetTypeName = label;
- } else if (matchedTypes.length > 1) {
- // 澶氫釜绫诲瀷
- const typeNames = matchedTypes.map((task) => task.label);
-
- // 鏂囦欢鍚嶏細鐢ㄦ枩鏉犲垎闅�
- serviceTypeName = typeNames.join("/");
-
- // 宸ヤ綔琛ㄥ悕锛氫娇鐢ㄧ涓�涓被鍨嬫垨绠�鍖栧悕绉�
- if (matchedTypes.length <= 2) {
- // 濡傛灉鍙湁2涓被鍨嬶紝閮芥樉绀�
- sheetTypeName = `${typeNames[0]}绛塦;
- } else {
- // 濡傛灉瓒呰繃2涓被鍨嬶紝鍙樉绀虹涓�涓�
- sheetTypeName = `${typeNames[0]}绛塦;
- }
- } else if (this.queryParams.serviceType.length > 0) {
- // 濡傛灉娌℃湁鍖归厤鐨勶紝浣跨敤鍘熷鍊�
- const typeStr = this.queryParams.serviceType.join("/");
- serviceTypeName = typeStr;
- sheetTypeName = "鍐嶆闅忚";
+ if (!this.tableData || this.tableData.length === 0) {
+ this.$message.warning(`鏆傛棤鍐嶆${serviceTypeName}鏁版嵁鍙鍑篳);
+ return false;
}
- } else if (this.queryParams.serviceType.length > 0) {
- // 濡傛灉娌℃湁 tasktypes锛屼娇鐢ㄥ師濮嬪��
- const typeStr = this.queryParams.serviceType.join("/");
- serviceTypeName = typeStr;
- sheetTypeName = "鍐嶆闅忚";
+
+ const workbook = new ExcelJS.Workbook();
+ const worksheet = workbook.addWorksheet(worksheetName);
+
+ // 鏋勫缓琛ㄦ牸
+ this.buildExportSheet(worksheet, sheetNameSuffix);
+
+ const buffer = await workbook.xlsx.writeBuffer();
+ const blob = new Blob([buffer], {
+ type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ });
+ saveAs(blob, excelName);
+
+ this.$message.success("瀵煎嚭鎴愬姛");
+ return true;
+ } catch (error) {
+ console.error("瀵煎嚭澶辫触:", error);
+ this.$message.error(`瀵煎嚭澶辫触: ${error.message}`);
+ return false;
}
- }
-
- const excelName = `鍐嶆${serviceTypeName}缁熻琛╛${dateRangeString}.xlsx`;
-
- // 娓呯悊宸ヤ綔琛ㄥ悕绉帮紝绉婚櫎闈炴硶瀛楃
- const cleanSheetName = (name) => {
- // Excel宸ヤ綔琛ㄥ悕涓嶈兘鍖呭惈鐨勫瓧绗�: * ? : \ / [ ]
- return name.replace(/[*?:\\/[\]]/g, ' ');
- };
-
- const worksheetName = cleanSheetName(`鍐嶆${sheetTypeName}缁熻_${sheetNameSuffix}`);
-
- if (!this.tableData || this.tableData.length === 0) {
- this.$message.warning(`鏆傛棤鍐嶆${serviceTypeName}鏁版嵁鍙鍑篳);
- return false;
- }
-
- const workbook = new ExcelJS.Workbook();
- const worksheet = workbook.addWorksheet(worksheetName);
-
- // 鏋勫缓琛ㄦ牸
- this.buildExportSheet(worksheet, sheetNameSuffix);
-
- const buffer = await workbook.xlsx.writeBuffer();
- const blob = new Blob([buffer], {
- type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
- });
- saveAs(blob, excelName);
-
- this.$message.success("瀵煎嚭鎴愬姛");
- return true;
- } catch (error) {
- console.error("瀵煎嚭澶辫触:", error);
- this.$message.error(`瀵煎嚭澶辫触: ${error.message}`);
- return false;
- }
-},
+ },
/** 瀵煎嚭鍖荤敓瀛愯〃锛堝啀娆¢殢璁匡級 */
async exportDoctorTable(row) {
try {
diff --git a/vue.config.js b/vue.config.js
index b58c628..e51e9e4 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -40,10 +40,10 @@
// 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:8089`,//鍗楀崕
+ // 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\345\244\226\351\223\276\351\200\232\347\224\250.zip" "b/\345\244\226\351\223\276.zip"
similarity index 82%
rename from "\351\232\217\350\256\277\345\244\226\351\223\276\351\200\232\347\224\250.zip"
rename to "\345\244\226\351\223\276.zip"
index 2b288ef..7970190 100644
--- "a/\351\232\217\350\256\277\345\244\226\351\223\276\351\200\232\347\224\250.zip"
+++ "b/\345\244\226\351\223\276.zip"
Binary files differ
diff --git "a/\351\232\217\350\256\277\345\244\226\351\223\276.zip" "b/\351\232\217\350\256\277\351\200\232\347\224\250 \0502\051.zip"
similarity index 82%
rename from "\351\232\217\350\256\277\345\244\226\351\223\276.zip"
rename to "\351\232\217\350\256\277\351\200\232\347\224\250 \0502\051.zip"
index c0df10a..0bf4c55 100644
--- "a/\351\232\217\350\256\277\345\244\226\351\223\276.zip"
+++ "b/\351\232\217\350\256\277\351\200\232\347\224\250 \0502\051.zip"
Binary files differ
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"
index e14bfbe..46644cf 100644
--- "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"
Binary files differ
--
Gitblit v1.9.3