From 92fd2bcea8476df6776e6d15c564753609af7679 Mon Sep 17 00:00:00 2001 From: longchao <588888888@qq.com> Date: Wed, 7 Jan 2026 17:04:39 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E7=AB=AF?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/GuipSwitch.vue | 1 - src/views/DoctorInformation.vue | 18 +-- src/views/HosInformation.vue | 335 +++++++++++++++++++++++++++++++--------- 3 files changed, 274 insertions(+), 80 deletions(-) diff --git a/src/components/GuipSwitch.vue b/src/components/GuipSwitch.vue index e0bd979..542476b 100644 --- a/src/components/GuipSwitch.vue +++ b/src/components/GuipSwitch.vue @@ -85,7 +85,6 @@ export default { watch: { value(newVal) { this.internalValue = newVal - console.log(this.internalValue, 88888) }, // modelValue(newVal) { // this.internalValue = newVal diff --git a/src/views/DoctorInformation.vue b/src/views/DoctorInformation.vue index 9c9e0f0..073c914 100644 --- a/src/views/DoctorInformation.vue +++ b/src/views/DoctorInformation.vue @@ -8,7 +8,7 @@ - - 方便患者记忆,非必填 + + 方便用户记忆,非必填 - + + + +
{{pageCurDescText.previewNoticeTitle}}
+ +
+
- -
医保定点
-
- - +
使用功能
+ +
+
+

个人名片(基础功能不可取消)

+
+ + +
+
+ +
+
+

子功能:

+ +
+ 是否允许报到 +
+
+
+
+
+ + + +
+
+

用户预约

+
+ + +
- - +
+
+

子功能:

+ +
+ 初诊审批 + 挂号收费 +
+
+
+
+ +
+ +
+
+

项目收费

+
+ + +
+
+
+ +
+
+

医保定点

+
+ + +
+
+
+ + - + - -
就诊前的注意事项,非必填
- -
@@ -117,31 +187,31 @@
-

放号设置

+

{{pageCurDescText.preview.text1}}

- + 如30分钟,放号时9:00-9:30;9:30-10:00来划分 - - 放号量可少于实际数量,以便为现场约号患者预留 + + 放号量可少于实际数量,以便为现场约号用户预留
- - 患者可提前多久约号 + + 用户可提前多久约号 提前 - + 不输入即无期限 @@ -151,14 +221,14 @@
-
+
线上收款 - 未绑定微信收款方式,无法开启线上收款 - {{ onLinePay == 1 ? '开启' : '' }} + {{ onLinePay == 1 ? '开启' : '' }} -->
@@ -215,7 +285,7 @@ alt="">支付宝收款
- 绑定后,患者支付宝扫码付款可享自动退费 + 绑定后,用户支付宝扫码付款可享自动退费
@@ -257,13 +327,13 @@
-
+
收挂号费 - - 患者在小程序预约时,{{ hasVisitFee == 1 ? '' : '不' }}需缴纳挂号费 + + 用户在小程序预约时,{{ hasVisitFee == 1 ? '' : '不' }}需缴纳挂号费
@@ -289,7 +359,7 @@

免挂号费规则

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

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

@@ -308,10 +378,10 @@
-
出诊设置
+
{{pageCurDescText.worktime.text1}}
-
向患者展示
+
向用户展示
自动展示 @@ -322,11 +392,11 @@
-
每周出诊安排
+
{{pageCurDescText.worktime.text2}}
- 每周出诊安排固定 - 每周出诊安排不固定 + {{pageCurDescText.worktime.text3}} + {{pageCurDescText.worktime.text4}}
@@ -346,7 +416,7 @@
-
出诊日历预览
+
{{pageCurDescText.calendar.text1}}
@@ -696,14 +766,14 @@
- 患者 + 用户 天内再次就诊,免挂号费

- 患者有剩余治疗项目,免挂号费 + 用户有剩余治疗项目,免挂号费

@@ -748,6 +818,8 @@ import GuipTable from '@/components/GuipTable.vue'; import GuipDialog from '@/components/GuipDialog.vue'; import CustomDropdown from '@/components/CustomDropdown.vue'; import SetAliPay from '@/components/SetAliPay.vue'; +import GuipRadio from '@/components/GuipRadio.vue'; + import { mapState } from 'vuex'; import { Object } from 'core-js'; import ConflictDialog from './conflictDialog.vue'; @@ -772,7 +844,8 @@ export default { GroupFormBtns, SetAliPay, PromptText, - ConflictDialog + ConflictDialog, + GuipRadio }, data() { return { @@ -1019,6 +1092,63 @@ export default { originalAfternoonSelected: [], // 保存原始下午选中状态 forceTime: Date.now(), singleCurrentPlan:null, + sceneType:-1, + groupOptions: [ + { label: '医疗机构:如医院、诊所', value: 0 }, + { label: '养生机构:如养生馆、理疗馆', value: 1 }, + ], + previewFunctions:[], + firstVisitAudit:0, + canCheckInList:[], + pageDescTexts:[ + { + location: '出诊医院省市', + unitName:'出诊医院名称', + shortName:'医院简称', + previewNotice:'就诊提醒', + previewNoticeTitle:'就诊前的注意事项,非必填', + preview:{ + text1:'放号设置', + text2:'号源单位时段', + text3:'开放预约', + text4:'放号量', + text5:'超时未就诊提醒', + }, + worktime:{ + text1:'出诊设置', + text2:'每周出诊安排', + text3:'每周出诊安排固定', + text4:'每周出诊安排不固定', + }, + calendar:{ + text1:'出诊日历预览', + } + }, + { + location: '机构所在省市', + unitName: '机构名称', + shortName:'机构简称', + previewNotice:'预约提醒', + previewNoticeTitle:'用户预约后的注意事项提醒,非必填', + preview:{ + text1:'预约设置', + text2:'预约单位时段', + text3:'可提前预约天数', + text4:'每时段可接待人数', + text5:'服务延期提醒', + }, + worktime:{ + text1:'排班设置', + text2:'每周排班安排', + text3:'每周排班固定', + text4:'每周排班不固定', + }, + calendar:{ + text1:'排班日历预览', + } + }, + ], + pageCurDescText:false } }, created() { @@ -1150,7 +1280,9 @@ export default { ...mapState(['hosMenuData']) // 从Vuex映射showSidebar状态到组件的计算属性中 }, methods: { - + sceneTypeChange(e) { + this.pageCurDescText = this.pageDescTexts[e] + }, // 出诊冲突提示框-取消 handleVisitCancel() { this.handleVisitClose() @@ -2454,24 +2586,24 @@ export default { }, async onLineChange(e) { this.onLinePay = e; - await this.$http('POST', '/api/admin/set_pay_switch', { - doctor_id: this.doctor_id, - depart_id: this.depart_id, - pay_switch: this.onLinePay - }).then(response => { - const { code } = response - const msg = this.onLinePay === 1 ? '已开启' : '已关闭' - const type = code === 0 ? 'success' : 'error'; - this.$positionMessage({ - type: type, - message: msg + '线上收款', - target: this.$refs['hasOnlinePayRef'], - position: 'top' - }) - }).catch(error => { - this.onLinePay = 0; - console.error(error, 'error') - }) + // await this.$http('POST', '/api/admin/set_pay_switch', { + // doctor_id: this.doctor_id, + // depart_id: this.depart_id, + // pay_switch: this.onLinePay + // }).then(response => { + // const { code } = response + // const msg = this.onLinePay === 1 ? '已开启' : '已关闭' + // const type = code === 0 ? 'success' : 'error'; + // this.$positionMessage({ + // type: type, + // message: msg + '线上收款', + // target: this.$refs['hasOnlinePayRef'], + // position: 'top' + // }) + // }).catch(error => { + // this.onLinePay = 0; + // console.error(error, 'error') + // }) }, async onVisitFeeChange(e) { this.hasVisitFee = e @@ -2705,15 +2837,29 @@ export default { 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 this.previewIsOpen = response.data.preview_is_open == "1" ? true : false - this.onLinePay = response.data.pay_switch + this.onLinePay = response.data.pay_switch == "1" ? true : false this.hasVisitFee = response.data.has_visit_fee this.registerMoney = response.data.visit_price + this.sceneType = response.data.scene_type + this.firstVisitAudit = response.data.first_visit_audit + this.pageCurDescText = this.pageDescTexts[this.sceneType] this.hasAgainVisitFreeDays = response.data.has_again_visit_free_days this.againVisitFreeDays = response.data.again_visit_free_days this.hasRemainVisitFree = response.data.has_remain_visit_free if ((this.hasAgainVisitFreeDays && this.againVisitFreeDays) || this.hasRemainVisitFree) this.hasFreeRegisterRule = true + this.previewFunctions = []; + if(this.firstVisitAudit) this.previewFunctions.push(1) + if(this.hasVisitFee) this.previewFunctions.push(2) + + + if(response.data.type == 2) { + this.canCheckInList = [] + }else{ + this.canCheckInList = [1] + } + this.getAreaData(this.form.province) }).catch(error => { console.error(error, 'error') @@ -2779,6 +2925,19 @@ export default { this.departType = [] if (val.length > 0) this.departType[0] = val[val.length - 1] }, + setPreviewFunction(val) { + console.log(val) + + + // var previewFunctions = this.previewFunctions + // var pos = previewFunctions.indexOf(val) + // if(pos > -1){ + // previewFunctions.splice(pos, 1) + // }else{ + // previewFunctions.push(val) + // } + // this.previewFunctions = previewFunctions + }, selectTag(item) { if (item == 'all') { this.projectSearchId = 'all'; @@ -2910,6 +3069,7 @@ export default { onPreviewSwitchChange(data) { this.form.preview_is_open = data ? 1 : 0 this.previewIsOpen = data + if(!this.previewIsOpen) this.previewFunctions = [] }, onSwitchChange2(row) { var tmpstatus = row.status == 1 ? 0 : 1 @@ -3063,14 +3223,20 @@ export default { }).then(response => { if (response.code == 0) { this.$Message.success('更新成功') + var that = this if (this.doctor_id && !this.depart_id) { - var that = this setTimeout(() => { that.$router.push({ name: '医院信息', query: { doctor_id: this.doctor_id, depart_id: response.data.depart_id } }) }, 1000) + }else{ + if(url == '/api/admin/set_hospital_depart') { + setTimeout(() => { + location.reload() + }, 1000) + } } return; } @@ -3111,9 +3277,17 @@ export default { type: this.departType[0], notice: this.form.notice, h_shortname: this.form.h_shortname, - preview_is_open: this.previewIsOpen ? 1 : 0 + preview_is_open: this.previewIsOpen ? 1 : 0, + scene_type: this.sceneType, + pay_switch: this.onLinePay ? 1 : 0, } + if(this.previewFunctions.indexOf(1)>-1) props.first_visit_audit = 1 + if(this.previewFunctions.indexOf(2)>-1) props.has_visit_fee = 1 + + props.can_check_in = 0 + if(this.canCheckInList.length > 0) props.can_check_in = 1 + if (this.doctor_id && !this.depart_id) { if (this.departType.length <= 0) { this.$Message.info('请选择使用功能') @@ -3609,6 +3783,10 @@ export default { padding: 24px 14px; box-sizing: border-box; background: #FAFAFA; + &.bidwrap-item-pd24{ + padding: 24px; + margin-top:10px; + } .biditemMast { background: #fff; @@ -3616,6 +3794,14 @@ export default { border-radius: 8px; background: #FFFFFF; align-items: flex-start; + &.biditemMast-nopd{ + background: #FAFAFA; + padding: 0; + border-radius: 4px; + p{ + color: #1E2226; + } + } .bidwrap-item-top { .top-right { @@ -3767,6 +3953,11 @@ export default { gap: 24px; height: 72px; padding: 10px 0; + &.checkboxGroup2{ + padding: 0; + height: unset; + gap: 10px; + } } .addStore { @@ -3826,4 +4017,8 @@ export default { justify-content: flex-start; } } + +.mt20{ + margin-top: 10px; +} \ No newline at end of file -- 1.8.3.1 From 92e5a5a4196b2254675dff0ef628fb1d792d35a9 Mon Sep 17 00:00:00 2001 From: longchao <588888888@qq.com> Date: Wed, 7 Jan 2026 18:04:16 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=B5=8A=E6=AC=A0=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/HosInformation.vue | 86 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/src/views/HosInformation.vue b/src/views/HosInformation.vue index fe624c8..7148281 100644 --- a/src/views/HosInformation.vue +++ b/src/views/HosInformation.vue @@ -354,6 +354,7 @@ @click="showDialog('register')">立即设置
+
@@ -373,10 +374,53 @@ @click="showDialog('registerRule')">立即设置
+ +
+
+
+

赊欠挂号/预约费

+

+ 开启后财务可给用户赊欠挂号/预约费

+
+
+
+ + +
+
+ +
+ +
+ +
+ +
+ 收项目费 +
+
+ +
+
+
+

赊欠项目费

+

+ 开启后财务可给用户赊欠项目费

+
+
+
+ + +
+
+
+
{{pageCurDescText.worktime.text1}}
@@ -1148,7 +1192,9 @@ export default { } }, ], - pageCurDescText:false + pageCurDescText:false, + canCreditVisitFee:false, + canCreditPreviewFee:false } }, created() { @@ -1280,6 +1326,42 @@ export default { ...mapState(['hosMenuData']) // 从Vuex映射showSidebar状态到组件的计算属性中 }, methods: { + async onCreditPreviewFee(e) { + try { + const response = await this.$http('POST', '/api/admin/set_credit_preview_fee', { + doctor_id: this.doctor_id, + depart_id: this.depart_id, + can_credit_preview_fee: e?1:0, + }); + + if (response.code === 0) { + this.$message.success('设置成功'); + } else { + this.$message.error(response.msg || '保存失败'); + } + } catch (error) { + this.$message.error('设置失败'); + } + }, + + async onCreditVisitFee(e) { + try { + const response = await this.$http('POST', '/api/admin/set_credit_visit_fee', { + doctor_id: this.doctor_id, + depart_id: this.depart_id, + can_credit_visit_fee: e?1:0, + }); + + if (response.code === 0) { + this.$message.success('设置成功'); + } else { + this.$message.error(response.msg || '保存失败'); + } + } catch (error) { + this.$message.error('设置失败'); + } + }, + sceneTypeChange(e) { this.pageCurDescText = this.pageDescTexts[e] }, @@ -2838,6 +2920,8 @@ export default { this.departIsFixed = response.data.is_fixed == "1" ? true : false this.previewIsOpen = response.data.preview_is_open == "1" ? true : false this.onLinePay = response.data.pay_switch == "1" ? true : false + this.canCreditVisitFee = response.data.can_credit_visit_fee == "1"? true : false + this.canCreditPreviewFee = response.data.can_credit_preview_fee == "1"? true : false this.hasVisitFee = response.data.has_visit_fee this.registerMoney = response.data.visit_price this.sceneType = response.data.scene_type -- 1.8.3.1 From 83306ef9b392af7e1dde418cf50a95981fba4afd Mon Sep 17 00:00:00 2001 From: longchao <588888888@qq.com> Date: Wed, 14 Jan 2026 15:02:42 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=A1=B9=E7=9B=AE=E4=BB=B7=E6=A0=BC=C2=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/HosInformation.vue | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/views/HosInformation.vue b/src/views/HosInformation.vue index 7148281..a16009a 100644 --- a/src/views/HosInformation.vue +++ b/src/views/HosInformation.vue @@ -121,6 +121,19 @@
+ +
+
+

子功能:

+ +
+ 是否显示项目价格 +
+
+
+
+
@@ -1144,6 +1157,7 @@ export default { previewFunctions:[], firstVisitAudit:0, canCheckInList:[], + showProjectPrice:[], pageDescTexts:[ { location: '出诊医院省市', @@ -2944,6 +2958,12 @@ export default { this.canCheckInList = [1] } + if(response.data.show_project_price) { + this.showProjectPrice = [1] + }else{ + this.showProjectPrice = [] + } + this.getAreaData(this.form.province) }).catch(error => { console.error(error, 'error') @@ -3371,6 +3391,11 @@ export default { props.can_check_in = 0 if(this.canCheckInList.length > 0) props.can_check_in = 1 + if(this.showProjectPrice.length > 0) { + props.show_project_price = 1 + }else{ + props.show_project_price = 0 + } if (this.doctor_id && !this.depart_id) { if (this.departType.length <= 0) { -- 1.8.3.1 From 664f375d8c8c5f1328ad54f087ac2bbfe05451ab Mon Sep 17 00:00:00 2001 From: longchao <588888888@qq.com> Date: Mon, 19 Jan 2026 16:49:38 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/HosInformation.vue | 39 ++++++++++++++++++++++++++++++++------- src/views/conflictDialog.vue | 8 +++----- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/views/HosInformation.vue b/src/views/HosInformation.vue index a16009a..86719ef 100644 --- a/src/views/HosInformation.vue +++ b/src/views/HosInformation.vue @@ -31,7 +31,7 @@