lincl 3 years ago
parent
commit
ecea8c0468

+ 1 - 1
mini-pro-web/.env.development

@ -8,7 +8,7 @@ VUE_APP_BASE_API = 'http://ehr.yihu.com/hlwyy'
VUE_APP_IMAGE_SERVER = 'http://ehr.yihu.com/fastdfs/'
VUE_APP_SOCKET_URL = 'http://ehr.yihu.com'
VUE_APP_IM_API = 'http://ehr.yihu.com/api/v2'
VUE_APP_PRE_PATH = '/intelligent-medicine-abinet'
VUE_APP_PRE_PATH = '/hlwyy/intelligent-medicine-abinet'
VUE_APP_APPID = "wx79a7f451c8c30308"
VUE_APP_WXID = hz_yyyzh_wx

+ 10 - 10
mini-pro-web/.env.production

@ -1,14 +1,14 @@
#VUE_APP_BASE_API = 'https://zb.xmtyw.cn/medicine'
#VUE_APP_IMAGE_SERVER = 'https://zb.xmtyw.cn/'
#VUE_APP_SOCKET_URL = 'https://zb.xmtyw.cn'
#VUE_APP_IM_API = 'https://zb.xmtyw.cn/api/v2'
#VUE_APP_PRE_PATH = '/medicine/intelligent-medicine-abinet'
VUE_APP_BASE_API = 'https://zb.xmtyw.cn/medicine'
VUE_APP_IMAGE_SERVER = 'https://zb.xmtyw.cn/'
VUE_APP_SOCKET_URL = 'https://zb.xmtyw.cn'
VUE_APP_IM_API = 'https://zb.xmtyw.cn/api/v2'
VUE_APP_PRE_PATH = '/medicine/intelligent-medicine-abinet'
VUE_APP_BASE_API = 'http://ehr.yihu.com/hlwyy'
VUE_APP_IMAGE_SERVER = 'http://ehr.yihu.com/fastdfs/'
VUE_APP_SOCKET_URL = 'http://ehr.yihu.com'
VUE_APP_IM_API = 'http://ehr.yihu.com/api/v2'
VUE_APP_PRE_PATH = '/hlwyy/intelligent-medicine-abinet'
#VUE_APP_BASE_API = 'http://ehr.yihu.com/hlwyy'
#VUE_APP_IMAGE_SERVER = 'http://ehr.yihu.com/fastdfs/'
#VUE_APP_SOCKET_URL = 'http://ehr.yihu.com'
#VUE_APP_IM_API = 'http://ehr.yihu.com/api/v2'
#VUE_APP_PRE_PATH = '/hlwyy/intelligent-medicine-abinet'
#https://zb.xmtyw.cn/medicine
VUE_APP_APPID = "wx2c55f5b7b2f3cb56"

+ 2 - 1
mini-pro-web/package.json

@ -4,7 +4,8 @@
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build"
    "build": "vue-cli-service build",
    "build:dev": "vue-cli-service build --mode development"
  },
  "dependencies": {
    "async-validator": "^3.5.1",

+ 15 - 0
mini-pro-web/src/api/api-medicineAbinet.js

@ -538,6 +538,21 @@ let service = {
    },
	findOrgList(params){
        return request({
            url: `${BASE}/equipment/findOrgList`,
            method: 'get',
            params
        })
    },
	baseTownList: function(data) {
		return request({
			url: `${BASE}/baseTown/list`,
			method: "get",
			params: data
		});
	},
	
};

+ 8 - 0
mini-pro-web/src/api/login.js

@ -118,6 +118,14 @@ export function findUserBaseInfo(data) {
	});
}
export function findOneUser(data) {
    return request({
		url: `${BASE}/user/queryOne`,
        method: "get",
        params: data
	});
}
export function changePwd(data) {
	return request({
	  url: `${BASE}/user/updatePwd`,

+ 23 - 0
mini-pro-web/src/router/index.js

@ -177,6 +177,29 @@ function authLogin(code, to){
                    var userInfo  = res.obj.WlyyUserSimple
                    userInfo.token = userInfo.accessToken
                    userInfo.clientType = to.query.clientType//1 来自i健康app 区域互联网
                    // "saasAdmin": "管理员"; regionAdmin" "区域管理员" ; communityAdmin "社区管理员" ;  "  "replenisher": "补货员"
                    // 18补货员 19社区管理员 20区域管理员 21超管
                    var dictList = {
                        18: {
                            curRoleCode: "replenisher",
                            curRoleName: "补货员"
                        },
                        19: {
                            curRoleCode: "communityAdmin",
                            curRoleName: "社区管理员"
                        },
                        20: {
                            curRoleCode: "regionAdmin",
                            curRoleName: "区域管理员"
                        },
                        21: {
                            curRoleCode: "saasAdmin",
                            curRoleName: "管理员"
                        },
                    }
                    var { curRoleCode, curRoleName } = dictList[to.query._role]
                    userInfo.curRoleCode = curRoleCode
                    userInfo.curRoleName = curRoleName
                    store
                        .dispatch('SetLoginUser', userInfo)
                        .then(res=>{

+ 4 - 3
mini-pro-web/src/views/device/detail.vue

@ -16,7 +16,7 @@
            </div>
            <div>
                <span>售卖状态:</span>
                <span>{{info.saleStatus==1?'在售':info.selling_status==0?'停售':'故障'}}</span>
                <span>{{info.saleStatus==1?'在售':info.saleStatus==0?'停售':'故障'}}</span>
            </div>
            <div>
                <span>设备地址:</span>
@ -66,12 +66,12 @@
                </div>
                <div>信息日志</div>
            </div>
            <!-- <div class='c-t-center' @click='gotoUrl("/device/sell")'>
            <div class='c-t-center' @click='gotoUrl("/device/sell", {id: info.id, status: info.saleStatus})'>
                <div>
                    <van-image class='ability' :src='require("@/assets/images/zaishoutingshou.png")'/>
                </div>
                <div>在售停售</div>
            </div> -->
            </div>
        </div>
    </div>
</template>
@ -97,6 +97,7 @@ export default {
            medicineAbinetApi
                .findDeviceById(p)
                .then(res=>{
                    console.log(' res.obj.device', res.obj.device)
                    this.$toast.clear()
                    this.info = res.obj.device
                })

+ 30 - 8
mini-pro-web/src/views/device/sell.vue

@ -1,26 +1,48 @@
<template>
    <div class='deviceSell'>
        <div class='plr15 ptb20 c-333 c-f14 bgc-fff c-border-b flex f_y_c f_x_s'>
            <div>当前售货状态:<span>{{'在售'}}</span></div>
            <van-switch @click="switchSell" inactive-color='#ccc' active-color='#17b3ec' v-model="status" />
            <div>当前售货状态:<span>{{status? '在售' : '停售'}}</span></div>
            <van-switch @change="switchSell" inactive-color='#ccc' active-color='#17b3ec' v-model="status" />
        </div>
    </div>
</template>
<script>
import medicineAbinetApi from '@/api/api-medicineAbinet'
export default{
    name: 'deviceSell',
    data(){
        return {
            status: false
            status: this.$route.query.status==1,
        }   
    },
    methods:{
        switchSell(){
            this.status = true
        }
    },
    created(){
        
    },
    methods:{
        switchSell(flag){
            this.$dialog.confirm({
                title: '',
                message: '确认进行该操作?',
            })
            .then(() => {
                this.$loading('保存中')
                var p = {
                    deviceId: this.$route.query.id,
                    saleStatus: flag? 1 : 0
                }
				medicineAbinetApi
					.updateSaleStatus(p)
					.then(res => {
                        this.$toast('操作成功')
					})
					.catch(err=>{
						console.error(err)
					})
            })
            .catch(err=>{
                this.status = !flag
            })
        },
    }
}
</script>

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

@ -5,10 +5,11 @@
                <form action="/">
                    <van-search
                        v-model="value"
                        placeholder="请输入搜索关键词"
                        placeholder="至少输入两个关键词进行搜索"
                        show-action
                        @search="getDrugDictionary"
                        @cancel="onCancel"
                        autofocus
                    />
                </form>
            </div>

+ 68 - 11
mini-pro-web/src/views/login/Login.vue

@ -63,7 +63,7 @@
</template>
<script>
import { getPublicKey, login, imgCaptcha, sendCaptcha ,findUserBaseInfo} from "@/api/login";
import { getPublicKey, login, imgCaptcha, sendCaptcha ,findOneUser} from "@/api/login";
import JSEncrypt from "@/utils/jsencrypt";
import ValidatorUtils from '@/utils/validator'
import { setTimeout } from 'timers';
@ -296,14 +296,14 @@ export default {
            //小程序code
            p.appletCode = this.$route.query.appletCode||""
             let isApp = this.$route.query.isApp || this.isSupportHtml5Plus
             console.log(p, isApp)
            if(navigator.userAgent.toLowerCase().indexOf('micromessenger') !==-1) {
              if(!p.openid && !isApp) {
                this.redirectToLogin()
                return ;
              }
            }
            //  let isApp = this.$route.query.isApp || this.isSupportHtml5Plus
            //  console.log(p, isApp)
            // if(navigator.userAgent.toLowerCase().indexOf('micromessenger') !==-1) {
            //   if(!p.openid && !isApp) {
            //     this.redirectToLogin()
            //     return ;
            //   }
            // }
            
            login(p).then(async result => {
@ -313,10 +313,41 @@ export default {
                    this.$store
                        .dispatch("SetLoginUser", userInfo)
                        .then(() => {
                            findUserBaseInfo({
                            findOneUser({
                                id: userInfo.id
                            }).then(res2 => {
                                userInfo = _.assignIn(userInfo, res2.obj);
                                // "saasAdmin": "管理员"; regionAdmin" "区域管理员" ; communityAdmin "社区管理员" ;  "  "replenisher": "补货员"
                                var temArr = ['saasAdmin', 'regionAdmin', 'communityAdmin', 'replenisher']
                                var roleList = _.map(res2.obj.role, v=>{
                                    return {
                                        id: v.id,
                                        code: v.code,
                                        name: v.name
                                    }
                                })
                                roleList = _.sortBy(roleList, v=>{
                                    return temArr.indexOf(v.code)
                                })
                                // var userArea = _.map(res2.obj.userArea, v=>{
                                //     return {
                                //         id: v.id,
                                //         city: v.city,
                                //         cityName: v.cityName,
                                //         town: v.town,
                                //         townName: v.townName,
                                //         hospital: v.hospital,
                                //         hospitalName: v.hospitalName,
                                //     }
                                // })
                                var curRole = roleList[0]
                                var userInfo2 = {
                                    roleList,
                                    // userArea,
                                    curRoleCode: curRole.code,
                                    curRoleName: curRole.name
                                }
                                userInfo = _.assignIn(userInfo, userInfo2);
                                this.$store
                                    .dispatch("SetLoginUser", userInfo)
                                    .then(() => {
@ -348,6 +379,32 @@ export default {
                }
            })
        },
        getCurRole(roleList){
            var exist = _.find(roleList, v=>{
                return v.code == 'saasAdmin'
            })
            if(exist){
                return exist
            }
            var exist = _.find(roleList, v=>{
                return v.code == 'regionAdmin'
            })
            if(exist){
                return exist
            }
            var exist = _.find(roleList, v=>{
                return v.code == 'saasAdmin'
            })
            if(exist){
                return exist
            }
            var exist = _.find(roleList, v=>{
                return v.code == 'saasAdmin'
            })
            if(exist){
                return exist
            }
        },
        imgCaptcha(){
            if(this.isNeedPictureCode!=1){
                return

+ 1 - 1
mini-pro-web/src/views/login/Register.vue

@ -287,7 +287,7 @@ export default {
                    }
                  localStorage.setItem("Medical-Care-Wx-Logined-User-Agent", JSON.stringify(userAgent))
                  this.$store.dispatch('SetLoginUser', result.obj)
                  let userInfo = await this.getPatientById(result.obj)
                //   let userInfo = await this.getPatientById(result.obj)
                    // var userAgent = {
                    //     id: result.obj.id,
                    //     uid: result.obj.user,

BIN
mini-pro-web/src/views/machine/img/btn_saoma.png


BIN
mini-pro-web/src/views/machine/img/btn_ybk.png


BIN
mini-pro-web/src/views/machine/img/dayin.png


BIN
mini-pro-web/src/views/machine/img/order_suc.png


+ 9 - 3
mini-pro-web/src/views/machine/index.vue

@ -1,6 +1,6 @@
<template>
	<div class="machine-index">
		<div v-show="step==3&&rsType!=3" class="back-btn" @click="onPrev">
		<div v-show="step==3&&rsType!=3&&!inOut" class="back-btn" @click="onPrev">
			<img src="./img/fanhui_icon.png" alt="">
			<span>{{times}}s</span>
		</div>
@ -95,7 +95,7 @@ export default {
			curImg: '',
			illustrationMskShow: false,
			socketUrl: '',
			path: "ws://yik.ab-inbev.vip/c/websocket/",
			path: "wss://zb.xmtyw.cn/cabinet/websocket/",
			socket: "",
			layerNo: "0",
			wayerNo: "0",
@ -111,7 +111,8 @@ export default {
			orderList: [],
			times: 30,
			inReadCard: false,
			shippingType: '' //取药方式(1、扫码,2、医保卡)
			shippingType: '', //取药方式(1、扫码,2、医保卡)
			inOut: false
    	}
  	},
	watch:{
@ -286,6 +287,7 @@ export default {
						})
						.catch(err=>{
							console.error(err)
							this.shipComplete("更新订单状态失败:"+ (err&&err.message))
						})
				} else {
					this.updateOrderOutStatus(item.id, 3, msgobj.mess)
@ -294,6 +296,7 @@ export default {
						})
						.catch(err=>{
							console.error(err)
							this.shipComplete("更新订单状态失败:"+ (err&&err.message))
						})
				}
			} else if (msgobj.type == 'BarCodeInfo') {
@ -353,10 +356,12 @@ export default {
			}, 10 * 1000)
		},
		sendShipment: function() {
			clearInterval(countDownFunc)
			this.currindex = 0;
			this.$loading(`正在出第${this.currindex+1}个药..`)
			//循环订单返回的列表,读取第一个
			if (this.orderdetail.length > this.currindex) {
				this.inOut = true
				this.nextShipment(this.orderdetail[this.currindex]);
			} else {
				this.shipComplete()
@ -512,6 +517,7 @@ export default {
			})
		},
		shipComplete(msg){
			this.inOut = false
			this.$toast.clear()
			this.orderList.splice(this.orderList.indexOf(this.orderInfo), 1)
			if(msg){

+ 217 - 30
mini-pro-web/src/views/order/list.vue

@ -1,19 +1,31 @@
<template>
    <div class='order-list'>
        <van-sticky :offset-top="offsetTop">
            <div class="top-banner kitbox fs-14 ptb10 pl15">
                <div @click="pickDate(1)" class="date-item">{{$moment(startDate).format('YYYY-MM-DD')}}</div>
                <div class="ptb5 plr10">至</div>
                <div @click="pickDate(2)" class="date-item">{{$moment(endDate).format('YYYY-MM-DD')}}</div>
                <div class="pl15 pt2 box-flex-1 tr pr15">
                    <van-button @click="onSearch" type="info" size="mini">搜索</van-button>
            <div class="top-banner  fs-14  ">
                <div @click="drowMenuShow=false" class="kitbox pl15 search-date ptb10">
                    <div @click="pickDate(1)" class="date-item">{{$moment(startDate).format('YYYY-MM-DD')}}</div>
                    <div class="ptb5 plr10">至</div>
                    <div @click="pickDate(2)" class="date-item">{{$moment(endDate).format('YYYY-MM-DD')}}</div>
                    <div class="pl15  box-flex-1 tr pr15">
                        <van-button @click="onSearch" type="info" size="mini">搜索</van-button>
                    </div>
                </div>
                <div class="drop-menu" :class="{active: drowMenuShow}">
                    <div class="drop-menu-title tc fs-14" @click="drowMenuShow=!drowMenuShow">
                        <span class="v-middle">{{selcommunity? selcommunity.hospitalName : '全部社区'}}</span>
                        <van-icon class="v-middle ml5" name="play" />
                    </div>
                    <div class="drop-menu-area kitbox">
                        <div class="drop-menu-area-left" v-if="townList&&townList.length">
                            <van-sidebar v-model="activeKey">
                                <van-sidebar-item v-for="(item, i) in townList" :key="i" :title="item.townName" />
                            </van-sidebar>
                        </div>
                        <div class="drop-menu-area-right">
                            <div v-for="(item, i) in communityList" :key="i" @click="selcommunity=item;drowMenuShow=false;onSearch()">{{item.hospitalName}}</div>
                        </div>
                    </div>
                </div>
                <!-- <div class="fs-25 pr15 tr box-flex-1 pt3 c-pr">
                    <van-dropdown-menu>
                        <van-dropdown-item ref="dropdown" v-model="value1" :options="option1" />
                    </van-dropdown-menu>
                    <van-icon class="block" @click.stop="$refs.dropdown.toggle()" name="filter-o" />
                </div> -->
            </div>
        </van-sticky>
        <CustomList 
@ -48,13 +60,21 @@
            />
        </van-popup>
        <div class="filter-panel">
        <div class="bot-banner ptb10 bgc-fff">
            <div class="kitbox fs-14">
                <div class="pr40 box-v-middle pl15">
                    共 {{totalCount}} 笔订单
                </div>
                <!-- <div class="box-flex-1 plr15 tr">
                    商品总金额 ¥{{totalMoney}}
                </div> -->
            </div>
        </div>
    </div>
</template>
<script>
import medicineAbinetApi from '@/api/api-medicineAbinet'
import { findOneUser} from "@/api/login";
export default{
    name: 'orderList',
    data(){
@ -66,15 +86,29 @@ export default{
            startDate: this.$moment().subtract(30, 'days'),
            endDate: new Date(),
            pickType: 1,
            totalCount: 0,
            totalMoney: 0,
            activeKey: 0,
            value1: '',
            option1: [
                { text: '全部', value: 0 },
            defaultOption: [
                { townName: '全部', townCode: "", children: [{hospitalCode: '', hospitalName: '全部'}] },
            ],
            drowMenuShow: false,
            townList: [],
            communityList: [],
            selcommunity: '',
            
        }
    },
    watch: {
        activeKey(n){
            this.loadChildren()
        }
    },
    created() {
        
        this.getOrgList()
    },
    methods:{
        onLoad({page, pageSize, searchText}){
@ -83,8 +117,8 @@ export default{
				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 : '',
				// content: searchForm.content,
				// community: len? this.community[len-1] : '',
				// sellState: searchForm.sellStatus,
                page: page,
                size: pageSize
@ -95,17 +129,23 @@ export default{
                .then(res=>{
                    console.log('orderList', res)
                    if(res.status == 200){
                        this.totalCount = res.totalCount
                        var list = res.detailModelList
                        this.list = page==1? list : this.list.concat(list)
                        this.$refs.customList.endLoad(!res.detailModelList || res.detailModelList.length==0, this.list.length)
                    } else {
                        this.$refs.customList.endLoad(false, true)
                        this.onLoadError()
                    }
                }).catch(err=>{
                    console.error(err)
                    this.$refs.customList.endLoad(false, true)
                    this.onLoadError()
                })
        },
        onLoadError(){
            this.list = []
            this.totalCount = 0
            this.$refs.customList.endLoad(false, true)
        },
        pickDate(pickType){
            this.pickType = pickType
            this.currentDate = pickType ==1? this.startDate : this.endDate
@ -123,6 +163,70 @@ export default{
        onSearch(){
            this.list = []
            this.$refs.customList.refresh(true)
        },
        getOrgList(){
            findOneUser({
                id: this.user.id
            }).then(async res => {
                // "saasAdmin": "管理员"; regionAdmin" "区域管理员" ; communityAdmin "社区管理员" ; "replenisher": "补货员"
                var role = this.user.curRoleCode
                var userArea = res.obj.userArea
                var townList = [].concat(this.defaultOption)
                if(role=='communityAdmin' || role=="replenisher"){
                    var g = _.groupBy(userArea, 'town')
                    for(var k in g){
                        var tmp = g[k][0].concat([])
                        tmp.children = g[k]
                        townList.push(tmp)
                    }
                    this.townList = townList
                } else {
                    if(role == 'regionAdmin'){
                        userArea.forEach(v => {
                            v.children = []
                        });
                        this.townList = townList.concat(userArea) 
                    } else if(role=='saasAdmin'){
                        await medicineAbinetApi
                            .baseTownList({ filters: "city=350200"})//写死厦门市
                            .then(res => {
                                console.log('baseTownList', res)
                                if (res.status == 200) {
                                    var detailModelList = res.detailModelList;
                                    detailModelList.forEach((item) => {
                                        item.town = item.code
                                        item.townName = item.name
                                        item.children = [];
                                    });
                                    this.townList = townList.concat(detailModelList) 
                                }
                            });
                    }
                }
                this.loadChildren()
            });
        },
        async loadChildren(){
            var item = this.townList[this.activeKey]
            if(!item.children || !item.children.length){
                await medicineAbinetApi
                    .findOrgList({ code: item.town, paeg: 1, pageSize: 999 })
                    .then(res => {
                        console.log('findOrgList', res)
                        if (res.status == 200) {
                            res.detailModelList.forEach(v=>{
                                v.hospitalName = v.name
                                v.hospitalCode = v.code
                            })
                            item.children = res.detailModelList
                        }
                    })
                    .catch(err=>{
                        item.children = []
                    })
            }
            this.communityList = item.children
        }
    },
}
@ -133,34 +237,117 @@ export default{
        height: calc(100vh - 50px);
    }
    .top-banner{
        background: #f2f3f5;
        .search-date{
            background: #f2f3f5;
        }
        .date-item{
            padding: 5px 10px;
            width: 110px;
            text-align: center;
            padding: 5px 0;
            border: 1px solid #ccc;
            background: #fff;
            color: #333;
            border-radius: 30px;
            // line-height: 21px;
        }
        .van-button--mini{
            height: 28px;
            width: 60px;
        }
        ::v-deep .van-dropdown-menu__bar{
            position: absolute;
            bottom: -10px;
            .van-dropdown-menu__item{
        .drop-menu{
            position: relative;
            .van-sidebar-item--select::before{
                background-color: #17b3ec;
            }
            .drop-menu-title{
                padding: 10px 0;
                background: #fff;
                .van-icon{
                    transform: rotate(90deg);
                }
            }
            .drop-menu-area{
                position: absolute;
                width: 100%;
                left: 0;
                display: none;
                border-top: 1px solid #e1e1e1;
                height: calc(100% - 39px);
                .drop-menu-area-right{
                    height: 100%;
                    overflow-y: auto;
                    background: #fff;
                    -webkit-box-flex: 1;
                    >div{
                        padding: 10px 15px;
                        border-bottom: 1px solid #e1e1e1;
                        &:last-child{
                            border-bottom: 0;
                        }
                    }
                }
            }
            &.active{
                background: rgba($color: #000000, $alpha: .4);
                height: calc(100vh - 49px);
                .drop-menu-area{
                    display: -webkit-box;
                }
               .drop-menu-title{
                   color: #17b3ec;
                    .van-icon{
                        transform: rotate(-90deg);
                    }
                } 
            }
        }
        // ::v-deep .van-dropdown-menu__bar{
        //     position: absolute;
        //     bottom: -10px;
        //     .van-dropdown-menu__item{
        //         display: none;
        //     }
        // }
    }
    .list{
        .item{
            border: 1px solid #e1e1e1;
            background: #fff;
            margin-bottom: 10px;
            &:last-child{
                margin-bottom: 0;
            margin-top: 10px;
            // margin-bottom: 10px;
            // &:last-child{
            //     margin-bottom: 0;
            // }
        }
    }
    .bot-banner{
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
        box-shadow: 0 0 5px #ccc;
    }
    ::v-deep .van-list__placeholder{
        height: 40px;
    }
}
</style>
<style lang="scss">
.mainNobotHasTop{
    .order-list{
        .custom-list {
            height: calc(100vh - 176px);
            .search{
                top: 96px;
            }
        }
        .top-banner{
            .drop-menu{
                &.active{
                    height: calc(100vh - 95px);
                    
                }
            }
        }
    }

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

@ -15,7 +15,7 @@
                        <div class="fs-16 c-333">{{user.name}}</div>
                        <div class="fs-14 c-666 pt5">
                            <div>{{user.mobile}}</div>
                            <!-- <div>禾山街道社区卫生服务中心</div> -->
                            <div>{{user.curRoleName}}</div>
                        </div>
                    </div>
                </div>

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

@ -23,7 +23,8 @@
                    <div class=" ptb10 kitbox bb-e1e1e1">
                        <div class="box-flex-1 fs-14">备货单号:{{item.docNum}}</div>
                        <div class="">
                            <span v-if="active===0" class="c-ff9526">备货中</span>
                            <span v-if="active===0&&item.state==1" class="c-ff9526">备货中</span>
                            <span v-if="active===0&&item.state!=1" class="c-17b3ec">已备货</span>
                            <span v-else-if="active===1" class="c-17b3ec">待领料</span>
                            <span v-else-if="active===2" class="c-999">已领料</span>
                            <!-- <span class="c-ff5e6c">已驳回</span> -->
@ -33,15 +34,15 @@
                        <div class="box-flex-1">
                            <div class="row">
                                <div>补货员</div>
                                <div>{{item.replenishEr}}</div>
                                <div>{{item.replenishErName}}</div>
                            </div>
                            <div class="row">
                                <div>待补设备</div>
                                <div>{{item.replenishEqu}}</div>
                                <div>{{item.replenishEquName}}</div>
                            </div>
                            <div class="row">
                                <div>待补品类</div>
                                <div>{{item.replenishCateName}}</div>
                                <div>{{item.replenishCate}}</div>
                            </div>
                            <div class="row">
                                <div>待补库存</div>
@ -181,6 +182,14 @@ export default{
    .custom-list{
        height: calc(100vh - 50px);
    }
}
</style>
<style lang="scss">
.mainNobotHasTop{
    .replenishment-picking-list{
        .custom-list {
            height: calc(100vh - 96px);
        }
    }
}
</style>

+ 1 - 2
mini-pro-web/src/views/replenishment/start/deviceDetail.vue

@ -33,7 +33,6 @@
                    </van-col>
                </van-row>
                <div class="kitbox fs-12 plr10 pb5">
                    <!-- <div class="box-flex-1">当前:0号柜</div> -->
                    <div class="box-flex-1"> 共:{{deviceInfo.device.layer}}层</div>
                    <div class="box-flex-1 ml5">总货道:{{deviceInfo.totalCargo}}</div>
                    <div class="box-flex-1 ml5">故障:0</div>
@ -120,7 +119,7 @@ export default{
                        this.closeCount = closeCount
                        list = _.sortBy(list, 'index')
                        this.list = list
                        this.curItem = this.list[0]
                        this.curItem = this.list[this.activeKey]
                        console.log(list, this.curItem)
                    }
                })

+ 37 - 31
mini-pro-web/src/views/replenishment/start/deviceList.vue

@ -1,38 +1,41 @@
<template>
    <div class='replenishment-start-device-list'>
        <van-sticky :offset-top="offsetTop">
            <van-tabs v-model="active">
                <van-tab title="缺货设备"></van-tab>
                <van-tab title="全部设备"></van-tab>
            </van-tabs>
        </van-sticky>
        <CustomList 
			ref="customList"
			@onLoad="onLoad">
			<div class="list plr15 pt10">
                <div v-for="(item, i) in list" :key="i" class="item bgc-fff plr15 c-333 fs-14">
                    <div class=" ptb10 kitbox">
                        <div class="box-flex-1 fs-14">
                            {{item.equName}}
                        </div>
                        <div class="">
                            <van-tag :type="item.networkStatus==1? 'success' : 'danger'">{{item.networkStatusName}}</van-tag>
                            <van-tag :type="item.saleStatus==1? 'success' : 'danger'" class="ml5">{{item.saleStatusName}}</van-tag>
                        </div>
<div class='replenishment-start-device-list'>
    <van-sticky :offset-top="offsetTop">
        <van-tabs v-model="active">
            <van-tab title="缺货设备"></van-tab>
            <van-tab title="全部设备"></van-tab>
        </van-tabs>
    </van-sticky>
    <CustomList 
        ref="customList"
        @onLoad="onLoad">
        <div class="list plr15 pt10">
            <div v-for="(item, i) in list" :key="i" class="item bgc-fff plr15 c-333 fs-14">
                <div class=" ptb10 kitbox">
                    <div class="box-flex-1 fs-14">
                        {{item.equName}}
                    </div>
                    <div class="lh20 ptb10 kitbox">
                        <div class="box-flex-1">
                            <div>设备编号:{{item.equNum}}</div>
                            <div>上次补货时间:{{item.shangyicibuhuoshijian}}</div>
                        </div>
                    <div class="">
                        <van-tag v-if="item.networkStatus==1" type="success">在线</van-tag>
                        <van-tag v-else type="danger">离线</van-tag>
                        <van-tag class="ml5" v-if="item.saleStatus==1" type="success">在售</van-tag>
                        <van-tag class="ml5" v-else type="danger">停售</van-tag>
                    </div>
                    <div class="operate pt10 pb10">
                        <van-button round block @click="gotoUrl('./deviceDetail', {deviceId: item.id})" type="info" size="small" >开始补货</van-button>
                </div>
                <div class="lh20 ptb10 kitbox">
                    <div class="box-flex-1">
                        <div>设备编号:{{item.equNum}}</div>
                        <div>上次补货时间:{{item.shangyicibuhuoshijian}}</div>
                    </div>
                </div>
                <div class="operate pt10 pb10">
                    <van-button round block @click="gotoUrl('./deviceDetail', {deviceId: item.id})" type="info" size="small" >开始补货</van-button>
                </div>
            </div>
		</CustomList>
    </div>
        </div>
    </CustomList>
</div>
</template>
<script>
import medicineAbinetApi from '@/api/api-medicineAbinet'
@ -120,8 +123,11 @@ export default{
<style lang="scss">
.mainNobotHasTop{
    .replenishment-start-device-list{
        .custom-list .search{
            top: 96px;
        .custom-list {
            height: calc(100vh - 96px);
            .search{
                top: 96px;
            }
        }
    }
}

+ 72 - 63
mini-pro-web/src/views/replenishment/stockUp/deviceList.vue

@ -1,52 +1,52 @@
<template>
    <div class='replenishment-stock-up-device-list'>
        <CustomList 
			ref="customList"
			@onLoad="onLoad">
			<div class="list plr15 pt10">
                <van-checkbox-group v-model="result">
                    <div @click="gotoUrl('./detail', {deviceId: item.id})" v-for="(item, i) in list" :key="i" class="item bgc-fff plr15 c-333 fs-14">
                        <div class=" ptb10 kitbox">
                            <div class="box-flex-1 fs-14">
                                {{item.equName}}
                                <!-- <van-checkbox :name="item.id">{{item.equName}}</van-checkbox> -->
                            </div>
                            <div class="">
                                <van-tag type="success">在线</van-tag>
                                <van-tag type="success" class="ml5">在售</van-tag>
                            </div>
<div class='replenishment-stock-up-device-list'>
    <van-sticky :offset-top="offsetTop">
        <van-tabs v-model="active">
            <van-tab title="缺货设备"></van-tab>
            <van-tab title="全部设备"></van-tab>
        </van-tabs>
    </van-sticky>
    <CustomList 
        ref="customList"
        @onLoad="onLoad">
        <div class="list plr15 pt10">
            <van-checkbox-group v-model="result">
                <div @click="gotoUrl('./detail', {deviceId: item.id})" v-for="(item, i) in list" :key="i" class="item bgc-fff plr15 c-333 fs-14">
                    <div class=" ptb10 kitbox">
                        <div class="box-flex-1 fs-14">
                            {{item.equName}}
                            <!-- <van-checkbox :name="item.id">{{item.equName}}</van-checkbox> -->
                        </div>
                        <div class="kitbox ptb10 pr40">
                            <div class="pt2">空置率:</div>
                            <div class="box-flex-1 pt10"><van-progress :percentage="item.kongzhilv? (item.kongzhilv*100) : 0" /></div>
                        <div class="">
                            <van-tag type="success" v-if="item.networkStatus==1">在线</van-tag>
                            <van-tag type="danger" v-else>离线</van-tag>
                            <van-tag type="success" v-if="item.saleStatus==1" class="ml5">在售</van-tag>
                            <van-tag type="danger" v-else class="ml5">停售</van-tag>
                        </div>
                        <div class="lh20 ptb10 kitbox">
                            <div class="box-flex-1">
                                <div>待补商品数量:{{item.daibushangpinshuliang}}</div>
                                <div>未设商品货道:{{item.weishezhishangpinhuodao}}</div>
                                <div>设备所属:{{item.community}}</div>
                                <div>设备编号:{{item.equNum}}</div>
                                <div>上次补货时间:{{item.shangyicibuhuoshijian}}</div>
                            </div>
                            <div class="fs-20 c-pr">
                                <van-icon name="arrow" />
                            </div>
                    </div>
                    <div class="kitbox ptb10 pr40">
                        <div class="pt2">空置率:</div>
                        <div class="box-flex-1 pt10"><van-progress :percentage="item.kongzhilv? (item.kongzhilv*100) : 0" /></div>
                    </div>
                    <div class="lh20 ptb10 kitbox">
                        <div class="box-flex-1">
                            <div>待补商品数量:{{item.daibushangpinshuliang}}</div>
                            <div>未设商品货道:{{item.weishezhishangpinhuodao}}</div>
                            <div>设备所属:{{item.community}}</div>
                            <div>设备编号:{{item.equNum}}</div>
                            <div>上次补货时间:{{item.shangyicibuhuoshijian}}</div>
                        </div>
                        <div class="fs-20 c-pr">
                            <van-icon name="arrow" />
                        </div>
                    </div>
                </van-checkbox-group>
            </div>
		</CustomList>
        <!-- <div class="bot-banner ptb10 bgc-fff">
            <div class="kitbox fs-14">
                <div class="pr40 box-v-middle pl15">
                    <van-checkbox v-model="selAll">全选</van-checkbox>
                </div>
                <div class="box-flex-1 plr15">
                    <van-button @click="gotoUrl('./detail', {deviceIds: result.join(',')})" type="info" size="small" round block>下一步,查看缺货商品汇总</van-button>
                </div>
            </div>
        </div> -->
    </div>
            </van-checkbox-group>
        </div>
    </CustomList>
    
</div>
</template>
<script>
import medicineAbinetApi from '@/api/api-medicineAbinet'
@ -56,18 +56,12 @@ export default{
        return {
            list: [],
            result: [],
            selAll: false
            active: 0
        }
    },
    watch:{
        selAll(n){
            if(n){
                this.result = _.map(this.list, v=>{
                    return v.id
                })
            } else {
                this.result = []
            }
        active(){
            this.$refs.customList.refresh(true)
        }
    },
    created() {
@ -81,17 +75,17 @@ export default{
            var p = {
                content: searchText,
                userId: this.user.id,
				// startTime: startDate? this.$moment(startDate).format('YYYY-MM-DD 00:00:00') : '',
				// endTime: endDate? this.$moment(endDate).format('YYYY-MM-DD 23:59:59') : '',
				// content: searchForm.content,
				// community: len? this.community[len-1] : '',
				// sellState: searchForm.sellStatus,
                // page: page,
                // size: pageSize
                page: page,
                size: pageSize
            }
            var func
            if(this.active === 0){
                func = medicineAbinetApi.getOutOfStockDeviceListByUserId
            } else {
                func = medicineAbinetApi.getDeviceListWithUserId
            }
            console.log('params', p)
            medicineAbinetApi
                .getOutOfStockDeviceListByUserId(p)
            func(p)
                .then(res=>{
                    console.log('getOutOfStockDeviceList', res)
                    if(res.status == 200){
@ -113,6 +107,9 @@ export default{
</script>
<style lang='scss' scoped>
.replenishment-stock-up-device-list{
    ::v-deep .custom-list .search{
        top: 50px;
    }
    .list{
        .item{
            margin-bottom: 10px;
@ -136,8 +133,20 @@ export default{
        width: 100%;
        box-shadow: 0 0 5px #ccc;
    }
    ::v-deep .van-list__placeholder{
        height: 60px;
    // ::v-deep .van-list__placeholder{
    //     height: 60px;
    // }
}
</style>
<style lang="scss">
.mainNobotHasTop{
    .replenishment-stock-up-device-list{
        .custom-list {
            height: calc(100vh - 96px);
            .search{
                top: 96px;
            }
        }
    }
}
</style>