123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591 |
- <template>
- <view class="conte">
- <view class="header">
- <text class="title">{{userInfo.dept.dept}}
- <text class="red" v-if="otherData">
- (单 {{otherData.pathologyFormNum}}, 标 {{otherData.specimenNum}})
- </text>
- </text>
- <view class="filter" @click="filterClick">
- <text class="newicon newicon-shaixuan icon"></text>
- </view>
- </view>
- <view class="height-list"></view>
- <view class="list" @click="detail(item)" v-for="(item, index) in list" :key="index">
- <view class="df-list list-border">
- <view>{{item.applyCode}}</view>
- <view>{{item.status.name}}</view>
- </view>
- <view class="df-list">
- <view class="df-list-over-left">科室:{{item.patientDTO.department.dept}}</view>
- <view class="df-list-over">部位:{{item.takePart}}</view>
- </view>
- <view class="df-list">
- <view class="df-list-over-left">患者:{{item.patientName}}({{item.patientDTO.bedNum}}床)</view>
- <view class="df-list-over">住院号:{{item.patientDTO.patientCode}}</view>
- </view>
- <view class="df-list">
- <view class="df-list-over-left">离:{{yyTimeFilter(item.inVitroTime)}}</view>
- <view class="df-list-over">固:{{yyTimeFilter(item.fixationTime)}}</view>
- </view>
- <view class="list-content"></view>
- </view>
- <uni-drawer width="400px" :visible="isShowFilter" mode="right" :maskClick="false" @close="filterCacel()">
- <view class="execFilterMask" @touchmove.stop.prevent>
- <view class="execFilter">
- <radio-group @change="radioChange">
- <label class="df uni-list-cell uni-list-cell-pd" v-for="(item, index) in specimenData" :key="item.id">
- <view>
- <radio :value="item.id+''" activeBackgroundColor="#49B856" :checked="index == current" />
- </view>
- <view>{{item.dept}}</view>
- </label>
- </radio-group>
- <view>
- <label class="df uni-list-cell uni-list-cell-pd">固定并存放标本间</label>
- <checkbox-group @change="checkChange">
- <label class="df uni-list-cell uni-list-cell-pd">
- <checkbox color="#49B856" value="1" :checked="depositCheck" />是否开启
- </label>
- </checkbox-group>
- </view>
- <view class="execFilterFooter">
- <view class="btn" @click="filterCacel()" v-if="isDept || specimenData.length==0">取消</view>
- <view class="btn" @click="filterOk()">确认</view>
- </view>
- </view>
- </view>
- </uni-drawer>
- <!-- PDA扫描 -->
- <scanner></scanner>
- <!-- apk自动更新 -->
- <appUpdata v-if="isApp && isUpdate" @getUpdate="isUpdate=false"></appUpdata>
- </view>
- </template>
- <script>
- import {
- get,
- post
- } from "../../http/http.js";
- import scanner from "../../components/scanner/scanner.vue";
- import appUpdata from "../../components/appUpdata/appUpdata.vue";
- export default {
- data() {
- return {
- list: [],
- idx: 0,
- isDept:null,
- userInfo:uni.getStorageSync('userData').user,
- hosId: uni.getStorageSync('userData').user.currentHospital.id,
- specimenData: [],
- isShowFilter: false,
- current: null,
- deptId:null,
- totalNum:0,
- hasMore:true,
- SMFlag:true,
- otherData:null,
- isApp:false,
- isUpdate:false,
- depositCheck:false,
- }
- },
- components: {
- scanner,
- appUpdata
- },
- methods: {
- // 时间格式化
- yyTimeFilter(timestamp) {
- var date = new Date(timestamp); // 时间戳为毫秒级别
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var day = date.getDate();
- var hours = date.getHours();
- var minutes = date.getMinutes();
- var seconds = date.getSeconds();
-
- // 格式化月份、日期、小时、分钟、秒
- month = month < 10 ? '0' + month : month;
- day = day < 10 ? '0' + day : day;
- hours = hours < 10 ? '0' + hours : hours;
- minutes = minutes < 10 ? '0' + minutes : minutes;
- seconds = seconds < 10 ? '0' + seconds : seconds;
-
- return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
- },
- // 选择check
- checkChange(e){
- let values = e.detail.value;
- if(values[0]=='1'){
- this.depositCheck = true
- }else{
- this.depositCheck = false
- }
- },
- // 打开科室选择
- filterClick() {
- this.isShowFilter = true
- this.$nextTick(_=>{
- let userInfo = uni.getStorageSync('userData').user
- if(this.isDept){
- for (let i = 0; i < this.specimenData.length; i++) {
- if (this.specimenData[i].id == userInfo.dept.id) {
- this.current = i;
- this.deptId = userInfo.dept.id;
- break;
- }
- }
- }
- })
- },
- // 关闭科室弹框
- filterCacel() {
- this.isShowFilter = false
- },
- // 确定关联科室
- filterOk() {
- let userInfo = uni.getStorageSync('userData').user
- if(!this.isDept){
- if(!this.deptId){
- uni.showToast({
- title: '请选择科室',
- duration: 1000,
- icon:'none'
- });
- return
- }
- }
- uni.showLoading({
- title: "加载中",
- mask: true,
- });
- let query = {
- user: {
- dept:{
- id:this.deptId?this.deptId:userInfo.dept.id
- },
- id:userInfo.id,
- fixedStoredSpecimenRoom:this.depositCheck ? 1 : 0
- },
- }
- post('/data/updData/user', query).then(res => {
- uni.hideLoading();
- this.filterCacel();
- this.getCurrentUserNow()
- this.idx = 0
- this.getList()
- });
- },
- // getNewDept(){
- // let postData = {
- // currentHosId: this.hosId,
- // loginType: "Wechat",
- // };
- // post('/auth/changeHospital',postData).then((result) => {
- // if (result.status == 200) {
- // this.getCurrentUserNow();
- // }
- // });
- // },
- // 获取当前用户信息
- getCurrentUserNow() {
- get('/user/data/getCurrentUser').then((data) => {
- if (data["status"] == 200) {
- this.loginUser = data.data
- let user = uni.getStorageSync('userData');
- user.user.dept = data["data"].dept;
- user.user.currentHospital = data["data"].currentHospital;
- this.userInfo.dept.dept = data["data"].dept.dept;
- user.user.fixedStoredSpecimenRoom = data["data"].fixedStoredSpecimenRoom;
- uni.setStorageSync('userData',user)
- let userInfo = uni.getStorageSync('userData').user
- this.isDept = this.specimenData.find(i=>i.id == userInfo.dept.id)
- if(userInfo.fixedStoredSpecimenRoom!=null){
- this.depositCheck = userInfo.fixedStoredSpecimenRoom == 1 ? true : false
- }
- }
- });
- },
- // 选择科室
- radioChange(evt) {
- this.deptId = evt.detail.value
- for (let i = 0; i < this.specimenData.length; i++) {
- if (this.specimenData[i].id == evt.detail.value) {
- this.current = i;
- break;
- }
- }
- },
- // 查看详情
- detail(item){
- // this.padChange('862420344832\n')
- uni.navigateTo({
- url: `/pages/specimenPort/detail?detailId=${item.id}`
- });
- },
- // 获取标本间科室
- getDept(backType) {
- post('/common/common/getDictionary', {
- key: "dept_type",
- type: "list"
- }).then((res2) => {
- let item2 = res2.find(i => i.name == '标本间科室')
- let query = {
- idx: 0,
- sum: 9999,
- department: {
- hospital: {
- id: this.hosId || ""
- },
- type: {
- id: item2.id || ""
- },
- },
- };
-
- post('/data/fetchDataList/department', query).then((res) => {
- this.specimenData = res.list
- if(!backType){
- this.isShowFilter = true
- }
- let userInfo = uni.getStorageSync('userData').user
- if(userInfo.fixedStoredSpecimenRoom!=null){
- this.depositCheck = userInfo.fixedStoredSpecimenRoom == 1 ? true : false
- }
- this.isDept = this.specimenData.find(i=>i.id == userInfo.dept.id)
- this.$nextTick(_=>{
- if(this.isDept){
- for (let i = 0; i < this.specimenData.length; i++) {
- if (this.specimenData[i].id === userInfo.dept.id) {
- this.current = i;
- break;
- }
- }
- }
- })
- if(this.isDept){
- this.getList()
- }
- });
- });
- },
- // 分页数据
- getList() {
- uni.showLoading({
- title: "加载中",
- mask: true,
- });
- let query = {
- idx: this.idx,
- pathologyForm: {
- detailsType: "specimenDept",
- keyWords: "",
- hosId: this.hosId,
- },
- sum: 20
- }
- post('/data/fetchDataList/pathologyForm', query).then(res => {
- uni.hideLoading();
- if(res.list.length){
- this.hasMore = true;
- this.list = this.idx === 0 ? res.list : this.list.concat(res.list);
- this.otherData = res.otherData
- }else{
- if(this.idx == 0){
- this.list = []
- }
- this.hasMore = false;
- }
- this.totalNum = res.totalNum;
- });
- },
- // PDA扫描
- padChange(scannerCode){
- scannerCode = scannerCode.replace('\n','')
- if (!this.SMFlag) {
- return;
- }
- this.SMFlag = false;
- uni.showLoading({
- title: "加载中",
- mask: true,
- });
- post("/pathology/scanCode", {
- barcode:scannerCode,
- platform:"app"
- }).then((res) => {
- this.SMFlag = true
- uni.hideLoading();
- if(res.status==200){
- let data = res.data[0]
- let item = null
- let str = null
- if(scannerCode.indexOf(':')!=-1){
- str = scannerCode.split(':')
- item = data.pathologySpecimenDTOList.find(i=>i.specimenCode == str[1])
- }else{
- item = data.pathologySpecimenDTOList.find(i=>i.specimenCode == scannerCode)
- }
- // let item = data.pathologySpecimenDTOList.find(i=>i.specimenCode == scannerCode)
- if(!item.fixationTime && data.pathologyFormType==0){
- if(data.status.value==2 || data.status.value==3 ||
- data.status.value==4){
- uni.navigateTo({
- url: `/pages/specimenPort/scan?data=${JSON.stringify(data)}&type=${res.type}`
- });
- }else{
- uni.showToast({
- title: '查询到标本申请单信息',
- duration: 1000,
- icon:'none'
- });
- setTimeout(_=>{
- uni.navigateTo({
- url: `/pages/specimenPort/detail?detailId=${data.id}`
- });
- },800)
- }
- }else if(item.fixationTime && data.pathologyFormType==0){
- uni.showToast({
- title: '查询到标本申请单信息',
- duration: 1000,
- icon:'none'
- });
- setTimeout(_=>{
- uni.navigateTo({
- url: `/pages/specimenPort/detail?detailId=${data.id}`
- });
- },800)
- }else{
- uni.showToast({
- title: '该申请单类型不是病理检查申请单',
- duration: 1000,
- icon:'none'
- });
- }
- }else{
- uni.showModal({
- title: "提示",
- content: `${res.msg} \n 扫描内容:${scannerCode}`,
- confirmColor:'#49b856',
- success: (res) => {
- if (res.confirm) {
- console.log("用户点击确定");
- } else if (res.cancel) {
- console.log("用户点击取消");
- }
- },
- });
- }
- })
- },
- },
- onReachBottom() {
- this.idx++;
- if (this.hasMore) {
- this.getList(); // 当触底时加载更多数据
- }
- },
- onBackPress(e) {
- // backbutton:物理按键返回
- if (e.from === 'backbutton') {
- uni.navigateTo({
- url: `/pages/homePage/homePage`
- });
- return true
- }
- },
- onShow() {
- let that = this
- // #ifdef APP-PLUS
- this.isUpdate = true
- this.isApp = true
- uni.$off('scan') // 每次进来先 移除全局自定义事件监听器
- uni.$on('scan', function(data) {
- that.padChange(data)
- })
- // #endif
- },
- onLoad(option) {
- let backType = option.backType ? option.backType : null
- this.getDept(backType)
- // #ifdef APP-PLUS
- this.isUpdate = true
- this.isApp = true
- // #endif
- }
- }
- </script>
- <style lang="less" scoped>
- page {
- background: #F7F7F7;
- }
- .conte {
- .header {
- height: 80rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- position: relative;
- position: fixed;
- width: 100%;
- background: #F7F7F7;
- .title {
- color: #57BC63;
- font-size: 32rpx;
- font-weight: 500;
- .red{
- color: red;
- margin-left: 10px;
- }
- }
- .filter {
- position: absolute;
- right: 15rpx;
- top: 24rpx;
- .icon{
- font-size: 34rpx;
- }
- }
- }
- .height-list {
- height: 44px;
- }
- .list {
- // margin-bottom: 20rpx;
- background: #fff;
- .df-list {
- display: flex;
- justify-content: space-between;
- padding: 14rpx 20rpx;
- font-size: 28rpx;
- color: #555555;
- .df-list-over-left{
- overflow: hidden;
- flex: 1;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .df-list-over{
- overflow: hidden;
- flex: 1;
- text-overflow: ellipsis;
- white-space: nowrap;
- margin-left: 20rpx;
- }
- }
- .list-border {
- border-bottom: 1px solid #D2D2D2;
- height: 46rpx;
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: 32rpx !important;
- font-weight: 500;
- color: #000;
- }
- .list-content{
- height: 22rpx;
- background: #F7F7F7;
- }
- }
- .df {
- display: flex;
- height: 80rpx;
- align-items: center;
- padding: 0 20rpx;
- border-bottom: 1px solid #D2D2D2;
- }
- .execFilterMask{
- .execFilter{
- position: relative;
- background-color: #fff;
- height: 100vh;
- border-radius: 100rpx 100rpx 0 0;
-
- .execFilterHeader{
- height: 70rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- border-bottom: 2rpx solid #ccc;
- }
-
- .execFilterBody{
- .execFilterItem{
- padding: 32rpx;
- border-bottom: 2rpx dashed #ccc;
- &:last-of-type{
- border-bottom: none;
- }
- .execFilterItemHeader{}
- .execFilterItemBody{
- display: flex;
- flex-wrap: wrap;
- padding: 32rpx 0 0;
- justify-content: space-between;
- text-align: left;
-
- .execFilterItemBox{
- width: 200rpx;
- height: 80rpx;
- text-align: center;
- line-height: 80rpx;
- background-color: #f6f6f6;
- margin-bottom: 20rpx;
- border-radius: 80rpx;
- &.active{
- color: #fff;
- background-color: #49b856;
- }
- }
-
- .deptName {
- height: 80rpx;
- background-color: #f6f6f6;
- border-radius: 20rpx;
- padding: 0 20rpx;
- width: 100%;
- }
- }
- }
- }
-
- .execFilterFooter {
- position: absolute;
- bottom: 0;
- right: 0;
- left: 0;
- line-height: 66rpx;
- height: 100rpx;
- display: flex;
- justify-content: space-between;
-
- .btn {
- height: 66rpx;
- flex: 1;
- margin: 0 1%;
- background-image: linear-gradient(to right, #72c172, #3bb197);
- color: #fff;
- border-radius: 8rpx;
- font-size: 28rpx;
- margin-top: 16rpx;
- text-align: center;
- }
- }
- }
- }
- }
- </style>
|