代码提交

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

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="home_head">
<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-shezhi setupicon"></view>
</view>
<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_title">工单管理</view>
<view class="content_data">
@ -15,11 +166,11 @@
<view class="t-icon t-icon-shengchangongdan contenticon"></view>
<view class="contentname">生产工单</view>
</view>
<view class="content_module">
<view class="content_module" @click="toSchedule()">
<view class="t-icon t-icon-gongdanjindu contenticon"></view>
<view class="contentname">工单进度</view>
</view>
<view class="content_module">
<view class="content_module" @click="toMaterialYield()">
<view class="t-icon t-icon-gongdanchucaishuai contenticon"></view>
<view class="contentname">工单出材率</view>
</view>
@ -28,6 +179,7 @@
<view class="contentname">生产报表</view>
</view>
</view>
</view>
<view class="content_box">
<view class="content_title">生产排程</view>
@ -45,17 +197,17 @@
<view class="content_box">
<view class="content_title">设备管理</view>
<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="contentname">设备设置</view>
</view>
<view class="content_module">
<view class="content_module" @click="toDeviceStatus()">
<view class="t-icon t-icon-shebeizhuangtai contenticon"></view>
<view class="contentname">设备状态</view>
</view>
<view class="content_module">
<view class="t-icon t-icon-shebeibaoxiu contenticon"></view>
<view class="contentname">设备</view>
<view class="t-icon t-icon-shebeibaoxiu contenticon" @click="toDeviceRepair()"></view>
<view class="contentname">设备</view>
</view>
</view>
</view>
@ -77,67 +229,106 @@
}
},
methods: {
//
toLogin(){
uni.navigateTo({
url:'/pages/login/login'
})
},
//跳转消息页
toMessage(){
uni.navigateTo({
url: '/pages/index/message'
})
})
},
//跳转生产工单页
toProductionOrder(){
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>
<style>
<style lang="scss">
/* .icon {
width: 80upx;
height: 80upx;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
} */
.home {
height: 100vh;
/* background-color: #060B26; */
padding: 0 10px;
font-size: 14px;
.home {height: 100vh;padding: 0 10px;font-size: 14px;
.home_head{height: 40px;display: flex;position: relative;align-items: center;padding-bottom: 5px;
.name{flex:1;}
.accounticon{
margin-right: 5px;
color: #fff;
font-size: 20px;
}
.notifyicon{font-size: 20px;padding-right: 20px;}
.setupicon{font-size: 20px;}
}
}
.home_head{height: 40px;display: flex;position: relative;align-items: center;padding-bottom: 5px;}
.home_head .name{flex:1;}
.accounticon{
/* width: 20px;
height: 20px; */
margin-right: 5px;
color: #fff;
font-size: 20px;
.home_content{padding-bottom: 100px;
.content_title{line-height: 25px;font-size: 16px;padding: 15px 0;}
.device_data{display: flex;flex-wrap: wrap;
.device_module{
width: calc(50% - 12px); /* 计算每个块的宽度(根据需要调整)*/
margin:6px;
background-color: #ccc; /* 设置背景色(根据需要调整)*/
padding: 10px;
background: #1C2755;
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;}
.contentname{padding-top: 2px;font-size: 12px;}
}
}
}
.notifyicon{font-size: 20px;padding-right: 20px;}
.setupicon{font-size: 20px;}
.home_content{
}
.content_title{
line-height: 25px;
font-size: 16px;
}
.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;}
.contentname{padding-top: 2px;font-size: 12px;}
</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

@ -1,5 +1,5 @@
<template>
<view class="login_page ">
<view class="login_page ">
<view class="login_top">
<view class="login_logo">
<image src="https://dm-auto.oss-cn-shanghai.aliyuncs.com/mes_wechat/meslogo.png" class="logopng"></image>
@ -11,14 +11,14 @@
</view>
<view class="login_centre">
<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 class="login_name">
<view :class="['login_name', tab==2?'font_bold':'']" @click="changeTab(2)">
手机号登录
</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">
<input placeholder="请输入账号" />
</view>
@ -26,16 +26,16 @@
<input password type="text" placeholder="请输入密码" />
</view>
</view>
<view class="font12" v-if="type==2">
<view class="font12 text_color_black" v-if="tab==2">
<view class="login_input">
<input placeholder="请输入手机号"/>
</view>
<view class="">
<input placeholder="请输入手机号"/>
<view class="flex_layout">
<input class="login_input login_code" placeholder="请输入验证码"/>
<view class="getCaptcha">{{codename}}</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 class="loginbut">
@ -52,46 +52,45 @@
<view class="">
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
</view>
</view>
</template>
<script>
export default {
data() {
return {
codename:'获取验证码',
type:1,
}
},
methods: {
}
}
</script>
tab:1,
}
},
methods: {
//切换登录方式
changeTab(tab){
this.$set(this,"tab",tab);
},
}
}
</script>
<style>
.login_page{
padding: 0 32px;
background: url('https://dm-auto.oss-cn-shanghai.aliyuncs.com/mes_wechat/background.png') no-repeat;
background-position: center center;
background-size: cover;
height: 100vh;
}
height: 100vh;
}
.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;}
.demupng{width: 60px;height: 36px;}
.login_centre{border-radius: 16px;background: #FFF;padding: 20px 24px 40px;}
.login_switch{display: flex;}
.login_name{flex: 1;text-align: center;}
.login_input{border-radius: 21.5px;background: #F3F5F9; margin-top: 12px; padding: 5px 15px;}
.loginbut{
background: #009688;
text-align: center;
margin-top: 60px;
margin-bottom: 18px;
padding: 9px;
border-radius: 66rpx;}
</style>
.login_input{border-radius: 21.5px;background: #F3F5F9;margin-top: 12px;padding: 5px 15px;}
.getCaptcha{border-radius: 21.5px;background: #009688;height: auto;color: white;display: flex;align-items: center;width: 40%;justify-content: center;}
.flex_layout{display: flex;margin-top: 12px;}
.login_code{margin-top: unset;width:60%;margin-right: 12px;}
.loginbut{background: #009688;text-align: center;margin-top: 60px;margin-bottom: 18px;padding: 9px;border-radius: 66rpx;}
</style>

View File

@ -1,10 +1,12 @@
<template>
<view class="person_page pagepaddings font13">
<view class="person_dataA contentboxsty">
<view class="content_box">
<view class="content_box logo_box">
<view class="data_name">头像</view>
<view class="">
>
<button class="person_button" open-type="chooseAvatar" @chooseavatar='onChooseAvatar'>
<image class="person_logo" :src="avatarUrl"></image>
</button>
</view>
</view>
<view class="content_box">
@ -53,19 +55,29 @@
</view>
</template>
<script>
<script>
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0';
export default {
data() {
return {
avatarUrl:defaultAvatarUrl
}
},
methods: {
onChooseAvatar(e) {
uni.showToast({
title:'成功',
duration:1000
})
this.avatarUrl = e.detail.avatarUrl
},
//跳转更改手机号页面
toChangPhone(){
uni.navigateTo({
url: '/pages/person/changePhone'
})
// uni.navigateTo({
// url: '/pages/person/changePhone'
// })
}
}
}
@ -80,7 +92,13 @@
.person_dataB{padding: 0 14px;margin-bottom: 12px;}
.person_dataC{padding: 0 14px;margin-bottom: 12px;}
.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;}
}
</style>

View File

@ -1,8 +1,21 @@
<template>
<view class="person_page ">
<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 class="person_content">
@ -43,11 +56,11 @@
<view class="font13">消息管理</view>
<view class=""></view>
</view>
<view class="con_module">
<!-- <view class="con_module">
<view class="t-icon t-icon-shenpizhida personicon"></view>
<view class="font13">审批直达</view>
<view class=""></view>
</view>
</view> -->
<view class="con_module noborbot">
<view class="t-icon t-icon-wodequanxian personicon"></view>
<view class="font13">我的权限</view>
@ -64,13 +77,16 @@
</template>
<script>
import tabBar from "@/components/customTabBar/index"
import tabBar from "@/components/customTabBar/index";
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0';
export default {
components:{
tabBar
tabBar
},
data() {
return {
avatarUrl:defaultAvatarUrl,
}
},
methods: {
@ -86,39 +102,53 @@
<style scoped lang="scss">
.person_page{ padding: 14px;
.con_backlog{padding: 14px 10px 14px 15px;background: #1C2755;border-radius: 8px;margin-bottom: 12px;
.backlog_data{display: flex; flex-wrap: wrap;
.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;}
.backlogicon{width: 32px;height: 32px;}
.backlogname{
font-size: $uni-font-size-sm;
padding-top: 5px;}
}
}
.con_account{
border-radius: 8px;
background: #1C2755;
display: flex;
height: 52px;
align-items: center;
padding: 0 14px;
margin-bottom: 10px;
.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;}
}
.personicon{width: 24px;height: 24px;padding-right: 15px;}
.con_data{border-radius: 8px;
background: #1C2755;
padding: 0 14px;
margin-bottom: 12px;
.con_module{display: flex;height: 49px;align-items: center;border-bottom: 1px solid #2D3A6F;}
}
.con_set{border-radius: 8px;
background: #1C2755;
display: flex;
height: 48px;
align-items: center;
padding: 0 14px;
.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;
.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;
background: #6576B7;margin: 5px 6px;}
.backlogicon{width: 32px;height: 32px;}
.backlogname{
font-size: $uni-font-size-sm;
padding-top: 5px;}
}
}
.con_account{
border-radius: 8px;
background: #1C2755;
display: flex;
height: 52px;
align-items: center;
padding: 0 14px;
margin-bottom: 10px;
}
.personicon{width: 24px;height: 24px;margin-right: 15px;}
.con_data{border-radius: 8px;
background: #1C2755;
padding: 0 14px;
margin-bottom: 12px;
.con_module{display: flex;height: 49px;align-items: center;border-bottom: 1px solid #2D3A6F;}
}
.con_set{border-radius: 8px;
background: #1C2755;
display: flex;
height: 48px;
align-items: center;
padding: 0 14px;
}
}
}
</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>