代码提交

This commit is contained in:
‘tuzi0421 2024-02-19 16:53:38 +08:00
parent a93b95e814
commit d022e33da9
34 changed files with 1833 additions and 285 deletions

42
App.vue
View File

@ -3,8 +3,10 @@
onLaunch: function() { onLaunch: function() {
console.warn('当前组件仅支持 uni_modules 目录结构 ,请升级 HBuilderX 到 3.1.0 版本以上!') console.warn('当前组件仅支持 uni_modules 目录结构 ,请升级 HBuilderX 到 3.1.0 版本以上!')
console.log('App Launch') console.log('App Launch')
// plus.navigator.setFullscreen(true);// // #ifndef MP-WEIXIN
// uni.hideTabBar(); uni.hideTabBar();
// #endif
}, },
onShow: function() { onShow: function() {
console.log('App Show') console.log('App Show')
@ -43,8 +45,44 @@
.font12{font-size: $uni-font-size-sm;} .font12{font-size: $uni-font-size-sm;}
.font13{font-size:13px;} .font13{font-size:13px;}
.font14{font-size: $uni-font-size-base;} .font14{font-size: $uni-font-size-base;}
.font15{font-size: 15px;}
.font20{font-size: 20px;}
.font22{font-size: 22px;}
.font24{font-size: 24px;}
.font35{font-size: 35px;}
.font_bold{font-weight: bold;} .font_bold{font-weight: bold;}
// //
.text_color_black{color: #000;} .text_color_black{color: #000;}
// .text_{color: #00B68D;}
//
.flex_layout{display: flex;}
//paddind
.padd_top12{padding-top:12px;}
//margin
.mar_top12{margin-top: 12px;}
.page_list{margin-bottom: 12px;padding:0 12px;}
//
.detail_list{margin-bottom: 12px;
.list_top{
display: flex;
padding:12px;
font-size: 14px;
border-radius: 8px 8px 0px 0px;
background: linear-gradient(90deg, rgba(61, 84, 176, 0.70) 5.83%, rgba(58, 77, 158, 0.00) 73.76%);
.top_left{flex: 1;}
}
.list_content{padding:12px;}
}
//
.bottom_but{bottom: 40px;bottom: 40px;position: fixed;width: calc(100% - 28px);
view{width: 50%;text-align: center;margin: 0 20px;border-radius: 19px;background: #DDD;line-height: 38px;}
}
//
.page_bottom_button{width: 100%;position: fixed;bottom: 0px;background-color: #060B26;border-top: 1px solid #2E3249;height: 80px;
.page_add{display: flex;justify-content: center;margin: 7px 20px;border-radius: 17.5px;background: #1C2755;line-height: 35px;}
}
.bot_padding{padding-bottom: 100px;}
</style> </style>

Binary file not shown.

Binary file not shown.

BIN
components/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,123 @@
<template>
<view class="progress_box">
<canvas class="progress_bg" canvas-id="cpbg"></canvas>
<canvas class="progress_bar" canvas-id="cpbar"></canvas>
<view class="progress_txt">
<view class="progress_info">{{ progress_txt }}%</view>
<text class="progress_title">{{title}}</text>
</view>
</view>
</template>
<script>
export default {
props:{
progress_txt:{
type: Number,
default:0
},
title:{
type:String,
default: ''
},
width:{
type:Number,
defauit:''
},
height:{
type:Number,
defauit:''
}
},
mounted: function() {
this.drawProgressbg();
this.drawCircle(this.progress_txt); //1-100
this.style(this.width,this.height);
},
methods: {
style:function(width,height){
// console.log(width,height)
// document.getElementById("cpbg").style.width = width+"px";
// cpbgA.style.width = width+"px";
// cpbgA.style.height = height+"px";
// var cpbarA = document.getElementById("cpbar");
// cpbarA.style.width = width+"px";
// cpbarA.style.height = height+"px";
},
drawProgressbg: function() {
// this canvas-id <canvas/>
var ctx = uni.createCanvasContext('cpbg', this);
ctx.setLineWidth(6); //
ctx.setStrokeStyle('#E9E9E9'); //
ctx.setLineCap('round'); //
ctx.beginPath(); //
ctx.arc(110, 110, 70, 0.75 * Math.PI, 0.25 * Math.PI, false);
//(110,110)100
ctx.stroke(); //
ctx.draw();
},
drawCircle: function(step) {
var ctx = uni.createCanvasContext('cpbar', this);
// (x--Yx++Y)
var gradient = ctx.createLinearGradient(28, 55, 192, 55);
gradient.addColorStop('0', '#009688');
// gradient.addColorStop('1.0', '#FF3B1D');
ctx.setLineWidth(6);
ctx.setStrokeStyle(gradient);
ctx.setLineCap('round');
ctx.beginPath();
// step
step = 0.015 * step + 0.75;
if (step >= 2) {
step = step % 2;
}
ctx.arc(110, 110, 70, 0.75 * Math.PI, step * Math.PI, false);
ctx.stroke();
ctx.draw();
},
}
};
</script>
<style>
.progress_box {
position: relative;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.progress_bg {
position: absolute;
width: 220px;
height: 220px;
}
.progress_bar {
width: 220px;
height: 220px;
}
.progress_txt {
position: absolute;
font-size: 28upx;
color: #999999;
}
.progress_info {
font-size: 36upx;
padding-left: 16upx;
letter-spacing: 2upx;
font-size: 52upx;
color: #fff;
}
.progress_titleP{
color: #BFBFBF;
}
.progress_dot {
width: 16upx;
height: 16upx;
border-radius: 50%;
background-color: #fb9126;
}
</style>

View File

@ -31,8 +31,8 @@ export default {
{ {
id: 0, id: 0,
path: '/pages/index/index', path: '/pages/index/index',
icon: '/static/logo.png', icon: '/static/indexB.png',
selectIcon: '/static/logo.png', selectIcon: '/static/indexA.png',
text: '首页', text: '首页',
centerItem: false centerItem: false
}, },
@ -48,8 +48,8 @@ export default {
{ {
id: 2, id: 2,
path: '/pages/person/person', path: '/pages/person/person',
icon: '/static/logo.png', icon: '/static/personA.png',
selectIcon: '/static/logo.png', selectIcon: '/static/personB.png',
text: '我的', text: '我的',
centerItem: false centerItem: false
} }
@ -58,13 +58,9 @@ export default {
}, },
mounted () { mounted () {
this.currentItem = this.currentPage this.currentItem = this.currentPage
// tabBar
uni.hideTabBar()
}, },
methods: { methods: {
changeItem (item) { changeItem (item) {
let _this = this
//_this.currentItem = item.id;
uni.switchTab({ uni.switchTab({
url: item.path url: item.path
}) })
@ -89,7 +85,7 @@ view {
align-items: center; align-items: center;
padding: 5rpx 0; padding: 5rpx 0;
color: #999999; color: #999999;
background: #131E3B;
/* 针对tabbar的统一处理 */ /* 针对tabbar的统一处理 */
.tabbar-item { .tabbar-item {
width: 33.33%; width: 33.33%;

View File

@ -0,0 +1,94 @@
<template>
<!-- style="height: 3.5rem; margin: 0 1em;" -->
<view>
<view class="line-total" :style="'width: ' + (val / total * 100) + '%'">
<text class="line-data">
{{val}}%
</text>
</view>
<view style="position: relative;bottom: 10px;">
<view class="line-base"></view>
<view class="line-blue" :style="'width: ' + (val / total * 100) + '%'"></view>
</view>
<!-- <view class="line-val">
<text>{{title}}</text>
<text>{{total}}</text>
</view> -->
</view>
</template>
<script>
export default {
name: 'progressBar',
data() {
return {
}
},
props: {
//
title: {
type: [String, Number],
default: ''
},
total: {
type: [Number],
default: 0
},
val: {
type: [Number],
default: 0
}
},
computed: {
},
methods: {
}
}
</script>
<style scoped>
.line-total {
color: #67C23A;
text-align: right;
font-size: 25rpx;
font-style: normal;
font-weight: 700;
line-height: normal;
position: relative;
z-index: 99;
}
.line-data{
color: #fff;
padding: 1px 3px;
border-radius: 9px;
border: 1px solid #FFF;
background: var(--color-warning, #67C23A);
width: 30px;
font-size: 11px;
}
.line-base {
position: absolute;
width: 100%;
height: 6px;
border-radius: 8px;
background: rgba(128, 136, 142, 0.40);
}
.line-blue {
position: absolute;
width: 50%;
height: 6px;
border-radius: 10px;
background: #67C23A;
}
.line-val {
display: flex;
justify-content: space-between;
color: #7e7e7e;
font-size: 25rpx;
font-weight: 50px;
margin-top: 12rpx;
}
</style>

View File

@ -41,12 +41,84 @@
} }
}, },
{ {
"path" : "pages/index/productionOrder", "path" : "pages/production/productionOrder",
"style" : "style" :
{ {
"navigationBarTitleText" : "生产工单管理", "navigationBarTitleText" : "生产工单管理",
"enablePullDownRefresh" : false "enablePullDownRefresh" : false
} }
},
{
"path" : "pages/index/schedule",
"style" :
{
"navigationBarTitleText" : "工单进度",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/index/materialYield",
"style" :
{
"navigationBarTitleText" : "工单出材率",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/equipmentManage/equipmentManage",
"style" :
{
"navigationBarTitleText" : "设备管理",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/equipmentManage/editDevice",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/equipmentManage/bindingDevice",
"style" :
{
"navigationBarTitleText" : "设备管理",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/production/productionDetail",
"style" :
{
"navigationBarTitleText" : "工单详情",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/deviceRepair/deviceRepair",
"style" :
{
"navigationBarTitleText" : "硬件设备报修",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/deviceRepair/RepairReport",
"style" :
{
"navigationBarTitleText" : "设备报修",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/deviceStatus/deviceStatus",
"style" :
{
"navigationBarTitleText" : "设备状态",
"enablePullDownRefresh" : false
}
}], }],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "white", "navigationBarTextStyle": "white",

View File

@ -0,0 +1,115 @@
<template>
<!-- 设备报修 -->
<view class="pagepaddings">
<view class="page_content contentboxsty font14">
<view class="content_row">
<view class="name">值班工程师</view>
<view class="">
<picker placeholder="请选择设备" @change="bindPickerChange" :value="index" :range="array" >
<input type="text" :value="array[index]" placeholder="请选择设备" disabled />
</picker>
</view>
<view class="iconfont icon-xiala"></view>
</view>
<view class="content_row">
<view class="name">故障时间</view>
<view class="">
<view :class="[downtime ? 'haveTime' : 'noTime']">
<uni-datetime-picker placeholder="清选择时间" type="datetime" v-model="downtime" @change="changeLog" />
</view>
</view>
<!-- <view class=""></view> -->
</view>
<view class="content_row">
<view class="name">报修时间</view>
<view class="">
<view :class="[repairtime ? 'haveTime' : 'noTime']">
<uni-datetime-picker placeholder="清选择时间" type="datetime" v-model="repairtime" @change="changeLog" />
</view>
</view>
<view class=""></view>
</view>
<view class="content_row">
<view class="name">报修人</view>
<view class="">
<picker placeholder="请选择" @change="bindPickerChange" :value="index" :range="array" >
<input type="text" :value="array[index]" placeholder="请选择" disabled />
</picker>
</view>
<view class=""></view>
</view>
<view class="content_row">
<view class="name">报修设备</view>
<view class="">
<picker placeholder="请选择" @change="bindPickerChange" :value="index" :range="array" >
<input type="text" :value="array[index]" placeholder="请选择" disabled />
</picker>
</view>
<view class=""></view>
</view>
<view class="textarea_row">
<view class="name">故障描述</view>
<textarea placeholder="请输入维修描述..."/>
<!-- <uni-easyinput type="textarea" v-model="value" placeholder="请输入维修描述..."></uni-easyinput> -->
</view>
<view class="img_row">
<view class="name">故障照片</view>
<uni-file-picker limit="3" v-model="imageValue" title="">
<view class="img_but">
<view class="iconfont icon-a-shangchuanzhaopian2 font35"></view>
<view class="font12">
上传图片
</view>
</view>
</uni-file-picker>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
array: ['中国', '美国', '巴西', '日本'],
downtime:'',
}
},
methods: {
changeLog(){
console.log(this.downtime)
}
}
}
</script>
<style lang="scss">
.page_content{padding: 0 12px 10px;}
.content_row{display: flex;border-bottom: 1px solid #2D3A6F;height: 44px;align-items: center;
.name{width: 30%;}
.flex_layout{
.contenticon{width: 20px;height: 20px;}
.text{padding: 0 20px 0 5px;}
}
}
.textarea_row{
.name{padding: 12px 0;}
textarea{border-radius: 4px;background: rgba(255, 255, 255, 0.50);padding: 10px;}
}
.img_row{
.name{padding: 12px 0;}
.file-title {color: #fff;}
.is-add{background: rgba(255, 255, 255, 0.5);}
.img_but{ position: relative;display: flex;align-items: center;justify-content: center;flex-direction: column;}
}
.uni-date-x{
background-color: #1C2755 !important;color: #fff!important;
}
.uni-date-x--border{border:none !important}
.haveTime{
.uni-date__x-input{color: #fff;}
}
.noTime{.uni-date__x-input{color: #666;}}
</style>

View File

@ -0,0 +1,105 @@
<template>
<!-- 设备报修 -->
<view class="pagepaddings bot_padding">
<view v-for="(item,index) in list" :key="index">
<view class="page_list contentboxsty font13">
<view class="list_top flex_layout">
<view class="top_left flex_layout">
<view class="iconfont icon-gengduo-1"></view>
<view class="">双头带锯</view>
</view>
<view class="top_right">故障中</view>
</view>
<view class="list_centre">
<view class="row_data">
<view class="row_name">值班工程师</view>
<view class="row_content">章三</view>
</view>
<view class="row_data">
<view class="row_name">故障时间</view>
<view class="row_content">2024-01-11 13:09:11</view>
</view>
<view class="row_data">
<view class="row_name">报修人</view>
<view class="row_content">李四</view>
</view>
<view class="row_data">
<view class="row_name">故障时间</view>
<view class="row_content">3.5H</view>
</view>
<view class="row_data">
<view class="row_name">处理状态</view>
<view class="row_content">故障处理中</view>
</view>
<view class="row_data">
<view class="row_name">故障解除时间</view>
<view class="row_content">2024-01-11 14:09:07</view>
</view>
</view>
<view class="list_below flex_layout">
<view class="below_left">
修改
</view>
<view class="below_right">
查看详情
</view>
</view>
</view>
</view>
</view>
<view class="page_bottom_button">
<view class="page_add" @click="toAddRepairReport()">
<!-- <view class="name_left font14">
系统设备管理
</view> -->
<view class="iconfont icon-tianjia font24"></view>
<text>添加</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list:[{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
]
}
},
methods: {
//
toAddRepairReport(){
uni.navigateTo({
url:'/pages/deviceRepair/RepairReport'
})
},
//
}
}
</script>
<style lang="scss">
.page_list{
.list_top{line-height: 44px;align-items: center;border-bottom: 1px solid #2D3A6F;
.top_left{flex: 1;}
}
.list_centre{
.row_name{width: 30%;}
.row_data{display: flex;display: flex;padding: 6px 0;}
}
.list_below{line-height: 49px;align-items: center;border-top: 1px solid #2D3A6F;
view{width: 50%; text-align: center;}
.below_left{border-right: 1px solid #2D3A6F;}
}
}
</style>

View File

@ -0,0 +1,23 @@
<template>
<!-- 设备状态 -->
<view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>

View File

@ -0,0 +1,103 @@
<template>
<!-- 绑定安全生产监控相机 -->
<view>
<view class="pagepaddings">
<view class="page_name font14">绑定安全生产监控相机</view>
<view class="page_content contentboxsty font13">
<view class="content_row">
<view class="name">串流推流Url</view>
<view class="">
<input placeholder="请输入串流推流Url"/>
</view>
</view>
<view class="content_row">
<view class="name">AppName</view>
<view class="">
<input placeholder="请输入APP名称"/>
</view>
</view>
<view class="content_row noborbot">
<view class="name"></view>
<view class="tip">
不超过256字符支持数字大小写字母短划线-下划线_等号=
</view>
</view>
<view class="content_row">
<view class="name">StreamName</view>
<view class="">
<input placeholder="请输入StreamName"/>
</view>
</view>
<view class="content_row noborbot">
<view class="name"></view>
<view class="tip">
不超过256字符支持数字大小写字母短划线-下划线_等号=
</view>
</view>
<view class="content_row">
<view class="name">设备IP</view>
<view class="">
<input placeholder="请输入设备IP"/>
</view>
</view>
<view class="content_row">
<view class="name">端口</view>
<view class="">
<input placeholder="请输入设备端口"/>
</view>
</view>
<view class="content_row">
<view class="name">用户名</view>
<view class="">
<input placeholder="请输入您的用户名"/>
</view>
</view>
<view class="content_row">
<view class="name">密码</view>
<view class="">
<input placeholder="请输入密码"/>
</view>
</view>
<view class="content_row">
<view class="name">监控推流权限</view>
<view class="flex_layout">
<view class="t-icon t-icon-qiyong1 contenticon"></view><text class="text">Token验证</text>
<view class="t-icon t-icon-jinyong2 contenticon"></view><text class="text">禁用</text>
<!-- <label class="radio"><radio value="r1" checked="true" />Token验证</label>
<label class="radio"><radio value="r2" />禁用</label> -->
</view>
</view>
</view>
<view class="bottom_but flex_layout">
<view class="font13">保存</view>
<view class="font13">取消</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style lang="scss">
.page_name{margin-bottom: 10px;}
.page_content{padding: 0 12px;}
.content_row{display: flex;border-bottom: 1px solid #2D3A6F;height: 44px;align-items: center;
.name{width: 30%;}
.tip{width: 70%;font-size: 10px;color: #666;}
.flex_layout{
.contenticon{width: 20px;height: 20px;}
.text{padding: 0 20px 0 5px;}
}
}
</style>

View File

@ -0,0 +1,98 @@
<template>
<page-meta>
<navigation-bar title="添加设备" color="white"></navigation-bar>
</page-meta>
<view class="pagepaddings">
<view class="page_name font14">
添加/编辑设备
</view>
<view class="page_content contentboxsty font13">
<view class="content_row">
<view class="name">选择设备</view>
<picker placeholder="请选择设备" @change="bindPickerChange" :value="index" :range="array" >
<input type="text" :value="array[index]" placeholder="请选择设备" disabled />
</picker>
<!-- <view class="">
<picker @change="bindPickerChange" placeholder="请选择设备" :value="index" :range="array">
<view class="uni-input" style="width: 70%;">{{array[index]}}</view>
</picker>
</view -->
</view>
<view class="content_row">
<view class="name">设备自定义名称</view>
<view class="">
<input placeholder="请输入设备名称"/>
</view>
</view>
<view class="content_row">
<view class="name">设备功率</view>
<view class="">
<input placeholder="请输入设备功率"/>
</view>
</view>
<view class="content_row">
<view class="name">设备IP</view>
<view class="">
<input placeholder="请输入设备IP"/>
</view>
</view>
<view class="content_row">
<view class="name">端口</view>
<view class="">
<input placeholder="请输入设备端口"/>
</view>
</view>
<view class="content_row">
<view class="name">状态</view>
<view class="flex_layout">
<!-- <image src="/static/enable.png" mode=""></image><text class="text">启用</text>
<image src="/static/disable.png" mode=""></image><text class="text">禁用</text> -->
<view class="t-icon t-icon-qiyong1 contenticon"></view><text class="text">启用</text>
<view class="t-icon t-icon-jinyong2 contenticon"></view><text class="text">禁用</text>
<!-- <label class="radio"><radio value="r1" checked="true" />启用</label>
<label class="radio"><radio value="r2" />禁用</label> -->
</view>
</view>
<view class="textarea_row">
<view class="name">设置备注</view>
<textarea />
</view>
</view>
<view class="bottom_but flex_layout">
<view class="font13">保存</view>
<view class="font13">取消</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
array: ['中国', '美国', '巴西', '日本'],
}
},
methods: {
}
}
</script>
<style lang="scss">
.page_name{margin-bottom: 10px;}
.page_content{padding: 0 12px 10px;}
.content_row{display: flex;border-bottom: 1px solid #2D3A6F;height: 44px;align-items: center;
.name{width: 30%;}
.flex_layout{
.contenticon{width: 20px;height: 20px;}
.text{padding: 0 20px 0 5px;}
}
}
.textarea_row{
.name{padding: 12px 0;}
textarea{border-radius: 4px;background: rgba(255, 255, 255, 0.50);width: 100%;}
}
</style>

View File

@ -0,0 +1,80 @@
<template>
<!-- 设备管理 -->
<view class="pagepaddings bot_padding">
<view class="" v-for="(item,index) in list" :key="index" >
<view class="page_list contentboxsty font13">
<view class="list_row">
<view class="row_name">
设备名称
</view>
<view class="row_data">
{{item.name}}
</view>
<view class="iconfont icon-bianji font20"></view>
</view>
<view class="list_row">
设备IP/端口
</view>
<view class="list_row">
<view class="row_name">
已绑定设备
</view>
<view class="row_data">
{{item.name}}
</view>
<view class="iconfont icon-bangding font20" @click="toBindingDevice()"></view>
</view>
</view>
</view>
</view>
<view class="page_bottom_button">
<view class="page_add" @click="toAddDevice()">
<!-- <view class="name_left font14">
系统设备管理
</view> -->
<view class="iconfont icon-tianjia font24"></view>
<text>添加</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list:[{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
{name:"双头立锯"},
]
}
},
methods: {
toAddDevice(){
uni.navigateTo({
url:'/pages/equipmentManage/editDevice'
})
},
toBindingDevice(){
uni.navigateTo({
url:'/pages/equipmentManage/bindingDevice'
})
}
}
}
</script>
<style>
/* .page_name{display: flex;margin-bottom: 10px;align-items: center;} */
/* .name_left{flex: 1;} */
.page_list{padding: 6px 12px;}
.list_row{display: flex;padding: 6px 0;align-items: center;}
.row_name{width:30%;}
.row_data{width: 65%;}
</style>

View File

@ -3,11 +3,162 @@
<view class="container home"> <view class="container home">
<view class="home_head"> <view class="home_head">
<view class="iconfont icon-chaojiguanliyuan accounticon"></view> <view class="iconfont icon-chaojiguanliyuan accounticon"></view>
<view class="name">Ykxiao 超级管理员</view> <view class="name" @click="toLogin()">未登录</view>
<!-- <view class="name">Ykxiao 超级管理员</view> -->
<view class="iconfont icon-xiaoxitongzhi notifyicon" @click="toMessage()"></view> <view class="iconfont icon-xiaoxitongzhi notifyicon" @click="toMessage()"></view>
<view class="iconfont icon-shezhi setupicon"></view> <view class="iconfont icon-shezhi setupicon"></view>
</view> </view>
<view class="home_content"> <view class="home_content">
<view class="content_box">
<view class="content_title">设备信息</view>
<view class="device_data">
<view class="device_module">
<view class="module_left">
<view class="icon_background">
<view class="iconfont icon-WIFI_on contenticon"></view>
</view>
<view class="font13">
在线设备
</view>
</view>
<view class="module_right">
<view class="top">
2.89%
</view>
<view class="font22">
1,567
</view>
</view>
</view>
<view class="device_module">
<view class="module_left">
<view class="icon_background">
<view class="iconfont icon-WIFI_off contenticon"></view>
</view>
<view class="font13">
离线设备
</view>
</view>
<view class="module_right">
<view class="top">
2.89%
</view>
<view class="font22">
1,567
</view>
</view>
</view>
<view class="device_module">
<view class="module_left">
<view class="icon_background">
<view class="iconfont icon-setting contenticon"></view>
</view>
<view class="font13">
维修保养
</view>
</view>
<view class="module_right">
<view class="top">
2.89%
</view>
<view class="font22">
1,567
</view>
</view>
</view>
<view class="device_module">
<view class="module_left">
<view class="icon_background">
<view class="iconfont icon-broken contenticon"></view>
</view>
<view class="font13">
故障频次
</view>
</view>
<view class="module_right">
<view class="top">
2.89%
</view>
<view class="font22">
1,567
</view>
</view>
</view>
<view class="device_module">
<view class="module_left">
<view class="icon_background">
<view class="iconfont icon-brokenrate contenticon"></view>
</view>
<view class="font13">
设备故障率
</view>
</view>
<view class="module_right">
<view class="top">
2.89%
</view>
<view class="font22">
1,567
</view>
</view>
</view>
<view class="device_module">
<view class="module_left">
<view class="icon_background">
<view class="iconfont icon-weixiubaoyangpinshuai contenticon"></view>
</view>
<view class="font13">
维修保养频率
</view>
</view>
<view class="module_right">
<view class="top">
2.89%
</view>
<view class="font22">
1,567
</view>
</view>
</view>
</view>
</view>
<view class="content_box">
<view class="content_title">能耗信息</view>
<view class="energy_data">
<view class="iconfont icon-dianliang energy_icon"></view>
<view class="energy_name">
<view class="font13">
用电量
</view>
<view class="font14">
345.00
</view>
</view>
<view class="energy_image">
<image src="http://dm-auto.oss-cn-shanghai.aliyuncs.com/mes_wechat/yongdian.png" alt="" />
</view>
<view class="energy_number font20">
41.443
</view>
</view>
<view class="energy_data mar_top12">
<view class="iconfont icon-yasuokongqi energy_icon"></view>
<view class="energy_name">
<view class="font13">
用气量
</view>
<view class="font14">
345.00
</view>
</view>
<view class="energy_image">
<image src="http://dm-auto.oss-cn-shanghai.aliyuncs.com/mes_wechat/yongqi.png" alt="" />
</view>
<view class="energy_number font20">
41.443
</view>
</view>
</view>
<view class="content_box"> <view class="content_box">
<view class="content_title">工单管理</view> <view class="content_title">工单管理</view>
<view class="content_data"> <view class="content_data">
@ -15,11 +166,11 @@
<view class="t-icon t-icon-shengchangongdan contenticon"></view> <view class="t-icon t-icon-shengchangongdan contenticon"></view>
<view class="contentname">生产工单</view> <view class="contentname">生产工单</view>
</view> </view>
<view class="content_module"> <view class="content_module" @click="toSchedule()">
<view class="t-icon t-icon-gongdanjindu contenticon"></view> <view class="t-icon t-icon-gongdanjindu contenticon"></view>
<view class="contentname">工单进度</view> <view class="contentname">工单进度</view>
</view> </view>
<view class="content_module"> <view class="content_module" @click="toMaterialYield()">
<view class="t-icon t-icon-gongdanchucaishuai contenticon"></view> <view class="t-icon t-icon-gongdanchucaishuai contenticon"></view>
<view class="contentname">工单出材率</view> <view class="contentname">工单出材率</view>
</view> </view>
@ -28,6 +179,7 @@
<view class="contentname">生产报表</view> <view class="contentname">生产报表</view>
</view> </view>
</view> </view>
</view> </view>
<view class="content_box"> <view class="content_box">
<view class="content_title">生产排程</view> <view class="content_title">生产排程</view>
@ -45,17 +197,17 @@
<view class="content_box"> <view class="content_box">
<view class="content_title">设备管理</view> <view class="content_title">设备管理</view>
<view class="content_data"> <view class="content_data">
<view class="content_module"> <view class="content_module" @click="toEquipmentManage()">
<view class="t-icon t-icon-shebeiguanli contenticon"></view> <view class="t-icon t-icon-shebeiguanli contenticon"></view>
<view class="contentname">设备设置</view> <view class="contentname">设备设置</view>
</view> </view>
<view class="content_module"> <view class="content_module" @click="toDeviceStatus()">
<view class="t-icon t-icon-shebeizhuangtai contenticon"></view> <view class="t-icon t-icon-shebeizhuangtai contenticon"></view>
<view class="contentname">设备状态</view> <view class="contentname">设备状态</view>
</view> </view>
<view class="content_module"> <view class="content_module">
<view class="t-icon t-icon-shebeibaoxiu contenticon"></view> <view class="t-icon t-icon-shebeibaoxiu contenticon" @click="toDeviceRepair()"></view>
<view class="contentname">设备</view> <view class="contentname">设备</view>
</view> </view>
</view> </view>
</view> </view>
@ -77,6 +229,12 @@
} }
}, },
methods: { methods: {
//
toLogin(){
uni.navigateTo({
url:'/pages/login/login'
})
},
// //
toMessage(){ toMessage(){
uni.navigateTo({ uni.navigateTo({
@ -86,58 +244,91 @@
// //
toProductionOrder(){ toProductionOrder(){
uni.navigateTo({ uni.navigateTo({
url:'/pages/index/productionOrder' url:'/pages/production/productionOrder'
})
},
//
toSchedule(){
uni.navigateTo({
url:'/pages/index/schedule'
})
},
//
toMaterialYield(){
uni.navigateTo({
url:'/pages/index/materialYield'
})
},
//
toEquipmentManage(){
uni.navigateTo({
url:'/pages/equipmentManage/equipmentManage'
})
},
//
toDeviceRepair(){
uni.navigateTo({
url:'/pages/deviceRepair/deviceRepair'
})
},
//
toDeviceStatus(){
uni.navigateTo({
url:'/pages/deviceStatus/deviceStatus'
}) })
}, },
} }
} }
</script> </script>
<style> <style lang="scss">
/* .icon { .home {height: 100vh;padding: 0 10px;font-size: 14px;
width: 80upx; .home_head{height: 40px;display: flex;position: relative;align-items: center;padding-bottom: 5px;
height: 80upx; .name{flex:1;}
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
} */
.home {
height: 100vh;
/* background-color: #060B26; */
padding: 0 10px;
font-size: 14px;
}
.home_head{height: 40px;display: flex;position: relative;align-items: center;padding-bottom: 5px;}
.home_head .name{flex:1;}
.accounticon{ .accounticon{
/* width: 20px;
height: 20px; */
margin-right: 5px; margin-right: 5px;
color: #fff; color: #fff;
font-size: 20px; font-size: 20px;
} }
.notifyicon{font-size: 20px;padding-right: 20px;} .notifyicon{font-size: 20px;padding-right: 20px;}
.setupicon{font-size: 20px;} .setupicon{font-size: 20px;}
.home_content{ }
}
} .home_content{padding-bottom: 100px;
.content_title{ .content_title{line-height: 25px;font-size: 16px;padding: 15px 0;}
line-height: 25px; .device_data{display: flex;flex-wrap: wrap;
font-size: 16px; .device_module{
} width: calc(50% - 12px); /* 计算每个块的宽度(根据需要调整)*/
.content_data{padding: 10px 0;display: flex;position: relative;align-items: center;text-align: center;height: 98px;} margin:6px;
.content_module{ background-color: #ccc; /* 设置背景色(根据需要调整)*/
width: 25%; padding: 10px;
margin: 10px 1%; background: #1C2755;
height: 98px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
background-color: #009688;
border-radius: 8px; border-radius: 8px;
display: flex;
.module_left{width: 60%;
.icon_background{width: 32px;height: 32px;background: #6576B7;border-radius: 8px; display: flex;align-items: center;justify-content: center;margin-bottom: 4px;}
} }
.module_right{width: 40%;
.top{float: right;font-size: 10px;padding: 2px 4px;background: rgba(103,194,58,0.3);border-radius: 4px;color: #67C23A;}
}
}
}
.energy_data{padding: 12px; height: 64px; display: flex;align-items: center;background: #1C2755;border-radius: 8px;
.energy_icon{color: #009688;font-size: 24px;margin-right: 8px;}
.energy_image{flex: 1;text-align: center;
image{width: 86px;height: 32px;}
}
.energy_number{color: #FA3758;}
}
.content_data{
padding: 10px 0;display: flex;position: relative;align-items: center;text-align: center;height: 98px;
.content_module{
width: 25%;margin: 10px 1%;height: 98px;display: flex;align-items: center;justify-content: center;flex-direction: column;background-color: #009688;border-radius: 8px;
.contenticon{font-size: 24px;width: 32px;height: 32px;background-repeat: no-repeat;} .contenticon{font-size: 24px;width: 32px;height: 32px;background-repeat: no-repeat;}
.contentname{padding-top: 2px;font-size: 12px;} .contentname{padding-top: 2px;font-size: 12px;}
}
}
}
</style> </style>

View File

@ -0,0 +1,107 @@
<template>
<!-- 工单出材率 -->
<view class="pagepaddings font13">
<view v-for="(item,index) in list" :key="index" class="detail_list contentboxsty">
<view class="list_top">
<view class="top_left">
工单号:{{item.name}}
</view>
<view class="top_right">
工单详情
</view>
</view>
<view class="list_content">
<view class="list_centre">
<view class="centre_left">
加工规格:{{item.specs}}
</view>
<view class="centre_right">
生产中
</view>
</view>
<view class="list_below">
<view class="below_left">
<view class="">
算法出材率
</view>
<view class="percentage font24">
{{item.algorithm}}%
</view>
</view>
<view class="below_left">
<view class="">
算法出材率
</view>
<view class="percentage font24">
{{item.reality}}%
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list:[{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
}]
}
},
methods: {
}
}
</script>
<style lang="scss">
.detail_list{
// .list_top{display: flex;padding: 12px 0;border-bottom: 1px solid #2D3A6F;margin-bottom: 8px;
// .top_left{flex: 1;}
// }
.list_centre{display: flex;
.centre_left{flex: 1;}
}
.list_below{display: flex;text-align: center;padding: 20px 0;
view{flex: 1;}
.percentage{color: #00B68D;}
}
}
</style>

View File

@ -1,123 +0,0 @@
<template>
<!-- 生产工单 -->
<view class="pagepaddings">
<view v-for="(item,index) in list" :key="index" class="page_list contentboxsty">
<view class="list_top">
<view class="top_left">
工单号:{{item.name}}
</view>
<view class="top_right">
工单详情
</view>
</view>
<view class="list_centre">
<view class="centre_left">
<view class="">
算法出材率
</view>
<view class="">
{{item.algorithm}}%
</view>
</view>
<view class="centre_left">
<view class="">
算法出材率
</view>
<view class="">
{{item.reality}}%
</view>
</view>
</view>
<view class="list_below">
<view class="">
<view class="">
<text>状态</text>
<text>{{item.state}}</text>
</view>
<view class="">
<text>价格规格</text>
<text>{{item.specs}}</text>
</view>
</view>
<view class="">
<view class="">
<text>生产开始</text>
<text>{{item.time}}</text>
</view>
<view class="">
<text>工单耗时</text>
<text>{{item.timeConsuming}}</text>
</view>
</view>
<view class="">
<view class="">
<text>工单数量</text>
<text>{{item.number}}</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list:[{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
}]
}
},
methods: {
}
}
</script>
<style lang="scss">
.page_list{
margin-bottom: 12px;
padding: 12px;
.list_top{display: flex;
.top_left{flex: 1;}
}
.list_centre{display: flex;text-align: center;
view{flex: 1;}
}
}
</style>

61
pages/index/schedule.vue Normal file
View File

@ -0,0 +1,61 @@
<template>
<!-- 工单进度管理 -->
<view class="pagepaddings">
<view class="detail_list contentboxsty">
<view class="list_top">
<view class="top_left">
工单号:
</view>
<view class="top_right">
工单详情
</view>
</view>
<view class="list_content">
<view class="list_row">
<view class="row_left">
<view class="">开始时间</view>
<view class=""></view>
</view>
<view class="row_right">
生产中
</view>
</view>
<view class="list_row padd_top12">
<view class="">计划完成</view>
<view class=""></view>
</view>
<view class="padd_top12">
<progressBar :total="100" :val="20" title="" />
</view>
</view>
<annularProgressBar :progress_txt="20" :width="84" :height="69" title="出材率"/>
</view>
</view>
</template>
<script>
import progressBar from '/components/progressBar.vue'
import annularProgressBar from '/components/chocolate-progress-bar/chocolate-progress-bar.vue'
export default {
components: {
"progressBar":progressBar,
"annularProgressBar":annularProgressBar,
},
data() {
return {
list:[{name:''}]
}
},
methods: {
}
}
</script>
<style lang="scss">
.detail_list{
.list_content{
.list_row{display: flex;}
}
}
</style>

View File

@ -11,14 +11,14 @@
</view> </view>
<view class="login_centre"> <view class="login_centre">
<view class="login_switch text_color_black font14"> <view class="login_switch text_color_black font14">
<view class="login_name font_bold" > <view :class="['login_name', tab==1?'font_bold':'']" @click="changeTab(1)">
账号登录 账号登录
</view> </view>
<view class="login_name"> <view :class="['login_name', tab==2?'font_bold':'']" @click="changeTab(2)">
手机号登录 手机号登录
</view> </view>
</view> </view>
<view class="font12 text_color_black" v-if="type==1"> <view class="font12 text_color_black" v-if="tab==1">
<view class="login_input"> <view class="login_input">
<input placeholder="请输入账号" /> <input placeholder="请输入账号" />
</view> </view>
@ -26,16 +26,16 @@
<input password type="text" placeholder="请输入密码" /> <input password type="text" placeholder="请输入密码" />
</view> </view>
</view> </view>
<view class="font12" v-if="type==2"> <view class="font12 text_color_black" v-if="tab==2">
<view class="login_input"> <view class="login_input">
<input placeholder="请输入手机号"/> <input placeholder="请输入手机号"/>
</view> </view>
<view class=""> <view class="flex_layout">
<input placeholder="请输入手机号"/> <input class="login_input login_code" placeholder="请输入验证码"/>
<view class="getCaptcha">{{codename}}</view> <view class="getCaptcha">{{codename}}</view>
</view> </view>
</view> </view>
<view class="" style="color: #C4C4C4;font-size: 11px; padding-top: 14px;"> <view class="" v-if="tab==1" style="color: #C4C4C4;font-size: 11px; padding-top: 14px;">
记住密码 记住密码
</view> </view>
<view class="loginbut"> <view class="loginbut">
@ -61,11 +61,14 @@
data() { data() {
return { return {
codename:'获取验证码', codename:'获取验证码',
type:1, tab:1,
} }
}, },
methods: { methods: {
//
changeTab(tab){
this.$set(this,"tab",tab);
},
} }
} }
</script> </script>
@ -78,7 +81,6 @@
background-size: cover; background-size: cover;
height: 100vh; height: 100vh;
} }
.login_top{padding-top: 160px;padding-bottom: 32px;} .login_top{padding-top: 160px;padding-bottom: 32px;}
.login_logo{display: flex;align-items: center;margin-bottom: 17px;} .login_logo{display: flex;align-items: center;margin-bottom: 17px;}
.logopng{width: 53px;height: 44px;} .logopng{width: 53px;height: 44px;}
@ -87,11 +89,8 @@
.login_switch{display: flex;} .login_switch{display: flex;}
.login_name{flex: 1;text-align: center;} .login_name{flex: 1;text-align: center;}
.login_input{border-radius: 21.5px;background: #F3F5F9;margin-top: 12px;padding: 5px 15px;} .login_input{border-radius: 21.5px;background: #F3F5F9;margin-top: 12px;padding: 5px 15px;}
.loginbut{ .getCaptcha{border-radius: 21.5px;background: #009688;height: auto;color: white;display: flex;align-items: center;width: 40%;justify-content: center;}
background: #009688; .flex_layout{display: flex;margin-top: 12px;}
text-align: center; .login_code{margin-top: unset;width:60%;margin-right: 12px;}
margin-top: 60px; .loginbut{background: #009688;text-align: center;margin-top: 60px;margin-bottom: 18px;padding: 9px;border-radius: 66rpx;}
margin-bottom: 18px;
padding: 9px;
border-radius: 66rpx;}
</style> </style>

View File

@ -1,10 +1,12 @@
<template> <template>
<view class="person_page pagepaddings font13"> <view class="person_page pagepaddings font13">
<view class="person_dataA contentboxsty"> <view class="person_dataA contentboxsty">
<view class="content_box"> <view class="content_box logo_box">
<view class="data_name">头像</view> <view class="data_name">头像</view>
<view class=""> <view class="">
> <button class="person_button" open-type="chooseAvatar" @chooseavatar='onChooseAvatar'>
<image class="person_logo" :src="avatarUrl"></image>
</button>
</view> </view>
</view> </view>
<view class="content_box"> <view class="content_box">
@ -54,18 +56,28 @@
</template> </template>
<script> <script>
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0';
export default { export default {
data() { data() {
return { return {
avatarUrl:defaultAvatarUrl
} }
}, },
methods: { methods: {
onChooseAvatar(e) {
uni.showToast({
title:'成功',
duration:1000
})
this.avatarUrl = e.detail.avatarUrl
},
// //
toChangPhone(){ toChangPhone(){
uni.navigateTo({ // uni.navigateTo({
url: '/pages/person/changePhone' // url: '/pages/person/changePhone'
}) // })
} }
} }
} }
@ -80,7 +92,13 @@
.person_dataB{padding: 0 14px;margin-bottom: 12px;} .person_dataB{padding: 0 14px;margin-bottom: 12px;}
.person_dataC{padding: 0 14px;margin-bottom: 12px;} .person_dataC{padding: 0 14px;margin-bottom: 12px;}
.person_dataD{padding: 0 14px;} .person_dataD{padding: 0 14px;}
.content_box{display: flex;align-items: center;height: 44px;border-bottom: 1px solid #2D3A6F;} .content_box{
display: flex;align-items: center;height: 44px;border-bottom: 1px solid #2D3A6F;
}
.logo_box{height: 64px;
.person_button{width: 40px;height: 40px;border-radius: 50%;padding: 0;}
.person_logo{width: 40px;height: 40px;}
}
.data_name{flex: 1;} .data_name{flex: 1;}
} }
</style> </style>

View File

@ -1,8 +1,21 @@
<template> <template>
<view class="person_page "> <view class="person_page ">
<view class="person_top"> <view class="person_top">
<view class="logo"> <view class="person_data">
<!-- <view class="person_logo"> -->
<!-- <button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar"> -->
<image class="person_logo" :src="avatarUrl"></image>
<!-- </button> -->
<!-- </view> -->
<view class="person_name">
<view class="name">
<text class="font15">肖银奎</text>
<image src="http://dm-auto.oss-cn-shanghai.aliyuncs.com/mes_wechat/chaojihuiyuan.png" mode=""></image>
</view>
<view class="account font12">
登录账号ykxiao
</view>
</view>
</view> </view>
</view> </view>
<view class="person_content"> <view class="person_content">
@ -43,11 +56,11 @@
<view class="font13">消息管理</view> <view class="font13">消息管理</view>
<view class=""></view> <view class=""></view>
</view> </view>
<view class="con_module"> <!-- <view class="con_module">
<view class="t-icon t-icon-shenpizhida personicon"></view> <view class="t-icon t-icon-shenpizhida personicon"></view>
<view class="font13">审批直达</view> <view class="font13">审批直达</view>
<view class=""></view> <view class=""></view>
</view> </view> -->
<view class="con_module noborbot"> <view class="con_module noborbot">
<view class="t-icon t-icon-wodequanxian personicon"></view> <view class="t-icon t-icon-wodequanxian personicon"></view>
<view class="font13">我的权限</view> <view class="font13">我的权限</view>
@ -64,13 +77,16 @@
</template> </template>
<script> <script>
import tabBar from "@/components/customTabBar/index" import tabBar from "@/components/customTabBar/index";
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0';
export default { export default {
components:{ components:{
tabBar tabBar
}, },
data() { data() {
return { return {
avatarUrl:defaultAvatarUrl,
} }
}, },
methods: { methods: {
@ -86,8 +102,21 @@
<style scoped lang="scss"> <style scoped lang="scss">
.person_page{ padding: 14px; .person_page{ padding: 14px;
.person_top{margin-bottom:33px ;
.person_data{display: flex;align-items: center;
.person_logo{border-radius: 50%;width: 54px;height: 54px;margin:0 6px 0 4px;}
.person_name{
.name{display: flex;align-items: center;margin-bottom: 2px;
image{width: 50px;height: 16px;margin-left: 4px;}
}
.account{margin-top: 2px;}
}
}
}
.person_content{
.con_backlog{padding: 14px 10px 14px 15px;background: #1C2755;border-radius: 8px;margin-bottom: 12px; .con_backlog{padding: 14px 10px 14px 15px;background: #1C2755;border-radius: 8px;margin-bottom: 12px;
.backlog_data{display: flex; flex-wrap: wrap; .backlog_data{display: flex; flex-wrap: wrap;margin-top: 7px;
.backlog_module{width: 93px;height: 76px;display: flex;justify-content: center;flex-direction: column;align-items: center;border-radius: 8px; .backlog_module{width: 93px;height: 76px;display: flex;justify-content: center;flex-direction: column;align-items: center;border-radius: 8px;
background: #6576B7;margin: 5px 6px;} background: #6576B7;margin: 5px 6px;}
.backlogicon{width: 32px;height: 32px;} .backlogicon{width: 32px;height: 32px;}
@ -106,7 +135,7 @@
margin-bottom: 10px; margin-bottom: 10px;
} }
.personicon{width: 24px;height: 24px;padding-right: 15px;} .personicon{width: 24px;height: 24px;margin-right: 15px;}
.con_data{border-radius: 8px; .con_data{border-radius: 8px;
background: #1C2755; background: #1C2755;
padding: 0 14px; padding: 0 14px;
@ -121,4 +150,5 @@
padding: 0 14px; padding: 0 14px;
} }
} }
}
</style> </style>

View File

@ -0,0 +1,22 @@
<template>
<view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>

View File

@ -0,0 +1,135 @@
<template>
<!-- 生产工单 -->
<view class="pagepaddings">
<view v-for="(item,index) in list" :key="index" class="page_list contentboxsty font13">
<view @click="toDetail()">
<view class="list_top">
<view class="top_left">
工单号:{{item.name}}
</view>
<view class="top_right">
工单详情
</view>
<view class="iconfont icon-gengduo-1"></view>
</view>
<view class="list_centre">
<view class="centre_left">
<view class="">
算法出材率
</view>
<view class="percentage font24">
{{item.algorithm}}%
</view>
</view>
<view class="centre_left">
<view class="">
算法出材率
</view>
<view class="percentage font24">
{{item.reality}}%
</view>
</view>
</view>
<view class="list_below">
<view class="row">
<view class="row_left">
<text>状态</text>
<text>{{item.state}}</text>
</view>
<view class="row_right">
<text>加工规格</text>
<text>{{item.specs}}</text>
</view>
</view>
<view class="row">
<view class="row_left">
<text>生产开始</text>
<text>{{item.time}}</text>
</view>
<view class="row_right">
<text>工单耗时</text>
<text>{{item.timeConsuming}}</text>
</view>
</view>
<view class="row">
<view class="row_left">
<text>工单数量</text>
<text>{{item.number}}</text>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list:[{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
},{
name:'SO202401111004',
algorithm:'81.5',
reality:'81.4',
state:'生产中',
specs:'4*9*3.66',
time:'jan-11 10:05',
timeConsuming:'3.5H',
number:'12.66m³'
}]
}
},
methods: {
//
toDetail(){
uni.navigateTo({
url:'/pages/production/productionDetail'
})
},
}
}
</script>
<style lang="scss">
.page_list{
.list_top{display: flex;padding: 12px 0;border-bottom: 1px solid #2D3A6F;margin-bottom: 8px;
.top_left{flex: 1;}
}
.list_centre{display: flex;text-align: center;padding-bottom: 10px;
view{flex: 1;}
.percentage{color: #00B68D;}
}
.list_below{padding-bottom: 12px;
.row{display: flex;padding-top: 10px;
view{flex: 1;}
}
}
}
</style>

BIN
static/disable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/enable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1,110 @@
@font-face { @font-face {
font-family: "iconfont"; /* Project id 4403683 */ font-family: "iconfont"; /* Project id 4403683 */
src: url('//at.alicdn.com/t/c/font_4403683_jzx1hwbdok.woff2?t=1704766027171') format('woff2'), src: url('//at.alicdn.com/t/c/font_4403683_gbygrrqjx2.woff2?t=1706861428966') format('woff2'),
url('//at.alicdn.com/t/c/font_4403683_jzx1hwbdok.woff?t=1704766027171') format('woff'), url('//at.alicdn.com/t/c/font_4403683_gbygrrqjx2.woff?t=1706861428966') format('woff'),
url('//at.alicdn.com/t/c/font_4403683_jzx1hwbdok.ttf?t=1704766027171') format('truetype'); url('//at.alicdn.com/t/c/font_4403683_gbygrrqjx2.ttf?t=1706861428966') format('truetype');
} }
.iconfont { .iconfont {
font-family: "iconfont" !important; font-family: "iconfont" !important;
font-size: 16px;
font-style: normal; font-style: normal;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-weixiubaoyangpinshuai:before {
content: "\e62a";
}
.icon-brokenrate:before {
content: "\e652";
}
.icon-setting:before {
content: "\e651";
}
.icon-broken:before {
content: "\e650";
}
.icon-WIFI_off:before {
content: "\e654";
}
.icon-WIFI_on:before {
content: "\e653";
}
.icon-yasuokongqi:before {
content: "\e62b";
}
.icon-dianliang:before {
content: "\e62c";
}
.icon-tianjia1:before {
content: "\e629";
}
.icon-jinyong2:before {
content: "\e627";
}
.icon-qiyong1:before {
content: "\e628";
}
.icon-jinyong1:before {
content: "\e626";
}
.icon-a-Group10234:before {
content: "\e625";
}
.icon-a-sousuo41:before {
content: "\e624";
}
.icon-tianjia:before {
content: "\e623";
}
.icon-qiyong:before {
content: "\e620";
}
.icon-gengduo:before {
content: "\e61c";
}
.icon-a-shangchuanzhaopian2:before {
content: "\e61d";
}
.icon-bangding:before {
content: "\e61e";
}
.icon-jinyong:before {
content: "\e61f";
}
.icon-gengduo-1:before {
content: "\e621";
}
.icon-bianji:before {
content: "\e622";
}
.icon-xiala:before {
content: "\e61b";
}
.icon-xitongshezhi-gerenzhongxin:before { .icon-xitongshezhi-gerenzhongxin:before {
content: "\e611"; content: "\e611";
} }

BIN
static/indexA.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

BIN
static/indexB.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 940 B

BIN
static/personA.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

BIN
static/personB.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 949 B