123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707 |
- <template>
- <view class="main">
- <NavBar :user-info="userInfo" @update-user="updateUser" />
- <view class="body">
- <view class="tab-box">
- <view class="tab-bar">
- <view class="tab_item" v-for="(tab, index) in tabList" :key="index"
- :class="{'active':tabActive==index}" @click="checkIndex(index)">
- <text class="text">{{tab.title}}{{index===0 && tabList[0].leng>0?"("+tabList[0].leng+")":""}}</text>
- </view>
- </view>
- <view class="search-bar">
- <view v-if="tabActive === 0" class="today">
- <view class="search">
- <uni-easyinput prefixIcon="search" v-model="searchVal" placeholder="请输入姓名" />
- </view>
- <button type="primary" @click="handleSearch" class="search-button">搜索</button>
- <button type="primary" :disabled="userInfo.workStatus==='1'?false:true" @click="handleRefresh" :class="userInfo.workStatus==='1'?'refresh':'refresh active'">一键释放</button>
- </view>
- <view v-else class="history">
- <view class="searchchoice">
- <view class="row1">
- <view class="timequan">
- <text class="time_t">时间区间:</text>
- <uni-datetime-picker v-model="searchTime" type="datetimerange" :hide-second="true" class="datepick" rangeSeparator=" - " />
- <!-- <timeSlot
- ref="timeslot"
- :title="'选择时间段'"
- @confirm="confirmTime">
- </timeSlot> -->
- <!-- <el-date-picker
- v-model="searchTime"
- type="datetimerange"
- range-separator="-"
- start-placeholder="开始时间"
- end-placeholder="结束时间"
- /> -->
- </view>
-
- </view>
- <view class="row2">
- <view class="office">
- <view class="time_t">
- 科室:
- </view>
- <picker @change="handleGetOffice" :value="officeIndex" :range="officeArr">
- <view class="uni-input">{{officeArr[officeIndex]}}</view>
- </picker>
- </view>
- <view class="presid">
- <picker @change="handleGetType" :value="typeIndex" :range="typeArr">
- <view class="uni-input">{{typeArr[typeIndex]}}</view>
- </picker>
- </view>
- <view v-if="typeIndex === 0" class="search">
- <uni-easyinput prefixIcon="search" v-model="searchName" placeholder="请输入姓名" />
- </view>
- <view v-else class="search">
- <uni-easyinput prefixIcon="search" v-model="searchPreNo" placeholder="请输入处方号" />
- </view>
- <button type="primary" @click="handleSearch" class="search-button">搜索</button>
- </view>
- <view class="row3">
- <view class="tag-view" v-for="(v, i) in tags" :key="i">
- <uni-tag :circle="true" :inverted="!searchTags.includes(v)" :text=v @click="handleGetTags(v)" />
- </view>
- </view>
- </view>
- </view>
- </view>
- </view>
- <view class="tab-content">
- <view class="order-list">
- <scroll-view
- v-if="orderList.length > 0"
- class="order-list-wrap"
- scroll-y="true"
- :scroll-top="50"
- @scrolltoupper="loadPreList"
- @scrolltolower="loadMoreList"
- >
- <template v-for="(v,i) in orderList" :key="i">
- <orderCard v-if="v" :v="v" :index="i" :c=tabActive class="order-card"
- @update-list="updateList"
- />
- </template>
- </scroll-view>
- <view v-else class="text">
- <image class="zwsj" aspectFill :src="'/static/zwsj.png'" />
- </view>
- </view>
- <view v-if="isBottom" class="order-bottom">
- <view class="text">-- 没有更多数据 --</view>
- </view>
- </view>
- </view>
- </view>
- </template>
- <script setup>
- import NavBar from "@/components/nav-bar/nav-bar.vue"
- import OrderCard from "@/components/order-card/order-card.vue"
- import { onMounted,ref, getCurrentInstance } from 'vue'
- import { onLoad } from "@dcloudio/uni-app"
- import {receiveOrderList } from "@/static/js/api.js"
- import {releaseOrder} from "@/static/js/request.js"
- // import { ID_INJECTION_KEY } from 'element-plus'
- const userInfo = ref({})
- const searchVal = ref('')
- const tabList = ref([
- {title:"今日待完成", status: '0', leng:0},
- {title:"历史处方", status: '1'},
- ])
- const currentStatus = ref(0)
- const tabActive = ref(0) // 当前tab Index
- const tabName = ref('今日待完成') // 当前tab Name
- // const tags = ref([])
- const orderList = ref([
- {id:1,prescriptionTime:'2023-07-06 14:54', faceurl:'/static/hz.png',name:'张三三',sex: '女',age: 23,disName:'胃脘痛病',symName:'脾胃虚寒证',deployState:'调配',preNo:10230516091026,department:'中医内科',dosageForm:'汤剂',number:3,prescriptionSum:135.62,preMzZy:'1'},
- {id:2,prescriptionTime:'2023-07-06 14:54', faceurl:'/static/hz.png',name:'张三三',sex: '女',age: 23,disName:'胃脘痛病',symName:'脾胃虚寒证',deployState:'调配',preNo:10230516091026,department:'中医内科',dosageForm:'汤剂',number:3,prescriptionSum:135.62,preMzZy:'1'},
- {id:3,prescriptionTime:'2023-07-06 14:54', faceurl:'/static/hz.png',name:'张三三',sex: '女',age: 23,disName:'胃脘痛病',symName:'脾胃虚寒证',deployState:'调配',preNo:10230516091026,department:'中医内科',dosageForm:'汤剂',number:3,prescriptionSum:135.62,preMzZy:'2'},
- {id:4,prescriptionTime:'2023-07-06 14:54', faceurl:'/static/hz.png',name:'张三三',sex: '女',age: 23,disName:'胃脘痛病',symName:'脾胃虚寒证',deployState:'调配',preNo:10230516091026,department:'中医内科',dosageForm:'汤剂',number:3,prescriptionSum:135.62,preMzZy:'1'},
- {id:5,prescriptionTime:'2023-07-06 14:54', faceurl:'/static/hz.png',name:'张三三',sex: '女',age: 23,disName:'胃脘痛病',symName:'脾胃虚寒证',deployState:'调配',preNo:10230516091026,department:'中医内科',dosageForm:'汤剂',number:3,prescriptionSum:135.62,preMzZy:'2'}
- ])
- const isBottom = ref(false) // 是否触底
- const officeArr = ref(['全部','中医骨伤科门诊一','中医内科门诊一','中医儿科门诊'])
- const officeIndex = ref(0)
- const typeArr = ref(['姓名:','处方号:'])
- const typeIndex = ref(0)
- const searchTime =ref([])
- const searchDepartment = ref('')
- const searchName = ref('')
- const searchPreNo = ref('')
- const searchSex = ref('')
- const searchPreMzZy = ref('')
- const searchStatus = ref('')
- const searchTags = ref([])
- const tags = ref(['全部','门诊','住院','男','女','煎煮','发药'])
- const deployArr = ref([
- {name:'抓药', id: '1' },
- {name:'复核', id: '2' },
- {name:'浸泡', id: '3' },
- {name:'煎煮', id: '4' },
- {name:'打包', id: '5' },
- ])
- const page = ref(1)
- const total = ref(0)
- const pageSize = ref(10)
- const status = ref('')
- const today =ref({
- leng: 0,
- })
- // app.provide(ID_INJECTION_KEY, {
- // prefix: Math.floor(Math.random() * 10000),
- // current: 0,
- // })
- const {proxy} = getCurrentInstance()
- onMounted(() => {
-
- })
- onLoad(async () => {
- const token = uni.getStorageSync('token')
- userInfo.value.name = uni.getStorageSync('username')
- userInfo.value.workStatus = uni.getStorageSync('workStatus') || '0'
- const params = {
- token: token,
- data:JSON.stringify({
- currentUserId: parseInt(uni.getStorageSync('userId')) || 0,
- page: page.value,
- pageSize: pageSize.value,
- status: '0'
- })
- }
-
- const {data:res} = await receiveOrderList(params)
- if (res.code === 200) {
- total.value = res.total
- orderList.value = res.rows
- if(tabActive.value ==0){
- tabList.value[0].leng = orderList.value.length
- }
- }
- })
- // 子传父,更新userInfo
- const updateUser = (v)=>{
- console.log('updateUserStatus', v)
- userInfo.value.workStatus = v
- }
- const updateList = (v)=>{
- console.log('updateList', v)
- }
- const handleSearch = async()=>{
- // const token = uni.getStorageSync('token')
- // console.log('handleSearch token',token)
- console.log('handleSearch searchVal', searchVal.value)
- console.log('currentStatus.value', currentStatus.value)
- searchVal.value = searchVal.value.trim()
- if(tabActive.value ===0 && searchVal.value) {
- const params = {
- token: uni.getStorageSync('token'),
- data: JSON.stringify({
- currentUserId: parseInt(uni.getStorageSync('userId')) || 0,
- name: searchVal.value,
- page: page.value,
- pageSize: pageSize.value,
- status: tabList.value[tabActive.value].status
- })
- }
- const {data:res} = await receiveOrderList(params)
- if (res.code === 200) {
- total.value = res.total
- orderList.value = res.rows
- }
- }
- if(tabActive.value===1){
- const params = {
- token: uni.getStorageSync('token'),
- data: JSON.stringify({
- currentUserId: parseInt(uni.getStorageSync('userId')) || 0,
- startTime: searchTime.value[0] || '',
- endTime: searchTime.value[1] || '',
- name: searchVal.value || '',
- preNo: searchPreNo.value || '',
- prescriptionStatus: searchStatus.value || '',
- sex: searchSex.value || '',
- preMzZy: searchPreMzZy.value || '',
- page: page.value,
- pageSize: pageSize.value,
- status: tabList.value[tabActive.value].status
- })
- }
- console.log('params',params)
- const {data:res} = await receiveOrderList(params)
- if (res.code === 200) {
- total.value = res.total
- orderList.value = res.rows
- if(tabActive.value ==0){
- tabList.value[0].leng = orderList.value.length
- }
- }
- }
- }
- const handleRefresh = async()=>{
-
- console.log('yijianshifang >orderList>>', orderList.value)
- let ids = ''
- orderList.value.forEach((v)=>{if(v.id){
- ids= ids+v.id+','
- console.log('yijianshifang >orderList>>',ids)
- }})
-
- console.log('yijianshifang >orderList>>666',ids)
- const params = {
- token: uni.getStorageSync('token'),
- data:{ids:ids}
- }
- const {data:res} = await releaseOrder(params)
- if (res.code === 200) {
- const paramss = {
- token: uni.getStorageSync('token'),
- data:JSON.stringify({
- currentUserId: parseInt(uni.getStorageSync('userId')),
- page: page.value,
- pageSize: pageSize.value,
- status: tabList.value[tabActive.value].status
- })
- }
-
- const {data:res} = await receiveOrderList(paramss)
- if (res.code === 200) {
- total.value = res.total
- orderList.value = res.rows
- if(tabActive.value ==0){
- tabList.value[0].leng = orderList.value.length
- }
- }
- }
- }
- const handleGetOffice = (e)=>{
- console.log('handleGetOffice', e.detail.value)
- console.log('officeIndex', officeIndex)
- console.log('officeIndex', officeIndex)
- officeIndex.value = e.detail.value
- }
- const handleGetType = (e)=>{
- console.log('handleGetType', e.detail.value)
- console.log('typeIndex', typeIndex)
- console.log('typeArr', typeIndex)
- typeIndex.value = e.detail.value
- if(typeIndex.value ===1 ){
- searchName.value = ''
- } else {
- searchPreNo.value = ''
- }
- }
- const handleGetTags = (v)=>{
- console.log('handleGetTags', v)
- if(!searchTags.value.includes(v)) {
- searchTags.value.push(v)
- } else {
- searchTags.value.splice(searchTags.value.indexOf(v), 1)
- }
- switch (v) {
- case '全部':
- if(searchTags.value.includes(v)){
- searchTags.value = ['全部']
- searchTime.value = []
- searchDepartment.value = ''
- searchName.value = ''
- searchPreNo.value = ''
- searchSex.value = ''
- searchPreMzZy.value = ''
- searchStatus.value = ''
- }
- break
- case '门诊':
- if(searchTags.value.includes(v) && searchTags.value.includes('住院')){
- searchTags.value.splice(searchTags.value.indexOf('住院'), 1)
- }
- if(searchTags.value.includes('全部')){
- searchTags.value.splice(searchTags.value.indexOf('全部'), 1)
- }
- searchPreMzZy.value = '1'
- break
- case '住院':
- if(searchTags.value.includes(v) && searchTags.value.includes('门诊')){
- searchTags.value.splice(searchTags.value.indexOf('门诊'), 1)
- }
- if(searchTags.value.includes('全部')){
- searchTags.value.splice(searchTags.value.indexOf('全部'), 1)
- }
- searchPreMzZy.value = '2'
- break
- case '男':
- if(searchTags.value.includes(v) && searchTags.value.includes('女')){
- searchTags.value.splice(searchTags.value.indexOf('女'), 1)
- }
- if(searchTags.value.includes('全部')){
- searchTags.value.splice(searchTags.value.indexOf('全部'), 1)
- }
- searchSex.value = '男'
- break
- case '女':
- if(searchTags.value.includes(v) && searchTags.value.includes('男')){
- searchTags.value.splice(searchTags.value.indexOf('男'), 1)
- }
- if(searchTags.value.includes('全部')){
- searchTags.value.splice(searchTags.value.indexOf('全部'), 1)
- }
- searchSex.value = '女'
- break
- case '煎煮':
- if(searchTags.value.includes(v) && searchTags.value.includes('发药')){
- searchTags.value.splice(searchTags.value.indexOf('发药'), 1)
- }
- if(searchTags.value.includes('全部')){
- searchTags.value.splice(searchTags.value.indexOf('全部'), 1)
- }
- searchStatus.value = '煎煮'
- break
- case '发药':
- if(searchTags.value.includes(v) && searchTags.value.includes('煎煮')){
- searchTags.value.splice(searchTags.value.indexOf('煎煮'), 1)
- }
- if(searchTags.value.includes('全部')){
- searchTags.value.splice(searchTags.value.indexOf('全部'), 1)
- }
- searchStatus.value = '发药'
- break
- default:
- searchTags.value = ['全部']
- }
- }
- // 更新处方列表
- const checkIndex = async(index) => {
- tabActive.value = index
- page.value= 1
- console.log('index',index)
- tabName.value = tabList.value[index].title
- currentStatus.value = parseInt(tabList.value[index].status)
- const token = uni.getStorageSync('token')
- const paramss = {
- token: uni.getStorageSync('token'),
- data:JSON.stringify({
- currentUserId: parseInt(uni.getStorageSync('userId')),
- page: page.value,
- pageSize: pageSize.value,
- status: tabList.value[tabActive.value].status
- })
- }
- console.log('checkIndex params',paramss)
- const {data:res} = await receiveOrderList(paramss)
- if (res.code === 200) {
- total.value = res.total
- orderList.value = res.rows
- if(tabActive.value ==0){
- tabList.value[0].leng = orderList.value.length
- }
- }
- }
- const openTime = ()=>{
- proxy.$refs.timeslot.open()
- }
- const loadMoreList =async()=>{
- console.log('loadMoreList>>>')
- page.value = page.value +1
- const params = {
- token: uni.getStorageSync('token'),
- data: JSON.stringify({
- currentUserId: parseInt(uni.getStorageSync('userId')) || 0,
- name: searchVal.value,
- page: page.value,
- pageSize: pageSize.value,
- status: tabActive.value + ''
- })
- }
- const {data:res} = await receiveOrderList(params)
- console.log('orderList.value before',orderList.value)
- if (res.code === 200) {
- total.value = res.total
- console.log('res.rows after',res.rows)
- res.rows.forEach(item=>{
- orderList.value.push(item)
- })
-
- console.log('orderList.value after',orderList.value)
- if(tabActive.value ==0){
- console.log('tabActive===',)
- tabList.value[0].leng = orderList.value.length
- }
- }
- }
- const loadPreList = async()=>{
- console.log('loadPreList>>>')
- page.value = 1
- const params = {
- token: uni.getStorageSync('token'),
- data: JSON.stringify({
- currentUserId: parseInt(uni.getStorageSync('userId')) || 0,
- name: searchVal.value,
- page: page.value,
- pageSize: pageSize.value,
- status: tabList.value[tabActive.value].status
- })
- }
- const {data:res} = await receiveOrderList(params)
- if (res.code === 200) {
- total.value = res.total
- orderList.value = res.rows
- if(tabActive ==0){
- tabList.value[0].leng = orderList.value.length
- }
- }
- }
- </script>
- <style lang="scss">
- .main {
- display: flex;
- flex-direction:column;
- justify-content:flex-start;
- // height: 2000px;
- width: 750rpx;
- .nav{
- display: flex;
- height:74.34rpx;
- width: 750rpx;
- // position: sticky;
- // top: 0;
- }
- .body{
- display: flex;
- height:calc(100% - 74.34rpx);
- flex-direction:column;
- justify-content:flex-start;
- .tab-box {
- display: flex;
- position: sticky;
- flex-direction:column;
- z-index: 100;
- .tab-bar{
- height: 62.5rpx;
- display: flex;
- justify-content:center;
- width: 100%;
- // border: 1px solid #000;
- .tab_item{
- display: flex;
- flex:1;
- justify-content:center;
- align-items: center;
- font-size: 17.5rpx;
- background-color: #fff;
- color: #000;
- }
- .active{
- border-bottom: 5rpx solid #18C7B0;
- }
- }
- .search-bar{
- display: flex;
- background-color: #fff;
- border-radius: 4rpx;
- .today{
- display: flex;
- flex-direction:row;
- justify-content: flex-start;
- .search{
- width: 453.75rpx;
- margin: 13.75rpx 10.1rpx;
- :deep(.uni-easyinput__placeholder-class){
- font-size: 15rpx;
- }
- }
- .search-button{
- display: flex;
- justify-content:center;
- align-items: center;
- width:112.5rpx;
- margin: 13.75rpx 10.1rpx;
- font-size: 15rpx;
- background-color: #18C7B0;
- }
- .refresh {
- display: flex;
- justify-content:center;
- align-items: center;
- width:120rpx;
- margin: 13.75px 22.19rpx;
- font-size: 15rpx;
- background-color: #18C7B0;
- }
- .active{
- background-color:#DEDEDE;
- }
- }
- .history{
- display: flex;
- width: 100%;
- .searchchoice{
- padding: 0 10rpx;
- display: flex;
- width: 100%;
- flex-direction:column;
- font-size: 24rpx;
- .row1{
- display: flex;
- width: 100%;
- justify-content:flex-start;
- align-items: center;
- margin: 10rpx 0 10rpx;
- font-size: 15rpx;
- .timequan{
- display: flex;
- justify-content:center;
- align-items: center;
- :deep(.uni-date__x-input){
- font-size: 15rpx;
- }
- .datepick {
- z-index: 999;
- width: 627.5rpx;
- }
- }
-
- }
- .row2{
- display: flex;
- width: 100%;
- justify-content:flex-start;
- align-items: center;
- margin: 0 0 10rpx;
- .office{
- display: flex;
- justify-content:center;
- align-items: center;
- font-size: 15rpx;
- .uni-input{
- display: flex;
- justify-content:center;
- align-items: center;
- border:1px solid #e1e5f1;
- font-size: 15rpx;
- width:190rpx;
- // height: 40rpx;
- border-radius: 5rpx;
- background-color: #e1e5f1;
- margin-right: 10rpx;
- }
- }
- .uni-input{
- display: flex;
- justify-content:center;
- align-items: center;
- border:1px solid #e1e5f1;
- font-size: 15rpx;
- width:100rpx;
- height: 40rpx;
- border-radius: 5rpx;
- background-color: #e1e5f1;
- margin-right: 10rpx;
- }
- .search{
- width: 187.5rpx;
- :deep(.uni-easyinput__placeholder-class){
- font-size: 15rpx;
- }
- }
- .search-button{
- width:120rpx;
- margin: 8rpx 12rpx;
- font-size: 15rpx;
- color: #fff;
- background-color: #18C7B0;
- }
- }
- .row3{
- display: flex;
- width: 100%;
- justify-content:flex-start;
- align-items: center;
- margin: 0 0 18rpx;
- .tag-view:deep(.uni-tag){
- display: inline;
- font-size: 15rpx;
- font-weight:500;
- margin-right: 16.67rpx;
- // height: 40px;
- width: 120rpx;
- padding: 6rpx 20rpx;
- }
- }
-
- }
-
- }
- }
- }
- .tab-content{
- display: flex;
- margin: 8rpx 10rpx;
- border-radius: 4rpx;
- background-color: #fff;
- width: calc(100% - 20rpx);
- height: 980rpx;
- z-index:10;
- .order-list{
- padding: 8rpx;
- display: flex;
- width: 100%;
- // height: 100%;
- .text{
- display: flex;
- width: 750rpx;
- justify-content:center;
- align-items: flex-start;
- .zwsj {
- margin-top: 103.13rpx;
- width: 640.63rpx;
- height: 310rpx;
- }
- }
- .order-list-wrap{
- display: flex;
- .order-card{
- display: flex;
- width: 100%;
- // border-bottom: 1px solid #e6e8ee;;
- }
- }
- }
- }
- }
- }
- </style>
|