<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?"("+orderList.length+")":""}}</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">
						<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},
	{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(0)
const total = ref(0)
const pageSize = ref(10)
const status = ref('')


// 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: currentStatus.value
		})
	}
	
	const {data:res} = await receiveOrderList(params)
	if (res.code === 200) {
		total.value = res.total
		orderList.value = res.rows
	}
})

// 子传父，更新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(currentStatus.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: currentStatus.value
			})
		}
		const {data:res} = await receiveOrderList(params)
		if (res.code === 200) {
			total.value = res.total
			orderList.value = res.rows
		}
	}
	if(currentStatus.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: currentStatus.value || 0
			})
		}
		console.log('params',params)
		const {data:res} = await receiveOrderList(params)
		if (res.code === 200) {
			total.value = res.total
			orderList.value = res.rows
		}
	}
}

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: currentStatus.value
			})
		}
		
		const {data:res} = await receiveOrderList(paramss)
		if (res.code === 200) {
			total.value = res.total
			orderList.value = res.rows
		}
	}
}

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
	tabName.value = tabList.value[index].title
	currentStatus.value = parseInt(tabList.value[index].status)
	const token = uni.getStorageSync('token')
	const params = {
		token: token,
		data: {
			status: currentStatus.value,
			page: page.value,
			pageSize: pageSize.value,
		}
	}
	console.log('checkIndex params',params)
	const {data:res} = await receiveOrderList(params)
	if (res.code === 200) {
		total.value = res.total
		orderList.value = res.rows
	}
}

const openTime = ()=>{
    proxy.$refs.timeslot.open()
}


</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{
						width:112.5rpx;
						margin: 13.75rpx 4rpx;
						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;
								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>
