3.6修改

This commit is contained in:
zoujiandong 2026-03-06 19:01:31 +08:00
parent 89848ba321
commit 1fa822ed72
15 changed files with 360 additions and 78 deletions

View File

@ -42,13 +42,13 @@
@click="oncancel" @click="oncancel"
> >
<text class="btn-text">取消</text> <text class="btn-text">{{ cancelText }}</text>
</view> </view>
<view <view
class="dialog-btn confirm" class="dialog-btn confirm"
@click="onconfirm" @click="onconfirm"
> >
<text class="btn-text">确定</text> <text class="btn-text">{{ confirmText }}</text>
</view> </view>
</view> </view>
</view> </view>

View File

@ -771,6 +771,16 @@
} }
} }
}, },
{
"path": "caseRecord/caseRecord",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "uni-app分页",
"app": {
"bounce": "none"
}
}
},
{ {
"path": "visitPlan/visitPlan", "path": "visitPlan/visitPlan",
"style": { "style": {
@ -934,6 +944,17 @@
} }
} }
}, },
{
"path": "selectPatientSingle/selectPatientSingle",
"style": {
"navigationStyle": "custom",
"navigationBarRightButton":{ "hide": true},
"navigationBarTitleText": "uni-app分页",
"app": {
"bounce": "none"
}
}
},
{ {
"path": "visitNote/visitNote", "path": "visitNote/visitNote",
"style": { "style": {
@ -1000,17 +1021,7 @@
// } // }
// } // }
// }, // },
// {
// "path": "selectPatientSingle/selectPatientSingle",
// "style": {
// "navigationStyle": "custom",
// "navigationBarRightButton":{ "hide": true},
// "navigationBarTitleText": "uni-app分页",
// "app": {
// "bounce": "none"
// }
// }
// },
// { // {
// "path": "patientInfo/patientInfo", // "path": "patientInfo/patientInfo",
// "style": { // "style": {
@ -1114,16 +1125,7 @@
// } // }
// } // }
// }, // },
// {
// "path": "caseRecord/caseRecord",
// "style": {
// "navigationStyle": "custom",
// "navigationBarTitleText": "uni-app分页",
// "app": {
// "bounce": "none"
// }
// }
// },
// { // {
// "path": "searchPatient/searchPatient", // "path": "searchPatient/searchPatient",
// "style": { // "style": {

View File

@ -1,13 +1,13 @@
<template> <template>
<view class="container"> <view class="container">
<!-- 头部导航 --> <!-- 头部导航 -->
<uni-nav-bar <view class="navbox">
<view class="status_bar"></view>
<uni-nav-bar
left-icon="left" left-icon="left"
title="病情记录" title="病情记录"
@clickLeft="goBack" @clickLeft="goBack"
fixed
color="#8B2316" color="#8B2316"
height="180rpx"
:border="false" :border="false"
backgroundColor="#eee" backgroundColor="#eee"
> >
@ -16,10 +16,11 @@
<text class="modify-btn" @click="saveRecord" v-if="recordUuid" <text class="modify-btn" @click="saveRecord" v-if="recordUuid"
>修改</text >修改</text
> >
<text class="save-btn" @click="saveRecord" v-else>保存</text> <text class="save-btn" @click="saveRecord" v-else>提交</text>
</view> </view>
</template> </template>
</uni-nav-bar> </uni-nav-bar>
</view>
<!-- 主要内容区域 --> <!-- 主要内容区域 -->
<view class="main-content"> <view class="main-content">
@ -337,7 +338,16 @@ const saveRecord = () => {
/* 主要内容区域 */ /* 主要内容区域 */
.main-content { .main-content {
padding: 0rpx 30rpx; position: fixed;
top: calc(var(--status-bar-height) + 44px);
left: 0;
right: 0;
width: 100%;
box-sizing: border-box;
bottom:150rpx;
z-index:1;
overflow-y: scroll;
padding: 30rpx;
} }
.form-item { .form-item {

View File

@ -15,7 +15,8 @@
</uni-nav-bar> --> </uni-nav-bar> -->
<!-- 患者行 --> <!-- 患者行 -->
<view class="row" @click="noop"> <view class="contentbox">
<view class="row" @click="noop">
<text class="row-label">患者</text> <text class="row-label">患者</text>
<text class="row-value">{{ patientName }}</text> <text class="row-value">{{ patientName }}</text>
</view> </view>
@ -30,6 +31,7 @@
<view class="note-box"> <view class="note-box">
<textarea class="note-textarea" v-model.trim="note" placeholder="请填写随访内容" auto-height :maxlength="200" /> <textarea class="note-textarea" v-model.trim="note" placeholder="请填写随访内容" auto-height :maxlength="200" />
</view> </view>
</view>
<!-- 底部删除按钮 --> <!-- 底部删除按钮 -->
<view class="fixed-footer"> <view class="fixed-footer">
<view class="fixed-btn" @click="deleteFollowUp">删除该条记录</view> <view class="fixed-btn" @click="deleteFollowUp">删除该条记录</view>
@ -93,6 +95,16 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.contentbox{
position: fixed;
top: calc(var(--status-bar-height) + 44px);
left: 0;
right: 0;
overflow-y: scroll;
bottom:128rpx;
z-index:1;
}
.visit-note-page{ .visit-note-page{
min-height: 100vh; background:#f5f5f5; padding-bottom: 120rpx; min-height: 100vh; background:#f5f5f5; padding-bottom: 120rpx;
} }
@ -100,12 +112,12 @@
.submit-text{ color:#8B2316; font-size: 30rpx; } .submit-text{ color:#8B2316; font-size: 30rpx; }
.row{ .row{
margin-top: 20rpx; background:#fff; padding: 26rpx 30rpx; display:flex; align-items:center; justify-content:space-between; border-bottom: 1rpx solid #eee; background:#fff; padding: 26rpx 30rpx; display:flex; align-items:center; justify-content:space-between; border-bottom: 1rpx solid #eee;
.row-label{ font-size: 32rpx; color:#8B2316; font-weight: 500; } .row-label{ font-size: 32rpx; color:#8B2316; font-weight: 500; }
.row-value{ font-size: 32rpx; color:#333; } .row-value{ font-size: 32rpx; color:#333; }
} }
.section-title{ background:#fff; padding: 22rpx 30rpx; color:#8B2316; font-size: 30rpx; border-top: 1rpx solid #eee; border-bottom: 1rpx solid #eee; } .section-title{ background:#fff; padding: 22rpx 30rpx; color:#8B2316; font-size: 30rpx;border-bottom: 1rpx solid #eee; }
.note-box{ background:#fff; padding: 20rpx 24rpx; } .note-box{ background:#fff; padding: 20rpx 24rpx; }
.note-textarea{ .note-textarea{

View File

@ -405,8 +405,6 @@
},1000); },1000);
}); });
}; };
// //
const applyList = ref([]); const applyList = ref([]);
const hasNewPatient = computed(() => applyList.value.length > 0); const hasNewPatient = computed(() => applyList.value.length > 0);
@ -912,6 +910,9 @@
// //
.patient-list { .patient-list {
:deep(.u-index-list__scroll-view){
height:calc(100vh - var(--status-bar-height) - 44px - 103rpx);
}
// position: fixed; // position: fixed;
width: 100%; width: 100%;

View File

@ -1,12 +1,14 @@
<template> <template>
<view class="content"> <view class="content">
<uni-nav-bar <view class="navbox">
<view class="status_bar"></view>
<uni-nav-bar
left-icon="left" left-icon="left"
title="随访计划" title="随访计划"
@clickLeft="goBack" @clickLeft="goBack"
fixed
color="#8B2316" color="#8B2316"
height="180rpx"
:border="false" :border="false"
backgroundColor="#eee" backgroundColor="#eee"
> >
@ -17,7 +19,8 @@
</view> </view>
</template> </template>
</uni-nav-bar> </uni-nav-bar>
<view class="plan"> </view>
<scroll-view <scroll-view
class="plan-scroll" class="plan-scroll"
scroll-y="true" scroll-y="true"
@ -75,7 +78,7 @@
</view> </view>
</view> </view>
</view> </view>
</view>
</view> </view>
</template> </template>
@ -182,8 +185,8 @@ onShow(() => {
.content { background-color: #f5f5f5; height: 100vh; overflow-y: hidden; } .content { background-color: #f5f5f5; height: 100vh; overflow-y: hidden; }
.linebox{ margin:0 20rpx; } .linebox{ margin:0 20rpx; }
.plan{ position: fixed; top: 180rpx; left: 0; right: 0; bottom:0rpx; } .plan-scroll{ position: fixed; top: calc(var(--status-bar-height) + 44px); left: 0; right: 0; bottom:0rpx;z-index:1; }
.plan-scroll { height: 100%; }
.plan-list{ padding-bottom: 20rpx; } .plan-list{ padding-bottom: 20rpx; }
.plan-group{ background:#f5f5f5; } .plan-group{ background:#f5f5f5; }
.group-header{ text-align: center; background:#e4e4e4; color:#333; font-size: 30rpx; padding: 20rpx 30rpx; } .group-header{ text-align: center; background:#e4e4e4; color:#333; font-size: 30rpx; padding: 20rpx 30rpx; }

View File

@ -17,15 +17,16 @@
<view class="card-actions"> <view class="card-actions">
<view class="action" @click="edit(item)"> <view class="action" @click="edit(item)">
<text class="icon"></text> <up-image :src="editImg" width="30rpx" height="30rpx"></up-image>
<text class="text">编辑</text> <text class="text">编辑</text>
</view> </view>
<view class="action" @click="remove(item)"> <view class="action" @click="remove(item)">
<text class="icon">🗑</text> <up-image :src="deleteImg" width="30rpx" height="30rpx"></up-image>
<text class="text">删除</text> <text class="text">删除</text>
</view> </view>
</view> </view>
</view> </view>
<empty v-if="addressList.length === 0" :emptyDesc="'暂无执业地点'"/>
</view> </view>
<!-- 底部新增按钮 --> <!-- 底部新增按钮 -->
@ -41,9 +42,12 @@
import { ref } from 'vue' import { ref } from 'vue'
import { onShow } from '@dcloudio/uni-app' import { onShow } from '@dcloudio/uni-app'
import navBar from '@/components/navBar/navBar.vue' import navBar from '@/components/navBar/navBar.vue'
import empty from '@/components/empty/empty.vue'
import api from '@/api/api.js' import api from '@/api/api.js'
import navTo from '@/utils/navTo' import navTo from '@/utils/navTo'
const title = ref('执业地点管理') const title = ref('执业地点管理')
import editImg from '@/static/images/edit_icon.png'
import deleteImg from '@/static/images/delete_icon.png'
const addressList = ref([]) const addressList = ref([])
const getTypeTag = (type) => { const getTypeTag = (type) => {

View File

@ -34,7 +34,7 @@
<view class="form-item"> <view class="form-item">
<view class="label">地址 <text class="required">*</text></view> <view class="label">地址 <text class="required">*</text></view>
<view class="value"> <view class="value">
<input class="input" v-model.trim="form.location" placeholder="请输入地址" /> <input class="input" v-model.trim="form.location" placeholder="如门诊楼东侧502室" />
</view> </view>
</view> </view>
@ -53,18 +53,71 @@
</view> </view>
<view class="bottom-actions"> <view class="bottom-actions">
<view class="submit-btn" @click="submit"> <view class="submit-btn" @click="alertDialog">
<text class="btn-text">{{form.uuid?'确定修改':'确定新增'}}</text> <text class="btn-text">{{form.uuid?'确定修改':'确定新增'}}</text>
</view> </view>
</view> </view>
</view> </view>
<unidialog
:visible="noticeVisible"
:title="'执业地点'"
:cancelText="'返回修改'"
:confirmText="'确认发布'"
@close="noticeVisible=false"
@confirm="noticeConfirm"
>
<template v-slot:content>
<view class="ppt-content">
<view class="notice-row">
<view class="name">医院</view>
<view class="value" v-if="reason==1">{{ form.hospital_name }}</view>
</view>
<view class="notice-row">
<view class="name">科室</view>
<view class="value">
{{ form.office_name }}
</view>
</view>
<view class="notice-row">
<view class="name">地址</view>
<view class="value">
{{ form.location }}
</view>
</view>
<view class="notice-row">
<view class="name">门诊类型</view>
<view class="value" v-if="form.type==1">
普通门诊
</view>
<view class="value" v-if="form.type==2">
专家门诊
</view>
<view class="value" v-if="form.type==3">
特需门诊
</view>
<view class="value" v-if="form.type==4">
专科/专病门诊
</view>
</view>
</view>
</template>
</unidialog>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
import navBar from '@/components/navBar/navBar.vue' import navBar from '@/components/navBar/navBar.vue'
import unidialog from '@/components/dialog/dialog.vue'
import api from '@/api/api.js' import api from '@/api/api.js'
const noticeVisible = ref(false)
const noticeConfirm = () => {
noticeVisible.value = false
submit()
}
const pageTitle = ref('新增执业地点') const pageTitle = ref('新增执业地点')
const form = ref({ const form = ref({
@ -72,7 +125,7 @@ const form = ref({
hospital_name: '', hospital_name: '',
office_name: '', office_name: '',
location: '', location: '',
type: 4 type: 1
}) })
const selectType = (t) => { form.value.type = t } const selectType = (t) => { form.value.type = t }
@ -111,9 +164,15 @@ const validate = () => {
return '' return ''
} }
const submit = async () => {
const alertDialog = () => {
const err = validate() const err = validate()
if (err) { uni.showToast({ title: err, icon: 'none' }); return } if (err) { uni.showToast({ title: err, icon: 'none' }); return }
noticeVisible.value = true
}
const submit = async () => {
// //
try { try {
const res =form.value.uuid?await api.updateWorkPlace(form.value) : await api.addWorkPlace(form.value) const res =form.value.uuid?await api.updateWorkPlace(form.value) : await api.addWorkPlace(form.value)
@ -146,6 +205,19 @@ onLoad((options) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.notice-row{
display: flex;
align-items: center;
margin-bottom: 20rpx;
.name{
width: 160rpx;
text-align: right;
}
.value{
flex: 1;
text-align: left;
}
}
.edit-address-page { min-height: 100vh; background: #fff; } .edit-address-page { min-height: 100vh; background: #fff; }
.form-container { padding: 24rpx;margin-top: calc(var(--status-bar-height) + 44px); } .form-container { padding: 24rpx;margin-top: calc(var(--status-bar-height) + 44px); }

View File

@ -16,7 +16,7 @@
<template #right> <template #right>
<view class="nav-right"> <view class="nav-right">
<up-icon name="share" color="#8B2316" size="24"></up-icon> <up-icon name="share" color="#8B2316" size="24"></up-icon>
<up-icon name="map" color="#8B2316" size="24" @click="goSite"></up-icon> <up-image :src="siteImg" width="36rpx" height="36rpx" @click="goSite"></up-image>
</view> </view>
</template> </template>
</uni-nav-bar> </uni-nav-bar>
@ -38,13 +38,14 @@
<!-- 停诊公告卡片 --> <!-- 停诊公告卡片 -->
<view v-if="currentTab === 'suspension'"> <view v-if="currentTab === 'suspension'">
<view class="announcement-card" v-for="announcement in stopOutPatientList" :key="announcement.uuid"> <view class="announcement-card" v-for="announcement in stopOutPatientList" :key="announcement.uuid">
<image :src="dateBg" mode="widthFix" class="date-bg"></image>
<view class="card-header"> <view class="card-header">
<view class="date-tag"> <view class="date-tag" >
<view class="tag-dot"></view>
<text class="tag-date">{{ formatDate(announcement.expire_date) }}</text> <text class="tag-date">{{ formatDate(announcement.expire_date) }}</text>
</view> </view>
<view class="delete-btn" @click="deleteAnnouncement(announcement.uuid)"> <view class="delete-btn" @click="deleteAnnouncement(announcement.uuid)">
<text class="delete-icon"></text> <uni-icons type="minus" size="30" color="#8B2316" ></uni-icons>
</view> </view>
</view> </view>
@ -58,7 +59,7 @@
<text class="info-label">停诊时间:</text> <text class="info-label">停诊时间:</text>
<text class="info-value">{{ announcement.date_list[0]?.param1 }} ~ {{ announcement.date_list[0]?.param2 }}</text> <text class="info-value">{{ announcement.date_list[0]?.param1 }} ~ {{ announcement.date_list[0]?.param2 }}</text>
</view> </view>
<view class="divider"></view>
<view class="info-row remarks-row"> <view class="info-row remarks-row">
<text class="info-label">备注:</text> <text class="info-label">备注:</text>
<view class="remarks-input" v-if="announcement.note">{{ announcement.note }}</view> <view class="remarks-input" v-if="announcement.note">{{ announcement.note }}</view>
@ -68,7 +69,7 @@
<!-- 空状态 --> <!-- 空状态 -->
<view v-if="stopOutPatientList.length === 0" class="empty-state"> <view v-if="stopOutPatientList.length === 0" class="empty-state">
<text class="empty-text">暂无停诊公告</text> <empty :emptyDesc="'暂无停诊公告'"></empty>
</view> </view>
</view> </view>
@ -117,7 +118,7 @@
</view> </view>
</view> </view>
<view v-else class="empty-state"> <view v-else class="empty-state">
<text class="empty-text">暂无门诊安排</text> <empty :emptyDesc="'暂无门诊安排'"></empty>
</view> </view>
</view> </view>
</view> </view>
@ -131,7 +132,7 @@
<!-- 浮动编辑按钮 --> <!-- 浮动编辑按钮 -->
<view class="floating-edit-btn" @click="editAnnouncement"> <view class="floating-edit-btn" @click="editAnnouncement">
<text class="edit-icon"></text> <up-image :src="sendImg" width="88rpx" height="88rpx"></up-image>
</view> </view>
</view> </view>
</template> </template>
@ -141,7 +142,12 @@ import { ref, reactive } from 'vue'
import api from '@/api/api' import api from '@/api/api'
import {onShow,onUnload,onLoad,onBackPress} from '@dcloudio/uni-app' import {onShow,onUnload,onLoad,onBackPress} from '@dcloudio/uni-app'
import navTo from '@/utils/navTo' import navTo from '@/utils/navTo'
import siteImg from '@/static/zhiyedidian.png'
import empty from '@/components/empty/empty.vue'
import sendImg from '@/static/send_feed.png'
import dateBg from '@/static/data_sign.png'
const page=ref(1); const page=ref(1);
const addressList = ref([]);
// //
const from = ref(''); const from = ref('');
const currentTab = ref('suspension') const currentTab = ref('suspension')
@ -161,6 +167,7 @@ onLoad((options) => {
if(options.from){ if(options.from){
from.value = options.from; from.value = options.from;
} }
fetchList();
}); });
const getListOutPatient = async () => { const getListOutPatient = async () => {
const res = await api.listOutPatient({ const res = await api.listOutPatient({
@ -253,6 +260,12 @@ const share = () => {
icon: 'none' icon: 'none'
}) })
} }
const fetchList = async () => {
const res = await api.listWorkPlace({})
if (res && res.code === 200 && Array.isArray(res.data)) {
addressList.value = res.data
}
}
const addNew = () => { const addNew = () => {
uni.showToast({ uni.showToast({
@ -337,6 +350,13 @@ const refreshData = () => {
// //
const addSchedule = () => { const addSchedule = () => {
if(addressList.value.length === 0){
uni.showToast({
title: '请先点击右上角设置执业地点',
icon: 'none'
})
return
}
navTo({ navTo({
url: '/pages_chat/outManage/outManage' url: '/pages_chat/outManage/outManage'
}) })
@ -437,7 +457,12 @@ const deleteSchedule = async (uuid) => {
font-size: 24rpx; font-size: 24rpx;
color: #333; color: #333;
} }
.divider{
width: 100%;
height: 2rpx;
background-color: #ccc;
margin: 20rpx 0;
}
/* 导航栏样式 */ /* 导航栏样式 */
.nav-bar { .nav-bar {
display: flex; display: flex;
@ -540,11 +565,21 @@ const deleteSchedule = async (uuid) => {
.announcement-card { .announcement-card {
background-color: #fff; background-color: #fff;
border-radius: 16rpx; border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
position: relative;
.date-bg{
position: absolute;
top: 30rpx;
left: -12rpx;;
width: 241rpx;
height: 64rpx;
z-index: 1;
}
} }
.card-header { .card-header {
padding:30rpx 30rpx 0 30rpx;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@ -552,30 +587,28 @@ const deleteSchedule = async (uuid) => {
} }
.date-tag { .date-tag {
position: relative;
z-index: 2;
display: flex; display: flex;
align-items: center; align-items: center;
background-color: #20c997; background-repeat: no-repeat;
padding: 10rpx 20rpx; background-size: 100% 100%;
padding: 10rpx 8rpx;
border-radius: 20rpx; border-radius: 20rpx;
gap: 10rpx;
} }
.tag-dot {
width: 12rpx;
height: 12rpx;
background-color: #fff;
border-radius: 50%;
}
.tag-date { .tag-date {
color: #fff; color: #fff;
font-size: 24rpx; font-size: 28rpx;
} }
.announcement-card .delete-btn { .announcement-card .delete-btn {
width: 40rpx; width: 40rpx;
height: 40rpx; height: 40rpx;
background-color: #8B2316;
border-radius: 50%; border-radius: 50%;
display: flex; display: flex;
align-items: center; align-items: center;
@ -596,7 +629,8 @@ const deleteSchedule = async (uuid) => {
.info-row { .info-row {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 20rpx; margin: 0 30rpx 20rpx;
} }
.info-label { .info-label {
@ -614,6 +648,14 @@ const deleteSchedule = async (uuid) => {
.remarks-row { .remarks-row {
align-items: flex-start; align-items: flex-start;
.info-label{
font-size: 26rpx;
}
.info-value{
font-size: 26rpx;
}
} }
.remarks-input { .remarks-input {
@ -817,7 +859,7 @@ const deleteSchedule = async (uuid) => {
/* 浮动编辑按钮 */ /* 浮动编辑按钮 */
.floating-edit-btn { .floating-edit-btn {
position: fixed; position: fixed;
bottom: 120rpx; bottom: 180rpx;
right: 30rpx; right: 30rpx;
width: 80rpx; width: 80rpx;
height: 80rpx; height: 80rpx;

View File

@ -27,13 +27,22 @@
<view class="add-more" @click="addRange">+ 再次添加</view> <view class="add-more" @click="addRange">+ 再次添加</view>
</view> </view>
<view class="range-list"> <view class="range-list" v-if="reason!=3">
<view class="range-row" v-for="(item,idx) in ranges" :key="idx"> <view class="range-row" v-for="(item,idx) in ranges" :key="idx">
<uni-datetime-picker type="daterange" value="item" :start="start" @change="(e)=>handleChange(e,idx)" /> <uni-datetime-picker type="daterange" value="item" :start="start" @change="(e)=>handleChange(e,idx)" />
<uni-icons type="minus" size="30" color="#8B2316" @click="removeRange(idx)" v-if="idx > 0"></uni-icons> <uni-icons type="minus" size="30" color="#8B2316" @click="removeRange(idx)" v-if="idx > 0"></uni-icons>
</view> </view>
</view> </view>
<view class="range-list" v-if="reason==3">
<view class="range-row" v-for="(item,idx) in ranges" :key="idx">
<uni-datetime-picker type="date" value="item[0]" :start="start" @change="(e)=>handleChangeDate(e,idx)" />
<view class="rowbox">
<uni-data-select v-model="item[1]" placeholder="请选择时段" :localdata="rangeData" @change="(e)=>changeRangeData(e,idx)"></uni-data-select>
</view>
<uni-icons type="minus" size="30" color="#8B2316" @click="removeRange(idx)" v-if="idx > 0"></uni-icons>
</view>
</view>
</view> </view>
<!-- 备注 --> <!-- 备注 -->
@ -52,13 +61,65 @@
</view> </view>
</view> </view>
</view> </view>
<unidialog
:visible="noticeVisible"
:title="'公告内容'"
:cancelText="'返回修改'"
:confirmText="'确认发布'"
@close="noticeVisible=false"
@confirm="noticeConfirm"
>
<template v-slot:content>
<view class="ppt-content">
<view class="notice-row">
<view class="name">停诊原因</view>
<view class="value" v-if="reason==1">出差</view>
<view class="value" v-if="reason==2">休假</view>
<view class="value" v-if="reason==3">临时安排</view>
<view class="value" v-if="reason==4">其他</view>
</view>
<view class="notice-row">
<view class="name">停诊时间</view>
<view class="value">
<view class="value-item" v-for="(item,idx) in ranges" :key="idx">
<view class="value-item-date">{{ item[0] }}</view>
<view class="value-item-separator" >{{ reason==3?' ':'至' }}</view>
<view class="value-item-time">{{ item[1] }}</view>
</view>
</view>
</view>
<view class="notice-row" v-if="remark">
<view class="name">备注</view>
<view class="value">{{ remark }}</view>
</view>
<view class="tip">
<view class="name"></view>
<view class="value">{{date}}由医生本人发布</view>
</view>
</view>
</template>
</unidialog>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import { onShow } from '@dcloudio/uni-app' import { onShow } from '@dcloudio/uni-app'
import unidialog from '@/components/dialog/dialog.vue'
import navBar from '@/components/navBar/navBar.vue' import navBar from '@/components/navBar/navBar.vue'
import dayjs from 'dayjs'
import api from '@/api/api' import api from '@/api/api'
const noticeVisible = ref(false)
const date = ref(dayjs().format('YYYY年MM月DD日'))
const removeRange = (idx) => {
ranges.value.splice(idx,1)
}
const noticeConfirm = () => {
noticeVisible.value = false
addStopPatient()
}
const title = ref('发布停诊') const title = ref('发布停诊')
const reason = ref(1) const reason = ref(1)
@ -69,11 +130,20 @@ const start = ref(new Date().getTime())
const end = ref( Date.now()+10*365*24*3600*1000) const end = ref( Date.now()+10*365*24*3600*1000)
const selectReason = (val) => { reason.value = val } const selectReason = (val) => { reason.value = val }
const addRange = () => { ranges.value.push([]) } const addRange = () => { ranges.value.push([]) }
const rangeData=ref([{text:'上午',value:'上午'},{text:'下午',value:'下午'},{text:'晚上',value:'晚上'},{text:'全天',value:'全天'}])
const handleChange = (e,idx) => { const handleChange = (e,idx) => {
console.log(e) console.log(e)
ranges.value[idx] =e; ranges.value[idx] =e;
} }
const handleChangeDate = (e,idx) => {
console.log(e)
ranges.value[idx][0] =e;
}
const changeRangeData = (e,idx) => {
console.log(e)
ranges.value[idx][1] =e;
}
const addStopPatient = async () => { const addStopPatient = async () => {
let date_arr=[] let date_arr=[]
ranges.value.forEach(item=>{ ranges.value.forEach(item=>{
@ -98,24 +168,90 @@ const recordVoice = () => {
} }
const submit = () => { const submit = () => {
console.log(ranges.value) console.log(ranges.value);
const invalid = ranges.value.some(r => r.length==0) let invalid=invalid = ranges.value.some(r => !r[0] || !r[1])
if (invalid) { if (invalid) {
if(reason.value==3){
uni.showToast({ title: '请选择停诊时间或者时间段', icon: 'none' })
return
}else{
uni.showToast({ title: '请选择停诊起止时间', icon: 'none' }) uni.showToast({ title: '请选择停诊起止时间', icon: 'none' })
return return
} }
addStopPatient()
}
//addStopPatient()
noticeVisible.value = true
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.stop-page { min-height: 100vh; background: #fff; } .ppt-content{
.content-area { padding: 30rpx; margin-top: calc(var(--status-bar-height) + 44px);}
.tip{
display: flex;
align-items: center;
margin-top:50rpx;
text-align: right;
color: #999;
font-size: 28rpx;
.name{
width: 160rpx;
text-align: right;
}
.value{
flex: 1;
text-align: left;
}
}
}
.notice-row{
display: flex;
align-items: center;
margin-bottom: 20rpx;
.value-item-separator{
min-width: 20rpx;
}
.name{
width: 160rpx;
text-align: right;
}
.value{
flex: 1;
text-align: left;
}
.value-item{
display: flex;
align-items: center;
}
}
.rowbox{
width: 250rpx;
}
.stop-page {
min-height: 100vh; background: #fff;
:deep(.uni-date){
position: relative;
z-index:99;
}
}
.content-area {
position: fixed;
overflow-y: scroll;
padding: 30rpx;
width: 100%;
z-index:1;
box-sizing: border-box;
top: calc(var(--status-bar-height) + 44px);
bottom:152rpx;
}
.form-section { margin-bottom: 40rpx; } .form-section { margin-bottom: 40rpx; }
.section-head { display: flex; justify-content: space-between; align-items: center; } .section-head { display: flex; justify-content: space-between; align-items: center; }
.section-title { display: flex; align-items: center; margin-bottom: 20rpx; } .section-title { display: flex; align-items: center; margin-bottom: 20rpx; }
.title-text { font-size: 32rpx; color: #8B2316; font-weight: 600; } .title-text { font-size: 32rpx; color: #8B2316; }
.required { color: #8B2316; margin-left: 6rpx; font-size: 28rpx; } .required { color: #8B2316; margin-left: 6rpx; font-size: 28rpx; }
.reason-row { display: flex; gap: 20rpx; flex-wrap: wrap; } .reason-row { display: flex; gap: 20rpx; flex-wrap: wrap; }
@ -129,11 +265,11 @@ const submit = () => {
.to-text { color: #666; } .to-text { color: #666; }
.remark-box { position: relative; } .remark-box { position: relative; }
.remark { width: 100%; min-height: 220rpx; background: #f2f2f2; border-radius: 10rpx; padding: 20rpx; color: #333; } .remark {box-sizing: border-box; width: 100%; min-height: 220rpx; background: #f2f2f2; border-radius: 10rpx; padding: 20rpx; color: #333; }
.voice-btn { position: absolute; right: 20rpx; bottom: 20rpx; width: 88rpx; height: 88rpx; border-radius: 50%; background: #8B2316; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 40rpx; } .voice-btn { position: absolute; right: 20rpx; bottom: 20rpx; width: 88rpx; height: 88rpx; border-radius: 50%; background: #8B2316; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 40rpx; }
.bottom-actions { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; padding: 30rpx; border-top: 1rpx solid #eee; } .bottom-actions { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; padding: 30rpx; border-top: 1rpx solid #eee; }
.confirm-btn { background: #8B2316; border-radius: 12rpx; padding: 24rpx 0; text-align: center; } .confirm-btn { background: #8B2316; border-radius: 12rpx; padding: 24rpx 0; text-align: center; }
.btn-text { color: #fff; font-size: 32rpx; font-weight: 600; } .btn-text { color: #fff; font-size: 32rpx; }
</style> </style>

BIN
static/data_sign.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/delete_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/edit_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
static/send_feed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
static/zhiyedidian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB