lincl пре 3 година
родитељ
комит
d7216f2e75

+ 3 - 4
mini-pro-web/src/mixins/common.js

@ -190,11 +190,11 @@ Vue.mixin({
            return fmt;
        },
        $hasAuth(url, url1, url2){
            function func(list, name){
            function func(list, name, isLeaf){
                var e = _.find(list, v=>{
                    return v.url == name
                })
                return (e&&e.children) || ''
                return isLeaf? e : ((e&&e.children) || '')
            }
            var temp = func(this.$store.state.app.authMenu, url)
@ -212,8 +212,7 @@ Vue.mixin({
            if(!url2){
                return temp
            } 
            return func(temp, url2)
            return func(temp, url2, true)
        }
    }
})

+ 22 - 11
mini-pro-web/src/router/index.js

@ -147,17 +147,28 @@ router.beforeEach(async (to, from, next) => {
    .then(res=>{
        if((store.getters.user && store.getters.user.accessToken)) {
            if(!routerLoaded){
                findLoginRoleMenuTree({
                    roleId: store.getters.user.curRoleId
                })
                .then(res=>{
                    routerLoaded = true
                    var routeList = formatAuthMenu(res.detailModelList)
                    store.dispatch('SetAuthMenu', routeList)
                    console.log('routeList', routeList)
                    next()
                })
                .catch(err=>{
                findOneUserFormat({
                    id: store.getters.user.id
                }).then(userInfo2 => {
                    var userInfo = _.assignIn(store.getters.user, userInfo2);
                    store
                        .dispatch('SetLoginUser', userInfo)
                        .then(res=>{
                            findLoginRoleMenuTree({
                                roleId: store.getters.user.curRoleId
                            })
                            .then(res=>{
                                routerLoaded = true
                                var routeList = formatAuthMenu(res.detailModelList)
                                store.dispatch('SetAuthMenu', routeList)
                                console.log('routeList', routeList)
                                next()
                            })
                            .catch(err=>{
                                console.error(err)
                            })
                        })
                }).catch(err=>{
                    console.error(err)
                })
            } else {

+ 2 - 2
mini-pro-web/src/router/replenishment.js

@ -59,7 +59,7 @@ const routeMap = [
                path: "/replenishment/picking/list",
                name: "replenishmentPickingList",
                meta: {
                    title: "备药单详情",
                    title: "药品申领详情",
                    // hasTop: false,
                    hasBot: false
                },
@ -69,7 +69,7 @@ const routeMap = [
                path: "/replenishment/picking/detail",
                name: "replenishmentPickingDetail",
                meta: {
                    title: "备药单详情",
                    title: "药品申领详情",
                    // hasTop: false,
                    hasBot: false
                },

+ 8 - 8
mini-pro-web/src/views/device/temperature/index.vue

@ -17,21 +17,21 @@
        </div>
        <div v-if='form.temperaturecontrol'>
            <div class='c-333 c-f14 bgc-fff p15 c-border-b' >
                <div class='flex f_y_c'>
                <!-- <div class='flex f_y_c'>
                    <span>加热控制:</span>
                    <van-radio-group class='ml20' v-model="form.heat" direction="horizontal">
                        <van-radio name="0">关闭</van-radio>
                        <van-radio name="1">开启</van-radio>
                    </van-radio-group>
                </div>
                <div class='flex mt20'>
                </div> -->
                <div class='flex '>
                    <div class='lh46'>请设置目标温度值:</div>
                    <div style='flex:1' class='ml10'>
                        <div class='flex f_y_c'><van-field class='c-border w80' v-model="form.temperature" maxlength='2' type="digit" /><span class='ml10'>度</span></div>
                        <!-- <van-notice-bar class='bgc-fff pl0' wrapable :scrollable="false" >可输入的值范围为: {{form.heat==0?'2-25°':form.heat==1?'20-40°':''}}</van-notice-bar> -->
                    </div>
                </div>
                <div class='mt10'>最后一次发送的温度值为 22°</div>
                <!-- <div class='mt10'>最后一次发送的温度值为 22°</div> -->
                <div class='mt10 c-999'>指令发送成功后,请等待设备生效,设备每隔十分钟左右会返回一次最新实时温度值</div>
            </div>
            <div class='mt10 p10 bgc-fff c-f14 c-333 c-border-tb' v-if='form.temperaturecontrol'>
@ -69,7 +69,7 @@
                    <van-slider button-size='30px' v-model="form.humidity" @change="onChange" />
                    <div class='ml15'>{{form.humidity}}%</div>
                </div>
                <div class='mt20'>最后一次发送的湿度调整值为%</div>
                <!-- <div class='mt20'>最后一次发送的湿度调整值为%</div> -->
                <div class='mt10 c-999'>指令发送成功后,请等待设备生效,设备每隔十分钟左右会返回一次最新实时湿度值</div>
            </div>
            <div class='mt10 p10 bgc-fff c-f14 c-333 c-border-tb' v-if='form.humiditycontrol'>
@ -112,7 +112,7 @@ export default{
                temperature: '',
                humiditycontrol: '',
                temperaturecontrol:'',
                heat: '',
                heat: 1,
                warningTemperatureHeight: '',
                waringHumidityHeight: '',
                warningTemperatureLow: '',
@ -139,7 +139,7 @@ export default{
            if(n==0){
                this.form.checked1 = false;
                this.form.temperature = '';
                this.heat = ''
                this.heat = 1
            } else {
                this.form.temperature = this.temperature;
            }
@ -202,7 +202,7 @@ export default{
            Object.assign(json, JSON.parse(JSON.stringify(this.form)));
            json.humiditycontrol = json.humiditycontrol?'1':'0';
            json.temperaturecontrol = json.temperaturecontrol?'1':'0'
            json.heat = !json.heat&&json.heat!=0?'0':this.form.heat
            json.heat = 1
            medicineAbinetApi.updateTAndH(json).then(res=>{
                this.$toast.clear()
                if(res.status==200){

+ 1 - 1
mini-pro-web/src/views/drug/list.vue

@ -21,7 +21,7 @@
                class="item mb10 bgc-fff btb-e1e1e1 pt10 pb10 plr15">
                <van-row class="lh25 c-333">
                    <span class="fs-17">{{item.drugName}}</span>
                    <span class="fs-14 ml20">处方名称/项目名称:{{item.drugName}}</span>
                    <span class="fs-14 ml20">药品编码:{{item.drugCode}}</span>
                </van-row>
                <van-row class="lh25">
                    <van-col span="12" class="c-999">规格:<span class="c-333">{{item.specif}}</span></van-col>

+ 53 - 0
mini-pro-web/src/views/machine/components/Dialog.vue

@ -0,0 +1,53 @@
<template>
	<div class="machine-index-dialog">
		<van-popup v-model="show" >
			<div class="fs-14 c-646566 tc pt20 pb20">
				打印完成
			</div>
			<div class="btn tc  fs-16 c-17b3ec">
				<van-button @click="close" type="default" block>返回首页({{times}}s)</van-button>
			</div>
		</van-popup>
	</div>
</template>
<script>
var countDownFunc
export default {
  	data() {
    	return {
			show: true,
			times: 30
    	}
  	},
	mounted(){
		this.countDown()
	},
  	methods: {
		countDown(){
			this.times = 30
			countDownFunc = setInterval(()=>{
				if(this.times === 0){
					this.close()
				}
				this.times--
			}, 1000)
		},
		close(){
			clearInterval(countDownFunc)
			this.$emit('back')
		}
    },
}
</script>
<style lang="scss" scoped>
.machine-index-dialog {
	.van-popup {
		border-radius: 10px;
		width: 70vw;
		.van-button{
			border: 0;
			color: #17b3ec;
		}
	}
}
</style>

+ 104 - 27
mini-pro-web/src/views/machine/index.vue

@ -1,6 +1,6 @@
<template>
	<div class="machine-index" >
		<div v-show="step==3&&rsType!=3&&!inOut" class="back-btn" @click="onPrev">
		<div v-show="step==2 || (step==3&&rsType!=3&&!inOut)" class="back-btn" @click="onPrev">
			<img src="./img/fanhui_icon.png" alt="">
			<span>{{times}}s</span>
		</div>
@ -81,11 +81,13 @@
			</template>
		</div>
		<Dialog ref="Dialog" v-if="showPrintComplete" @back="onPrev"/>
		<Scan @onComplete="onComplete" v-show="step==2" @onBack="step=1"/>
		<Result @showOrderDetail="showOrderDetail" @outDrug="sendShipment" @onPrint="SetPrintPage" :rsType.sync="rsType" :orderList="orderList" :orderdetail="orderdetail" v-show="step==3" @onBack="step=2" @onBackIndex="step=1"/>
		<Result @showOrderDetail="checkCardNo" @outDrug="sendShipment" @onPrint="SetPrintPage" :rsType.sync="rsType" :orderList="orderList" :orderdetail="orderdetail" v-show="step==3" @onBack="step=2" @onBackIndex="step=1"/>
	</div>
</template>
<script>
import Dialog from './components/Dialog.vue';
import Scan from './components/Scan.vue';
import Result from './components/Result.vue';
import medicineAbinetApi from '@/api/api-medicineAbinet'
@ -94,7 +96,8 @@ export default {
	name: "machineIndex",
	components: {
		Scan,
		Result
		Result,
		Dialog
  	},
  	data() {
    	return {
@ -122,12 +125,16 @@ export default {
			times: 30,
			shippingType: '', //取药方式(1、扫码,2、医保卡)
			inOut: false,
			eventName: ''
			eventName: '',
			showPrintComplete: false,
			nextOrderDetail: ''
    	}
  	},
	watch:{
		step(n){
			if(n!=3){
			if(n==2){
				this.countDown()
			}else if(n!=3){
				this.rsType = 0
			}
		},
@ -150,22 +157,33 @@ export default {
			this.init(1)
		}
		window.SetPrintPage = this.SetPrintPage
		setTimeout(()=>{
			this.showPrintComplete = true
		}, 5000)
	},
  	methods: {
		onPrev(){
			if(this.rsType == 5){
			this.nextOrderDetail = ''
			this.showPrintComplete = false
			if(this.step == 2){
				this.step = 1
			} else if(this.rsType==1 || this.rsType==2 || this.rsType==4){
				var orderLen = this.orderList&&this.orderList.length>1
				if(orderLen){
					if(this.rsType==4){
						this.orderList.splice(this.orderList.indexOf(this.orderInfo), 1)
					}
					this.rsType = 5
				} else {
			} else {
				if(this.rsType == 5){
					this.step = 1
				}
			} 
				} else if(this.rsType==1 || this.rsType==2 || this.rsType==4){
					var orderLen = this.orderList&&this.orderList.length>1
					if(orderLen){
						if(this.rsType==4){
							this.orderList.splice(this.orderList.indexOf(this.orderInfo), 1)
						}
						this.rsType = 5
					} else {
						this.step = 1
					}
				} 
			}
		},
		devinfoAdvList(){
			var p = {
@ -371,18 +389,57 @@ export default {
					return
				}
				this.clearReadCardCountDown()
				if (msgobj.mess.indexOf("异常") != -1 || msgobj.mess.indexOf("读取信息失败") != -1) {
					this.$toast(msgobj.mess)
					return
				try{
					if (msgobj.mess.indexOf("异常") != -1 || msgobj.mess.indexOf("读取信息失败") != -1) {
						if(this.nextOrderDetail){
							this.$toast.loading({
								duration: 0,
								forbidClick: true, // 禁用背景点击
								loadingType: 'loading',
								message: msgobj.mess,
								onClose: ()=>{
									this.onPrev()
								}
							});
						} else {
							this.$toast(msgobj.mess)
						}
						return
					}
					var arr = msgobj.mess.split("\n");
					var json = {}
					arr.forEach(v => {
						var tmp = v.split(":")
						json[tmp[0]] = tmp[1]
					});
					var cardNo = json['卡号']
					if(this.nextOrderDetail){
						if(cardNo != this.oldCardNo){
							this.$toast.loading({
								duration: 0,
								forbidClick: true, // 禁用背景点击
								loadingType: 'loading',
								message: "医保卡信息不匹配,请重新操作",
								onClose: ()=>{
									this.onPrev()
								}
							});
						} else {
							var order = this.nextOrderDetail
							this.nextOrderDetail = ''
							this.showOrderDetail(order)
						}
						return
					}
					this.oldCardNo = cardNo
					this.checkOrderAndReturn({cardNum: cardNo})
				}catch(e){
					console.error(e)
				}
				var arr = msgobj.mess.split("\n");
				var json = {}
				arr.forEach(v => {
					var tmp = v.split(":")
					json[tmp[0]] = tmp[1]
				});
				this.checkOrderAndReturn({cardNum: json['卡号']})
			} else if(msgobj.type == 'PrintComplete'){
				this.showPrintComplete = true
				return
				this.$dialog.alert({
					title: '',
					message: '打印完成',
@ -404,7 +461,19 @@ export default {
			this.$loading('读取中..')
			this.clearReadCardCountDown()
			readCardCountDown = setTimeout(()=>{
				this.$toast('读取医保卡失败')
				if(this.nextOrderDetail){
					this.$toast.loading({
						duration: 0,
						forbidClick: true, // 禁用背景点击
						loadingType: 'loading',
						message: "读取医保卡失败",
						onClose: ()=>{
							this.onPrev()
						}
					});
				} else {
					this.$toast('读取医保卡失败')
				}
			}, 10 * 1000)
			var obj = {
@ -712,6 +781,14 @@ export default {
				}
				this.systemUpdate()
			}
		},
		checkCardNo(item){
			if(this.shippingType == 2){
				this.nextOrderDetail = item
				this.sendReadCard()
			} else {
				this.showOrderDetail(item)
			}
		}
    },
	destroyed() {

+ 18 - 9
mini-pro-web/src/views/order/list.vue

@ -164,15 +164,24 @@ export default{
    methods:{
        onLoad({page, pageSize, searchText}){
            var { startDate, endDate } = this
            var p = {
				startTime: startDate? this.$moment(startDate).format('YYYY-MM-DD 00:00:00') : '',
				endTime: endDate? this.$moment(endDate).format('YYYY-MM-DD 23:59:59') : '',
                userId: this.user.id,
				community: this.selcommunity? (this.selcommunity.hospitalCode||this.selcommunity.hospital) : '',
				content: this.searchText,
				sellState: this.sellState,
                page: page,
                size: pageSize
            var p 
            if(this.searchText){
                p = {
                    userId: this.user.id,
                    content: this.searchText,
                    page: page,
                    size: pageSize
                }
            } else {
                p = {
                    startTime: startDate? this.$moment(startDate).format('YYYY-MM-DD 00:00:00') : '',
                    endTime: endDate? this.$moment(endDate).format('YYYY-MM-DD 23:59:59') : '',
                    userId: this.user.id,
                    community: this.selcommunity? (this.selcommunity.hospitalCode||this.selcommunity.hospital) : '',
                    sellState: this.sellState,
                    page: page,
                    size: pageSize
                } 
            }
            console.log('params', p)
            medicineAbinetApi

+ 1 - 1
mini-pro-web/src/views/replenishment/index.vue

@ -51,7 +51,7 @@
					<van-row class="">
						<van-col @click="gotoUrl('/replenishment/picking/list')" span="6" class="tc ">
							<div class="fs-23 c-17b3ec"><img src="@/assets/images/dingdanguanli.png" alt=""></div>
							<div class="fs-14 c-666 pt5">备药单</div>
							<div class="fs-14 c-666 pt5">药品申领</div>
						</van-col>
						<van-col @click="gotoUrl('/replenishment/record/list')" span="6" class="tc">
							<div class="fs-23 c-ff9526"><img src="@/assets/images/shebeiguanli.png" alt=""></div>

+ 1 - 1
mini-pro-web/src/views/replenishment/picking/list.vue

@ -21,7 +21,7 @@
			<div class="list plr15 pt10">
                <div @click="gotoDetail(item)" v-for="(item, i) in list" :key="i" class="item bgc-fff plr15 c-333 fs-14">
                    <div class=" ptb10 kitbox bb-e1e1e1">
                        <div class="box-flex-1 fs-14">备药单号:{{item.docNum}}</div>
                        <div class="box-flex-1 fs-14">药品申领单号:{{item.docNum}}</div>
                        <div class="">
                            <span v-if="active===0&&item.state==2" class="c-ff9526">未生成</span>
                            <span v-if="active===0&&item.state==1" class="c-17b3ec">已生成</span>

+ 11 - 9
mini-pro-web/src/views/replenishment/start/deviceDetail.vue

@ -48,11 +48,9 @@
                <div class="color-block ml10 red"></div>
                <span class="ml5 fs-12">故障</span>
            </div>
            <div class="plr15" v-if="!isView&&this.outDetailList&&this.outDetailList.length">
            <div class="plr15" v-if="!isView&&this.outDetailList&&this.outDetailList.length&&$hasAuth('device', 'operate','replenish')">
                <van-button v-if="curOrder" @click="updateStockUpStatus(curOrder, 2)" type="primary" color="#17b3ec" size="mini">完成入库</van-button>
                <van-button v-else-if="orderList&&orderList.length" @click="showOrderPicker=true" type="primary" color="#17b3ec" size="mini">导入备药单药品</van-button>
                <!-- <van-button v-else @click="changeShowDrug" type="primary" color="#17b3ec" size="mini">{{showDeviceDrug? '备药单药品' : '导入备药单药品'}}</van-button> -->
                <van-button v-else-if="orderList&&orderList.length" @click="showOrderPicker=true" type="primary" color="#17b3ec" size="mini">导入申领药品单</van-button>
            </div>
            <div class="plr15" v-if="isView">
                
@ -91,11 +89,11 @@
        </div>
        <van-popup v-model="showOrderPicker">
            <div class="tc fs-16 pt15 pb10">备药单选择</div>
            <div class="tc fs-16 pt15 pb10">药品申领单选择</div>
            <div class="order-list" v-if="orderList&&orderList.length">
                <div class="order-item kitbox ptb10" v-for="item in orderList" :key="item.id">
                    <div class="box-flex-1">
                        <div class="break-all">备药单:{{item.docNum}}</div>
                        <div class="break-all">药品申领单号:{{item.docNum}}</div>
                        <div class="break-all">新增日期:{{item.docTime}}</div>
                        <div class="break-all">申领品类:{{item.replenishCate}}</div>
                        <div class="break-all">申请数量:{{item.replenishInventory}}</div>
@ -169,7 +167,7 @@ export default{
                    this.$dialog.confirm({
                        title: '完成入库',
                        confirmButtonText: "完成入库",
                        message: `请确认备药单:${item.docNum} 是否全部完成药品入库,完成后生效并删除此备药单`,
                        message: `请确认药品申领单:${item.docNum} 是否全部完成药品入库,完成后生效并删除此药品申领单`,
                    })
                    .then(() => {
                        resolve(true)
@ -206,7 +204,9 @@ export default{
                                var mediicinestockout = res.obj.mediicinestockout
                                mediicinestockout.outId = res.obj.id
                                this.curOrder = mediicinestockout
                                this.list[0].list = this.curOrder.mediicinestockoutdetails
                                this.list[0].list = _.filter(this.curOrder.mediicinestockoutdetails, v=>{
                                    return this.accessLeftNum(v)>0
                                })
                            } else {
                                this.curOrder = ''
                                this.list[0].list = this.deviceDrugList
@ -251,7 +251,9 @@ export default{
                        var mediicinestockout = res.detailModelList[0].mediicinestockout
                        mediicinestockout.outId = res.detailModelList[0].id
                        this.curOrder = mediicinestockout
                        this.list[0].list = this.curOrder.mediicinestockoutdetails
                        this.list[0].list = _.filter(this.curOrder.mediicinestockoutdetails, v=>{
                            return this.accessLeftNum(v)>0
                        })
                    }
                })
                .catch(err=>{

+ 1 - 3
mini-pro-web/src/views/replenishment/stockUp/detail.vue

@ -22,11 +22,9 @@
                <van-button plain @click="toAdd" block round type="info">新增药品</van-button>
            </div>
            <div class="pl8 pr15">
                <van-button  block @click="submit" round type="info">生成备药单</van-button>
                <van-button  block @click="submit" round type="info">生成药品申领单</van-button>
            </div>
        </div>
        <!-- <BotFloatButton :fix="true">下一步,生成备药单</BotFloatButton> -->
    </div>
</template>
<script>