Compare commits

..

2 Commits

Author SHA1 Message Date
ec506645a7 update 2022-03-21 01:10:08 +08:00
21b2eac76e update 2022-03-20 11:24:39 +08:00
57 changed files with 312 additions and 546 deletions

View File

@@ -1,8 +1,8 @@
/* /*
* @Author: gtz * @Author: gtz
* @Date: 2021-11-19 10:10:51 * @Date: 2021-11-19 10:10:51
* @LastEditors: zwq * @LastEditors: gtz
* @LastEditTime: 2022-07-06 15:07:51 * @LastEditTime: 2022-03-05 16:16:24
* @Description: file content * @Description: file content
* @FilePath: \mt-qj-wms-ui\config\index.js * @FilePath: \mt-qj-wms-ui\config\index.js
*/ */
@@ -22,7 +22,7 @@ module.exports = {
// 代理列表, 是否开启代理通过[./dev.env.js]配置 // 代理列表, 是否开启代理通过[./dev.env.js]配置
proxyTable: devEnv.OPEN_PROXY === false ? {} : { proxyTable: devEnv.OPEN_PROXY === false ? {} : {
'/proxyApi': { '/proxyApi': {
target: 'http://192.168.1.18:8080', target: 'http://192.168.1.7:8080',
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/proxyApi': '/api' '^/proxyApi': '/api'
@@ -31,7 +31,7 @@ module.exports = {
}, },
// Various Dev Server settings // Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST host: '0.0.0.0', // can be overwritten by process.env.HOST
port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: true, autoOpenBrowser: true,
errorOverlay: true, errorOverlay: true,

View File

@@ -18,7 +18,7 @@
<script>document.write('<script src="./config/index.js?t=' + new Date().getTime() + '"><\/script>');</script> <script>document.write('<script src="./config/index.js?t=' + new Date().getTime() + '"><\/script>');</script>
<% }else { %> <% }else { %>
<!-- 开发环境 --> <!-- 开发环境 -->
<link rel="shortcut icon" type="image/x-icon" href="./static/img/top.png"> <link rel="shortcut icon" type="image/x-icon" href="./static/img/favicon.ico">
<script src="./static/config/index.js"></script> <script src="./static/config/index.js"></script>
<script src="./static/plugins/mock-1.0.0-beta3/mock-min.js"></script> <script src="./static/plugins/mock-1.0.0-beta3/mock-min.js"></script>
<script src="./static/plugins/ueditor-1.4.3.3/ueditor.config.js"></script> <script src="./static/plugins/ueditor-1.4.3.3/ueditor.config.js"></script>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -23,6 +23,13 @@ img {
vertical-align: middle; vertical-align: middle;
} }
/* El-Message
------------------------------ */
.el-message {
.el-message__content {
font-size: 24px;
}
}
/* Utils /* Utils
------------------------------ */ ------------------------------ */

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="15px" height="14px" viewBox="0 0 15 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="15px" height="14px" viewBox="0 0 15 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 60 (88103) - https://sketch.com --> <!-- Generator: Sketch 60 (88103) - https://sketch.com -->
<title>执行</title> <title>维护开始</title>
<desc>Created with Sketch.</desc> <desc>Created with Sketch.</desc>
<g id="组件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="组件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon/界面内/维护开始" transform="translate(-1.000000, -1.000000)"> <g id="icon/界面内/维护开始" transform="translate(-1.000000, -1.000000)">

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -1,8 +1,8 @@
/* /*
* @Author: zwq * @Author: zwq
* @Date: 2021-11-15 08:20:28 * @Date: 2021-11-15 08:20:28
* @LastEditors: zwq * @LastEditors: gtz
* @LastEditTime: 2022-07-06 10:38:26 * @LastEditTime: 2022-03-05 16:05:35
* @Description: * @Description:
*/ */
/** /**
@@ -39,7 +39,6 @@ const mainRoutes = {
// 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否 // 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
// 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理! // 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
{ path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页', isTab: true } }, { path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页', isTab: true } },
{ path: '/board', component: _import('common/board'), name: 'board', meta: { title: '车间生产看板', isTab: false } },
{ path: '/orderProcess', component: _import('common/order-process'), name: 'orderProcess', meta: { title: '订单加工', isTab: true } }, { path: '/orderProcess', component: _import('common/order-process'), name: 'orderProcess', meta: { title: '订单加工', isTab: true } },
{ path: '/orderAuto', component: _import('common/order-auto'), name: 'orderAuto', meta: { title: '自动任务', isTab: true } }, { path: '/orderAuto', component: _import('common/order-auto'), name: 'orderAuto', meta: { title: '自动任务', isTab: true } },
{ path: '/exWarehouse', component: _import('common/ex-warehouse'), name: 'exWarehouse', meta: { title: '货物出库', isTab: true } }, { path: '/exWarehouse', component: _import('common/ex-warehouse'), name: 'exWarehouse', meta: { title: '货物出库', isTab: true } },
@@ -55,7 +54,7 @@ const mainRoutes = {
{ path: '/basic-alarmInfo', component: _import('basic/alarmInfo'), name: 'basic-alarmInfo', meta: { title: '报警基础信息', isTab: true } }, { path: '/basic-alarmInfo', component: _import('basic/alarmInfo'), name: 'basic-alarmInfo', meta: { title: '报警基础信息', isTab: true } },
{ path: '/order-current-order', component: _import('order/current-order'), name: 'order-current-order', meta: { title: '当前订单列表', isTab: true } }, { path: '/order-current-order', component: _import('order/current-order'), name: 'order-current-order', meta: { title: '当前订单列表', isTab: true } },
{ path: '/order-current-order-task', component: _import('order/components/current-order-task'), name: 'order-current-order-task', meta: { title: '当前订单任务详情', isTab: true } }, { path: '/order-current-order-task', component: _import('order/components/current-order-task'), name: 'order-current-order-task', meta: { title: '当前订单任务详情', isTab: true } },
{ path: '/order-current-task', component: _import('order/current-task'), name: 'order-current-task', meta: { title: '当前任务列表', isTab: true } }, { path: '/order-current-task', component: _import('order/current-task'), name: 'order-current-task', meta: { title: '当前执行任务', isTab: true } },
{ path: '/order-current-task-detail', component: _import('order/components/current-task-detail'), name: 'order-current-task-detail', meta: { title: '当前执行任务详情', isTab: true } }, { path: '/order-current-task-detail', component: _import('order/components/current-task-detail'), name: 'order-current-task-detail', meta: { title: '当前执行任务详情', isTab: true } },
{ path: '/report-kiln-alarm', component: _import('report/kiln-alarm'), name: 'report-kiln-alarm', meta: { title: '窑炉报警', isTab: true } }, { path: '/report-kiln-alarm', component: _import('report/kiln-alarm'), name: 'report-kiln-alarm', meta: { title: '窑炉报警', isTab: true } },
{ path: '/report-car-alarm', component: _import('report/car-alarm'), name: 'report-car-alarm', meta: { title: '车辆运行报警', isTab: true } }, { path: '/report-car-alarm', component: _import('report/car-alarm'), name: 'report-car-alarm', meta: { title: '车辆运行报警', isTab: true } },

View File

@@ -22,6 +22,9 @@
<icon-svg class="iconClass" name="新建"></icon-svg> <icon-svg class="iconClass" name="新建"></icon-svg>
新增 新增
</el-button> </el-button>
<el-button size="small" type="success" @click="resetCarStatus()">
重置车辆状态
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
@@ -160,6 +163,32 @@
this.$refs.addOrUpdate.init(id) this.$refs.addOrUpdate.init(id)
}) })
}, },
// 重置车辆状态
resetCarStatus () {
this.$confirm(`确定重置车辆状态?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl('/vehicle/resetStatus'),
method: 'post'
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList()
}
})
} else {
this.$message.error(data.msg)
}
})
}).catch(() => {})
},
// 删除 // 删除
deleteHandle (id) { deleteHandle (id) {
this.$confirm(`确定对[id=${id}]进行删除操作?`, '提示', { this.$confirm(`确定对[id=${id}]进行删除操作?`, '提示', {

View File

@@ -1,52 +0,0 @@
<!--
* @Author: zwq
* @Date: 2022-03-07 15:31:13
* @LastEditors: zwq
* @LastEditTime: 2022-07-05 16:11:42
* @Description:
-->
<template>
<div class="main-body">
<el-table
size='mini'
:data="tableData"
:header-cell-style="{background:'#082c34',color:'#acb9be',padding:'0px'}"
:cell-style="{background:'#04222d',color:'#acb9be',padding:'5px 0px'}"
style="width: 100%"
>
<el-table-column type="index" label="序号" width="30" align="center"> </el-table-column>
<el-table-column prop="customer" label="客户名称" align="center"> </el-table-column>
<el-table-column prop="orderNo" label="订单编号" align="center"> </el-table-column>
<el-table-column prop="quantity" label="数量" width="50" align="center"> </el-table-column>
<el-table-column prop="productName" label="产品名称" align="center"> </el-table-column>
<el-table-column prop="weight" label="重量" width="50" align="center"> </el-table-column>
</el-table>
</div>
</template>
<script>
export default {
name: 'board-part-table',
components: {},
props: {
tableData: {
type: Array,
default: []
}
},
data () {
return {}
},
created () {},
methods: {}
}
</script>
<style lang="scss" scoped>
.main-body{
margin: 5px;
}
.main-body /deep/ .cell{
padding: 0px;
}
</style>

View File

@@ -1,148 +0,0 @@
<!--
* @Author: zwq
* @Date: 2022-03-07 15:31:13
* @LastEditors: zwq
* @LastEditTime: 2022-07-05 16:18:48
* @Description:
-->
<template>
<div class="container">
<div class="title">
<div class="tipDiv"></div>
加工单信息
</div>
<div class="main-body">
<div class="main-header">
<el-row :gutter="8">
<el-col :span="8">
<div class="front">
<img
:src="'/static/img/lu/'+imgUrl+'.png'"
style="display:block;margin:auto"
/>炉号
</div>
</el-col>
<el-col :span="8">
<el-row>
<div class="mid top-info">
{{wbData.taskCode}}
<div style="color: #fff;margin: 5px 0;">加工单编号</div>
</div>
</el-row>
<el-row>
<div class="mid bottom-info">
{{wbData.plcValue}}
<div style="color: #fff;margin: 5px 0;">工艺号</div>
</div>
</el-row>
</el-col>
<el-col :span="8">
<div class="back">
<el-progress
:percentage="wbData.completeness"
:stroke-width="8"
:show-text="false"
></el-progress>
<div style="margin: 5px 0;">{{ wbData.remainingTime}}</div>
<div style="color: #fff;font-size:14px">剩余时间</div>
</div>
</el-col>
</el-row>
</div>
<div class="main-table">
<div class="tipDiv"></div>
标识信息卡
</div>
<part-table :tableData="wbData.currTaskDetVoList"></part-table>
</div>
</div>
</template>
<script>
import partTable from './board-part-table.vue'
export default {
components: {partTable},
props: {
wbData: {
type: Object,
default: () => {}
},
imgUrl: {
type: String,
default: 'BMA1'
}
},
data () {
return {
}
},
created () {
},
mounted () {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.container{
width: 30%;
}
.title {
color: #ffffff;
font-size: 22px;
margin: 8px 0;
.tipDiv {
border-radius: 3px;
width: 8px;
height: 22px;
margin-right: 20px;
background-color: #54fdef;
float: left;
}
}
.main-body{
background-color: #04242d;
.main-header {
.front {
min-height: 136px;
border-radius: 4px;
padding: 6px;
color: #ffffff;
text-align: center;
background: linear-gradient(to bottom, #133e46 0%, #04202c 100%);
}
.mid {
min-height: 64px;
border-radius: 4px;
margin-bottom: 5px;
padding: 6px;
color: #48dcd1;
text-align: center;
background: linear-gradient(to bottom, #0b2c36 0%, #04202c 100%);
}
.back {
min-height: 136px;
padding: 25px 5px;
text-align: center;
font-size: 30px;
color: #48dcd1;
}
.back /deep/ .el-progress-bar__inner {
background: linear-gradient(to right, #62fbb9 0%, #fdd64a 100%);
}
}
.main-table{
color: #ffffff;
margin: 10px;
.tipDiv{
width: 8px;
height: 8px;
margin: 3px 10px 3px 0;
background-color: #54fdef;
float: left;
}
}
}
</style>

View File

@@ -1,104 +0,0 @@
<!--
* @Author: zwq
* @Date: 2022-03-07 15:31:13
* @LastEditors: zwq
* @LastEditTime: 2022-07-06 16:08:05
* @Description:
-->
<template>
<div class="main-body">
<div class="container-title">
浙江求精科技车间生产看板
</div>
<div class="container-body">
<board v-for="(item,index) in wbData" :key="index" :wbData="item" :imgUrl="item.kilnCode + item.kilnId"></board>
</div>
</div>
</template>
<script>
import board from './board-part'
export default {
name: 'Board',
components: { board },
data () {
return {
websock: '',
url: '',
wbData: []
}
},
created () {
const baseurl = window.SITE_CONFIG.baseUrl
this.url = baseurl.substring(5, baseurl.length - 4)
this.initWebSocket()
},
destroyed () {
// 页面销毁时关闭ws连接
if (this.websock) {
this.websock.close() // 关闭websocket
}
},
methods: {
initWebSocket () {
// 初始化weosocket
const path = `ws:${this.url}/qj/websocket/2`
this.websock = new WebSocket(path)
this.websock.onmessage = this.websocketonmessage
this.websock.onopen = this.websocketonopen
this.websock.onerror = this.websocketonerror
this.websock.onclose = this.websocketclose
},
websocketonopen () {
// 连接建立之后执行send方法发送数据
this.websocketsend(JSON.stringify('2'))
},
websocketonerror () {
// 连接建立失败重连
this.initWebSocket()
},
websocketonmessage (e) {
// 数据接收
this.wbData = JSON.parse(e.data)
console.log(this.wbData)
},
websocketsend (val) {
// 数据发送
this.websock.send(val)
},
websocketclose (e) {
// 关闭
console.log('断开连接', e)
}
}
}
</script>
<style lang="scss" scoped>
.main-body {
min-height: 88vh;
width: 100%;
background: url(~@/assets/img/board/1.png) center no-repeat;
background-size: cover;
overflow: hidden;
.container-title {
width: 100%;
height: 80px;
background: url(~@/assets/img/board/2.png) no-repeat;
background-size: 100% 100%;
color: #00fff0;
font-size: 28px;
line-height: 80px;
text-align: center;
}
.container-body {
display: flex;
margin: auto;
flex-wrap: wrap;
flex-direction: row;
justify-content: space-around;
}
}
</style>

View File

@@ -34,18 +34,60 @@
align="center" align="center"
label="客户信息"> label="客户信息">
</el-table-column> </el-table-column>
<el-table-column
prop="productName"
header-align="center"
align="center"
label="产品名称">
</el-table-column>
<el-table-column
prop="orderNo"
header-align="center"
align="center"
label="订单号">
</el-table-column>
<el-table-column
prop="taskCode"
header-align="center"
align="center"
label="任务编码">
</el-table-column>
<el-table-column
prop="currTaskId"
header-align="center"
align="center"
label="当前任务ID">
</el-table-column>
<el-table-column
prop="materialDes"
header-align="center"
align="center"
label="物料牌号">
</el-table-column>
<el-table-column
prop="craftIll"
header-align="center"
align="center"
label="工艺要求">
<el-table-column <el-table-column
prop="quantity" prop="quantity"
header-align="center" header-align="center"
align="center" align="center"
label="数量"> label="数量">
</el-table-column> </el-table-column>
<el-table-column
prop="weight"
header-align="center"
align="center"
label="重量">
</el-table-column>
<el-table-column <el-table-column
prop="unit" prop="unit"
header-align="center" header-align="center"
align="center" align="center"
label="单位"> label="单位">
</el-table-column> </el-table-column>
</el-table-column>
</el-table> </el-table>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>

View File

@@ -34,9 +34,14 @@
</el-card> </el-card>
<el-card class="base-container" style="margin-top: 20px; min-height: 200px"> <el-card class="base-container" style="margin-top: 20px; min-height: 200px">
<el-row :gutter="30" style="padding: 20px;"> <el-row :gutter="30" style="padding: 20px;">
<el-col class="footer-item-container" :span="6" v-for="count in 4" :key="count"> <el-col class="footer-item-container" :offset="3" :span="6">
<el-card class="footer-item-box base-container" @click.native="selectPlat(count)"> <el-card class="footer-item-box base-container" @click.native="selectPlat(1)">
<div class="plat" style="font-size: 24px">液压台{{ count }}</div> <div class="plat" style="font-size: 24px">出口液压台1</div>
</el-card>
</el-col>
<el-col class="footer-item-container" :offset="6" :span="6">
<el-card class="footer-item-box base-container" @click.native="selectPlat(2)">
<div class="plat" style="font-size: 24px">出口液压台2</div>
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
@@ -157,7 +162,8 @@ export default {
.wareBox-button { .wareBox-button {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
right: 0; margin-left: -22px;
font-size: 18px;
} }
} }
.line { .line {
@@ -168,7 +174,7 @@ export default {
border-right: 200px solid #ddd; border-right: 200px solid #ddd;
} }
.enableBox { .enableBox {
background: #EFF3FF; background: #aaccFF;
} }
.disableBox { .disableBox {
background: #F4F4F4; background: #F4F4F4;

View File

@@ -100,7 +100,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ <span>{{
scope.row.taskType === 0 scope.row.taskType === 0
? "缓存到窑炉加工" ? "炉加工"
: scope.row.taskType === 1 : scope.row.taskType === 1
? "出炉到缓存" ? "出炉到缓存"
: scope.row.taskType === 2 : scope.row.taskType === 2

View File

@@ -84,6 +84,7 @@
right: 0; right: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
background-color: rgba(38, 50, 56, .6);
overflow: hidden; overflow: hidden;
&:before { &:before {
position: fixed; position: fixed;
@@ -93,8 +94,8 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
content: ""; content: "";
background-image: url(~@/assets/img/bg.jpeg); background-image: url(~@/assets/img/login_bg.jpg);
background-size: 100% 100%; background-size: cover;
} }
.site-content__wrapper { .site-content__wrapper {
position: absolute; position: absolute;

View File

@@ -28,8 +28,8 @@
<el-form-item v-if="dataForm.autoTaskType === 2" label="开始加工炉"> <el-form-item v-if="dataForm.autoTaskType === 2" label="开始加工炉">
<el-form-item label="加工起点" prop="startPosition" style="margin-bottom: 24px"> <el-form-item label="加工起点" prop="startPosition" style="margin-bottom: 24px">
<el-select v-model="dataForm.startPosition" :disabled="!(dataForm.autoTaskType)"> <el-select v-model="dataForm.startPosition" :disabled="!(dataForm.autoTaskType)">
<el-option value="YYT003" label="液压台3"></el-option> <el-option value="YYT003" label="入口液压台3"></el-option>
<el-option value="YYT004" label="液压台4"></el-option> <el-option value="YYT004" label="入口液压台4"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="加工炉" prop="firstPosition" style="margin-bottom: 24px"> <el-form-item label="加工炉" prop="firstPosition" style="margin-bottom: 24px">
@@ -46,8 +46,8 @@
<el-form-item label="清洗炉"> <el-form-item label="清洗炉">
<el-form-item label="加工起点" v-if="dataForm.autoTaskType !== 2" prop="startPosition" style="margin-bottom: 24px"> <el-form-item label="加工起点" v-if="dataForm.autoTaskType !== 2" prop="startPosition" style="margin-bottom: 24px">
<el-select v-model="dataForm.startPosition" :disabled="!(dataForm.autoTaskType)"> <el-select v-model="dataForm.startPosition" :disabled="!(dataForm.autoTaskType)">
<el-option value="YYT003" label="液压台3"></el-option> <el-option value="YYT003" label="入口液压台3"></el-option>
<el-option value="YYT004" label="液压台4"></el-option> <el-option value="YYT004" label="入口液压台4"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="加工炉" prop="secPosition" style="margin-bottom: 24px"> <el-form-item label="加工炉" prop="secPosition" style="margin-bottom: 24px">

View File

@@ -15,10 +15,8 @@
</el-form-item> </el-form-item>
<el-form-item style="margin-left:1%"> <el-form-item style="margin-left:1%">
<el-select v-model="startPosition" size="small" placeholder="任务起点位置" clearable> <el-select v-model="startPosition" size="small" placeholder="任务起点位置" clearable>
<el-option value="YYT001" label="液压台1" /> <el-option value="YYT003" label="入口液压台3" />
<el-option value="YYT002" label="液压台2" /> <el-option value="YYT004" label="入口液压台4" />
<el-option value="YYT003" label="液压台3" />
<el-option value="YYT004" label="液压台4" />
</el-select> </el-select>
<!-- <el-button style="margin-left:10px" type="primary" @click="getPoint(0)">{{startPosition}}</el-button> --> <!-- <el-button style="margin-left:10px" type="primary" @click="getPoint(0)">{{startPosition}}</el-button> -->
</el-form-item> </el-form-item>
@@ -199,7 +197,7 @@
message: '请选择窑炉', message: '请选择窑炉',
type: 'warning' type: 'warning'
}) })
} else if (this.processType !== 0 || this.processType !== 1) { } else if (!this.processType && this.processType !== 0) {
this.$message.warning('请选择加工类型') this.$message.warning('请选择加工类型')
} else { } else {
this.$confirm(`确定提交任务?`, '提示', { this.$confirm(`确定提交任务?`, '提示', {

View File

@@ -11,10 +11,6 @@
<icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg> <icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg>
<span slot="title">首页</span> <span slot="title">首页</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="board" @click="getUrl">
<icon-svg name="shanchu" class="site-sidebar__menu-icon"></icon-svg>
<span slot="title">车间生产看板</span>
</el-menu-item>
<el-submenu index="task"> <el-submenu index="task">
<template slot="title"> <template slot="title">
<icon-svg name="config" class="site-sidebar__menu-icon"></icon-svg> <icon-svg name="config" class="site-sidebar__menu-icon"></icon-svg>
@@ -27,7 +23,7 @@
@click="$router.push({ name: 'orderAuto' })" @click="$router.push({ name: 'orderAuto' })"
> >
<icon-svg name="tubiao" class="site-sidebar__menu-icon"></icon-svg> <icon-svg name="tubiao" class="site-sidebar__menu-icon"></icon-svg>
<span slot="title">多步骤自动任务</span> <span slot="title">自动任务</span>
</el-menu-item> </el-menu-item>
<el-menu-item <el-menu-item
index="orderProcess" index="orderProcess"
@@ -132,7 +128,7 @@
@click="$router.push({ name: 'order-current-task' })" @click="$router.push({ name: 'order-current-task' })"
> >
<icon-svg name="editor" class="site-sidebar__menu-icon"></icon-svg> <icon-svg name="editor" class="site-sidebar__menu-icon"></icon-svg>
<span slot="title">当前任务列表</span> <span slot="title">当前执行任务</span>
</el-menu-item> </el-menu-item>
</el-submenu> </el-submenu>
<!-- <el-submenu index="energy"> <!-- <el-submenu index="energy">
@@ -412,10 +408,6 @@ export default {
this.routeHandle(this.$route) this.routeHandle(this.$route)
}, },
methods: { methods: {
getUrl () {
let routeData = this.$router.resolve({ path: '/board' })
window.open(routeData.href, '_blank')
},
// 路由操作 // 路由操作
routeHandle (route) { routeHandle (route) {
if (route.meta.isTab) { if (route.meta.isTab) {

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-15 08:20:28 * @Date: 2021-11-15 08:20:28
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-07-06 16:28:27 * @LastEditTime: 2022-03-18 14:48:46
* @Description: * @Description:
--> -->
<template> <template>
@@ -41,7 +41,9 @@
return { return {
loading: false, loading: false,
websock: '', websock: '',
url: '' url: '',
id: 1,
heart: null
} }
}, },
components: { components: {
@@ -67,14 +69,16 @@
} }
}, },
created () { created () {
const baseurl = window.SITE_CONFIG.baseUrl this.url = window.SITE_CONFIG.baseWsUrl
this.url = baseurl.substring(5, baseurl.length - 4)
this.getUserInfo() this.getUserInfo()
this.initWebSocket() this.initWebSocket()
}, },
mounted () { mounted () {
this.resetDocumentClientHeight() this.resetDocumentClientHeight()
}, },
destroyed () {
clearInterval(this.heart)
},
methods: { methods: {
// 重置窗口可视高度 // 重置窗口可视高度
resetDocumentClientHeight () { resetDocumentClientHeight () {
@@ -98,15 +102,20 @@
// }) // })
}, },
initWebSocket () { // 初始化weosocket initWebSocket () { // 初始化weosocket
const path = `ws:${this.url}/qj/websocket/1` const path = `${this.url}qj/websocket/${this.id}`
this.websock = new WebSocket(path) this.websock = new WebSocket(path)
this.websock.onmessage = this.websocketonmessage this.websock.onmessage = this.websocketonmessage
this.websock.onopen = this.websocketonopen this.websock.onopen = this.websocketonopen
this.websock.onerror = this.websocketonerror this.websock.onerror = this.websocketonerror
this.websock.onclose = this.websocketclose this.websock.onclose = this.websocketclose
}, },
websocketonopen () { // 连接建立之后执行send方法发送数据 websocketonopen () { // 连接建立之后建立心跳
this.websocketsend(JSON.stringify(1)) this.heartFun()
},
heartFun () { // 心跳函数
this.heart = setInterval(() => {
this.websocketsend('1')
}, 30000)
}, },
websocketonerror () { // 连接建立失败重连 websocketonerror () { // 连接建立失败重连
this.initWebSocket() this.initWebSocket()
@@ -118,8 +127,8 @@
duration: 15000 duration: 15000
}) })
}, },
websocketsend (val) { // 数据发送 websocketsend (msg) { // 数据发送
this.websock.send(val) this.websock.send(msg)
}, },
websocketclose (e) { // 关闭 websocketclose (e) { // 关闭
console.log('断开连接', e) console.log('断开连接', e)

View File

@@ -34,24 +34,18 @@
prop="abeginTime" prop="abeginTime"
label="发起时间" label="发起时间"
> >
<template slot-scope="scope">
{{ scope.row.abeginTime ? scope.row.abeginTime.replace('T', ' ') : '' }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="aendTime" prop="aendTime"
label="完成时间" label="完成时间"
> >
<template slot-scope="scope">
{{ scope.row.aendTime ? scope.row.aendTime.replace('T', ' ') : '' }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="taskType" prop="taskType"
label="任务类型" label="任务类型"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.taskType === 0 ? '初始加工' : '复加工' }} {{ scope.row.taskType >= 0 ? taskTypeList[scope.row.taskType] : '' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@@ -69,6 +63,11 @@
label="目标位置" label="目标位置"
> >
</el-table-column> </el-table-column>
<el-table-column
prop="vehicleName"
label="车辆名称"
>
</el-table-column>
<el-table-column <el-table-column
prop="kilnName" prop="kilnName"
label="加工炉" label="加工炉"
@@ -106,7 +105,11 @@ export default {
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
totalPage: 0, totalPage: 0,
dataListLoading: false dataListLoading: false,
taskTypeList: {
0: '初始加工',
1: '复加工'
}
} }
}, },
activated () { activated () {

View File

@@ -27,9 +27,6 @@
<el-table-column <el-table-column
prop="createTime" prop="createTime"
label="获取时间"> label="获取时间">
<template slot-scope="scope">
{{ scope.row.createTime ? scope.row.createTime.replace('T', ' ') : '' }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="idenCardNum" prop="idenCardNum"

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="mod-config"> <div class="mod-config">
<!-- <el-form style="display: flex; align-items: center; justify-content: right;" :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form style="display: flex; align-items: center; justify-content: right;" :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item> <el-form-item>
<el-select size="small" v-model="dataForm.vehicleId" filterable placeholder="车辆名称"> <el-select size="small" v-model="dataForm.vehicleId" filterable placeholder="车辆名称">
<el-option <el-option
@@ -14,46 +14,51 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button size="small" @click="getDataList()">查询</el-button> <el-button size="small" @click="getDataList()">查询</el-button>
<el-button type="primary" @click="handTask()">手动执行任务</el-button> <!-- <el-button type="primary" @click="handTask()">手动执行任务</el-button> -->
</el-form-item> </el-form-item>
</el-form> --> </el-form>
<el-table <el-table
:data="dataList" :data="dataList"
:stripe="true" :stripe="true"
:header-cell-style="{ :header-cell-style="{background:'#eef1f6',color:'#606266',height: '56px'}"
background: '#eef1f6',
color: '#606266',
height: '56px'
}"
v-loading="dataListLoading" v-loading="dataListLoading"
style="width: 100%;" style="width: 100%;">
>
<el-table-column <el-table-column
type="index" type="index"
header-align="center" header-align="center"
align="center" align="center"
label="序号" label="序号"
width="50" width="50">
>
</el-table-column> </el-table-column>
<el-table-column prop="taskCode" label="任务编码"> </el-table-column> <el-table-column
<el-table-column prop="createTime" label="发起时间"> prop="taskCode"
label="任务编码">
</el-table-column>
<el-table-column
prop="createTime"
label="发起时间">
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{ scope.row.createTime ? moment(scope.row.createTime).format('YYYY-MM-D HH:mm:ss') : '' }}
scope.row.createTime ? scope.row.createTime.replace("T", " ") : ""
}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="status" label="任务状态"> <el-table-column
prop="taskSource"
label="任务来源">
</el-table-column>
<el-table-column
prop="status"
label="任务状态">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.status >= 0 ? statusList[scope.row.status] : "" }} {{ scope.row.status >= 0 ? statusList[scope.row.status] : '' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="taskType" label="任务类型"> <el-table-column
prop="taskType"
label="任务类型">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ <span>{{
scope.row.taskType === 0 scope.row.taskType === 0
? "缓存到窑炉加工" ? "炉加工"
: scope.row.taskType === 1 : scope.row.taskType === 1
? "出炉到缓存" ? "出炉到缓存"
: scope.row.taskType === 2 : scope.row.taskType === 2
@@ -62,21 +67,26 @@
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="startPosition" label="开始位置"> </el-table-column> <el-table-column
<el-table-column prop="targetPosition" label="目标位置"> prop="startPosition"
label="开始位置">
</el-table-column>
<el-table-column
prop="targetPosition"
label="目标位置">
</el-table-column>
<el-table-column
prop="vehicleName"
label="车辆名称">
</el-table-column> </el-table-column>
<el-table-column prop="vehicleName" label="车辆名称"> </el-table-column>
<el-table-column <el-table-column
fixed="right" fixed="right"
header-align="center" header-align="center"
align="center" align="center"
width="80" width="80"
label="详情" label="详情">
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="Detail(scope.row.id)" <el-button v-if="scope.row.status === 0" type="text" size="small" @click="Detail(scope.row.id)">详情</el-button>
>详情</el-button
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@@ -84,38 +94,15 @@
header-align="center" header-align="center"
align="center" align="center"
width="120" width="120"
label="操作" label="操作">
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">
type="text" <el-tooltip class="item" effect="dark" content="执行" placement="top">
:disabled="scope.row.status === 1"
size="small"
@click="addOrUpdateHandle(scope.row.id)"
>
<el-tooltip
class="item"
effect="dark"
content="执行"
placement="top"
>
<icon-svg class="iconClass" name="维护开始"></icon-svg> <icon-svg class="iconClass" name="维护开始"></icon-svg>
</el-tooltip> </el-tooltip>
</el-button> </el-button>
<el-button <el-button type="text" v-if="!(scope.row.isAuto)" style="color:red" size="small" @click="deleteHandle(scope.row.sheetNo)">
type="text" <el-tooltip class="item" effect="dark" content="删除" placement="top">
:disabled="scope.row.status === 1"
v-if="!scope.row.isAuto"
style="color:red"
size="small"
@click="deleteHandle(scope.row.sheetNo)"
>
<el-tooltip
class="item"
effect="dark"
content="删除"
placement="top"
>
<icon-svg class="iconClass" name="删除"></icon-svg> <icon-svg class="iconClass" name="删除"></icon-svg>
</el-tooltip> </el-tooltip>
</el-button> </el-button>
@@ -129,13 +116,13 @@
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="pageSize" :page-size="pageSize"
:total="totalPage" :total="totalPage"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper">
>
</el-pagination> </el-pagination>
</div> </div>
</template> </template>
<script> <script>
import moment from 'moment'
// 任务状态列表 // 任务状态列表
const statusList = { const statusList = {
0: '等待执行', 0: '等待执行',
@@ -149,19 +136,18 @@ export default {
dataForm: { dataForm: {
vehicleId: '' vehicleId: ''
}, },
timer: '',
dataList: [], dataList: [],
options: [], options: [],
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
totalPage: 0, totalPage: 0,
dataListLoading: false, dataListLoading: false,
statusList statusList,
moment
} }
}, },
created () { activated () {
this.getDataList() this.getDataList()
this.timer = setInterval(this.getDataList, 180000)
}, },
methods: { methods: {
// 获取数据列表 // 获取数据列表
@@ -171,9 +157,9 @@ export default {
url: this.$http.adornUrl('/currTask/currentTaskNow'), url: this.$http.adornUrl('/currTask/currentTaskNow'),
method: 'post', method: 'post',
data: this.$http.adornData({ data: this.$http.adornData({
current: this.pageIndex, 'current': this.pageIndex,
size: this.pageSize, 'size': this.pageSize,
vehicleId: this.dataForm.vehicleId 'vehicleId': this.dataForm.vehicleId
}) })
}).then(({data}) => { }).then(({data}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
@@ -231,8 +217,7 @@ export default {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}) }).then(() => {
.then(() => {
this.$http({ this.$http({
url: this.$http.adornUrl('/currTask/deleteBySheetNo'), url: this.$http.adornUrl('/currTask/deleteBySheetNo'),
method: 'post', method: 'post',
@@ -251,12 +236,8 @@ export default {
this.$message.error(data.msg) this.$message.error(data.msg)
} }
}) })
}) }).catch(() => {})
.catch(() => {})
} }
},
beforeDestroy () {
clearInterval(this.timer)
} }
} }
</script> </script>

View File

@@ -53,7 +53,7 @@
prop="createTime" prop="createTime"
label="报警时间"> label="报警时间">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.createTime ? scope.row.createTime.replace('T', ' ') : '' }} {{ scope.row.createTime ? moment(scope.row.createTime).format('YYYY-MM-D HH:mm:ss') : '' }}
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column <!-- <el-table-column
@@ -78,6 +78,8 @@
</template> </template>
<script> <script>
import moment from 'moment'
export default { export default {
data () { data () {
return { return {
@@ -91,7 +93,8 @@
totalPage: 0, totalPage: 0,
dataListLoading: false, dataListLoading: false,
selectionDataList: [], selectionDataList: [],
carList: [] carList: [],
moment
} }
}, },
created () { created () {

View File

@@ -34,17 +34,11 @@
prop="abeginTime" prop="abeginTime"
label="发起时间" label="发起时间"
> >
<template slot-scope="scope">
{{ scope.row.abeginTime ? scope.row.abeginTime.replace('T', ' ') : '' }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="aendTime" prop="aendTime"
label="完成时间" label="完成时间"
> >
<template slot-scope="scope">
{{ scope.row.aendTime ? scope.row.aendTime.replace('T', ' ') : '' }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="orderSource" prop="orderSource"

View File

@@ -58,7 +58,7 @@
label="报警时间" label="报警时间"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.createTime ? scope.row.createTime.replace('T', ' ') : '' }} {{ scope.row.createTime ? moment(scope.row.createTime).format('YYYY-MM-D HH:mm:ss') : '' }}
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column <!-- <el-table-column
@@ -86,6 +86,8 @@
</template> </template>
<script> <script>
import moment from 'moment'
export default { export default {
data () { data () {
return { return {
@@ -99,7 +101,8 @@ export default {
totalPage: 0, totalPage: 0,
dataListLoading: false, dataListLoading: false,
selectionDataList: [], selectionDataList: [],
kilnList: [] kilnList: [],
moment
} }
}, },
created () { created () {

View File

@@ -44,7 +44,7 @@
prop="createTime" prop="createTime"
label="获取时间"> label="获取时间">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.createTime ? scope.row.createTime.replace('T', ' ') : '' }} {{ scope.row.createTime ? moment(scope.row.createTime).format('YYYY-MM-D HH:mm:ss') : '' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@@ -58,16 +58,10 @@
<el-table-column <el-table-column
prop="abeginTime" prop="abeginTime"
label="发起时间"> label="发起时间">
<template slot-scope="scope">
{{ scope.row.abeginTime ? scope.row.abeginTime.replace('T', ' ') : '' }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="aendTime" prop="aendTime"
label="完成时间"> label="完成时间">
<template slot-scope="scope">
{{ scope.row.aendTime ? scope.row.aendTime.replace('T', ' ') : '' }}
</template>
</el-table-column> </el-table-column>
<!-- <el-table-column <!-- <el-table-column
prop="orderSource" prop="orderSource"
@@ -141,6 +135,7 @@
</template> </template>
<script> <script>
import moment from 'moment'
import orderDetail from './components/order-history-detail' import orderDetail from './components/order-history-detail'
// 任务状态列表 // 任务状态列表
const statusList = { const statusList = {
@@ -172,7 +167,8 @@
dataListLoading: false, dataListLoading: false,
orderDetailVisible: false, orderDetailVisible: false,
statusList, statusList,
orderVoidList orderVoidList,
moment
} }
}, },
components: { components: {

View File

@@ -63,7 +63,7 @@
label="发起时间" label="发起时间"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.createTime ? scope.row.createTime.replace('T', ' ') : '' }} {{ scope.row.createTime ? moment(scope.row.createTime).format('YYYY-MM-D HH:mm:ss') : '' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@@ -86,7 +86,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ <span>{{
scope.row.taskType === 0 scope.row.taskType === 0
? "缓存到窑炉加工" ? "炉加工"
: scope.row.taskType === 1 : scope.row.taskType === 1
? "出炉到缓存" ? "出炉到缓存"
: scope.row.taskType === 2 : scope.row.taskType === 2
@@ -148,6 +148,7 @@
</template> </template>
<script> <script>
import moment from 'moment'
// 任务状态列表 // 任务状态列表
const statusList = { const statusList = {
0: '等待执行', 0: '等待执行',
@@ -170,10 +171,11 @@ export default {
totalPage: 0, totalPage: 0,
dataListLoading: false, dataListLoading: false,
orderDetailVisible: false, orderDetailVisible: false,
statusList statusList,
moment
} }
}, },
created () { activated () {
this.getDataList() this.getDataList()
}, },
methods: { methods: {

View File

@@ -14,6 +14,8 @@
// api接口请求地址 // api接口请求地址
window.SITE_CONFIG['baseUrl'] = '/api'; window.SITE_CONFIG['baseUrl'] = '/api';
// WS请求地址
window.SITE_CONFIG['baseWsUrl'] = 'ws://192.168.6.66:8080/'
// cdn地址 = 域名 + 版本号 // cdn地址 = 域名 + 版本号
window.SITE_CONFIG['domain'] = './'; // 域名 window.SITE_CONFIG['domain'] = './'; // 域名

View File

@@ -6,6 +6,8 @@
// api接口请求地址 // api接口请求地址
window.SITE_CONFIG['baseUrl'] = 'http://localhost:8080/renren-fast'; window.SITE_CONFIG['baseUrl'] = 'http://localhost:8080/renren-fast';
// WS请求地址
window.SITE_CONFIG['baseWsUrl'] = 'ws://192.168.1.7:8080/'
// cdn地址 = 域名 + 版本号 // cdn地址 = 域名 + 版本号
window.SITE_CONFIG['domain'] = './'; // 域名 window.SITE_CONFIG['domain'] = './'; // 域名

View File

@@ -6,6 +6,8 @@
// api接口请求地址 // api接口请求地址
window.SITE_CONFIG['baseUrl'] = 'http://localhost:8080/renren-fast'; window.SITE_CONFIG['baseUrl'] = 'http://localhost:8080/renren-fast';
// WS请求地址
window.SITE_CONFIG['baseWsUrl'] = 'ws://192.168.1.7:8080/'
// cdn地址 = 域名 + 版本号 // cdn地址 = 域名 + 版本号
window.SITE_CONFIG['domain'] = './'; // 域名 window.SITE_CONFIG['domain'] = './'; // 域名

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-15 08:20:28 * @Date: 2021-11-15 08:20:28
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-07-06 15:12:03 * @LastEditTime: 2021-12-07 14:48:08
* @Description: * @Description:
*/ */
/** /**
@@ -12,7 +12,9 @@
window.SITE_CONFIG = {} window.SITE_CONFIG = {}
// api接口请求地址 // api接口请求地址
window.SITE_CONFIG['baseUrl'] = 'http://192.168.1.18:8080/api/' window.SITE_CONFIG['baseUrl'] = 'http://192.168.1.7:8080/'
// WS请求地址
window.SITE_CONFIG['baseWsUrl'] = 'ws://192.168.1.7:8080/'
// cdn地址 = 域名 + 版本号 // cdn地址 = 域名 + 版本号
window.SITE_CONFIG['domain'] = './' // 域名 window.SITE_CONFIG['domain'] = './' // 域名

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB