医废监管端小程序源码

This commit is contained in:
2025-06-12 11:26:17 +08:00
parent cc5271b63b
commit 286c5e068b
53 changed files with 14801 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
<template>
<view>
<scroll-view scroll-y class="page">
<cu-custom bgColor="bg-cyan" :isBack="true"><block slot="backText">返回</block><block slot="content">关于我们</block></cu-custom>
<view class='margin-xl bg-white padding-xl radius shadow-lg'>
<view class='text-center margin-bottom text-lg text-grey'>关于智感云医废物联</view>
<view class='text-content'>
<view>Hi欢迎使用智感云医废物联</view>
<view class='margin-top-sm'>OpMonitor智感云全称为Operation Monitor利用成熟的物联网信息化人工智能技术实现医疗场景内各类流程的严格高标准管理以便捷的安装部署方式实现原有业务系统升级全程可控最终实现智能化精细管理</view>
<view class='margin-top-sm'>医废物联致力于让每一次操作都生成一条数据让每一个流程都由智慧平台支撑让每一条规范与先进经验都落到日常操作中</view>
<view class='margin-top-sm'>更多功能敬请期待</view>
</view>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {}
}
}
</script>
<style>
.page {
width: 100vw;
height: 100Vh;
}
.UCenter-bg {
background-image: url(https://image.weilanwl.com/color2.0/index.jpg);
background-size: cover;
height: 700rpx;
display: flex;
justify-content: center;
padding-top: 40rpx;
overflow: hidden;
position: relative;
flex-direction: column;
align-items: center;
color: #fff;
font-weight: 300;
text-shadow: 0 0 3px rgba(0,0,0,0.3);
}
.UCenter-bg text{
opacity: 0.8;
}
.UCenter-bg image {
width: 250rpx;
height: 250rpx;
}
.UCenter-bg .animation-wave {
position: absolute;
bottom: 0;
}
</style>
@@ -0,0 +1,98 @@
<template>
<view>
<scroll-view scroll-y class="page">
<cu-custom bgColor="bg-gradual-pink" :isBack="true"><block slot="backText">返回</block><block slot="content">交接卡绑定</block></cu-custom>
<view class="photoView">
<image src="/static/headPhoto.jpg" class="photoImage"></image>
</view>
<view class="padding flex flex-direction" style="padding-top: 800rpx;">
<button class="cu-btn bg-blue margin-tb-sm lg" @click="buttonClick">扫描交接卡</button>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
code: 'https://opmonitor.com/qrc/r060001ull'
}
},
mounted() {
uni.request({
url: 'https://lekapi.opmonitor.com/?c=app_api&a=getIsBindHandCard',
data: {openid: getApp().globalData.openid},
header: {
'Content-type': 'application/json'
},
success: function(res){
if(res.data.data === 'success'){
uni.reLaunch({
url: "/pages/plugin/handCardCode"
})
}else if(res.data.data === 'failure'){
console.info('请进行交接卡绑定工作')
}
},
fail: () => {
console.info('小程序域名不正确,请检查域名正确性')
}
})
},
methods: {
buttonClick() {
let that = this;
uni.request({
url: 'https://lekapi.opmonitor.com/?c=app_api&a=getBindHandCardInfo',
data: {code: that.code,openid: getApp().globalData.openid},
header: {
'Content-type': 'application/json'
},
success: function(res){
if(res.data.data.msg === 'success'){
uni.reLaunch({
url: "/pages/plugin/handCardCode"
})
}else{
uni.showModal({
title: '提示',
content: '扫描交接码失败',
success: function(res){
if(res.confirm) {
uni.reLaunch({
url: "/pages/plugin/handCard"
})
}else if (res.cancal){
uni.reLaunch({
url: "/pages/plugin/handCard"
})
}
}
})
}
},
fail: () => {
console.info('小程序域名不正确,请检查域名的正确性')
}
})
}
}
}
</script>
<style>
.page {
width: 100vw;
height: 100Vh;
}
.photoView {
text-align: center;
padding-top: 50rpx;
}
.photoImage {
width: 200rpx;
height: 200rpx;
border-radius: 50%;
}
</style>
@@ -0,0 +1,92 @@
<template>
<view>
<scroll-view scroll-y class="page">
<cu-custom bgColor="bg-gradual-pink" :isBack="true"><block slot="backText">返回</block><block slot="content">交接卡</block></cu-custom>
<view class="photoView">
<image src="/static/headPhoto.jpg" class="photoImage"></image>
</view>
<view class="textView">
<p class="headTitle">北京智感云医废交接码</p>
<p class="title">使用二维码和收集人员进行交接</p>
</view>
<view class="photoView_1">
<canvas class="canvas-code" canvas-id="myQrcode" style="background:#fff;width: 200px;height: 200px;"/>
</view>
</scroll-view>
</view>
</template>
<script>
import QRCode from '../component/weapp-qrcode.js'
export default {
data() {
return {}
},
mounted() {
let that = this;
uni.request({
url: 'https://lekapi.opmonitor.com/?c=app_api&a=getHandCardInfo',
data: {openid: getApp().globalData.openid},
header: {
'Content-type': 'application/json'
},
success: function(res){
new QRCode('myQrcode',{
text: res.data.data,
width: 200,
height: 200,
padding: 12, // 生成二维码四周自动留边宽度,不传入默认为0
correctLevel: QRCode.CorrectLevel.L, // 二维码可辨识度
callback: (res) => {
console.log(res.path)
}
})
},
fail: () => {
console.info('小程序域名不正确,请检查域名正确性')
}
})
}
}
</script>
<style>
.page {
width: 100vw;
height: 100Vh;
}
.photoView {
text-align: center;
padding-top: 50rpx;
}
.photoImage {
width: 200rpx;
height: 200rpx;
border-radius: 50%;
}
.photoView_1 {
text-align: center;
padding-top: 100rpx;
}
.photeImage_1 {
width: 400rpx;
height: 450rpx;
}
.textView {
padding-top: 80rpx;
text-align: center;
}
.title {
padding-top: 20rpx;
font-size: 30rpx;
}
.headTitle {
font-weight: bold;
font-size: 45rpx;
}
</style>
@@ -0,0 +1,93 @@
<template>
<view>
<scroll-view scroll-y class="page">
<cu-custom bgColor="bg-cyan" :isBack="true"><block slot="backText">返回</block><block slot="content">交接列表</block></cu-custom>
<view class="cu-bar bg-white solid-bottom">
<view class="action">
<text class="cuIcon-title text-green" style="color:#2CC9EA;"></text>
<text style="color:#B4B4C3;">交接列表</text>
</view>
</view>
<view class="cu-list menu-avatar" style="margin-top:5px;">
<view class="cu-item" v-for="(value,index) in handDetailsInfo" :key="index">
<view class="cu-avatar round lg" style="background-image:url(https://lekapi.opmonitor.com/static/image/avatar.png);"></view>
<view class="content">
<view class="text-grey text-sm flex" style="">
<text style="width:100px;">{{value.handName}}</text>
<text style='margin-left:5%;width:100px;font-family:Montserrat-Regular;'>{{value.type}}</text>
</view>
<view class="text-grey text-sm flex">
<text class="cuIcon-locationfill text-red margin-right-xs"></text>
<text style="width:90px;">{{value.department}}</text>
<text style="margin-left:5%;width:100px;font-size: 12px;font-weight:bold;color:red;">{{value.totalWeight}}</text>
</view>
</view>
<view class="action">
<view class="text-grey text-xs">{{value.handTime}}</view>
</view>
</view>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
handDetailsInfo: []
}
},
mounted(){
// 获取全局变量中的数据
this.hospital = getApp().globalData.hospital
this.sortHospital = getApp().globalData.sortHospital
this.department = getApp().globalData.department
this.duty = getApp().globalData.duty
this.getHandDetailsInfo();
},
methods: {
getHandDetailsInfo(){
let that = this;
uni.request({
url: "https://lekapi.opmonitor.com/?c=app_api&a=getHandDetailsInfo",
data: {hospital: that.hospital, sortHospital: that.sortHospital, department: that.department, duty: that.duty},
header: {
'Content-type': 'application/json'
},
success: function(res){
that.handDetailsInfo = res.data.data
},
fail: () => {
console.info('小程序域名不正确,请检查域名的正确性')
}
})
}
}
}
</script>
<style>
.bg-gradual-pink{
vertical-align: middle;
font-size:18px;
background:linear-gradient(135deg,rgba(45,201,235,1) 0%,rgba(20,210,184,1) 100%);
}
.cu{
height:89px;
}
.page {
width: 100vw;
height: 100Vh;
}
.page.show {
overflow: hidden;
}
.cuIcon-locationfill{
color:#2CC9EA;
}
</style>
+227
View File
@@ -0,0 +1,227 @@
<template name="components">
<view>
<scroll-view scroll-y class="page">
<view class="UCenter-bg">
<view class="photoView">
<view class="photoImage">
<open-data type="userAvatarUrl"></open-data>
</view>
</view>
<view class="text-xl">{{name}}
</view>
<view class="margin-top-sm">
<text>{{duty}}</text>
</view>
<!--<image src="https://raw.githubusercontent.com/weilanwl/ColorUI/master/demo/images/wave.gif" mode="scaleToFill" class="gif-wave"></image>-->
</view>
<view class="padding flex text-center text-grey bg-white shadow-warp">
<view class="flex flex-sub flex-direction solid-right">
<view class="text-xxl text-green">{{myBasisInfo.today_sum}}</view>
<view class="margin-top-sm">今日重量</view>
</view>
<view class="flex flex-sub flex-direction solid-right">
<view class="text-xxl text-blue">{{myBasisInfo.today_count}}</view>
<view class="margin-top-sm">今日数量</view>
</view>
<view class="flex flex-sub flex-direction">
<view class="text-xxl text-red">{{myBasisInfo.today_abnormal}}</view>
<view class="margin-top-sm">今日异常</view>
</view>
</view>
<view class="cu-list menu card-menu margin-top-xl margin-bottom-xl shadow-lg radius">
<view class="cu-item arrow">
<navigator class="content" url="/pages/main/inventory" hover-class="none">
<text class="cuIcon-deletefill text-cyan"></text>
<text class="text-grey">科室汇总</text>
</navigator>
</view>
<!-- <view class="cu-item arrow">
<navigator class="content" url="/pages/main/warning" hover-class="none">
<text class="cuIcon-warnfill text-cyan"></text>
<text class="text-grey">异常预警</text>
</navigator>
</view> -->
<view class="cu-item arrow">
<navigator class="content" url="/pages/plugin/handList" hover-class="none">
<text class="cuIcon-selectionfill text-cyan"></text>
<text class="text-grey">交接列表</text>
</navigator>
</view>
<view class="cu-item arrow">
<navigator class="content" url="/pages/plugin/personalInformation" hover-class="none">
<text class="cuIcon-myfill text-cyan"></text>
<text class="text-grey">个人信息</text>
</navigator>
</view>
<view class="cu-item arrow">
<navigator class="content" url="/pages/plugin/about" hover-class="none">
<text class="cuIcon-medalfill text-cyan"></text>
<text class="text-grey">关于我们</text>
</navigator>
</view>
<view class="cu-item arrow">
<navigator class="content" hover-class="none" @click="buttonClick">
<text class="cuIcon-myfill text-cyan"></text>
<text class="text-grey">注销账户</text>
</navigator>
</view>
</view>
<view class="cu-tabbar-height"></view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
myBasisInfo: [],
hospital: '',
sortHospital: '',
department: '',
name: '',
duty: ''
}
},
mounted(){
console.info(getApp().globalData.openid)
if(getApp().globalData.openid == '' || getApp().globalData.openid == undefined){
uni.reLaunch({
url: '/pages/register/registerRegulatory'
})
}
// 获取全局变量中的数据
this.hospital = getApp().globalData.hospital
this.sortHospital = getApp().globalData.sortHospital
this.department = getApp().globalData.department
this.name = getApp().globalData.name
this.duty = getApp().globalData.duty
this.getMyBasisInfo()
},
methods:{
getMyBasisInfo(){
let that = this;
uni.request({
url: 'https://lekapi.opmonitor.com/?c=app_api&a=getMyBasisInfo',
data: {hospital: that.hospital, sortHospital: that.sortHospital, department: that.department, duty: that.duty},
header: {
'Content-type': 'application/json'
},
success: function(res){
that.myBasisInfo = res.data.data
},
fail: () => {
console.info('小程序域名不正确,请检查域名的正确性')
}
})
},
buttonClick(){
console.info(getApp().globalData)
// 将数据库中的数据清空
let that = this;
uni.request({
url: 'https://lekapi.opmonitor.com/?c=app_api&a=clearData',
data: {openid: getApp().globalData.openid},
header: {
'Content-type': 'application/json'
},
success: function(res){
// 将globalData清空并刷新
getApp().globalData.openid = ''
console.info(getApp().globalData)
// 跳转到首页
uni.reLaunch({
url: '/pages/plugin/home'
})
},
fail: () => {
console.info('小程序域名不正确,请检查域名的正确性')
}
})
}
}
}
</script>
<style>
.page {
width: 100vw;
height: 100Vh;
}
.UCenter-bg {
background:-webkit-linear-gradient(right,#15D2BB,#2CC9E9);
background-size: cover;
height: 550rpx;
display: flex;
justify-content: center;
padding-top: 40rpx;
overflow: hidden;
position: relative;
flex-direction: column;
align-items: center;
color: #fff;
font-weight: 300;
text-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
}
.UCenter-bg text {
opacity: 0.8;
}
.UCenter-bg image {
width: 200rpx;
height: 200rpx;
}
.UCenter-bg .gif-wave{
position: absolute;
width: 100%;
bottom: 0;
left: 0;
z-index: 99;
mix-blend-mode: screen;
height: 100rpx;
}
map,.mapBox{
left: 0;
z-index: 99;
mix-blend-mode: screen;
height: 100rpx;
}
map,.mapBox{
width: 750rpx;
height: 300rpx;
}
.png1 {
border-radius: 50%;
}
.box {
margin: 20upx 0;
}
.photoView {
padding-top: 100rpx;
position: relative;
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
}
.photoImage {
overflow:hidden;
display: block;
width: 200rpx;
height: 200rpx;
margin: 20rpx;
border-radius: 50%;
border: 2px solid #fff;
box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);
}
</style>
+149
View File
@@ -0,0 +1,149 @@
<template name="components">
<view>
<scroll-view scroll-y class="page">
<view class="UCenter-bg">
<image src="/static/headPhoto.jpg" class="png1" mode="widthFix"></image>
<view class="text-xl">张家辉
</view>
<view class="margin-top-sm">
<text>科室主任</text>
</view>
<image src="https://raw.githubusercontent.com/weilanwl/ColorUI/master/demo/images/wave.gif" mode="scaleToFill" class="gif-wave"></image>
</view>
<view class="padding flex text-center text-grey bg-white shadow-warp">
<view class="flex flex-sub flex-direction solid-right">
<view class="text-xxl text-orange">{{visitTotal}}</view>
<view class="margin-top-sm">今日重量</view>
</view>
<view class="flex flex-sub flex-direction solid-right">
<view class="text-xxl text-blue">{{starCount}}</view>
<view class="margin-top-sm">今日数量</view>
</view>
<view class="flex flex-sub flex-direction">
<view class="text-xxl text-green">{{forksCount}}</view>
<view class="margin-top-sm">今日异常</view>
</view>
</view>
<view class="cu-list menu card-menu margin-top-xl margin-bottom-xl shadow-lg radius">
<view class="cu-item arrow">
<navigator class="content" url="/pages/main/personalInformation" hover-class="none">
<text class="cuIcon-github text-grey"></text>
<text class="text-grey">个人信息维护</text>
</navigator>
</view>
<view class="cu-item arrow">
<navigator class="content" url="/pages/main/handCard" hover-class="none">
<text class="cuIcon-formfill text-green"></text>
<text class="text-grey">交接卡绑定</text>
</navigator>
</view>
<view class="cu-item arrow">
<navigator class="content" url="/pages/main/handList" hover-class="none">
<text class="cuIcon-appreciatefill text-red"></text>
<text class="text-grey">交接列表</text>
</navigator>
</view>
<view class="cu-item arrow">
<navigator class="content" url="/pages/main/about" hover-class="none">
<text class="cuIcon-writefill text-cyan"></text>
<text class="text-grey">关于我们</text>
</navigator>
</view>
</view>
<view class="box">
<view class="box">
<view class="cu-bar tabbar bg-white">
<view class="action">
<view class="cuIcon-cu-image">
<image src="/static/tabbar/basics_cur.png"></image>
</view>
<view class="text-green">概览</view>
</view>
<view class="action">
<view class="cuIcon-cu-image">
<image src="/static/tabbar/component.png"></image>
</view>
<view class="text-gray">追溯</view>
</view>
<view class="action">
<view class="cuIcon-cu-image">
<image src="/static/main/about.png"></image>
<view class="cu-tag badge"></view>
</view>
<view class="text-gray">我的</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
starCount: 0,
forksCount: 0,
visitTotal: 0
}
}
}
</script>
<style>
.UCenter-bg {
background-image: url(https://image.weilanwl.com/color2.0/index.jpg);
background-size: cover;
height: 550rpx;
display: flex;
justify-content: center;
padding-top: 40rpx;
overflow: hidden;
position: relative;
flex-direction: column;
align-items: center;
color: #fff;
font-weight: 300;
text-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
}
.UCenter-bg text {
opacity: 0.8;
}
.UCenter-bg image {
width: 200rpx;
height: 200rpx;
}
.UCenter-bg .gif-wave{
position: absolute;
width: 100%;
bottom: 0;
left: 0;
z-index: 99;
mix-blend-mode: screen;
height: 100rpx;
}
map,.mapBox{
left: 0;
z-index: 99;
mix-blend-mode: screen;
height: 100rpx;
}
map,.mapBox{
width: 750rpx;
height: 300rpx;
}
.png1 {
border-radius: 50%;
}
.box {
margin: 20upx 0;
}
</style>
@@ -0,0 +1,130 @@
<template>
<view>
<scroll-view scroll-y class="page">
<cu-custom bgColor="bg-cyan" :isBack="true"><block slot="backText">返回</block><block slot="content">个人信息维护</block></cu-custom>
<view class="photoView">
<view class="photoImage">
<open-data type="userAvatarUrl"></open-data>
</view>
</view>
<form action="">
<view class="cu-form-group">
<view class="title">医院名称</view>
<input :value="hospital" disabled="disabled"></input>
</view>
<view class="cu-form-group">
<view class="title">分院名称</view>
<input :value="sortHospital" disabled="disabled"></input>
</view>
<view class="cu-form-group">
<view class="title">科室名称</view>
<input :value="department" disabled="disabled"></input>
</view>
<view class="cu-form-group">
<view class="title">职务名称</view>
<input :value="duty" disabled="disabled"></input>
</view>
<view class="cu-form-group margin-top">
<view class="title">姓名</view>
<input :value="name" name="name" @input="getName"></input>
</view>
<view class="cu-form-group">
<view class="title">联系电话</view>
<input :value="phone" name="phone" @input="getPhone"></input>
</view>
</form>
<view class="padding flex flex-direction" style="padding-top: 100rpx;">
<button class="cu-btn round bg-cyan margin-tb-sm lg" @click="buttonClick">修改</button>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
hospital: '',
sortHospital: '',
department: '',
duty: '',
name: '',
phone: ''
}
},
created() {
this.hospital = getApp().globalData.hospital
this.sortHospital = getApp().globalData.sortHospital
this.department = getApp().globalData.department
this.duty = getApp().globalData.duty
this.name = getApp().globalData.name
this.phone = getApp().globalData.phone
},
methods: {
getName: function(e){
this.name = e.target.value
},
getPhone: function(e){
this.phone = e.target.value
},
buttonClick(e) {
let new_that = this;
uni.request({
url: 'https://lekapi.opmonitor.com/?c=app_api&a=getUserInfoUpdate',
data: {
name: new_that.name,
phone: new_that.phone,
openid: getApp().globalData.openid
},
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
method: 'POST',
success: function(res){
//重新赋值
getApp().globalData.name = res.data.data.name
getApp().globalData.phone = res.data.data.phone
uni.navigateTo({
url: '/pages/index/index'
})
},
fail: () => {
console.info('小程序域名不正确,请检查域名正确性')
}
})
}
}
}
</script>
<style>
.page {
width: 100vw;
height: 120Vh;
}
.photoView {
padding-top: 50rpx;
position: relative;
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
}
.photoImage {
overflow:hidden;
display: block;
width: 200rpx;
height: 200rpx;
margin: 20rpx;
border-radius: 50%;
border: 2px solid #fff;
box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);
}
.cu-form-group .title{
min-width: calc(4em + 15px);
font-weight: 600;
}
.picker {
text-align: left;
}
</style>