From 9f857d6602556175e8a46876df6d9bbdaf88c296 Mon Sep 17 00:00:00 2001 From: zq <136432190602163.com> Date: Wed, 5 Nov 2025 17:57:30 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 150 +++++++++++++++++++++++++++++++++++--- src/assets/site/prompt-icon-1.svg | 1 + src/assets/site/prompt-icon-2.svg | 1 + src/assets/site/prompt-icon-3.svg | 1 + src/components/PromptText.vue | 97 ++++++++++++++++++++++++ src/store/index.js | 17 +++++ 6 files changed, 257 insertions(+), 10 deletions(-) create mode 100644 src/assets/site/prompt-icon-1.svg create mode 100644 src/assets/site/prompt-icon-2.svg create mode 100644 src/assets/site/prompt-icon-3.svg create mode 100644 src/components/PromptText.vue diff --git a/package-lock.json b/package-lock.json index d9d620d..f11823a 100755 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "regenerator-runtime": "^0.14.1", "vue": "^2.6.14", "vue-clickaway": "^2.2.2", + "vue-qr": "^4.0.9", "vue-router": "^3.5.1", "vuex": "^3.6.2" }, @@ -3869,8 +3870,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", @@ -4982,6 +4982,20 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", @@ -6488,8 +6502,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", @@ -7104,7 +7117,6 @@ "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7113,8 +7125,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ipaddr.js": { "version": "2.2.0", @@ -7368,6 +7379,11 @@ "@sideway/pinpoint": "^2.0.0" } }, + "node_modules/js-binary-schema-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz", + "integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==" + }, "node_modules/js-message": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", @@ -7945,6 +7961,17 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mini-css-extract-plugin": { "version": "2.9.2", "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", @@ -8365,7 +8392,6 @@ "version": "1.4.0", "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -8531,6 +8557,11 @@ "node": ">=6" } }, + "node_modules/parenthesis": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/parenthesis/-/parenthesis-3.1.8.tgz", + "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", @@ -10260,6 +10291,49 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/sirv/-/sirv-2.0.4.tgz", @@ -10448,6 +10522,14 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-split-by": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", + "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==", + "dependencies": { + "parenthesis": "^3.1.5" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", @@ -11196,6 +11278,55 @@ } } }, + "node_modules/vue-qr": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/vue-qr/-/vue-qr-4.0.9.tgz", + "integrity": "sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==", + "dependencies": { + "glob": "^8.0.1", + "js-binary-schema-parser": "^2.0.2", + "simple-get": "^4.0.1", + "string-split-by": "^1.0.0" + } + }, + "node_modules/vue-qr/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/vue-qr/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/vue-qr/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/vue-router": { "version": "3.6.5", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz", @@ -11788,8 +11919,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "7.5.10", diff --git a/src/assets/site/prompt-icon-1.svg b/src/assets/site/prompt-icon-1.svg new file mode 100644 index 0000000..377fc99 --- /dev/null +++ b/src/assets/site/prompt-icon-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/site/prompt-icon-2.svg b/src/assets/site/prompt-icon-2.svg new file mode 100644 index 0000000..3789fbc --- /dev/null +++ b/src/assets/site/prompt-icon-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/site/prompt-icon-3.svg b/src/assets/site/prompt-icon-3.svg new file mode 100644 index 0000000..98b0bdd --- /dev/null +++ b/src/assets/site/prompt-icon-3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/PromptText.vue b/src/components/PromptText.vue new file mode 100644 index 0000000..0283f17 --- /dev/null +++ b/src/components/PromptText.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js index 84116e8..54af857 100755 --- a/src/store/index.js +++ b/src/store/index.js @@ -54,6 +54,23 @@ export default new Vuex.Store({ ] }, { + name: '出诊公告', + path: '', + noToPath:true, + img: 'menu/Totalprofit1.svg', + imgActive: require('@/assets/menu/Totalprofit.svg'), + list: [ + { + name: '公告设置', + desc: 'siteMessage8' + }, + { + name: '出诊日历预览', + desc: 'siteMessage9' + }, + ] + }, + { name: '项目管理', path: '', noToPath:true, From d51aaa37913178bd606c671186a9ab1d2f64ed76 Mon Sep 17 00:00:00 2001 From: zq <136432190602163.com> Date: Wed, 5 Nov 2025 18:00:16 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=87=BA=E8=AF=8A?= =?UTF-8?q?=E6=97=A5=E5=8E=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/HosInformation.vue | 792 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 709 insertions(+), 83 deletions(-) diff --git a/src/views/HosInformation.vue b/src/views/HosInformation.vue index c3c639a..284da6d 100644 --- a/src/views/HosInformation.vue +++ b/src/views/HosInformation.vue @@ -153,7 +153,8 @@
线上收款 - + 未绑定微信收款方式,无法开启线上收款 {{ onLinePay == 1 ? '开启' : '' }}
@@ -196,8 +197,7 @@

{{ item.appid }}

- +
@@ -218,8 +218,9 @@ @@ -244,8 +245,7 @@

{{ item.appid }}

- +
@@ -259,15 +259,16 @@
收挂号费 - - 患者在小程序预约时,{{hasVisitFee == 1?'':'不'}}需缴纳挂号费 + + 患者在小程序预约时,{{ hasVisitFee == 1 ? '' : '不' }}需缴纳挂号费

设置挂号费金额

-

{{registerMoney}}元/人

+

{{ registerMoney }}元/人

@@ -277,8 +278,7 @@
未设置 - 立即设置
@@ -286,7 +286,8 @@

免挂号费规则

-

患者{{againVisitFreeDays}}天内再次就诊、患者有剩余治疗项目,免收挂号费

+

+ 患者{{ againVisitFreeDays }}天内再次就诊、患者有剩余治疗项目,免收挂号费

@@ -296,8 +297,7 @@
未设置 - 立即设置
@@ -305,6 +305,107 @@
+
+
出诊日历预览
+ +
+
+ {{ formatMonth(currentDay) }} + (本月) + 1年内有28天出诊医院重合,请检查——点击可查看 +
+
+ + 今天 + 上个月 + 下个月 + +
+
+
+
+ + {{ item.hospital_name }} +
+
+
+ + + + + + +
+
@@ -337,7 +438,8 @@ @click="selectTag('all')"> 全部分类
{{ item.name }} + @click="selectTag(item)" v-for="item in projectTagData" :key="item.name">{{ + item.name }}
@@ -458,20 +560,26 @@ + :show-cancel-button="true" @confirm="handleRegisterConfirm('registerMoney')" @cancel="handleregisterCancel" + ref="visitFee"> - + + + :show-cancel-button="true" @confirm="handleRegisterConfirm('freeRegVisible')" + @cancel="handleregisterCancel">

若勾选多个规则,满足其一即免挂号费

患者 - 天内再次就诊,免挂号费 + + + 天内再次就诊,免挂号费

@@ -502,6 +610,7 @@ \ No newline at end of file From 8219f9e9d9d1a29f1e3ee16d13f6b835022ef0eb Mon Sep 17 00:00:00 2001 From: zq <136432190602163.com> Date: Mon, 17 Nov 2025 18:38:43 +0800 Subject: [PATCH 12/14] =?UTF-8?q?=E8=A1=A5=E5=85=85=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/DoctorInformation.vue | 33 +++++----- src/views/HosInformation.vue | 137 +++++++++++----------------------------- src/views/conflictDialog.vue | 37 +---------- 3 files changed, 53 insertions(+), 154 deletions(-) diff --git a/src/views/DoctorInformation.vue b/src/views/DoctorInformation.vue index 14109fb..14393cd 100644 --- a/src/views/DoctorInformation.vue +++ b/src/views/DoctorInformation.vue @@ -356,7 +356,7 @@ export default { fd.append('first_visit_audit', siteForm.first_visit_audit) fd.append('approver_phone', siteForm.approver_phone) this.setApproverWechat(fd) - }, + }, setApproverWechat(param) { this.$http('POST', '/api/admin/set_doctor_approver', param).then(response => { if (response.code != 0) { @@ -400,22 +400,21 @@ export default { return } - // 接口待定 - // this.$http('POST', '/api/admin/set_doctor_approver', { - // is_allow_coincide:this.siteForm.is_allow_coincide - // }).then(response => { - // if (response.code != 0) { - // this.$message.error(response.msg) - // return; - // } - - // this.$message.success(response.msg) - // if (this.doctorId) return; - - // }).catch(error => { - // console.error(error, 'error') - // this.$message.error('设置失败') - // }) + this.$http('POST', '/api/admin/set_doctor_approver', { + is_allow_coincide:this.siteForm.is_allow_coincide + }).then(response => { + if (response.code != 0) { + this.$message.error(response.msg) + return; + } + + this.$message.success(response.msg) + if (this.doctorId) return; + + }).catch(error => { + console.error(error, 'error') + this.$message.error('设置失败') + }) }, handleApproverWechatChange(file, fileList) { diff --git a/src/views/HosInformation.vue b/src/views/HosInformation.vue index 17a6476..1f7d09b 100644 --- a/src/views/HosInformation.vue +++ b/src/views/HosInformation.vue @@ -87,7 +87,7 @@ + format="HH:mm" value-format="HH:mm"> @@ -97,7 +97,7 @@ + format="HH:mm" value-format="HH:mm"> @@ -605,11 +605,11 @@

{{ currentEditingDate }}{{ isToday(currentEditingDate) ? '(今日)' : '' }}

-
- 上午出诊 - 下午出诊 - 全天出诊 - 不出诊 +
+ 上午出诊 + 下午出诊 + 全天出诊 + 不出诊
@@ -970,6 +970,7 @@ export default { conflictCount: 0, // 冲突天数统计 tempAdjustments: {}, // 存储临时调诊数据 {日期: {医院ID: {原班次, 新班次, 状态}}} currentEditingHospital: null, // 当前正在编辑的医院 + currentDate:Date.now(), currentEditingDate: null, // 当前正在编辑的日期 currentClickDate: null, // 当前正在编辑的日期 isShowDialogDate: false,//单个医院日期是否显示 @@ -1005,6 +1006,7 @@ export default { originalMorningSelected: [], // 保存原始上午选中状态 originalAfternoonSelected: [], // 保存原始下午选中状态 forceTime: Date.now(), + singleCurrentPlan:null, } }, created() { @@ -1169,7 +1171,6 @@ export default { return true; }, morningSelectedNames() { - // console.log('执行了1次', this.morningSelectedHospitals); return this.getSelectedNames(this.morningSelectedHospitals); }, afternoonSelectedNames() { @@ -1182,7 +1183,6 @@ export default { return date >= today; }, getSelectedNames(selectedList) { - // console.log(selectedList, 'getSelectedNames----selectedList===='); if (selectedList.length === 0) { return '不出诊'; } @@ -1191,7 +1191,6 @@ export default { const hospital = this.hosList.find(item => item.hid === hid); return hospital ? hospital.name : ''; }).filter(name => name); - // console.log(selectedNames, 'getSelectedNames--selectedNames'); return selectedNames.join('、') || '休息'; }, handleEvent(data) { @@ -1210,7 +1209,6 @@ export default { this.isShowAddAliPay = true; }, toggleAfternoonDropdown() { - // console.log('----09999', this.afternoonSelectedHospitals); if (this.isAfternoonDropdownOpen) { this.$refs.afternoonSelect.blur(); } else { @@ -1254,7 +1252,6 @@ export default { getDateCellClass(dateString) { const schedule = this.getDateSchedule(dateString); - // console.log(schedule, 'getDateCellClass-schedule'); if (!schedule) return ''; for (const key in schedule) { if (key !== '0' && schedule[key] && schedule[key].length > 0) { @@ -1396,7 +1393,6 @@ export default { handleDateClick(dateString, event) { this.currentClickDate = dateString event.stopPropagation(); - // isConflictDate() const clickedDate = new Date(dateString); const today = new Date(); today.setHours(0, 0, 0, 0); @@ -1411,13 +1407,13 @@ export default { if (this.isShowDialogDate) { this.singleHosTitle = this.weekDaysDesc[clickedDate.getDay()] + '出诊规则'; + }else{ + this.singleHosTitle = '出诊日历' } // 获取该日期涉及的所有医院 const hospitals = this.getHospitalsByDate(dateString); - // console.log('点击日期获取到的医院数据:', hospitals); - // 重构医院数据,确保正确设置上下午出诊状态 this.hosList = this.hosListCopy.map(item => { let hospitalInfo = { @@ -1456,30 +1452,26 @@ export default { break; } } - - console.log(`医院 ${item.h_depart_name} 排班状态:`, { - currentPlan: hospitalInfo.currentPlan, - morning_plan: hospitalInfo.morning_plan, - afternoon_plan: hospitalInfo.afternoon_plan - }); - return hospitalInfo; }); - // console.log('处理后的医院列表:', this.hosList); - // 根据医院数量决定弹出哪种对话框 if (this.hosList.length === 1) { this.currentEditingHospital = hospitals[0]; + if(this.currentEditingHospital){ + this.singleCurrentPlan = this.currentEditingHospital.currentPlan; + }else{ + this.singleCurrentPlan = '0' + } this.singleHosVisiable = true; } else { this.initSelectedHospitals(this.hosList); + this.singleCurrentPlan = null; this.moreHosVisiable = true; } + this.currentDate = Date.now() }, initSelectedHospitals(hospitals) { - // console.log('开始初始化选中医院:', hospitals); - // 保存原始选中状态 this.originalMorningSelected = [...this.morningSelectedHospitals]; this.originalAfternoonSelected = [...this.afternoonSelectedHospitals]; @@ -1490,12 +1482,6 @@ export default { hospitals.forEach(hospital => { const { hid, morning_plan, afternoon_plan } = hospital; - console.log(`医院 ${hospital.name} 状态:`, { - hid, - morning_plan, - afternoon_plan - }); - if (morning_plan === '1') { this.morningSelectedHospitals = [...this.morningSelectedHospitals, hid]; } @@ -1519,12 +1505,6 @@ export default { const afternoonConflict = this.afternoonSelectedHospitals.length > 1; this.hasConflict = morningConflict || afternoonConflict; - - console.log('冲突检查结果:', { - morningConflict, - afternoonConflict, - hasConflict: this.hasConflict - }); }, // 修改确认多医院临时调诊的方法 @@ -1537,7 +1517,6 @@ export default { } const plans = []; - // console.log('moreTempConfirm:', this.hosList); // 处理所有医院,为每个医院生成对应的排班计划 this.hosList.forEach(hospital => { const { hid } = hospital; @@ -1585,7 +1564,6 @@ export default { // 设置临时调诊数据---- async saveTempAdjustment(dateString, newPlan) { - // console.log(newPlan, 'newPlan===='); try { const response = await this.$http('POST', '/api/admin/set_visit_change', { doctor_id: this.doctor_id, @@ -1612,19 +1590,16 @@ export default { getHospitalsByDate(dateString) { const schedule = this.getDateSchedule(dateString); if (!schedule) { - console.log(`日期 ${dateString} 无排班数据`); return []; } const hospitals = []; - // console.log(`日期 ${dateString} 的排班数据:`, schedule); // 遍历所有班次类型收集医院 Object.keys(schedule).forEach(shiftType => { if (['_isTempAdjust', '_conflicts', '0'].includes(shiftType)) return; const list = schedule[shiftType]; - // console.log(`班次 ${shiftType} 的医院列表:`, list); if (Array.isArray(list) && list.length > 0) { list.forEach(hospital => { @@ -1639,13 +1614,11 @@ export default { isCancelled: hospital.isCancelled, workTime: hospital.workTime }); - // console.log(`添加医院到列表: ${hospital.hospital_name}`, hospital); } }); } }); - // console.log(`最终获取到的医院列表:`, hospitals); return hospitals; }, // tooltip的出诊文案 @@ -1830,16 +1803,12 @@ export default { const newPlan = adjustment.newPlan.toString(); const originalPlanStr = originalPlan.toString(); if (newPlan === "0" && originalPlanStr !== "0") { - // console.log(` - 状态: cancelled (班次取消)`); return 'cancelled'; } else if (originalPlanStr === "0" && newPlan !== "0") { - // console.log(` - 状态: added (新增班次)`); return 'added'; } else if (originalPlanStr !== newPlan) { - // console.log(` - 状态: changed (班次变更)`); return 'changed'; } else { - // console.log(` - 状态: same (与固定排班一致)`); return 'same'; } }, @@ -1866,23 +1835,18 @@ export default { const date = new Date(dateStr); const dayOfWeek = date.getDay() === 0 ? 7 : date.getDay(); - // console.log(`getOriginalPlan: ${dateStr}, 星期${dayOfWeek}, 医院${hospitalId}`); - // 固定排班 if (hospital.worktime_no_fixed === 0 && hospital.worktime_list && hospital.worktime_list[dayOfWeek]) { const plan = hospital.worktime_list[dayOfWeek].plan.toString(); - // console.log(` - 固定排班: ${plan}`); return plan; } // 非固定排班中的具体日期 if (hospital.worktime_no_fixed === 1 && hospital.worktime_list && hospital.worktime_list[dateStr]) { const plan = hospital.worktime_list[dateStr].plan.toString(); - // console.log(` - 非固定排班: ${plan}`); return plan; } - // console.log(` - 默认: 0`); return "0"; }, // 检查是否存在冲突(不允许时段重合时) @@ -1897,8 +1861,6 @@ export default { }, // 统计本月多医院出诊冲突 countMonthlyConflicts() { - // console.log('=== 开始月度冲突统计 ==='); - const monthStart = new Date(this.currentDay.getFullYear(), this.currentDay.getMonth(), 1); const monthEnd = new Date(this.currentDay.getFullYear(), this.currentDay.getMonth() + 1, 0); const today = new Date(); @@ -1918,7 +1880,6 @@ export default { if (hasConflict) { conflicts.push(dateStr); conflictCount++; - console.log(`统计到冲突: ${dateStr}`); } } else { console.log(`无排班数据: ${dateStr}`); @@ -1952,8 +1913,6 @@ export default { const hospitals = schedule[shiftType]; if (!hospitals || hospitals.length === 0) continue; - console.log(`班次 ${shiftType}:`, hospitals); - hospitals.forEach(hospital => { if (hospital.isCancelled) return; // 跳过已取消的 @@ -1991,7 +1950,6 @@ export default { }, // 判断是否为冲突日期 isConflictDate(dateString) { - // console.log(this.conflictDates, dateString, '冲突日期'); return this.conflictDates.includes(dateString); }, // 添加月份变化监听方法 @@ -2011,7 +1969,6 @@ export default { }).then(response => { const list = response.msg; if (response.code == 0) { - // 处理医院列表 this.hosList = Object.keys(list).map(item => { return { hid: item, @@ -2020,6 +1977,7 @@ export default { }); // 存储一份副本,用于后续操作 this.hosListCopy = JSON.parse(JSON.stringify(this.hosList)) + // 保存原始数据 this.rawScheduleData = JSON.parse(JSON.stringify(list)); @@ -2088,20 +2046,7 @@ export default { } this.calendarList = tempCalendarData; - console.log('最终排班数据:', this.calendarList); - }, - - isTempAdjustDate(dateString) { - if (!this.rawScheduleData) return false; - - // 遍历所有医院,检查是否有该日期的临时调整 - for (const hospitalId in this.rawScheduleData) { - const hospital = this.rawScheduleData[hospitalId]; - if (hospital.temp_change_worktime && hospital.temp_change_worktime[dateString]) { - return true; - } - } - return false; + console.log(this.calendarList,'===this.calendarList:'); }, addHospitalToSchedule(daySchedule, hospitalId, hospital, plan, workDesc) { const shiftType = plan.toString(); @@ -2204,8 +2149,6 @@ export default { newPlan: finalPlan, status: this.getTempAdjustmentStatus(dateStr, hospitalId, originalPlan) }; - - console.log(`医院 ${hospitalId} 在 ${dateStr}: 原计划=${originalPlan}, 新计划=${finalPlan}, 状态=${this.tempAdjustments[dateStr][hospitalId].status}`); } else { // 固定排班 if (worktime_no_fixed === 0 && worktime_list && worktime_list[dayOfWeek]) { @@ -2235,13 +2178,12 @@ export default { // 检查冲突 this.checkScheduleConflicts(daySchedule, dateStr); + console.log(daySchedule,'daySchedule==='); return Object.keys(daySchedule).length > 1 ? daySchedule : null; }, // 检查排班冲突 checkScheduleConflicts(daySchedule) { - console.log(daySchedule, 'daySchedule===检查排班冲突'); - if (!this.is_allow_coincide) return; daySchedule._conflicts = []; @@ -2294,7 +2236,6 @@ export default { message: `下午班冲突: ${Array.from(timeSlotConflicts.afternoon).map(h => h.split('_')[1]).join('、')}` }); } - console.log(daySchedule, 'daySchedule===='); }, @@ -2337,7 +2278,6 @@ export default { plans["morning_plan"] = '1'; plans["afternoon_plan"] = '1'; } - console.log(plans, 'plans'); let plansList = [] plansList.push(plans) this.saveTempAdjustment(this.currentEditingDate, plansList) @@ -2399,7 +2339,6 @@ export default { overrideWeekTitles() { this.$nextTick(() => { const weekHeaders = document.querySelectorAll('.el-calendar-table thead th'); - console.log(weekHeaders, 'weekHeaders===='); if (weekHeaders.length === 7) { weekHeaders.forEach((th, index) => { th.textContent = this.weekDaysDesc[index]; @@ -2429,6 +2368,9 @@ export default { // 获取指定日期的排班信息(修改后的版本) getDateSchedule(dateString) { + if(dateString == '2025-11-18'){ + console.log('dateString==:',this.formattedCalendarData[dateString]); + } return this.formattedCalendarData[dateString] || null; }, // 修改判断方法 @@ -2483,7 +2425,6 @@ export default { ) { this.wxpayList = response.data[this.payTypeWeixin] this.selectWxpay = this.wxpayList.filter(item => item.is_bind)[0]; - console.log(this.selectWxpay, 'this.selectWxpay'); } else { this.selectWxpay = null; } @@ -2508,7 +2449,6 @@ export default { depart_id: this.depart_id, pay_switch: this.onLinePay }).then(response => { - console.log(response, '==='); const { code } = response const msg = this.onLinePay === 1 ? '已开启' : '已关闭' const type = code === 0 ? 'success' : 'error'; @@ -2544,7 +2484,6 @@ export default { }) }, changeSelectWeixin(item) { - console.log(item, 'item') // if(this.bindWxpayId === item.payid){ // this.bindWxpayId = 0 // this.selectWxpay = null @@ -2587,7 +2526,6 @@ export default { this.isShowAddPay = true; }, handleregisterCancel() { - console.log('取消'); this.freeRegVisible = false; this.registrationVisible = false; }, @@ -2666,7 +2604,6 @@ export default { this.form.search_city = item.city this.form.address = item.address this.form.h_pos = item.location.lat + ',' + item.location.lng - console.log(item) }, getInternetHospital(queryString) { if (!this.hospitalSearchFlag) return; @@ -2701,7 +2638,6 @@ export default { }) }, queryHospital(queryString, cb) { - console.log(queryString) cb(this.hospitalRestaurants); }, random() { @@ -2744,6 +2680,17 @@ export default { 'afternoon_worktime': response.data.afternoon_worktime ? response.data.afternoon_worktime.split('-') : '' } this.houseCallSettingForm.worktimes = JSON.parse(JSON.stringify(this.form.worktimes)); + // ---------还没有数据 + const {display_work_days,worktime_no_fixed} = response.data; + if(display_work_days > 0){ + this.houseCallSettingForm.planDays = display_work_days; + }else{ + this.houseCallSettingForm.display_work_days = display_work_days + } + this.houseCallSettingForm.worktime_no_fixed = worktime_no_fixed + + // ---------还没有数据 + this.departType = (response.data.type || response.data.type === 0 || response.data.type === "0") ? [Number(response.data.type)] : [] this.departIsFixed = response.data.is_fixed == "1" ? true : false @@ -2961,7 +2908,6 @@ export default { this.editorProjectInfo({ need_countdown: row.need_countdown, project_id: row.id }) }, handleClick1(row) { - console.log(row); this.$router.push(`/addNewTreatment?package_id=${row.id}&doctor_id=${this.doctor_id}&depart_id=${this.depart_id}`) // 跳转编辑页面 }, @@ -2971,7 +2917,6 @@ export default { }, // 处理全选按钮变化 handleSelectAllChange(val) { - console.log(this.$refs.multipleTable, 'multipleTable-'); if (val) { // 只选中未选中的行 const unselectedRows = this.projectList.filter( @@ -2999,7 +2944,6 @@ export default { this.isIndeterminate = !noneSelected && !allSelected; }, handleSelectAllChange1(val) { - console.log(this.$refs.multipleTable, 'multipleTable-'); if (val) { // 只选中未选中的行 const unselectedRows = this.courseList.filter( @@ -3018,7 +2962,6 @@ export default { // 处理选择变化 handleSelectionChange1(rows) { - console.log(rows, '1====='); this.selectedRows1 = rows; // 更新全选按钮状态 const allSelected = rows.length === this.courseList.length; @@ -3041,8 +2984,6 @@ export default { if (name == 'project') { // 修改项目列表 url = '/api/admin/project_mutil_option'; - // selectedRows - console.log(this.selectedRows, '----09999888'); this.selectedRows.forEach(item => { if (item.status != type) { str.push(item.id) @@ -3055,7 +2996,6 @@ export default { props.project_ids = str.join(',') } else { // 修改疗程套餐 - // selectedRows1 this.selectedRows1.forEach(item => { if (item.status != type) { str.push(item.id) @@ -3067,7 +3007,6 @@ export default { } props.package_ids = str.join(',') } - // console.log(url,props); this.changePackData(url, props, name) }, // @@ -3091,13 +3030,9 @@ export default { console.error(error, 'error') }) }, - ChangeTime(type) { - console.log(this.form.morning_worktime, type, '==='); - }, onSwitchChange(data) { this.form.is_fixed = data ? 1 : 0 this.departIsFixed = data - console.log(data, '---'); }, updateHosInfo(props, url) { if (this.doctor_id) props.doctor_id = this.doctor_id; @@ -3449,7 +3384,7 @@ export default { display: flex; align-items: center; justify-content: space-between; - gap: 12px; + // gap: 3px; margin-bottom: 10px; // color: #303133; diff --git a/src/views/conflictDialog.vue b/src/views/conflictDialog.vue index 16d09de..12adab0 100644 --- a/src/views/conflictDialog.vue +++ b/src/views/conflictDialog.vue @@ -70,7 +70,6 @@ export default { } }, created() { - console.log(this.rawScheduleDataProp,'-----t111his.rawScheduleDataProp==='); this.rawScheduleData1 = this.rawScheduleDataProp; }, @@ -78,7 +77,6 @@ export default { // 监听 props 变化 rawScheduleDataProp(newVal) { this.rawScheduleData1 = newVal - console.log(newVal,'===----00999'); }, } , @@ -86,10 +84,6 @@ export default { if(this.cancelBtnShow == '0'){ this.visitShowCancelBtn = false; } - // console.log(this.rawScheduleDataProp,'this.rawScheduleDataProp==='); - // if(this.rawScheduleDataProp){ - // this.rawScheduleData1 = this.rawScheduleDataProp; - // } if(this.cancelText){ this.visitConfirmText = this.cancelText; } @@ -130,7 +124,7 @@ export default { const data = this.analyzeCurrentMonthConflicts(); this.hasConflictresultLength = data.length; this.hasConflictresult = data.length > 3 ? data.slice(0, 3) : data; - console.log(this.hasConflictresult, 'this.hasConflictresult'); + // console.log(this.hasConflictresult, 'this.hasConflictresult'); } }).catch(error => { console.error(error, 'error') @@ -275,7 +269,6 @@ export default { // ..end async setDepartWorkTime() { const { display_work_days, planDays, worktime_no_fixed,worktimes } = this.houseCallSettingForm; - const params = { doctor_id: this.doctor_id, depart_id: this.depart_id, @@ -289,9 +282,6 @@ export default { // 检查冲突:当前设置医院的新排班 vs 其他医院的现有排班 const conflictResults = this.checkScheduleConflict(worktimes, worktime_no_fixed); - - console.log('冲突检测结果:', conflictResults); - // 为固定出诊并且存在冲突时展示弹出框 if (conflictResults.hasConflict && worktime_no_fixed == 0) { this.visitDialogVisible = true; @@ -311,7 +301,6 @@ export default { async saveWorkTimeDirect() { const { display_work_days, planDays, worktime_no_fixed, worktimes } = this.houseCallSettingForm; var worktimesArray = this.formatWorktimesArray(worktimes) - console.log(worktimesArray,'worktimesArray==='); const params = { doctor_id: this.doctor_id, depart_id: this.depart_id, @@ -338,19 +327,12 @@ export default { // 检查排班冲突 checkScheduleConflict(newWorktimes, worktime_no_fixed) { - console.log(newWorktimes, worktime_no_fixed,this.rawScheduleData1, 'newWorktimes, worktime_no_fixed'); - debugger const conflicts = []; let hasConflict = false; if (!this.rawScheduleData1) { return { hasConflict: false, conflicts: [] }; } - - // console.log('开始冲突检测,当前设置医院:', this.depart_id); - // console.log('新排班设置:', newWorktimes); - // console.log('所有医院数据:', this.rawScheduleData1); - // 遍历所有其他医院的排班数据 Object.keys(this.rawScheduleData1).forEach(hospitalId => { // 跳过当前正在设置的医院 (depart_id=4) @@ -358,13 +340,9 @@ export default { console.log('跳过当前医院:', hospitalId); return; } - const hospital = this.rawScheduleData1[hospitalId]; - console.log(`检查医院 ${hospitalId}: ${hospital.h_depart_name}`, hospital); - // 根据排班类型检查冲突 const hospitalConflicts = this.checkHospitalConflict(newWorktimes, hospital, worktime_no_fixed); - console.log(`医院 ${hospitalId} 的冲突:`, hospitalConflicts); if (hospitalConflicts.length > 0) { conflicts.push(...hospitalConflicts); @@ -377,7 +355,6 @@ export default { }, // 检查单个医院的冲突 checkHospitalConflict(newWorktimes, hospital) { - debugger const conflicts = []; if (hospital.worktime_no_fixed === 0) { @@ -393,9 +370,6 @@ export default { // 检查与固定排班医院的冲突 checkVsFixedHospital(newWorktimes, hospital) { const conflicts = []; - - console.log('检查固定排班医院冲突:', hospital.h_depart_name, hospital.worktime_list); - // 遍历新设置的每周排班 Object.keys(newWorktimes).forEach(weekDay => { const newPlan = newWorktimes[weekDay].plan; @@ -405,13 +379,10 @@ export default { // 检查医院在该工作日的排班 const hospitalPlan = hospital.worktime_list && hospital.worktime_list[weekDay]; - console.log(`周${weekDay}: 新排班=${newPlan}, 医院排班=`, hospitalPlan); - if (hospitalPlan && hospitalPlan.plan !== '0') { // 获取冲突的具体时段 const conflictShift = this.getConflictShift(newPlan, hospitalPlan.plan); if (conflictShift) { - console.log(`发现冲突: 周${weekDay} 新${newPlan} vs 医院${hospitalPlan.plan}, 冲突时段: ${conflictShift}`); conflicts.push(this.createConflictInfo( `每${this.getWeekDayName(parseInt(weekDay))}`, hospital.h_depart_name, @@ -430,8 +401,6 @@ export default { checkVsNonFixedHospital(newWorktimes, hospital) { const conflicts = []; - console.log('检查非固定排班医院冲突:', hospital.h_depart_name, hospital.worktime_list); - if (!hospital.worktime_list) return conflicts; // 遍历非固定排班医院的所有具体日期排班 @@ -448,12 +417,9 @@ export default { const newSchedule = newWorktimes[weekDayKey]; if (!newSchedule || newSchedule.plan === '0') return; - // console.log(`日期${dateStr}(周${dayOfWeek}): 新排班=${newSchedule.plan}, 医院排班=${hospitalPlan.plan}`); - // 获取冲突的具体时段 const conflictShift = this.getConflictShift(newSchedule.plan, hospitalPlan.plan); if (conflictShift) { - // console.log(`发现冲突: ${dateStr} 新${newSchedule.plan} vs 医院${hospitalPlan.plan}, 冲突时段: ${conflictShift}`); conflicts.push(this.createConflictInfo( dateStr, hospital.h_depart_name, @@ -470,7 +436,6 @@ export default { return conflicts; }, createConflictInfo(date, hospitalName, newPlan, conflictShift, scheduleType, workDesc, dayOfWeek) { - // console.log(dayOfWeek,this.getWeekDayName(1),'createConflictInfo:dayOfWeek'); const planMap = { '0': '休息', '1': '上午班', From 3db46fa5a99b9200e94e4648323e4346f9f095ff Mon Sep 17 00:00:00 2001 From: zq <136432190602163.com> Date: Tue, 18 Nov 2025 17:09:01 +0800 Subject: [PATCH 13/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=8E=86?= =?UTF-8?q?=E7=8F=AD=E6=AC=A1=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/HosInformation.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/HosInformation.vue b/src/views/HosInformation.vue index 1f7d09b..bb83551 100644 --- a/src/views/HosInformation.vue +++ b/src/views/HosInformation.vue @@ -3385,7 +3385,7 @@ export default { align-items: center; justify-content: space-between; // gap: 3px; - margin-bottom: 10px; + margin-bottom: 8px; // color: #303133; .adjust, @@ -3444,7 +3444,7 @@ export default { .schedule-item { display: flex; align-items: center; - margin-bottom: 12px; + margin-bottom: 8px; } .shift-type { From c1157623ccb3082650dd77e84527153d555eef32 Mon Sep 17 00:00:00 2001 From: longchao <588888888@qq.com> Date: Tue, 18 Nov 2025 17:31:56 +0800 Subject: [PATCH 14/14] =?UTF-8?q?=E5=87=BA=E8=AF=8A=E8=AE=BE=E7=BD=AE=20?= =?UTF-8?q?=E6=8E=92=E7=8F=AD=E6=98=AF=E5=90=A6=E5=85=81=E8=AE=B8=E9=87=8D?= =?UTF-8?q?=E5=90=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/DoctorInformation.vue | 7 ++++--- src/views/HosInformation.vue | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/views/DoctorInformation.vue b/src/views/DoctorInformation.vue index 14393cd..9c9e0f0 100644 --- a/src/views/DoctorInformation.vue +++ b/src/views/DoctorInformation.vue @@ -356,7 +356,7 @@ export default { fd.append('first_visit_audit', siteForm.first_visit_audit) fd.append('approver_phone', siteForm.approver_phone) this.setApproverWechat(fd) - }, + }, setApproverWechat(param) { this.$http('POST', '/api/admin/set_doctor_approver', param).then(response => { if (response.code != 0) { @@ -400,8 +400,9 @@ export default { return } - this.$http('POST', '/api/admin/set_doctor_approver', { - is_allow_coincide:this.siteForm.is_allow_coincide + this.$http('POST', '/api/admin/set_allow_coincide', { + is_allow_coincide:this.siteForm.is_allow_coincide, + did: this.doctorId }).then(response => { if (response.code != 0) { this.$message.error(response.msg) diff --git a/src/views/HosInformation.vue b/src/views/HosInformation.vue index 1f7d09b..9c0098f 100644 --- a/src/views/HosInformation.vue +++ b/src/views/HosInformation.vue @@ -1138,7 +1138,7 @@ export default { ...mapState(['hosMenuData']) // 从Vuex映射showSidebar状态到组件的计算属性中 }, methods: { - + // 出诊冲突提示框-取消 handleVisitCancel() { this.handleVisitClose() @@ -2377,7 +2377,7 @@ export default { hasScheduleData(dateString) { return !!this.getDateSchedule(dateString); }, - + // 需要修改 具体工作时间 getWorkTimeDesc(plan) { const planMap = {