This commit is contained in:
parent
21764716dd
commit
22cf49a6b3
Binary file not shown.
|
|
@ -117,5 +117,48 @@ export default {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
attendance:{
|
||||||
|
list: {
|
||||||
|
name: "列表",
|
||||||
|
req: async function(data){
|
||||||
|
return await http.get(
|
||||||
|
`${config.API_URL}/hrm/attendance/`,
|
||||||
|
data
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
item: {
|
||||||
|
name: "到岗记录",
|
||||||
|
req: async function(id){
|
||||||
|
return await http.get(
|
||||||
|
`${config.API_URL}/hrm/attendance/${id}/`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
create: {
|
||||||
|
name: "新增",
|
||||||
|
req: async function(data){
|
||||||
|
return await http.post(
|
||||||
|
`${config.API_URL}/hrm/attendance/`,
|
||||||
|
data);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
update: {
|
||||||
|
name: "更新",
|
||||||
|
req: async function(id, data){
|
||||||
|
return await http.put(
|
||||||
|
`${config.API_URL}/hrm/attendance/${id}/`,
|
||||||
|
data);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
delete: {
|
||||||
|
name: "删除",
|
||||||
|
req: async function(id){
|
||||||
|
return await http.delete(
|
||||||
|
`${config.API_URL}/hrm/attendance/${id}/`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1611,8 +1611,7 @@ const routes = [
|
||||||
"perms": ["certificate"]
|
"perms": ["certificate"]
|
||||||
},
|
},
|
||||||
"component": "hrm/certificate"
|
"component": "hrm/certificate"
|
||||||
}
|
},
|
||||||
,
|
|
||||||
{
|
{
|
||||||
"name": "clockRecord",
|
"name": "clockRecord",
|
||||||
"path": "/hrm/clock_record",
|
"path": "/hrm/clock_record",
|
||||||
|
|
@ -1623,6 +1622,16 @@ const routes = [
|
||||||
},
|
},
|
||||||
"component": "hrm/clock_record"
|
"component": "hrm/clock_record"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "attendance",
|
||||||
|
"path": "/hrm/attendance",
|
||||||
|
"meta": {
|
||||||
|
"title": "到岗记录",
|
||||||
|
"icon": "el-icon-check",
|
||||||
|
"perms": ["attendance_record"]
|
||||||
|
},
|
||||||
|
"component": "hrm/attendance"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "certificate",
|
"name": "certificate",
|
||||||
"path": "/hrm/certificate",
|
"path": "/hrm/certificate",
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container class="dashboard">
|
<el-container class="dashboard">
|
||||||
<el-header class="header">
|
<el-header class="header">
|
||||||
<div style="font-weight: bold;">10车间生产数据看板</div>
|
<div style="font-weight: bold; font-family:'myfont';font-size:32px">10车间生产数据看板</div>
|
||||||
<div style="font-size: 14px;margin-top:18px">2023-11-01 08:00</div>
|
<div style="font-size: 14px;margin-top:18px">2023-11-01 08:00</div>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main>
|
<el-main>
|
||||||
|
|
@ -49,7 +49,6 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<div style="height:2%"></div>
|
<div style="height:2%"></div>
|
||||||
<!-- <dv-decoration3 style="width:100%;height:4%;" /> -->
|
|
||||||
<el-row style="height:60%">
|
<el-row style="height:60%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
|
|
@ -58,68 +57,37 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 2px;"></div>
|
<div style="height: 2px;"></div>
|
||||||
<div class="boxmain">
|
<div class="boxmain" id="scrollContainer1">
|
||||||
<dv-scroll-board :config="taskBoard" style="width:100%;height:100%"
|
<div class="wrapper" id="scrollWrapper1" @mouseover="mouseOver1" @mouseout="mouseOut1"
|
||||||
@mouseover="mouseoverHandler" @click="clickHandler" />
|
style="overflow: hidden;">
|
||||||
<!-- <el-table :data="workerData" id="table1">
|
<table class="totall">
|
||||||
<el-table-column prop="name" label="姓名" />
|
<tr class="title">
|
||||||
<el-table-column prop="team" label="班次" />
|
<th v-for="itemx in liData1" :key="itemx">{{ itemx }}</th>
|
||||||
<el-table-column prop="post" label="岗位" />
|
|
||||||
<el-table-column prop="state" label="状态" />
|
|
||||||
</el-table> -->
|
|
||||||
<!-- <table border="0" cellspacing="16">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<th>序号</th>
|
|
||||||
<th>产品名称</th>
|
|
||||||
<th>型号</th>
|
|
||||||
<th>计划周期</th>
|
|
||||||
<th>完成进度</th>
|
|
||||||
<th>产量</th>
|
|
||||||
<th>状态</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
</table>
|
||||||
<td>1</td>
|
<div id="scrollBody1" ref="moocBox1" style="overflow:scroll">
|
||||||
<th>光纤预制管</th>
|
<div>
|
||||||
<td>8098</td>
|
<table :class="{ marquee_top: animate }">
|
||||||
<td>19.80%</td>
|
<tr v-for="itemy in listData1" class="rollData" ref="con1" :key="itemy">
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="100"
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
status="green" /></td>
|
<el-progress v-if="index2==5" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
<td>368</td>
|
:status="getStatus(itemz)"/>
|
||||||
<td><el-tag type="" effect="light">已完成</el-tag></td>
|
<span v-else>{{ itemz }}</span>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
</table>
|
||||||
<td>2</td>
|
<table :class="{ marquee_top: animate }" v-show="scrollVivible1">
|
||||||
<th>光纤预制管</th>
|
<tr v-for="itemy in listData1" class="rollData" ref="con1" :key="itemy">
|
||||||
<td>7506</td>
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
<td>6.70%</td>
|
<el-progress v-if="index2==5" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="70"
|
:status="getStatus(itemz)"/>
|
||||||
status="success" /></td>
|
<span v-else>{{ itemz }}</span>
|
||||||
<td>339</td>
|
</td>
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
</table>
|
||||||
<td>3</td>
|
</div>
|
||||||
<th>光纤预制管</th>
|
</div>
|
||||||
<td>3261</td>
|
</div>
|
||||||
<td>32.30%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="70"
|
|
||||||
status="warning" /></td>
|
|
||||||
<td>325</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>4</td>
|
|
||||||
<th>光纤预制管</th>
|
|
||||||
<td>1993</td>
|
|
||||||
<td> 201%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="30"
|
|
||||||
status="exception" /></td>
|
|
||||||
<td> 199</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -131,68 +99,45 @@
|
||||||
<div class="boxlabel">任务进度</div>
|
<div class="boxlabel">任务进度</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 2px;"></div>
|
<div style="height: 2px;"></div>
|
||||||
<div class="boxmain">
|
<div class="boxmain" id="scrollContainer2">
|
||||||
<dv-scroll-board :config="taskBoard2" style="width:100%;height:100%"
|
<div class="wrapper" id="scrollWrapper2" @mouseover="mouseOver2" @mouseout="mouseOut2">
|
||||||
@mouseover="mouseoverHandler" @click="clickHandler" />
|
<table class="totall">
|
||||||
<!-- <table border="0" cellspacing="16">
|
<tr class="title">
|
||||||
<tbody>
|
<th v-for="itemx in liData2" :key="itemx">{{ itemx }}</th>
|
||||||
<tr>
|
|
||||||
<th>序号</th>
|
|
||||||
<th>产品名称</th>
|
|
||||||
<th>型号</th>
|
|
||||||
<th>计划周期</th>
|
|
||||||
<th>完成进度</th>
|
|
||||||
<th>产量</th>
|
|
||||||
<th>状态</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
</table>
|
||||||
<td>1</td>
|
<div id="scrollBody2" ref="moocBox2" style="overflow:scroll">
|
||||||
<th>光纤预制管</th>
|
<div>
|
||||||
<td>8098</td>
|
<table :class="{ marquee_top: animate }">
|
||||||
<td>19.80%</td>
|
<tr v-for="(itemy,index) in listData2" class="rollData" ref="con1" :key="itemy">
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="100"
|
<td>{{ index+1 }}</td>
|
||||||
status="green" /></td>
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
<td>368</td>
|
<el-progress v-if="index2==4" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
<td><el-tag type="" effect="light">已完成</el-tag></td>
|
:status="getStatus(itemz)"/>
|
||||||
|
<el-tag v-else-if="index2==6" :type="getType(itemz)">{{ stateOption[itemz] }}</el-tag>
|
||||||
|
<span v-else>{{ itemz }}</span>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
</table>
|
||||||
<td>2</td>
|
<table :class="{ marquee_top: animate }" v-show="scrollVivible1">
|
||||||
<th>光纤预制管</th>
|
<tr v-for="(itemy,index) in listData2" class="rollData" ref="con1" :key="itemy">
|
||||||
<td>7506</td>
|
<td>{{ index+1 }}</td>
|
||||||
<td>6.70%</td>
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="70"
|
<el-progress v-if="index2==4" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
status="success" /></td>
|
:status="getStatus(itemz)"/>
|
||||||
<td>339</td>
|
<el-tag v-else-if="index2==6" :type="getType(itemz)">{{ stateOption[itemz] }}</el-tag>
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
<span v-else>{{ itemz }}</span>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
</table>
|
||||||
<td>3</td>
|
</div>
|
||||||
<th>光纤预制管</th>
|
</div>
|
||||||
<td>3261</td>
|
</div>
|
||||||
<td>32.30%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="70"
|
|
||||||
status="warning" /></td>
|
|
||||||
<td>325</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>4</td>
|
|
||||||
<th>光纤预制管</th>
|
|
||||||
<td>1993</td>
|
|
||||||
<td> 201%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="30"
|
|
||||||
status="exception" /></td>
|
|
||||||
<td> 199</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<div style="height: 1%"></div>
|
<div style="height: 1%"></div>
|
||||||
<!-- <dv-decoration4 :reverse="true" style="width:100%;height:1%;" :dur="20" :color="['orange']" /> -->
|
|
||||||
<el-row style="height:39%" :gutter="10">
|
<el-row style="height:39%" :gutter="10">
|
||||||
<el-col :xs="24" :md="9">
|
<el-col :xs="24" :md="9">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
|
|
@ -225,104 +170,7 @@
|
||||||
</el-main>
|
</el-main>
|
||||||
</el-container>
|
</el-container>
|
||||||
</template>
|
</template>
|
||||||
<style scoped>
|
|
||||||
.dashboard {
|
|
||||||
background-image: url("https://cdn-upload.datav.aliyun.com/upload/download/1678758744858-EWBrlDVf.jpg");
|
|
||||||
/* url("/public/img/bg.jpg"); */
|
|
||||||
color: #fff;
|
|
||||||
font-family: "Microsoft Yahei" !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
background: url("/public/img/photon_header.png");
|
|
||||||
border-bottom: none;
|
|
||||||
/* background: url("https://cdn-upload.datav.aliyun.com/upload/download/1675143770257-pNifja_p.webp"); */
|
|
||||||
background-size: 100% 100%;
|
|
||||||
font-size: 26px;
|
|
||||||
display: block;
|
|
||||||
height: 80px;
|
|
||||||
color: rgb(149, 255, 255);
|
|
||||||
font-family: 'Microsoft Yahei';
|
|
||||||
text-align: center;
|
|
||||||
padding: 12px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* .el-header {
|
|
||||||
font-family: Inter, "-apple-system", BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "noto sans", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
||||||
} */
|
|
||||||
|
|
||||||
.box {
|
|
||||||
background: rgba(10, 63, 68, 0.5);
|
|
||||||
height: 100%;
|
|
||||||
/* padding: 2px 2px 2px 2px; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.boxtitle {
|
|
||||||
color: #fff;
|
|
||||||
font-size: 16px;
|
|
||||||
display: flex;
|
|
||||||
height: 36px;
|
|
||||||
background: linear-gradient(40deg, rgba(11, 101, 140, 0.451), rgba(0, 34, 48, 0.335), rgba(11, 101, 140, 0.451));
|
|
||||||
}
|
|
||||||
|
|
||||||
.bgimg {
|
|
||||||
background-image: url('https://cdn-upload.datav.aliyun.com/upload/download/1678762309227-E6RP8z2R.png');
|
|
||||||
background-size: 140% 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.boxlabel {
|
|
||||||
margin-left: 6px;
|
|
||||||
font-size: 18px;
|
|
||||||
margin-top: 6px
|
|
||||||
}
|
|
||||||
|
|
||||||
.boxmain {
|
|
||||||
height: calc(100% - 40px);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 800px) {
|
|
||||||
.boxmain {
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.flex_center {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center
|
|
||||||
}
|
|
||||||
|
|
||||||
.border {
|
|
||||||
border: 1px dashed #49bcf7;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigdata {
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
table th {
|
|
||||||
font-size: 14px;
|
|
||||||
background: rgba(0, 0, 0, .1);
|
|
||||||
}
|
|
||||||
|
|
||||||
table td {
|
|
||||||
font-size: 14px;
|
|
||||||
color: rgba(255, 255, 255, .6);
|
|
||||||
}
|
|
||||||
|
|
||||||
table th,
|
|
||||||
table td {
|
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, .3);
|
|
||||||
padding: .1rem 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script>
|
<script>
|
||||||
import * as echarts from "echarts";
|
import * as echarts from "echarts";
|
||||||
function deepCopy(obj) {
|
function deepCopy(obj) {
|
||||||
|
|
@ -508,54 +356,99 @@ export default {
|
||||||
state: 1
|
state: 1
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
taskBoard: {
|
liData1: ['姓名', '岗位', '班次', '状态'],
|
||||||
header: ['姓名', '岗位', '班次', '状态'],
|
listData1: [
|
||||||
headerBGC: '#0a3f44',
|
|
||||||
data: [
|
|
||||||
['小王', '成型人', '白班', '到岗'],
|
['小王', '成型人', '白班', '到岗'],
|
||||||
['小李', '成型人', '白班', '到岗'],
|
['小李', '成型人', '白班', '到岗'],
|
||||||
['小张', '成型人', '白班', '未到岗'],
|
['小张', '成型人', '白班', '未到岗'],
|
||||||
],
|
],
|
||||||
index: true,
|
liData2: ['序号','产品名称', '型号', '计划开始时间', '计划结束时间','完成进度', '产量','状态'],
|
||||||
columnWidth: [50],
|
listData2: [
|
||||||
align: ['center'],
|
["光纤预制管", "ZJ2", '2023-11-10', '2023-11-10', 100, "368",40],
|
||||||
},
|
["光纤预制管", "ZJ2", '2023-11-10', '2023-11-10', 90, "368",40],
|
||||||
|
["光纤预制管", "ZJ2", '2023-11-10', '2023-11-10', 80, "368",30],
|
||||||
|
["光纤预制管", "ZJ2", '2023-11-10', '2023-11-10', 70, "368",30],
|
||||||
|
["光纤预制管", "ZJ2", '2023-11-10', '2023-11-10', 60, "368",40],
|
||||||
|
["光纤预制管", "ZJ2", '2023-11-10', '2023-11-10', 50, "368",30],
|
||||||
|
["光纤预制管", "ZJ2", '2023-11-10', '2023-11-10', 40, "368",30],
|
||||||
|
["光纤预制管", "ZJ2", '2023-11-10', '2023-11-10', 30, "368",40],
|
||||||
|
],
|
||||||
tableData: [
|
tableData: [
|
||||||
['产品名称', '型号', '计划周期', '完成进度', '产量', '状态'],
|
['产品名称', '型号', '计划周期', '完成进度', '产量', '状态'],
|
||||||
['ZB2', 'xxx', '2023-11-01至2023-11-11', '70', '5000', '生产中'],
|
['ZB2', 'xxx', '2023-11-01至2023-11-11', '70', '5000', '生产中'],
|
||||||
],
|
],
|
||||||
taskBoard2: {
|
taskBoard2: {
|
||||||
header: ['产品名称', '型号', '计划周期', '完成进度', '产量', '状态', 'xx'],
|
header: ['产品名称', '型号', '计划开始时间','计划结束时间', '完成进度', '产量', '状态'],
|
||||||
headerBGC: '#0a3f44',
|
headerBGC: '#0a3f44',
|
||||||
waitTime: 3000,
|
waitTime: 3000,
|
||||||
rowNum: 8,
|
rowNum: 8,
|
||||||
columnWidth: [2, 1, 1, 1, 1, 1],
|
columnWidth: [2, 1, 1, 1, 1, 1],
|
||||||
data: [
|
data: [
|
||||||
['<span style="color:#37a2da;">行1列1</span>', '行1列2', '行1列3', '<el-progress :text-inside="true" :stroke-width="14" :percentage="100" status="green"/>', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行2列1', '<span style="color:#32c5e9;">行2列2</span>', '行2列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行3列1', '行3列2', '<span style="color:#67e0e3;">行3列3</span>', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行4列1', '<span style="color:#9fe6b8;">行4列2</span>', '行4列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['<span style="color:#ffdb5c;">行5列1</span>', '行5列2', '行5列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB2', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行6列1', '<span style="color:#ff9f7f;">行6列2</span>', '行6列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行7列1', '行7列2', '<span style="color:#fb7293;">行7列3</span>', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行8列1', '<span style="color:#e062ae;">行8列2</span>', '行8列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB2', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['<span style="color:#e690d1;">行9列1</span>', '行9列2', '行9列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB2', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['光纤预制管', 'ZB1', '2023-11-01', '2023-11-10', '50/60', '300','已完成'],
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
],
|
],
|
||||||
index: true,
|
index: true,
|
||||||
columnWidth: [50],
|
columnWidth: [50],
|
||||||
align: ['center'],
|
align: ['center'],
|
||||||
},
|
},
|
||||||
|
speed: 2000,
|
||||||
|
myScroll: null,
|
||||||
|
myScroll1: null,
|
||||||
|
myScroll2: null,
|
||||||
|
iliHeight: 30,
|
||||||
|
time: null,
|
||||||
|
delay: 20,
|
||||||
|
start_date:'',
|
||||||
|
end_date:'',
|
||||||
|
scrollVivible1:true,
|
||||||
|
scrollVivible2:true,
|
||||||
chartInterval1: null,
|
chartInterval1: null,
|
||||||
chartInterval2: null,
|
chartInterval2: null,
|
||||||
chartInterval3: null
|
chartInterval3: null,
|
||||||
|
stateOption:{
|
||||||
|
30:'生产中',
|
||||||
|
40:'已完成'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
let Container1 = document.getElementById('scrollContainer1').clientHeight;
|
||||||
|
let tableHeight1 = Container1-40;
|
||||||
|
document.getElementById('scrollWrapper1').style.height = Container1+'px';
|
||||||
|
document.getElementById('scrollBody1').style.height = tableHeight1+'px';
|
||||||
|
let scrollHeight1 = this.$refs.moocBox1.scrollHeight/2;
|
||||||
|
if(tableHeight1>scrollHeight1){
|
||||||
|
this.scrollVivible1 = false;
|
||||||
|
}else{
|
||||||
|
this.scrollVivible1 = true;
|
||||||
|
this.myScroll1 = setInterval(() => {
|
||||||
|
this.scrollUp1();
|
||||||
|
}, this.speed);
|
||||||
|
}
|
||||||
|
let Container2 = document.getElementById('scrollContainer2').clientHeight;
|
||||||
|
let tableHeight2 = Container2-40;
|
||||||
|
document.getElementById('scrollWrapper2').style.height = Container2+'px';
|
||||||
|
document.getElementById('scrollBody2').style.height = tableHeight2+'px';
|
||||||
|
let scrollHeight2 = this.$refs.moocBox2.scrollHeight/2;
|
||||||
|
if(tableHeight2>scrollHeight2){
|
||||||
|
this.scrollVivible2 = false;
|
||||||
|
}else{
|
||||||
|
this.scrollVivible2 = true;
|
||||||
|
this.myScroll2 = setInterval(() => {
|
||||||
|
this.scrollUp2();
|
||||||
|
}, this.speed);
|
||||||
|
}
|
||||||
let chart1Option = deepCopy(this.basicOption)
|
let chart1Option = deepCopy(this.basicOption)
|
||||||
let chart1 = this.setChart("chart1", chart1Option);
|
let chart1 = this.setChart("chart1", chart1Option);
|
||||||
let chart2Option = deepCopy(this.basicOption);
|
let chart2Option = deepCopy(this.basicOption);
|
||||||
|
|
@ -673,9 +566,26 @@ export default {
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
this.setChart("chart3", chart3Option)
|
this.setChart("chart3", chart3Option)
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getType(type){
|
||||||
|
if(type==30){
|
||||||
|
return "primary"
|
||||||
|
}else if(type==40){
|
||||||
|
return "success"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getStatus(status){
|
||||||
|
if(status==100){
|
||||||
|
return "success"
|
||||||
|
}else if(status>=80){
|
||||||
|
return "primary"
|
||||||
|
}else if(status>=60){
|
||||||
|
return "warning"
|
||||||
|
}else{
|
||||||
|
return "exception"
|
||||||
|
}
|
||||||
|
},
|
||||||
setChart(name, option = null) {
|
setChart(name, option = null) {
|
||||||
// 根据name 渲染数据, option需填写,否则option为模拟数据
|
// 根据name 渲染数据, option需填写,否则option为模拟数据
|
||||||
var myChart = echarts.getInstanceByDom(document.getElementById(name));
|
var myChart = echarts.getInstanceByDom(document.getElementById(name));
|
||||||
|
|
@ -693,6 +603,181 @@ export default {
|
||||||
}, 500)
|
}, 500)
|
||||||
return myChart
|
return myChart
|
||||||
},
|
},
|
||||||
|
//任务进度
|
||||||
|
getMtask(){
|
||||||
|
let that = this;
|
||||||
|
let obj ={};
|
||||||
|
that.$API.pm.mtask.list.req(obj).then((res) => {
|
||||||
|
console.log('任务进度:',res);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//生产线
|
||||||
|
getProductLine(){
|
||||||
|
let that = this;
|
||||||
|
let obj ={
|
||||||
|
query: {start_date:that.start_date,end_date:that.end_date,dept_name: "10车间"},
|
||||||
|
};
|
||||||
|
//车间生产按月统计 1月1号-----12月1号
|
||||||
|
that.$API.bi.dataset.exec.req('lineMonth', obj).then((res1) => {
|
||||||
|
console.log('车间生产按月统计:',res1);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
let obj2 ={
|
||||||
|
query: {start_date:that.start_date,end_date:that.end_date,dept_name: "10车间"},
|
||||||
|
};
|
||||||
|
//生产车间按日统计 本月合格率统计&昨日合格统计 ///11月1号-----11月30号
|
||||||
|
that.$API.bi.dataset.exec.req('lineDay', obj2).then((res3) => {
|
||||||
|
console.log('生产车间按日统计:',res3);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
scrollUp1(){
|
||||||
|
let scrollTop = this.$refs.moocBox1.scrollTop;
|
||||||
|
let scrollHeight = this.$refs.moocBox1.scrollHeight;
|
||||||
|
if (scrollTop >=scrollHeight/2) {
|
||||||
|
//判断条件是否达到临界
|
||||||
|
this.$refs.moocBox1.scrollTop = 0;
|
||||||
|
} else {
|
||||||
|
this.$refs.moocBox1.scrollTop=scrollTop+40;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 鼠标滑过暂停滚动
|
||||||
|
mouseOver1() {
|
||||||
|
clearInterval(this.myScroll1);
|
||||||
|
},
|
||||||
|
//鼠标移开重新滚动
|
||||||
|
mouseOut1() {
|
||||||
|
this.myScroll1 = setInterval(() => {
|
||||||
|
this.scrollUp1();
|
||||||
|
},
|
||||||
|
this.speed);
|
||||||
|
},
|
||||||
|
//滚动
|
||||||
|
scrollUp2() {
|
||||||
|
if (this.$refs.moocBox2.scrollTop >= this.$refs.moocBox2.scrollHeight / 2) {
|
||||||
|
//判断条件是否达到临界
|
||||||
|
this.$refs.moocBox2.scrollTop = 0;
|
||||||
|
} else {
|
||||||
|
this.$refs.moocBox2.scrollTop=this.$refs.moocBox2.scrollTop+40;
|
||||||
|
}
|
||||||
|
}, // 鼠标滑过暂停滚动
|
||||||
|
mouseOver2() {
|
||||||
|
clearInterval(this.myScroll2);
|
||||||
|
}, //鼠标移开重新滚动
|
||||||
|
mouseOut2() {
|
||||||
|
this.myScroll2 = setInterval(() => {
|
||||||
|
this.scrollUp2();
|
||||||
|
},
|
||||||
|
this.speed);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
@font-face {
|
||||||
|
font-family: 'myfont'; /* 字体名称 */
|
||||||
|
src: url('../../style/youShe.ttf'); /* 字体文件相对路径 */
|
||||||
|
}
|
||||||
|
.dashboard {
|
||||||
|
background-image: url("https://cdn-upload.datav.aliyun.com/upload/download/1678758744858-EWBrlDVf.jpg");
|
||||||
|
color: #fff;
|
||||||
|
font-family: "Microsoft Yahei" !important;
|
||||||
|
}
|
||||||
|
.header {
|
||||||
|
background: url("/public/img/photon_header.png");
|
||||||
|
border-bottom: none;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
font-size: 26px;
|
||||||
|
display: block;
|
||||||
|
height: 80px;
|
||||||
|
color: rgb(149, 255, 255);
|
||||||
|
font-family: 'Microsoft Yahei';
|
||||||
|
text-align: center;
|
||||||
|
padding: 12px 0px;
|
||||||
|
}
|
||||||
|
.box {
|
||||||
|
background: rgba(10, 63, 68, 0.5);
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.boxtitle {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 16px;
|
||||||
|
display: flex;
|
||||||
|
height: 36px;
|
||||||
|
background: linear-gradient(40deg, rgba(11, 101, 140, 0.451), rgba(0, 34, 48, 0.335), rgba(11, 101, 140, 0.451));
|
||||||
|
}
|
||||||
|
.bgimg {
|
||||||
|
background-image: url('https://cdn-upload.datav.aliyun.com/upload/download/1678762309227-E6RP8z2R.png');
|
||||||
|
background-size: 140% 100%;
|
||||||
|
}
|
||||||
|
.boxlabel {
|
||||||
|
margin-left: 6px;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-top: 6px
|
||||||
|
}
|
||||||
|
|
||||||
|
.boxmain {
|
||||||
|
height: calc(100% - 40px);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 800px) {
|
||||||
|
.boxmain {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.flex_center {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center
|
||||||
|
}
|
||||||
|
.border {
|
||||||
|
border: 1px dashed #49bcf7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bigdata {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
table-layout: fixed;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table th {
|
||||||
|
font-size: 14px;
|
||||||
|
background: rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
table td {
|
||||||
|
font-size: 14px;
|
||||||
|
height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
color: rgba(255, 255, 255, .8);
|
||||||
|
}
|
||||||
|
table th,table td{
|
||||||
|
padding: .1rem 0;
|
||||||
|
border-bottom: none !important;
|
||||||
|
background:none !important;
|
||||||
|
}
|
||||||
|
.marquee_top{
|
||||||
|
transition: all 0.5s ease-in-out;
|
||||||
|
margin-top: -26px;
|
||||||
|
}
|
||||||
|
.totall{
|
||||||
|
color: #fff;
|
||||||
|
background-color: rgb(10, 63, 68);
|
||||||
|
}
|
||||||
|
.rollData{
|
||||||
|
background-color: rgb(10, 39, 50);
|
||||||
|
}
|
||||||
|
.rollData:nth-of-type(2n+1){
|
||||||
|
background-color: rgb(0, 59, 81);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container class="dashboard">
|
<el-container class="dashboard">
|
||||||
<el-header class="header">
|
<el-header class="header">
|
||||||
<div style="font-weight: bold;">6车间生产数据大看板</div>
|
<div style="font-weight: bold; font-family:'myfont';font-size:32px">6车间生产数据大看板</div>
|
||||||
<div style="font-size: 14px;margin-top:18px">2023-11-14 13:50</div>
|
<div style="font-size: 14px;margin-top:18px">2023-11-14 13:50</div>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main>
|
<el-main>
|
||||||
|
|
@ -47,34 +47,30 @@
|
||||||
<div class="boxlabel">发货情况</div>
|
<div class="boxlabel">发货情况</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 4px;"></div>
|
<div style="height: 4px;"></div>
|
||||||
<div class="boxmain">
|
<div class="boxmain" id="scrollContainer1">
|
||||||
<div class="wrapper" @mouseover="mouseOver" @mouseout="mouseOut">
|
<div class="wrapper" id="scrollWrapper1" @mouseover="mouseOver1" @mouseout="mouseOut1"
|
||||||
|
style="overflow: hidden;">
|
||||||
<table class="totall">
|
<table class="totall">
|
||||||
<tr class="title">
|
<tr class="title">
|
||||||
<th v-for="itemx in liData" :key="itemx">{{ itemx }}</th>
|
<th v-for="itemx in liData1" :key="itemx">{{ itemx }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div ref="moocBox" class="wrapper2">
|
<div id="scrollBody1" ref="moocBox1" style="overflow:scroll">
|
||||||
|
<div>
|
||||||
<table :class="{ marquee_top: animate }">
|
<table :class="{ marquee_top: animate }">
|
||||||
<tr v-for="(itemy,index) in listData" class="rollData" ref="con1" :key="itemy">
|
<tr v-for="itemy in listData1" class="rollData" ref="con1" :key="itemy">
|
||||||
<td>{{ index+1 }}</td>
|
|
||||||
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
<el-progress v-if="index2==3" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
<el-progress v-if="index2==5" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
:status="getStatus(itemz)"/>
|
:status="getStatus(itemz)"/>
|
||||||
<span v-else-if="index2==5">
|
|
||||||
<el-tag type="warning" effect="light">{{ itemz }}</el-tag>
|
|
||||||
</span>
|
|
||||||
<span v-else>{{ itemz }}</span>
|
<span v-else>{{ itemz }}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-for="(itemy,index) in listData" class="rollData" ref="con2" :key="itemy">
|
</table>
|
||||||
<td>{{ index+1 }}</td>
|
<table :class="{ marquee_top: animate }" v-show="scrollVivible1">
|
||||||
|
<tr v-for="itemy in listData1" class="rollData" ref="con1" :key="itemy">
|
||||||
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
<el-progress v-if="index2==3" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
<el-progress v-if="index2==5" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
:status="getStatus(itemz)"/>
|
:status="getStatus(itemz)"/>
|
||||||
<span v-else-if="index2==5">
|
|
||||||
<el-tag type="warning" effect="light">{{ itemz }}</el-tag>
|
|
||||||
</span>
|
|
||||||
<span v-else>{{ itemz }}</span>
|
<span v-else>{{ itemz }}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -82,6 +78,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- <dv-scroll-board :config="taskBoard" style="width:100%;height:100%"
|
||||||
|
@mouseover="mouseoverHandler" @click="clickHandler" /> -->
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -92,60 +91,37 @@
|
||||||
<div class="boxlabel">昨日工序进度</div>
|
<div class="boxlabel">昨日工序进度</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 4px;"></div>
|
<div style="height: 4px;"></div>
|
||||||
<div class="boxmain">
|
<div class="boxmain" id="scrollContainer2">
|
||||||
<table border="0" cellspacing="16">
|
<div class="wrapper" id="scrollWrapper2" @mouseover="mouseOver2" @mouseout="mouseOut2"
|
||||||
<tbody>
|
style="overflow: hidden;">
|
||||||
<tr>
|
<table class="totall">
|
||||||
<th>序号</th>
|
<tr class="title">
|
||||||
<th>产品名称</th>
|
<th v-for="itemx in liData" :key="itemx">{{ itemx }}</th>
|
||||||
<th>型号</th>
|
|
||||||
<th>计划周期</th>
|
|
||||||
<th>完成进度</th>
|
|
||||||
<th>产量</th>
|
|
||||||
<th>状态</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<th>光纤预制管</th>
|
|
||||||
<td>8098</td>
|
|
||||||
<td>19.80%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="100"
|
|
||||||
status="green" /></td>
|
|
||||||
<td>368</td>
|
|
||||||
<td><el-tag type="" effect="light">已完成</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>2</td>
|
|
||||||
<th>光纤预制管</th>
|
|
||||||
<td>7506</td>
|
|
||||||
<td>6.70%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="70"
|
|
||||||
status="success" /></td>
|
|
||||||
<td>339</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3</td>
|
|
||||||
<th>光纤预制管</th>
|
|
||||||
<td>3261</td>
|
|
||||||
<td>32.30%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="70"
|
|
||||||
status="warning" /></td>
|
|
||||||
<td>325</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>4</td>
|
|
||||||
<th>光纤预制管</th>
|
|
||||||
<td>1993</td>
|
|
||||||
<td> 201%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="30"
|
|
||||||
status="exception" /></td>
|
|
||||||
<td> 199</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
|
<div id="scrollBody2" ref="moocBox2" style="overflow:scroll">
|
||||||
|
<div>
|
||||||
|
<table :class="{ marquee_top: animate }">
|
||||||
|
<tr v-for="itemy in listData" class="rollData" ref="con1" :key="itemy">
|
||||||
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
|
<el-progress v-if="index2==5" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
|
:status="getStatus(itemz)"/>
|
||||||
|
<span v-else>{{ itemz }}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table :class="{ marquee_top: animate }" v-show="scrollVivible2">
|
||||||
|
<tr v-for="itemy in listData" class="rollData" ref="con1" :key="itemy">
|
||||||
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
|
<el-progress v-if="index2==5" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
|
:status="getStatus(itemz)"/>
|
||||||
|
<span v-else>{{ itemz }}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -370,32 +346,52 @@ export default {
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
taskBoard: {
|
taskBoard: {
|
||||||
header: ['姓名', '岗位', '班次', '状态'],
|
header: ['日期', '型号', '规格', '发货数量'],
|
||||||
headerBGC: '#0a3f44',
|
headerBGC: '#0a3f44',
|
||||||
data: [
|
data: [
|
||||||
['小王', '成型人', '白班', '到岗'],
|
['2023-11-15', 'ZB2', '34/450', '1500'],
|
||||||
['小李', '成型人', '白班', '到岗'],
|
['2023-11-15', 'ZJ2', '33/500', '500'],
|
||||||
['小张', '成型人', '白班', '未到岗'],
|
['2023-11-15', 'ZT2', '30/600', '2500'],
|
||||||
],
|
],
|
||||||
index: true,
|
index: true,
|
||||||
columnWidth: [50],
|
columnWidth: [50],
|
||||||
align: ['center'],
|
align: ['center'],
|
||||||
},
|
},
|
||||||
liData: ['序号','产品名称', '型号', '计划周期', '完成进度', '产量', '状态'],
|
liData1: ['日期', '型号', '规格', '发货数量'],
|
||||||
|
listData1: [
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 100],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 290],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 280],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 270],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 260],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 250],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 240],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 230],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 100],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 290],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 280],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 270],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 260],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 250],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 240],
|
||||||
|
["2023-11-10", "ZJ2",'3/68', 230],
|
||||||
|
],
|
||||||
|
liData: ['工序','产品名称', '型号', '计划数量', '合格数量', '完成进度', '合格率','操作人'],
|
||||||
listData: [
|
listData: [
|
||||||
["光纤预制管A", "8098", "19.80%", 100,"368",'已完成'],
|
["平头","光纤预制管A", "ZJ2", 368, 100, 90, "99.5%",'李斯'],
|
||||||
["光纤预制管B", "8098", "19.80%", 90,"368",'已完成'],
|
["粘头","光纤预制管B", "ZJ2", 368, 90, 90, "99.5%",'王丽丽'],
|
||||||
["光纤预制管C", "8098", "19.80%", 80,"368",'已完成'],
|
["粗磨","光纤预制管C", "ZJ2", 368, 80, 90, "99.5%",'杜克'],
|
||||||
["光纤预制管D", "8098", "19.80%", 70,"368",'已完成'],
|
["中磨","光纤预制管D", "ZJ2", 368, 70, 90, "99.5%",'钱多多'],
|
||||||
["光纤预制管E", "8098", "19.80%", 60,"368",'已完成'],
|
["细磨","光纤预制管E", "ZJ2", 368, 60, 90, "99.5%",'王富利'],
|
||||||
["光纤预制管F", "8098", "19.80%", 50,"368",'已完成'],
|
["抛光","光纤预制管F", "ZJ2", 368, 50, 90, "99.5%",'张关荣'],
|
||||||
["光纤预制管G", "8098", "19.80%", 40,"368",'已完成'],
|
["开凿","光纤预制管G", "ZJ2", 368, 40, 90, "99.5%",'赵耀国'],
|
||||||
["光纤预制管H", "8098", "19.80%", 30,"368",'已完成'],
|
["配管","光纤预制管H", "ZJ2", 368, 30, 90, "99.5%",'李婷婷'],
|
||||||
],
|
],
|
||||||
speed: 2000,
|
speed: 2000,
|
||||||
myScroll: null,
|
myScroll: null,
|
||||||
|
myScroll1: null,
|
||||||
|
myScroll2: null,
|
||||||
iliHeight: 30,
|
iliHeight: 30,
|
||||||
time: null,
|
time: null,
|
||||||
delay: 20,
|
delay: 20,
|
||||||
|
|
@ -403,41 +399,60 @@ export default {
|
||||||
['产品名称', '型号', '计划周期', '完成进度', '产量', '状态'],
|
['产品名称', '型号', '计划周期', '完成进度', '产量', '状态'],
|
||||||
['ZB2', 'xxx', '2023-11-01至2023-11-11', '70', '5000', '生产中'],
|
['ZB2', 'xxx', '2023-11-01至2023-11-11', '70', '5000', '生产中'],
|
||||||
],
|
],
|
||||||
taskBoard2: {
|
start_date:'',
|
||||||
header: ['产品名称', '型号', '计划周期', '完成进度', '产量', '状态', 'xx'],
|
end_date:'',
|
||||||
headerBGC: '#0a3f44',
|
scrollVivible1:true,
|
||||||
waitTime: 3000,
|
scrollVivible2:true,
|
||||||
rowNum: 8,
|
scrollVivible:true
|
||||||
columnWidth: [2, 1, 1, 1, 1, 1],
|
|
||||||
data: [
|
|
||||||
['<span style="color:#37a2da;">行1列1</span>', '行1列2', '行1列3', '<el-progress :text-inside="true" :stroke-width="14" :percentage="100" status="green"/>', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行2列1', '<span style="color:#32c5e9;">行2列2</span>', '行2列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行3列1', '行3列2', '<span style="color:#67e0e3;">行3列3</span>', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行4列1', '<span style="color:#9fe6b8;">行4列2</span>', '行4列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['<span style="color:#ffdb5c;">行5列1</span>', '行5列2', '行5列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行6列1', '<span style="color:#ff9f7f;">行6列2</span>', '行6列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行7列1', '行7列2', '<span style="color:#fb7293;">行7列3</span>', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行8列1', '<span style="color:#e062ae;">行8列2</span>', '行8列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['<span style="color:#e690d1;">行9列1</span>', '行9列2', '行9列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
],
|
|
||||||
index: true,
|
|
||||||
columnWidth: [50],
|
|
||||||
align: ['center'],
|
|
||||||
chartInterval1: null,
|
|
||||||
chartInterval2: null,
|
|
||||||
chartInterval3: null
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.myScroll = setInterval(() => {
|
let Container1 = document.getElementById('scrollContainer1').clientHeight;
|
||||||
this.scrollUp();
|
let tableHeight1 = Container1-40;
|
||||||
|
document.getElementById('scrollWrapper1').style.height = Container1+'px';
|
||||||
|
document.getElementById('scrollBody1').style.height = tableHeight1+'px';
|
||||||
|
let scrollHeight1 = this.$refs.moocBox1.scrollHeight/2;
|
||||||
|
if(tableHeight1>scrollHeight1){
|
||||||
|
this.scrollVivible1 = false;
|
||||||
|
}else{
|
||||||
|
this.scrollVivible1 = true;
|
||||||
|
this.myScroll1 = setInterval(() => {
|
||||||
|
this.scrollUp1();
|
||||||
}, this.speed);
|
}, this.speed);
|
||||||
|
}
|
||||||
|
let Container2 = document.getElementById('scrollContainer2').clientHeight;
|
||||||
|
let tableHeight2 = Container2-40;
|
||||||
|
document.getElementById('scrollWrapper2').style.height = Container2+'px';
|
||||||
|
document.getElementById('scrollBody2').style.height = tableHeight2+'px';
|
||||||
|
let scrollHeight2 = this.$refs.moocBox2.scrollHeight/2;
|
||||||
|
if(tableHeight2>scrollHeight2){
|
||||||
|
this.scrollVivible2 = false;
|
||||||
|
}else{
|
||||||
|
this.scrollVivible2 = true;
|
||||||
|
this.myScroll2 = setInterval(() => {
|
||||||
|
this.scrollUp2();
|
||||||
|
}, this.speed);
|
||||||
|
}
|
||||||
|
// let domHeight = document.getElementById('process').clientHeight;
|
||||||
|
// document.getElementById('wrapper').style.height = domHeight+'px';
|
||||||
|
// document.getElementById('tableBody').style.height = (domHeight-40)+'px';
|
||||||
|
// let scrollHeight = this.$refs.moocBox.scrollHeight/2;
|
||||||
|
// if(domHeight>scrollHeight){
|
||||||
|
// this.scrollVivible = false;
|
||||||
|
// }else{
|
||||||
|
// this.scrollVivible = true;
|
||||||
|
// this.myScroll = setInterval(() => {
|
||||||
|
// this.scrollUp();
|
||||||
|
// }, this.speed);
|
||||||
|
// }
|
||||||
|
const ondDayTime = 86400000;
|
||||||
|
let cDate = new Date();
|
||||||
|
let month = cDate.getMonth()+1;
|
||||||
|
let start_date = cDate.getFullYear()+'-'+month+'-01';
|
||||||
|
let lastDay = new Date(cDate.getFullYear(), cDate.getMonth(), 0).getDate();
|
||||||
|
let end_date = cDate.getFullYear()+'-'+month+'-'+lastDay;
|
||||||
|
this.start_date = start_date;
|
||||||
|
this.end_date = end_date;
|
||||||
let chart1Option = deepCopy(this.basicOption)
|
let chart1Option = deepCopy(this.basicOption)
|
||||||
this.setChart("chart1", chart1Option);
|
this.setChart("chart1", chart1Option);
|
||||||
let chart2Option = deepCopy(this.basicOption)
|
let chart2Option = deepCopy(this.basicOption)
|
||||||
|
|
@ -472,7 +487,7 @@ export default {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
this.setChart("chart3", chart3Option)
|
this.setChart("chart3", chart3Option);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getStatus(status){
|
getStatus(status){
|
||||||
|
|
@ -501,23 +516,82 @@ export default {
|
||||||
} catch (error) { }
|
} catch (error) { }
|
||||||
}, 500)
|
}, 500)
|
||||||
},
|
},
|
||||||
//滚动
|
//发货情况
|
||||||
scrollUp() {
|
getMioItem(){
|
||||||
// console.log(this.$refs.moocBox.scrollTop)
|
let that = this;
|
||||||
// console.log(this.$refs.moocBox.scrollHeight)
|
let obj ={};
|
||||||
if (this.$refs.moocBox.scrollTop >= this.$refs.moocBox.scrollHeight / 2) {
|
that.$API.inm.mioitem.list.req(obj).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//昨日工序进展
|
||||||
|
getMtask(){
|
||||||
|
let that = this;
|
||||||
|
let obj ={};
|
||||||
|
that.$API.pm.mtask.list.req(obj).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//本月生产统计&本月交付统计
|
||||||
|
getsaleOut(){
|
||||||
|
let that = this;
|
||||||
|
let obj ={
|
||||||
|
query: {start_date:this.start_date,end_date:this.end_date,dept_name: "6车间"},
|
||||||
|
};
|
||||||
|
//生产车间按日统计
|
||||||
|
that.$API.bi.dataset.exec.req('lineDay', obj).then((doInRes) => {
|
||||||
|
console.log('生产车间按日统计:',doInRes);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
//本月交付统计
|
||||||
|
that.$API.bi.dataset.exec.req('saleOutDay', obj).then((saleOutRes) => {
|
||||||
|
console.log('本月交付统计:',saleOutRes);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
scrollUp1(){
|
||||||
|
let scrollTop = this.$refs.moocBox1.scrollTop;
|
||||||
|
let scrollHeight = this.$refs.moocBox1.scrollHeight;
|
||||||
|
if (scrollTop >=scrollHeight/2) {
|
||||||
//判断条件是否达到临界
|
//判断条件是否达到临界
|
||||||
this.$refs.moocBox.scrollTop = 0;
|
this.$refs.moocBox1.scrollTop = 0;
|
||||||
} else {
|
} else {
|
||||||
this.$refs.moocBox.scrollTop=this.$refs.moocBox.scrollTop+40;
|
this.$refs.moocBox1.scrollTop=scrollTop+40;
|
||||||
}
|
}
|
||||||
}, // 鼠标滑过暂停滚动
|
},
|
||||||
mouseOver() {
|
// 鼠标滑过暂停滚动
|
||||||
clearInterval(this.myScroll);
|
mouseOver1() {
|
||||||
}, //鼠标移开重新滚动
|
clearInterval(this.myScroll1);
|
||||||
mouseOut() {
|
},
|
||||||
this.myScroll = setInterval(() => {
|
//鼠标移开重新滚动
|
||||||
this.scrollUp();
|
mouseOut1() {
|
||||||
|
this.myScroll1 = setInterval(() => {
|
||||||
|
this.scrollUp1();
|
||||||
|
},
|
||||||
|
this.speed);
|
||||||
|
},
|
||||||
|
|
||||||
|
//滚动
|
||||||
|
scrollUp2() {
|
||||||
|
let scrollTop = this.$refs.moocBox2.scrollTop;
|
||||||
|
let scrollHeight = this.$refs.moocBox2.scrollHeight;
|
||||||
|
if (scrollTop >=scrollHeight/2) {
|
||||||
|
//判断条件是否达到临界
|
||||||
|
this.$refs.moocBox2.scrollTop = 0;
|
||||||
|
} else {
|
||||||
|
this.$refs.moocBox2.scrollTop=scrollTop+40;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 鼠标滑过暂停滚动
|
||||||
|
mouseOver2() {
|
||||||
|
clearInterval(this.myScroll2);
|
||||||
|
},
|
||||||
|
//鼠标移开重新滚动
|
||||||
|
mouseOut2() {
|
||||||
|
this.myScroll2 = setInterval(() => {
|
||||||
|
this.scrollUp2();
|
||||||
},
|
},
|
||||||
this.speed);
|
this.speed);
|
||||||
},
|
},
|
||||||
|
|
@ -529,6 +603,10 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
@font-face {
|
||||||
|
font-family: 'myfont'; /* 字体名称 */
|
||||||
|
src: url('../../style/youShe.ttf'); /* 字体文件相对路径 */
|
||||||
|
}
|
||||||
.dashboard {
|
.dashboard {
|
||||||
background-image: url("https://cdn-upload.datav.aliyun.com/upload/download/1678758744858-EWBrlDVf.jpg");
|
background-image: url("https://cdn-upload.datav.aliyun.com/upload/download/1678758744858-EWBrlDVf.jpg");
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
@ -550,7 +628,6 @@ export default {
|
||||||
background: rgba(10, 63, 68, 0.5);
|
background: rgba(10, 63, 68, 0.5);
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.boxtitle {
|
.boxtitle {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
|
@ -558,18 +635,15 @@ export default {
|
||||||
height: 36px;
|
height: 36px;
|
||||||
background: linear-gradient(40deg, rgba(11, 101, 140, 0.451), rgba(0, 34, 48, 0.335), rgba(11, 101, 140, 0.451));
|
background: linear-gradient(40deg, rgba(11, 101, 140, 0.451), rgba(0, 34, 48, 0.335), rgba(11, 101, 140, 0.451));
|
||||||
}
|
}
|
||||||
|
|
||||||
.bgimg {
|
.bgimg {
|
||||||
background-image: url('https://cdn-upload.datav.aliyun.com/upload/download/1678762309227-E6RP8z2R.png');
|
background-image: url('https://cdn-upload.datav.aliyun.com/upload/download/1678762309227-E6RP8z2R.png');
|
||||||
background-size: 140% 100%;
|
background-size: 140% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.boxlabel {
|
.boxlabel {
|
||||||
margin-left: 6px;
|
margin-left: 6px;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
margin-top: 6px
|
margin-top: 6px
|
||||||
}
|
}
|
||||||
|
|
||||||
.boxmain {
|
.boxmain {
|
||||||
height: calc(100% - 40px);
|
height: calc(100% - 40px);
|
||||||
}
|
}
|
||||||
|
|
@ -583,11 +657,9 @@ export default {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center
|
justify-content: center
|
||||||
}
|
}
|
||||||
|
|
||||||
.border{
|
.border{
|
||||||
border: 1px dashed #49bcf7;
|
border: 1px dashed #49bcf7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bigdata {
|
.bigdata {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
@ -595,10 +667,6 @@ export default {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
height: 220px;
|
height: 220px;
|
||||||
}
|
}
|
||||||
.wrapper2{
|
|
||||||
height: 180px;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
table{
|
table{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container class="dashboard">
|
<el-container class="dashboard">
|
||||||
<el-header class="header">
|
<el-header class="header">
|
||||||
<div style="font-weight: bold;">7车间生产数据大看板</div>
|
<div style="font-weight: bold; font-family:'myfont';font-size:32px">7车间生产数据大看板</div>
|
||||||
<div style="font-size: 14px;margin-top:18px">2023-11-14 13:50</div>
|
<div style="font-size: 14px;margin-top:18px">2023-11-14 13:50</div>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main>
|
<el-main>
|
||||||
|
|
@ -27,38 +27,36 @@
|
||||||
<el-col>
|
<el-col>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="boxtitle">
|
<div class="boxtitle">
|
||||||
<div class="boxlabel">生产进度</div>
|
<div class="boxlabel">任务进度</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 4px;"></div>
|
<div style="height: 4px;"></div>
|
||||||
<div class="boxmain">
|
<div class="boxmain" id="scrollContainer1">
|
||||||
<div class="boxmain">
|
<div class="wrapper" id="scrollWrapper1" @mouseover="mouseOver1" @mouseout="mouseOut1">
|
||||||
<div class="wrapper" @mouseover="mouseOver" @mouseout="mouseOut">
|
|
||||||
<table class="totall">
|
<table class="totall">
|
||||||
<tr class="title">
|
<tr class="title">
|
||||||
<th v-for="itemx in liData" :key="itemx">{{ itemx }}</th>
|
<th v-for="itemx in liData1" :key="itemx">{{ itemx }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div ref="moocBox" class="wrapper2">
|
<div id="scrollBody1" ref="moocBox1" style="overflow:scroll">
|
||||||
|
<div>
|
||||||
<table :class="{ marquee_top: animate }">
|
<table :class="{ marquee_top: animate }">
|
||||||
<tr v-for="(itemy,index) in listData" class="rollData" ref="con1" :key="itemy">
|
<tr v-for="(itemy,index) in listData1" class="rollData" ref="con1" :key="itemy">
|
||||||
<td>{{ index+1 }}</td>
|
<td>{{ index+1 }}</td>
|
||||||
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
<el-progress v-if="index2==1" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
<el-progress v-if="index2==1" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
:status="getStatus(itemz)"/>
|
:status="getStatus(itemz)"/>
|
||||||
<span v-else-if="index2==3">
|
<el-tag v-else-if="index2==3" :type="getType(itemz)">{{ stateOption[itemz] }}</el-tag>
|
||||||
<el-tag type="warning" effect="light">{{ itemz }}</el-tag>
|
|
||||||
</span>
|
|
||||||
<span v-else>{{ itemz }}</span>
|
<span v-else>{{ itemz }}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-for="(itemy,index) in listData" class="rollData" ref="con2" :key="itemy">
|
</table>
|
||||||
|
<table :class="{ marquee_top: animate }" v-show="scrollVivible1">
|
||||||
|
<tr v-for="(itemy,index) in listData1" class="rollData" ref="con1" :key="itemy">
|
||||||
<td>{{ index+1 }}</td>
|
<td>{{ index+1 }}</td>
|
||||||
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
<el-progress v-if="index2==1" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
<el-progress v-if="index2==1" :text-inside="true" :stroke-width="14" :percentage="itemz"
|
||||||
:status="getStatus(itemz)"/>
|
:status="getStatus(itemz)"/>
|
||||||
<span v-else-if="index2==3">
|
<el-tag v-else-if="index2==3" :type="getType(itemz)">{{ stateOption[itemz] }}</el-tag>
|
||||||
<el-tag type="warning" effect="light">{{ itemz }}</el-tag>
|
|
||||||
</span>
|
|
||||||
<span v-else>{{ itemz }}</span>
|
<span v-else>{{ itemz }}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -77,60 +75,35 @@
|
||||||
<div class="boxlabel">生产线</div>
|
<div class="boxlabel">生产线</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 4px;"></div>
|
<div style="height: 4px;"></div>
|
||||||
<div class="boxmain">
|
<div class="boxmain" id="scrollContainer2">
|
||||||
<table border="0" cellspacing="16">
|
<div class="wrapper" id="scrollWrapper2" @mouseover="mouseOver2" @mouseout="mouseOut2"
|
||||||
<tbody>
|
style="overflow: hidden;">
|
||||||
<tr>
|
<table class="totall">
|
||||||
<th>序号</th>
|
<tr class="title">
|
||||||
<th>产品名称</th>
|
<th v-for="itemx in liData" :key="itemx">{{ itemx }}</th>
|
||||||
<th>型号</th>
|
|
||||||
<th>计划周期</th>
|
|
||||||
<th>完成进度</th>
|
|
||||||
<th>产量</th>
|
|
||||||
<th>状态</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td>1</td>
|
|
||||||
<th>光纤预制棒</th>
|
|
||||||
<td>8098</td>
|
|
||||||
<td>19.80%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="100"
|
|
||||||
status="green" /></td>
|
|
||||||
<td>368</td>
|
|
||||||
<td><el-tag type="" effect="light">已完成</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>2</td>
|
|
||||||
<th>光纤预制棒</th>
|
|
||||||
<td>7506</td>
|
|
||||||
<td>6.70%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="70"
|
|
||||||
status="success" /></td>
|
|
||||||
<td>339</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3</td>
|
|
||||||
<th>光纤预制棒</th>
|
|
||||||
<td>3261</td>
|
|
||||||
<td>32.30%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="70"
|
|
||||||
status="warning" /></td>
|
|
||||||
<td>325</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>4</td>
|
|
||||||
<th>光纤预制棒</th>
|
|
||||||
<td>1993</td>
|
|
||||||
<td> 201%</td>
|
|
||||||
<td><el-progress :text-inside="true" :stroke-width="14" :percentage="30"
|
|
||||||
status="exception" /></td>
|
|
||||||
<td> 199</td>
|
|
||||||
<td><el-tag type="warning" effect="light">生产中</el-tag></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
|
<div id="scrollBody2" ref="moocBox2" style="overflow:scroll">
|
||||||
|
<div>
|
||||||
|
<table :class="{ marquee_top: animate }">
|
||||||
|
<tr v-for="itemy in listData" class="rollData" ref="con1" :key="itemy">
|
||||||
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
|
<el-tag v-if="index2==6" :type="getType(itemz)">{{ stateOption[itemz] }}</el-tag>
|
||||||
|
<span v-else>{{ itemz }}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table :class="{ marquee_top: animate }" v-show="scrollVivible2">
|
||||||
|
<tr v-for="itemy in listData" class="rollData" ref="con1" :key="itemy">
|
||||||
|
<td v-for="(itemz,index2) in itemy" :key="itemz">
|
||||||
|
<el-tag v-if="index2==6" :type="getType(itemz)">{{ stateOption[itemz] }}</el-tag>
|
||||||
|
<span v-else>{{ itemz }}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -140,7 +113,7 @@
|
||||||
<el-col :xs="24" :md="9">
|
<el-col :xs="24" :md="9">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="boxtitle">
|
<div class="boxtitle">
|
||||||
<div style="margin-left: 6px;font-size: 18px; margin-top: 6px">全年生产统计</div>
|
<div style="margin-left: 6px;font-size: 18px; margin-top: 6px">本月生产统计</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="boxmain" id="chart1">
|
<div class="boxmain" id="chart1">
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -289,99 +262,90 @@ export default {
|
||||||
data: [140, 232, 101, 264, 90, 340, 250,140, 232, 101, 264, 90, 340, 250,140, 232, 101, 264, 90, 340, 250,140, 232, 101, 264, 90, 340, 250, 340, 250]
|
data: [140, 232, 101, 264, 90, 340, 250,140, 232, 101, 264, 90, 340, 250,140, 232, 101, 264, 90, 340, 250,140, 232, 101, 264, 90, 340, 250, 340, 250]
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
workerData: [
|
|
||||||
{
|
|
||||||
name: '张三',
|
|
||||||
team: 'Tom',
|
|
||||||
post: '岗位1',
|
|
||||||
state: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '张三',
|
|
||||||
team: 'Tom',
|
|
||||||
post: '岗位1',
|
|
||||||
state: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '张三',
|
|
||||||
team: 'Tom',
|
|
||||||
post: '岗位1',
|
|
||||||
state: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '张三',
|
|
||||||
team: 'Tom',
|
|
||||||
post: '岗位1',
|
|
||||||
state: 1
|
|
||||||
},
|
|
||||||
],
|
|
||||||
taskBoard: {
|
|
||||||
header: ['姓名', '岗位', '班次', '状态'],
|
|
||||||
headerBGC: '#0a3f44',
|
|
||||||
data: [
|
|
||||||
['小王', '成型人', '白班', '到岗'],
|
|
||||||
['小李', '成型人', '白班', '到岗'],
|
|
||||||
['小张', '成型人', '白班', '未到岗'],
|
|
||||||
],
|
|
||||||
index: true,
|
|
||||||
columnWidth: [50],
|
|
||||||
align: ['center'],
|
|
||||||
},
|
|
||||||
tableData: [
|
|
||||||
['产品名称', '型号', '计划周期', '完成进度', '产量', '状态'],
|
|
||||||
['ZB2', 'xxx', '2023-11-01至2023-11-11', '70', '5000', '生产中'],
|
|
||||||
],
|
|
||||||
taskBoard2: {
|
taskBoard2: {
|
||||||
header: ['产品名称', '型号', '计划周期', '完成进度', '产量', '状态', 'xx'],
|
header: ['炉号','产品名称', '型号', '规格', '最近产量','锅数','设备状态'],
|
||||||
headerBGC: '#0a3f44',
|
headerBGC: '#0a3f44',
|
||||||
waitTime: 3000,
|
waitTime: 1000,
|
||||||
rowNum: 8,
|
rowNum: 7,
|
||||||
columnWidth: [2, 1, 1, 1, 1, 1],
|
columnWidth: [2, 1, 1, 1, 1, 1,1],
|
||||||
data: [
|
data: [
|
||||||
['<span style="color:#37a2da;">行1列1</span>', '行1列2', '行1列3', '<el-progress :text-inside="true" :stroke-width="14" :percentage="100" status="green"/>', '行1列3', '行1列3', 'xx'],
|
['1','光纤预制棒', 'JZ2','31/470', '120', '33', '<span style="text-align:center;display:inline-block;padding:0 10px;height:30px;line-height:30px;border:1px solid rgb(250,236,216);background:rgba(253, 246, 236);color:rgb(230, 162, 60);border-radius:5px;margin-top:10px">进行中</span>'],
|
||||||
['行2列1', '<span style="color:#32c5e9;">行2列2</span>', '行2列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['2','光纤预制棒', 'JZ2','32/470', '125', '26', '<span style="text-align:center;display:inline-block;padding:0 10px;height:30px;line-height:30px;border:1px solid rgb(250,236,216);background:rgba(253, 246, 236);color:rgb(230, 162, 60);border-radius:5px;margin-top:10px">进行中</span>'],
|
||||||
['行3列1', '行3列2', '<span style="color:#67e0e3;">行3列3</span>', '行1列3', '行1列3', '行1列3', 'xx'],
|
['3','光纤预制棒', 'JZ2','33/470', '100', '30', '<span style="text-align:center;display:inline-block;padding:0 10px;height:30px;line-height:30px;border:1px solid rgb(250,236,216);background:rgba(253, 246, 236);color:rgb(230, 162, 60);border-radius:5px;margin-top:10px">进行中</span>'],
|
||||||
['行4列1', '<span style="color:#9fe6b8;">行4列2</span>', '行4列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['4','光纤预制棒', 'JZ2','31/470', '105', '28', '<span style="text-align:center;display:inline-block;padding:0 10px;height:30px;line-height:30px;border:1px solid rgb(250,236,216);background:rgba(253, 246, 236);color:rgb(230, 162, 60);border-radius:5px;margin-top:10px">进行中</span>'],
|
||||||
['<span style="color:#ffdb5c;">行5列1</span>', '行5列2', '行5列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['5','光纤预制棒', 'JZ2','37/470', '120', '18', '<span style="text-align:center;display:inline-block;padding:0 10px;height:30px;line-height:30px;border:1px solid rgb(250,236,216);background:rgba(253, 246, 236);color:rgb(230, 162, 60);border-radius:5px;margin-top:10px">进行中</span>'],
|
||||||
['行6列1', '<span style="color:#ff9f7f;">行6列2</span>', '行6列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['6','光纤预制棒', 'JZ2','33/470', '120', '24', '<span style="text-align:center;display:inline-block;padding:0 10px;height:30px;line-height:30px;border:1px solid rgb(250,236,216);background:rgba(253, 246, 236);color:rgb(230, 162, 60);border-radius:5px;margin-top:10px">进行中</span>'],
|
||||||
['行7列1', '行7列2', '<span style="color:#fb7293;">行7列3</span>', '行1列3', '行1列3', '行1列3', 'xx'],
|
['7','光纤预制棒', 'JZ2','38/470', '120', '29', '<span style="text-align:center;display:inline-block;padding:0 10px;height:30px;line-height:30px;border:1px solid rgb(250,236,216);background:rgba(253, 246, 236);color:rgb(230, 162, 60);border-radius:5px;margin-top:10px">进行中</span>'],
|
||||||
['行8列1', '<span style="color:#e062ae;">行8列2</span>', '行8列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
['8','光纤预制棒', 'JZ2','34/470', '120', '25', '<span style="text-align:center;display:inline-block;padding:0 10px;height:30px;line-height:30px;border:1px solid rgb(250,236,216);background:rgba(253, 246, 236);color:rgb(230, 162, 60);border-radius:5px;margin-top:10px">进行中</span>'],
|
||||||
['<span style="color:#e690d1;">行9列1</span>', '行9列2', '行9列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
['行10列1', '<span style="color:#e7bcf3;">行10列2</span>', '行10列3', '行1列3', '行1列3', '行1列3', 'xx'],
|
|
||||||
],
|
],
|
||||||
index: true,
|
// index: true,
|
||||||
columnWidth: [50],
|
columnWidth: [50],
|
||||||
align: ['center'],
|
align: ['center'],
|
||||||
chartInterval1: null,
|
|
||||||
chartInterval2: null,
|
|
||||||
chartInterval3: null
|
|
||||||
},
|
},
|
||||||
liData: ['序号', '型号', '完成进度', '产量', '状态'],
|
liData1: ['序号', '型号', '完成进度', '产量', '状态'],
|
||||||
|
listData1: [
|
||||||
|
["JZ2", 100, "368",40],
|
||||||
|
["JZ2", 90, "368",40],
|
||||||
|
["JZ2", 80, "368",30],
|
||||||
|
["JZ2", 70, "368",30],
|
||||||
|
["JZ2", 60, "368",40],
|
||||||
|
["JZ2", 50, "368",30],
|
||||||
|
["JZ2", 40, "368",30],
|
||||||
|
["JZ2", 30, "368",40],
|
||||||
|
],
|
||||||
|
liData: ['炉号','产品名称', '型号', '规格', '最近产量','锅数','设备状态'],
|
||||||
listData: [
|
listData: [
|
||||||
["光纤预制管A", 100,"368",'已完成'],
|
["1","光纤预制管A", "ZJ2", '30/268', 100, 30, 40],
|
||||||
["光纤预制管B", 90,"368",'已完成'],
|
["2","光纤预制管B", "ZJ2", '40/368', 90, 30, 30],
|
||||||
["光纤预制管C", 80,"368",'已完成'],
|
["3","光纤预制管C", "ZJ2", '36/470', 80, 30, 30],
|
||||||
["光纤预制管D", 70,"368",'已完成'],
|
["4","光纤预制管D", "ZJ2", '35/300', 70, 30, 40],
|
||||||
["光纤预制管E", 60,"368",'已完成'],
|
["5","光纤预制管E", "ZJ2", '30/268', 60, 30, 30],
|
||||||
["光纤预制管F", 50,"368",'已完成'],
|
["6","光纤预制管F", "ZJ2", '30/268', 50, 30, 40],
|
||||||
["光纤预制管G", 40,"368",'已完成'],
|
["7","光纤预制管G", "ZJ2", '30/268', 40, 30, 30],
|
||||||
["光纤预制管H", 30,"368",'已完成'],
|
["8","光纤预制管H", "ZJ2", '30/268', 30, 30, 30],
|
||||||
],
|
],
|
||||||
speed: 2000,
|
speed: 2000,
|
||||||
myScroll: null,
|
myScroll1: null,
|
||||||
|
myScroll2: null,
|
||||||
iliHeight: 30,
|
iliHeight: 30,
|
||||||
time: null,
|
time: null,
|
||||||
delay: 20,
|
delay: 20,
|
||||||
|
scrollVivible1:true,
|
||||||
|
scrollVivible2:true,
|
||||||
|
stateOption:{
|
||||||
|
30:'生产中',
|
||||||
|
40:'已完成'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.myScroll = setInterval(() => {
|
let Container1 = document.getElementById('scrollContainer1').clientHeight;
|
||||||
this.scrollUp();
|
let tableHeight1 = Container1-40;
|
||||||
|
document.getElementById('scrollWrapper1').style.height = Container1+'px';
|
||||||
|
document.getElementById('scrollBody1').style.height = tableHeight1+'px';
|
||||||
|
let scrollHeight1 = this.$refs.moocBox1.scrollHeight/2;
|
||||||
|
if(tableHeight1>scrollHeight1){
|
||||||
|
this.scrollVivible1 = false;
|
||||||
|
}else{
|
||||||
|
this.scrollVivible1 = true;
|
||||||
|
this.myScroll1 = setInterval(() => {
|
||||||
|
this.scrollUp1();
|
||||||
}, this.speed);
|
}, this.speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
let Container2 = document.getElementById('scrollContainer2').clientHeight;
|
||||||
|
let tableHeight2 = Container2-40;
|
||||||
|
document.getElementById('scrollWrapper2').style.height = Container2+'px';
|
||||||
|
document.getElementById('scrollBody2').style.height = tableHeight2+'px';
|
||||||
|
let scrollHeight2 = this.$refs.moocBox2.scrollHeight/2;
|
||||||
|
if(tableHeight2>scrollHeight2){
|
||||||
|
this.scrollVivible2 = false;
|
||||||
|
}else{
|
||||||
|
this.scrollVivible2 = true;
|
||||||
|
this.myScroll2 = setInterval(() => {
|
||||||
|
this.scrollUp2();
|
||||||
|
}, this.speed);
|
||||||
|
}
|
||||||
let chart1Option = deepCopy(this.basicOption)
|
let chart1Option = deepCopy(this.basicOption)
|
||||||
this.setChart("chart1", chart1Option);
|
this.setChart("chart1", chart1Option);
|
||||||
let chart2Option = deepCopy(this.basicOption)
|
let chart2Option = deepCopy(this.basicOption)
|
||||||
|
|
@ -450,6 +414,13 @@ export default {
|
||||||
this.setChart("chart3", chart3Option)
|
this.setChart("chart3", chart3Option)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getType(type){
|
||||||
|
if(type==30){
|
||||||
|
return "primary"
|
||||||
|
}else if(type==40){
|
||||||
|
return "success"
|
||||||
|
}
|
||||||
|
},
|
||||||
getStatus(status){
|
getStatus(status){
|
||||||
if(status==100){
|
if(status==100){
|
||||||
return "success"
|
return "success"
|
||||||
|
|
@ -476,40 +447,99 @@ export default {
|
||||||
} catch (error) { }
|
} catch (error) { }
|
||||||
}, 500)
|
}, 500)
|
||||||
},
|
},
|
||||||
|
//任务进度
|
||||||
|
getMtask(){
|
||||||
|
let that = this;
|
||||||
|
let obj ={};
|
||||||
|
that.$API.pm.mtask.list.req(obj).then((res) => {
|
||||||
|
console.log('任务进度:',res);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//生产线
|
||||||
|
getProductLine(){
|
||||||
|
let that = this;
|
||||||
|
let obj ={
|
||||||
|
query: {start_date:this.start_date,end_date:this.end_date,dept_name: "7车间"},
|
||||||
|
};
|
||||||
|
let obj1 ={
|
||||||
|
query: {start_date:this.start_date,end_date:this.end_date},
|
||||||
|
};
|
||||||
|
//7车间生产线
|
||||||
|
that.$API.bi.dataset.exec.req('linedept7').then((res1) => {
|
||||||
|
console.log('7车间生产线:',res1);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
//7车间生产按炉统计
|
||||||
|
that.$API.bi.dataset.exec.req('stoveStatics', obj1).then((res2) => {
|
||||||
|
console.log('7车间生产按炉统计:',res2);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
//生产车间按日统计 本月合格率统计&昨日合格统计
|
||||||
|
that.$API.bi.dataset.exec.req('lineDay', obj).then((res3) => {
|
||||||
|
console.log('生产车间按日统计:',res3);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
},
|
||||||
//滚动
|
//滚动
|
||||||
scrollUp() {
|
scrollUp1() {
|
||||||
// console.log(this.$refs.moocBox.scrollTop)
|
let scrollTop = this.$refs.moocBox1.scrollTop;
|
||||||
// console.log(this.$refs.moocBox.scrollHeight)
|
let scrollHeight = this.$refs.moocBox1.scrollHeight;
|
||||||
if (this.$refs.moocBox.scrollTop >= this.$refs.moocBox.scrollHeight / 2) {
|
if (scrollTop >=scrollHeight/2) {
|
||||||
//判断条件是否达到临界
|
//判断条件是否达到临界
|
||||||
this.$refs.moocBox.scrollTop = 0;
|
this.$refs.moocBox1.scrollTop = 0;
|
||||||
} else {
|
} else {
|
||||||
this.$refs.moocBox.scrollTop=this.$refs.moocBox.scrollTop+40;
|
this.$refs.moocBox1.scrollTop=scrollTop+40;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 鼠标滑过暂停滚动
|
||||||
|
mouseOver1() {
|
||||||
|
clearInterval(this.myScroll1);
|
||||||
|
}, //鼠标移开重新滚动
|
||||||
|
mouseOut1() {
|
||||||
|
this.myScroll1 = setInterval(() => {
|
||||||
|
this.scrollUp1();
|
||||||
|
},
|
||||||
|
this.speed);
|
||||||
|
},
|
||||||
|
//滚动
|
||||||
|
scrollUp2() {
|
||||||
|
if (this.$refs.moocBox2.scrollTop >= this.$refs.moocBox2.scrollHeight / 2) {
|
||||||
|
//判断条件是否达到临界
|
||||||
|
this.$refs.moocBox2.scrollTop = 0;
|
||||||
|
} else {
|
||||||
|
this.$refs.moocBox2.scrollTop=this.$refs.moocBox2.scrollTop+40;
|
||||||
}
|
}
|
||||||
}, // 鼠标滑过暂停滚动
|
}, // 鼠标滑过暂停滚动
|
||||||
mouseOver() {
|
mouseOver2() {
|
||||||
clearInterval(this.myScroll);
|
clearInterval(this.myScroll2);
|
||||||
}, //鼠标移开重新滚动
|
}, //鼠标移开重新滚动
|
||||||
mouseOut() {
|
mouseOut2() {
|
||||||
this.myScroll = setInterval(() => {
|
this.myScroll2 = setInterval(() => {
|
||||||
this.scrollUp();
|
this.scrollUp2();
|
||||||
},
|
},
|
||||||
this.speed);
|
this.speed);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
beforeDestoryed() {
|
beforeDestoryed() {
|
||||||
clearInterval(myScroll);
|
clearInterval(myScroll1);
|
||||||
this.myScroll = null;
|
clearInterval(myScroll2);
|
||||||
|
this.myScroll1 = null;
|
||||||
|
this.myScroll2 = null;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.dashboard {
|
@font-face {
|
||||||
|
font-family: 'myfont'; /* 字体名称 */
|
||||||
|
src: url('../../style/youShe.ttf'); /* 字体文件相对路径 */
|
||||||
|
}
|
||||||
|
.dashboard {
|
||||||
background-image: url("https://cdn-upload.datav.aliyun.com/upload/download/1678758744858-EWBrlDVf.jpg");
|
background-image: url("https://cdn-upload.datav.aliyun.com/upload/download/1678758744858-EWBrlDVf.jpg");
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-family: "Microsoft Yahei" !important;
|
font-family: "Microsoft Yahei" !important;
|
||||||
}
|
}
|
||||||
.header {
|
.header {
|
||||||
background: url("/public/img/photon_header.png");
|
background: url("/public/img/photon_header.png");
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
|
|
@ -520,95 +550,95 @@ export default {
|
||||||
font-family: 'Microsoft Yahei';
|
font-family: 'Microsoft Yahei';
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 12px 0px;
|
padding: 12px 0px;
|
||||||
}.box {
|
}.box {
|
||||||
background: rgba(10, 63, 68, 0.5);
|
background: rgba(10, 63, 68, 0.5);
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
.boxtitle {
|
.boxtitle {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
background: linear-gradient(40deg, rgba(11, 101, 140, 0.451), rgba(0, 34, 48, 0.335), rgba(11, 101, 140, 0.451));
|
background: linear-gradient(40deg, rgba(11, 101, 140, 0.451), rgba(0, 34, 48, 0.335), rgba(11, 101, 140, 0.451));
|
||||||
}
|
}
|
||||||
.bgimg {
|
.bgimg {
|
||||||
background-image: url('https://cdn-upload.datav.aliyun.com/upload/download/1678762309227-E6RP8z2R.png');
|
background-image: url('https://cdn-upload.datav.aliyun.com/upload/download/1678762309227-E6RP8z2R.png');
|
||||||
background-size: 140% 100%;
|
background-size: 140% 100%;
|
||||||
}
|
}
|
||||||
.boxmain {
|
.boxmain {
|
||||||
height: calc(100% - 40px);
|
height: calc(100% - 40px);
|
||||||
}
|
}
|
||||||
@media screen and (max-width: 800px) {
|
@media screen and (max-width: 800px) {
|
||||||
.boxmain {
|
.boxmain {
|
||||||
height: 200px;
|
height: 200px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.flex_center {
|
.flex_center {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center
|
justify-content: center
|
||||||
}
|
}
|
||||||
|
|
||||||
.border {
|
.border {
|
||||||
border: 1px dashed #49bcf7;
|
border: 1px dashed #49bcf7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bigdata {
|
.bigdata {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
.boxlabel {
|
.boxlabel {
|
||||||
margin-left: 6px;
|
margin-left: 6px;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
margin-top: 6px
|
margin-top: 6px
|
||||||
}
|
}
|
||||||
.wrapper{
|
.wrapper{
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
height: 220px;
|
height: 220px;
|
||||||
}
|
}
|
||||||
.wrapper2{
|
.wrapper2{
|
||||||
height: 180px;
|
height: 180px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
table {
|
table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
border-spacing: 0;
|
border-spacing: 0;
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.title{
|
.title{
|
||||||
height: 40px;
|
height: 40px;
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
table th {
|
table th {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
background: rgba(0, 0, 0, .1);
|
background: rgba(0, 0, 0, .1);
|
||||||
}
|
}
|
||||||
table td {
|
table td {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: rgba(255, 255, 255, .8);
|
color: rgba(255, 255, 255, .8);
|
||||||
}
|
}
|
||||||
table th,table td{
|
table th,table td{
|
||||||
padding: .1rem 0;
|
padding: .1rem 0;
|
||||||
border-bottom: none !important;
|
border-bottom: none !important;
|
||||||
background:none !important;
|
background:none !important;
|
||||||
}
|
}
|
||||||
.marquee_top{
|
.marquee_top{
|
||||||
transition: all 0.5s ease-in-out;
|
transition: all 0.5s ease-in-out;
|
||||||
margin-top: -26px;
|
margin-top: -26px;
|
||||||
}
|
}
|
||||||
.totall{
|
.totall{
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: rgb(10, 63, 68);
|
background-color: rgb(10, 63, 68);
|
||||||
}
|
}
|
||||||
.rollData{
|
.rollData{
|
||||||
background-color: rgb(10, 39, 50);
|
background-color: rgb(10, 39, 50);
|
||||||
}
|
}
|
||||||
.rollData:nth-of-type(2n+1){
|
.rollData:nth-of-type(2n+1){
|
||||||
background-color: rgb(0, 59, 81);
|
background-color: rgb(0, 59, 81);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -2,17 +2,17 @@
|
||||||
<el-container class="container">
|
<el-container class="container">
|
||||||
<el-header class="pageHeader">
|
<el-header class="pageHeader">
|
||||||
<span class="top-line top-line-left"></span>
|
<span class="top-line top-line-left"></span>
|
||||||
光子科技
|
中建材光子科技有限公司
|
||||||
<span class="top-line top-line-right"></span>
|
<span class="top-line top-line-right"></span>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main style="padding:0" id="mainBlock">
|
<el-main style="padding:0;overflow: hidden;" id="mainBlock">
|
||||||
<el-row style="height:100%">
|
<el-row style="height:100%">
|
||||||
<div style="position: absolute;left: 0;width:20%;z-index:10">
|
<div style="position: absolute;left: 0;width:20%;z-index:10">
|
||||||
<div style="display:flex;flex-direction: column;height:100%;padding:0 10px">
|
<div style="display:flex;flex-direction: column;height:100%;padding:0 10px">
|
||||||
<div class="flexItem" style="flex:1">
|
<div class="flexItem" style="flex:1">
|
||||||
<div class="blockTitle">
|
<div class="blockTitle">
|
||||||
<div class="blockTitleIcon"></div>
|
<div class="blockTitleIcon"></div>
|
||||||
<div>本周交付率</div>
|
<div>本周交付数</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="line1" style="width:100%;height:92%;background:rgba(9,31,43,.5);border-radius: 20px;margin-top: 5px;"></div>
|
<div id="line1" style="width:100%;height:92%;background:rgba(9,31,43,.5);border-radius: 20px;margin-top: 5px;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -93,7 +93,7 @@
|
||||||
<div>库存情况</div>
|
<div>库存情况</div>
|
||||||
</div>
|
</div>
|
||||||
<dv-scroll-board id="scrollTable" :config="taskBoard"
|
<dv-scroll-board id="scrollTable" :config="taskBoard"
|
||||||
:style="{ 'width': '100%', 'height': blockHeight,'margin-top':'5px'}" />
|
:style="{ 'width': '100%', 'height': blockTableHeight,'margin-top':'5px'}" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -150,7 +150,7 @@ export default {
|
||||||
return {
|
return {
|
||||||
blockHeight: null,
|
blockHeight: null,
|
||||||
taskBoard: {
|
taskBoard: {
|
||||||
header: ['物料编号', '存放车间', '库存数量'],
|
header: ['名称', '规格', '数量'],
|
||||||
headerBGC: 'rgb(10,63,68)',
|
headerBGC: 'rgb(10,63,68)',
|
||||||
// waitTime: 1000,
|
// waitTime: 1000,
|
||||||
columnWidth: [1, 1, 1],
|
columnWidth: [1, 1, 1],
|
||||||
|
|
@ -195,13 +195,18 @@ export default {
|
||||||
currentWeek:'',
|
currentWeek:'',
|
||||||
currentDay:'',
|
currentDay:'',
|
||||||
timerTime:null,
|
timerTime:null,
|
||||||
|
start_date:'',
|
||||||
|
end_date:'',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
let that = this;
|
let that = this;
|
||||||
let height = document.getElementById('mainBlock').clientHeight;
|
let height = document.getElementById('mainBlock').clientHeight;
|
||||||
let height0 = height / 3 - 50;
|
let height0 = height / 3 - 55;
|
||||||
|
let height1 = height0- 20;
|
||||||
this.blockHeight = height0 + 'px';
|
this.blockHeight = height0 + 'px';
|
||||||
|
this.blockTableHeight = height1 + 'px';
|
||||||
|
document.getElementById('scrollTable').style.height = height1 + 'px'
|
||||||
this.showTime();
|
this.showTime();
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
that.initChart();
|
that.initChart();
|
||||||
|
|
@ -211,8 +216,32 @@ export default {
|
||||||
that.showTime();
|
that.showTime();
|
||||||
}, 1000);
|
}, 1000);
|
||||||
})
|
})
|
||||||
|
//一天的毫秒数
|
||||||
|
const ondDayTime = 86400000
|
||||||
|
let cDate = new Date();
|
||||||
|
let week = cDate.getDay();//当前时间的week数
|
||||||
|
// let time = ' 星期' + '日一二三四五六'.charAt(week);//当前时间周几
|
||||||
|
let weekFirst = week-1;//第一天对应的天数
|
||||||
|
let weekLast = 7-week;//最后一天对应的天数
|
||||||
|
let first = new Date(new Date(cDate.getTime() - (weekFirst * ondDayTime)));//本周周一
|
||||||
|
let last = new Date(new Date(cDate.getTime() + (weekLast * ondDayTime)));//本周周日
|
||||||
|
this.start_date = first.getFullYear()+'-'+(first.getMonth()+1)+'-'+first.getDate();
|
||||||
|
this.end_date = last.getFullYear()+'-'+(last.getMonth()+1)+'-'+last.getDate();
|
||||||
|
console.log(this.start_date)
|
||||||
|
console.log(this.end_date);
|
||||||
|
this.getsaleOut();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getsaleOut(){
|
||||||
|
let that = this;
|
||||||
|
let obj ={
|
||||||
|
query: {start_date:this.start_date,end_date:this.end_date,dept_name: "6车间"},
|
||||||
|
};
|
||||||
|
that.$API.bi.dataset.exec.req('3448456854219546624', obj).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
debugger;
|
||||||
|
});
|
||||||
|
},
|
||||||
showTime() {
|
showTime() {
|
||||||
this.currentTime = this.$TOOL.dateFormat(new Date(), 'hh:mm:ss');
|
this.currentTime = this.$TOOL.dateFormat(new Date(), 'hh:mm:ss');
|
||||||
this.currentWeek = this.$TOOL.dateFormat(new Date(), 'week');
|
this.currentWeek = this.$TOOL.dateFormat(new Date(), 'week');
|
||||||
|
|
@ -254,24 +283,24 @@ export default {
|
||||||
const scene = new BABYLON.Scene(engine);
|
const scene = new BABYLON.Scene(engine);
|
||||||
scene.clearColor = BABYLON.Color3.Black(); //BABYLON.Color3(1, 0, 1);
|
scene.clearColor = BABYLON.Color3.Black(); //BABYLON.Color3(1, 0, 1);
|
||||||
// 创建材质
|
// 创建材质
|
||||||
var material = new BABYLON.PBRMaterial("groundMaterial", scene);
|
// var material = new BABYLON.PBRMaterial("groundMaterial", scene);
|
||||||
material.metallic = 1; // 材质金属度
|
// material.metallic = 1; // 材质金属度
|
||||||
const ground = BABYLON.MeshBuilder.CreateGround("ground", { width: 10, height: 10 });
|
// const ground = BABYLON.MeshBuilder.CreateGround("ground", { width: 10, height: 10 });
|
||||||
const groundMaterial = new BABYLON_GRID.GridMaterial("groundMaterial", scene);
|
// const groundMaterial = new BABYLON_GRID.GridMaterial("groundMaterial", scene);
|
||||||
groundMaterial.majorUnitFrequency = 5;
|
// groundMaterial.majorUnitFrequency = 60;
|
||||||
groundMaterial.minorUnitVisibility = 0.1;
|
// groundMaterial.minorUnitVisibility = 0.1;
|
||||||
groundMaterial.gridRatio = 0.1;
|
// groundMaterial.gridRatio = 0.1;
|
||||||
ground.material = groundMaterial;
|
// ground.material = groundMaterial;
|
||||||
ground.position.y = -0.1
|
// ground.position.y = -0.01
|
||||||
|
|
||||||
// 加载背景图片
|
// 加载背景图片
|
||||||
const backgroundImage = new BABYLON.Layer('', 'img/photon_bg.png', scene, true);
|
const backgroundImage = new BABYLON.Layer('', 'img/photon_bg.png', scene, true);
|
||||||
const camera = new BABYLON.ArcRotateCamera("camera", that.initialAlpha, that.initialBeta, that.initialRadius, new BABYLON.Vector3(0, 0.5, 0.3));
|
const camera = new BABYLON.ArcRotateCamera("camera", that.initialAlpha, that.initialBeta, that.initialRadius, new BABYLON.Vector3(0, 0.1, 0.3));
|
||||||
that.initialTarget = camera.getTarget();
|
that.initialTarget = camera.getTarget();
|
||||||
// camera.lowerBetaLimit = Math.PI / 2.6;
|
camera.lowerBetaLimit = Math.PI / 2.6;
|
||||||
camera.upperBetaLimit = Math.PI / 2.3; //无法移动到地面以下
|
camera.upperBetaLimit = Math.PI / 2.6; //无法移动到地面以下
|
||||||
camera.attachControl(canvas, true);
|
camera.attachControl(canvas, true);
|
||||||
camera.maxZ = 1000; // 调整适当的值
|
camera.maxZ = 700; // 调整适当的值
|
||||||
camera.wheelDeltaPercentage = 0.02;
|
camera.wheelDeltaPercentage = 0.02;
|
||||||
// 相机限制
|
// 相机限制
|
||||||
camera.lowerRadiusLimit = 2;
|
camera.lowerRadiusLimit = 2;
|
||||||
|
|
@ -297,6 +326,8 @@ export default {
|
||||||
button_main.color = "white";
|
button_main.color = "white";
|
||||||
button_main.cornerRadius = 20;
|
button_main.cornerRadius = 20;
|
||||||
button_main.background = "green";
|
button_main.background = "green";
|
||||||
|
button_main.top='80px';
|
||||||
|
button_main.left='0px';
|
||||||
control_main.addControl(button_main)
|
control_main.addControl(button_main)
|
||||||
button_main.onPointerClickObservable.add(() => {
|
button_main.onPointerClickObservable.add(() => {
|
||||||
if (camera.alpha != that.initialAlpha || camera.beta != that.initialBeta || camera.radius != that.initialRadius) {
|
if (camera.alpha != that.initialAlpha || camera.beta != that.initialBeta || camera.radius != that.initialRadius) {
|
||||||
|
|
@ -325,7 +356,8 @@ export default {
|
||||||
mesh_name.fontSize = '14px';
|
mesh_name.fontSize = '14px';
|
||||||
mesh_rect.addControl(mesh_name);
|
mesh_rect.addControl(mesh_name);
|
||||||
// var remoteGlbUrl = process.env.VUE_APP_BASEURL + "/media/model/photon3.glb";
|
// var remoteGlbUrl = process.env.VUE_APP_BASEURL + "/media/model/photon3.glb";
|
||||||
BABYLON.SceneLoader.Append('glb/', "photon3.glb", scene, function (scene) {
|
BABYLON.SceneLoader.Append('glb/', "photon4.glb", scene, function (scene) {
|
||||||
|
console.log(scene)
|
||||||
//关闭灯光
|
//关闭灯光
|
||||||
// scene.lights[1].setEnabled(false);
|
// scene.lights[1].setEnabled(false);
|
||||||
engine.hideLoadingUI()
|
engine.hideLoadingUI()
|
||||||
|
|
@ -383,6 +415,7 @@ export default {
|
||||||
checkbox.isChecked = false;
|
checkbox.isChecked = false;
|
||||||
checkbox.marginLeft = '16px'
|
checkbox.marginLeft = '16px'
|
||||||
checkbox.color = "green";
|
checkbox.color = "green";
|
||||||
|
checkbox.top='80px';
|
||||||
checkbox.onIsCheckedChangedObservable.add(function (value) {
|
checkbox.onIsCheckedChangedObservable.add(function (value) {
|
||||||
if (value) {
|
if (value) {
|
||||||
camera.useAutoRotationBehavior = true;
|
camera.useAutoRotationBehavior = true;
|
||||||
|
|
@ -396,6 +429,7 @@ export default {
|
||||||
header.width = "80px";
|
header.width = "80px";
|
||||||
header.textHorizontalAlignment = BABYLON_GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
|
header.textHorizontalAlignment = BABYLON_GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
|
||||||
header.color = "white";
|
header.color = "white";
|
||||||
|
header.top='80px';
|
||||||
control_main.addControl(header);
|
control_main.addControl(header);
|
||||||
// 添加抓取事件
|
// 添加抓取事件
|
||||||
const hl1 = new BABYLON.HighlightLayer("hl1", scene);
|
const hl1 = new BABYLON.HighlightLayer("hl1", scene);
|
||||||
|
|
@ -439,7 +473,7 @@ export default {
|
||||||
// mesh_rect.isVisible = true;
|
// mesh_rect.isVisible = true;
|
||||||
// that.infoVisibel = true;
|
// that.infoVisibel = true;
|
||||||
// }
|
// }
|
||||||
if (mesh.name == '单身宿舍.005_primitive3') {
|
if (mesh.name == '单身宿舍.004_primitive3') {
|
||||||
//单身宿舍.003_primitive3
|
//单身宿舍.003_primitive3
|
||||||
// 在选中的 mesh 上添加高亮效果
|
// 在选中的 mesh 上添加高亮效果
|
||||||
highlightLayer.addMesh(mesh, new BABYLON.Color3(0.1, 0.9, 0.9));
|
highlightLayer.addMesh(mesh, new BABYLON.Color3(0.1, 0.9, 0.9));
|
||||||
|
|
@ -622,7 +656,7 @@ export default {
|
||||||
],
|
],
|
||||||
yAxis: [
|
yAxis: [
|
||||||
{
|
{
|
||||||
name: "合格率(%)",
|
name: "交付数",
|
||||||
type: 'value',
|
type: 'value',
|
||||||
nameTextStyle: {
|
nameTextStyle: {
|
||||||
color: '#ffffff'
|
color: '#ffffff'
|
||||||
|
|
@ -1173,7 +1207,7 @@ export default {
|
||||||
pieDom.style.height = this.blockHeight;
|
pieDom.style.height = this.blockHeight;
|
||||||
let pieChart = echarts.init(pieDom);
|
let pieChart = echarts.init(pieDom);
|
||||||
let pieoption = {
|
let pieoption = {
|
||||||
color: ['rgb(155,248,249)', 'rgb(110,181,249)','rgb(3,195,198)','rgb(205,248,248)', 'rgb(248,189,118)'],
|
color: ['rgb(3,195,198)','rgb(155,248,249)', 'rgb(110,181,249)','rgb(205,248,248)', 'rgb(248,189,118)'],
|
||||||
legend: {
|
legend: {
|
||||||
bottom: 10,
|
bottom: 10,
|
||||||
// top: 'bottom',
|
// top: 'bottom',
|
||||||
|
|
@ -1200,12 +1234,60 @@ export default {
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
borderRadius: 2
|
borderRadius: 2
|
||||||
},
|
},
|
||||||
|
// label: {
|
||||||
|
// fontSize: 12,
|
||||||
|
// alignTo: 'edge',
|
||||||
|
// formatter: '{b}\n',
|
||||||
|
// edgeDistance: 10,
|
||||||
|
// lineHeight: 20,
|
||||||
|
// rich: {
|
||||||
|
// title: {
|
||||||
|
// fontSize: 12,
|
||||||
|
// color: '#999',
|
||||||
|
// lineHeight: 50,
|
||||||
|
// },
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// labelLayout: function (params) {
|
||||||
|
// var isLeft = params.labelRect.x < myChart.getWidth() / 2;
|
||||||
|
// var points = params.labelLinePoints;
|
||||||
|
// points[2][0] = isLeft? params.labelRect.x: params.labelRect.x + params.labelRect.width;
|
||||||
|
// return {
|
||||||
|
// labelLinePoints: points
|
||||||
|
// };
|
||||||
|
// },
|
||||||
|
|
||||||
|
label: {
|
||||||
|
minMargin: 10,
|
||||||
|
edgeDistance: 10,
|
||||||
|
fontSize: '12px'
|
||||||
|
},
|
||||||
|
labelLine: {
|
||||||
|
lineStyle: {
|
||||||
|
// type: [6]
|
||||||
|
},
|
||||||
|
length: 2,
|
||||||
|
length2: 5
|
||||||
|
},
|
||||||
|
labelLayout: function (params) {
|
||||||
|
var isLeft = params.labelRect.x < myChart.getWidth() / 2
|
||||||
|
var points = params.labelLinePoints;
|
||||||
|
points[2][0] = isLeft ? params.labelRect.x : params.labelRect.x + params.labelRect.width
|
||||||
|
return {
|
||||||
|
labelLinePoints: points,
|
||||||
|
dy: -10,
|
||||||
|
dx: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
data: [
|
data: [
|
||||||
|
{ value: 250, name: '合格' },
|
||||||
{ value: 8, name: '椭圆弯曲' },
|
{ value: 8, name: '椭圆弯曲' },
|
||||||
{ value: 0, name: '大小头' },
|
{ value: 0, name: '大小头' },
|
||||||
{ value: 2, name: '偏壁' },
|
{ value: 2, name: '偏壁' },
|
||||||
{ value: 6, name: '结石气线' },
|
{ value: 6, name: '结石气线' },
|
||||||
{ value: 150, name: '合格' },
|
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -1220,15 +1302,25 @@ export default {
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style scoped>
|
||||||
|
/* @font-face {
|
||||||
|
font-family: 'youShe';
|
||||||
|
src: url('./youShe.ttf') format('truetype');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
} */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'myfont'; /* 字体名称 */
|
||||||
|
src: url('../../style/youShe.ttf'); /* 字体文件相对路径 */
|
||||||
|
}
|
||||||
.container {
|
.container {
|
||||||
background: url('/public/img/photon_bg.png') no-repeat;
|
background: url('/public/img/photon_bg.png') no-repeat;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pageHeader {
|
.pageHeader {
|
||||||
height: 70px;
|
/* height: 70px; */
|
||||||
font-size: 28px;
|
font-size: 32px;
|
||||||
background: none;
|
background: none;
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
@ -1236,6 +1328,7 @@ export default {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
|
font-family: "myfont";
|
||||||
background: url('/public/img/photon_header.png') no-repeat;
|
background: url('/public/img/photon_header.png') no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
<p class="countrate">同比前天<span class="redColor"> 8.63%▲</span></p>
|
<p class="countrate">同比前天<span class="redColor"> 8.63%▲</span></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="countItem">
|
<div class="countItem">
|
||||||
<div class="countname">AVG交付数</div>
|
<div class="countname">预制棒管交付数</div>
|
||||||
<p class="countnum">6700</p>
|
<p class="countnum">6700</p>
|
||||||
<p class="countrate">同比前天<span class="redColor"> 8.63%▲</span></p>
|
<p class="countrate">同比前天<span class="redColor"> 8.63%▲</span></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -52,11 +52,11 @@
|
||||||
<div class="countname">本月累积交付数</div>
|
<div class="countname">本月累积交付数</div>
|
||||||
<div style="display: flex;justify-content: space-around;padding-top: 25px;font-size: 20px;">
|
<div style="display: flex;justify-content: space-around;padding-top: 25px;font-size: 20px;">
|
||||||
<div>
|
<div>
|
||||||
<div>预制棒</div>
|
<div>预制棒管</div>
|
||||||
<p class="countnum">6700</p>
|
<p class="countnum">6700</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>预制棒</div>
|
<div>AVG</div>
|
||||||
<p class="countnum">6700</p>
|
<p class="countnum">6700</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -114,10 +114,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div style="padding: 20px 24px 24px 24px;">
|
<div style="padding: 20px 24px 24px 24px;">
|
||||||
<el-table :data="tableData" style="width: 100%;height: 285px;">
|
<el-table :data="tableData" style="width: 100%;height: 285px;">
|
||||||
<el-table-column prop="index" label="序号"/>
|
<el-table-column prop="index" label="序号" width="40"/>
|
||||||
<el-table-column prop="number" label="设备编号"/>
|
<el-table-column prop="number" label="名称"/>
|
||||||
<el-table-column prop="name" label="设备名称"/>
|
<el-table-column prop="name" label="规格"/>
|
||||||
<el-table-column prop="state" label="设备状态"/>
|
<el-table-column prop="state" label="型号"/>
|
||||||
|
<el-table-column prop="state" label="单位"/>
|
||||||
|
<el-table-column prop="state" label="库存"/>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,194 @@
|
||||||
|
<template>
|
||||||
|
<el-container>
|
||||||
|
<el-header>
|
||||||
|
<div class="left-panel">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
:loading = 'dLoading'
|
||||||
|
icon="el-icon-plus"
|
||||||
|
@click="addAttendance"
|
||||||
|
>新增</el-button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="right-panel">
|
||||||
|
<el-select
|
||||||
|
v-model="query.belong_dept"
|
||||||
|
clearable>
|
||||||
|
<el-option v-for="item in deptData"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="monthV"
|
||||||
|
type="month"
|
||||||
|
style="margin-left:4px"
|
||||||
|
placeholder="选择月份"
|
||||||
|
@change="handleQuery"
|
||||||
|
/>
|
||||||
|
<div class="right-panel-search">
|
||||||
|
<el-input
|
||||||
|
v-model="query.search"
|
||||||
|
placeholder="员工姓名/编号/手机号"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
></el-input>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
@click="handleQuery"
|
||||||
|
></el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-header>
|
||||||
|
<el-main class="nopadding">
|
||||||
|
<scTable
|
||||||
|
ref="table"
|
||||||
|
:apiObj="apiObj"
|
||||||
|
row-key="id"
|
||||||
|
stripe
|
||||||
|
>
|
||||||
|
<el-table-column label="姓名" prop="employee_name">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="班组" prop="shift_name">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="所属部门" prop="belong_dept_name">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="到岗状态">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-tag :type="states[scope.row.state].color">{{states[scope.row.state].label}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" align="left" width="170">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
type="warning"
|
||||||
|
size="small"
|
||||||
|
@click="handleForm(scope.row)"
|
||||||
|
>删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</scTable>
|
||||||
|
</el-main>
|
||||||
|
<save-dialog
|
||||||
|
v-if="dialog.save"
|
||||||
|
ref="saveDialog"
|
||||||
|
@success="handleSaveSuccess"
|
||||||
|
@closed="dialog.save = false"
|
||||||
|
>
|
||||||
|
</save-dialog>
|
||||||
|
|
||||||
|
</el-container>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import saveDialog from "./attendance_form.vue";
|
||||||
|
export default {
|
||||||
|
name: "clock_record",
|
||||||
|
components: {
|
||||||
|
saveDialog
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialog: {
|
||||||
|
save: false,
|
||||||
|
},
|
||||||
|
apiObj: this.$API.hrm.attendance.list,
|
||||||
|
deptData: [],
|
||||||
|
tableData:[],
|
||||||
|
monthV: null,
|
||||||
|
query: {},
|
||||||
|
userList:[],
|
||||||
|
dLoading: false,
|
||||||
|
cLoading:false,
|
||||||
|
ElLoading:null,
|
||||||
|
deptSearch:{},
|
||||||
|
states:{
|
||||||
|
'pending': {"label": "待定", "color": "info"},
|
||||||
|
'normal': {"label": "正常", "color": "success"},
|
||||||
|
'late': {"label": "迟到", "color": "danger"},
|
||||||
|
'early_leave': {"label": "早退", "color": "danger"},
|
||||||
|
'absent': {"label": "未到岗", "color": "danger"},
|
||||||
|
'leave': {"label": "请假", "color": "warning"},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getDept();
|
||||||
|
this.ElLoading =null;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getDept() {
|
||||||
|
let res = await this.$API.system.dept.list.req({ page: 0, type__in: 'dept' });
|
||||||
|
this.deptData = res;
|
||||||
|
},
|
||||||
|
handleQuery(){
|
||||||
|
if(this.monthV){
|
||||||
|
this.query.year = this.monthV.getFullYear();
|
||||||
|
this.query.month = this.monthV.getMonth() + 1;
|
||||||
|
}else{
|
||||||
|
this.query.year = null;
|
||||||
|
this.query.month = null;
|
||||||
|
}
|
||||||
|
this.$refs.table.queryData(this.query)
|
||||||
|
},
|
||||||
|
addAttendance(){
|
||||||
|
this.dialog.save = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.saveDialog.open('add')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleForm(row){
|
||||||
|
this.$confirm(`确定删除吗?`, "提示", {
|
||||||
|
type: "warning",
|
||||||
|
}).then(() => {
|
||||||
|
this.$API.hrm.attendance.delete.req(row.id).then((res) => {
|
||||||
|
this.$message.success("删除成功");
|
||||||
|
this.$refs.table.refresh();
|
||||||
|
}).catch((err) => {
|
||||||
|
|
||||||
|
});
|
||||||
|
}).catch(() => { });
|
||||||
|
},
|
||||||
|
handleSaveSuccess(){
|
||||||
|
this.$refs.table.refresh();
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.nomalState {
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 0 9px;
|
||||||
|
|
||||||
|
height: 24px;
|
||||||
|
line-height: 23px;
|
||||||
|
border-radius: 5px;
|
||||||
|
vertical-align: top;
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
}
|
||||||
|
.nomalState.type1{
|
||||||
|
color: #F8DD4E;
|
||||||
|
background-color: #f9f7e6;
|
||||||
|
border: 1px solid #f3f0d5;
|
||||||
|
}
|
||||||
|
.nomalState.type2{
|
||||||
|
color: #FF0000;
|
||||||
|
background-color: #f7e7e7;
|
||||||
|
border: 1px solid #fbe0e0;
|
||||||
|
}
|
||||||
|
.nomalState.type3{
|
||||||
|
color: #FA8435;
|
||||||
|
background-color: #fef6ed;
|
||||||
|
border: 1px solid #fde9cc;
|
||||||
|
}
|
||||||
|
.nomalState.type4{
|
||||||
|
color: #44CEF6;
|
||||||
|
background-color: #f0f9fb;
|
||||||
|
border: 1px solid #d2f9ff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,273 @@
|
||||||
|
<template>
|
||||||
|
<el-drawer
|
||||||
|
:title="titleMap[mode]"
|
||||||
|
v-model="visible"
|
||||||
|
:size="1000"
|
||||||
|
destroy-on-close
|
||||||
|
@closed="closeDrawer"
|
||||||
|
>
|
||||||
|
<el-container v-loading="loading">
|
||||||
|
<el-main style="padding: 0 20px 20px 20px">
|
||||||
|
<el-form
|
||||||
|
ref="dialogForm"
|
||||||
|
:model="form"
|
||||||
|
:rules="rules"
|
||||||
|
:disabled="mode==='show'"
|
||||||
|
label-width="120px"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :md="12" :sm="24">
|
||||||
|
<el-form-item label="所属部门">
|
||||||
|
<el-select
|
||||||
|
v-model="belongDept"
|
||||||
|
clearable
|
||||||
|
style="width:100%"
|
||||||
|
@change="getEmployee"
|
||||||
|
>
|
||||||
|
<el-option v-for="item in deptOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :md="12" :sm="24">
|
||||||
|
<el-form-item label="班次">
|
||||||
|
<el-select
|
||||||
|
v-model="form.shift"
|
||||||
|
placeholder="班次"
|
||||||
|
clearable
|
||||||
|
style="width:100%"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in shiftOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :md="12" :sm="24">
|
||||||
|
<el-form-item label="工作日期">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="form.work_date"
|
||||||
|
type="date"
|
||||||
|
placeholder="工作日期"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
style="width:100%"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<!-- <el-col :md="12" :sm="24">
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="form.note" placeholder="备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col> -->
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<sc-form-table
|
||||||
|
v-model="userList"
|
||||||
|
:addTemplate="addTemplate"
|
||||||
|
placeholder="暂无数据"
|
||||||
|
>
|
||||||
|
<el-table-column prop="name" label="排序" >
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.name }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="belong_dept_name" label="部门" >
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.belong_dept_name }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="type" label="到岗状态">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-select
|
||||||
|
v-model="scope.row.state"
|
||||||
|
filterable
|
||||||
|
placeholder="到岗状态"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in stateOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="note" label="备注">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input
|
||||||
|
v-model="scope.row.note"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column prop="open" label="操作" width="80" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
text
|
||||||
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
@click="createUserPost(scope.row)"
|
||||||
|
>保存</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
|
</sc-form-table>
|
||||||
|
</el-main>
|
||||||
|
<el-footer v-if="mode!=='show'">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
:loading="isSaveing"
|
||||||
|
@click="submit"
|
||||||
|
>
|
||||||
|
保存
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
</el-footer>
|
||||||
|
</el-container>
|
||||||
|
</el-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const defaultForm = {
|
||||||
|
list:[],
|
||||||
|
};
|
||||||
|
export default {
|
||||||
|
emits: ["success", "closed"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
belongDept:'',
|
||||||
|
loading: false,
|
||||||
|
mode: "add",
|
||||||
|
titleMap: {
|
||||||
|
add: '新增记录',
|
||||||
|
edit: '编辑记录',
|
||||||
|
show: '查看记录'
|
||||||
|
},
|
||||||
|
|
||||||
|
stateOptions:[
|
||||||
|
{label: "待定", id: "pending"},
|
||||||
|
{label: "正常", id: "normal"},
|
||||||
|
{label: "迟到", id: "late"},
|
||||||
|
{label: "早退", id: "early_leave"},
|
||||||
|
{label: "未到岗", id: "absent"},
|
||||||
|
{label: "请假", id: "leave"},
|
||||||
|
],
|
||||||
|
visible: false,
|
||||||
|
isSaveing: false,
|
||||||
|
form: defaultForm,
|
||||||
|
userList:[],
|
||||||
|
deptOptions: ['6车间','7车间','8车间','10车间'],
|
||||||
|
shiftOptions:[],
|
||||||
|
selectionFilters: [],
|
||||||
|
setFiltersVisible: false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getShiftOptions();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getShiftOptions() {
|
||||||
|
this.$API.system.dept.list.req({ page: 0, type__in: 'dept' }).then((res) => {
|
||||||
|
this.deptOptions = res;
|
||||||
|
});
|
||||||
|
this.$API.mtm.shift.req({page:0}).then(res=>{
|
||||||
|
this.shiftOptions = res;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getEmployee(){
|
||||||
|
this.$API.hrm.employee.list.req({belong_dept:this.belongDept,page:0}).then(res=>{
|
||||||
|
this.userList = [];
|
||||||
|
res.forEach(item=>{
|
||||||
|
let obj ={};
|
||||||
|
obj.name = item.name;
|
||||||
|
obj.employee = item.id;
|
||||||
|
obj.belong_dept_name = item.belong_dept_name;
|
||||||
|
obj.state = 'normal';
|
||||||
|
obj.note = '';
|
||||||
|
this.userList.push(obj)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//显示
|
||||||
|
open(mode) {
|
||||||
|
this.mode = mode;
|
||||||
|
this.visible = true;
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
closeDrawer() {
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit('closed');
|
||||||
|
},
|
||||||
|
//表单提交方法
|
||||||
|
submit() {
|
||||||
|
this.$refs.dialogForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.isSaveing = true;
|
||||||
|
let arr = [];
|
||||||
|
this.userList.forEach(item=>{
|
||||||
|
let obj = {};
|
||||||
|
obj.employee = item.employee;
|
||||||
|
obj.shift = this.form.shift;
|
||||||
|
obj.state = item.state;
|
||||||
|
obj.work_date = this.form.work_date;
|
||||||
|
obj.note = item.note;
|
||||||
|
arr.push(obj)
|
||||||
|
})
|
||||||
|
if (this.mode === 'add') {
|
||||||
|
this.$API.hrm.attendance.create.req(arr)
|
||||||
|
.then(res => {
|
||||||
|
this.isSaveing = false;
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("success");
|
||||||
|
this.$message.success("操作成功");
|
||||||
|
return res
|
||||||
|
}).catch(err => {
|
||||||
|
this.isSaveing = false;
|
||||||
|
return err
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$API.hrm.attendance.update.req(this.form.id, this.form)
|
||||||
|
.then(res => {
|
||||||
|
this.isSaveing = false;
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("success", this.form, this.mode);
|
||||||
|
this.$message.success("操作成功");
|
||||||
|
return res
|
||||||
|
}).catch(err => {
|
||||||
|
this.isSaveing = false;
|
||||||
|
return err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//表单注入数据
|
||||||
|
setData(data) {
|
||||||
|
//debugger;
|
||||||
|
// console.log(defaultForm);
|
||||||
|
// this.form = defaultForm;
|
||||||
|
this.loading = true;
|
||||||
|
this.$API.hrm.employee.item.req(data.id).then(res=>{
|
||||||
|
this.loading = false;
|
||||||
|
this.form = res
|
||||||
|
}).catch(e=>{this.loading = false;})
|
||||||
|
// Object.assign(this.form, data);
|
||||||
|
},
|
||||||
|
//设置过滤项
|
||||||
|
setFilters(filters) {
|
||||||
|
this.selectionFilters = filters;
|
||||||
|
this.setFiltersVisible = true;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
placeholder="有无定位卡"
|
placeholder="有无定位卡"
|
||||||
@change="handleQuery"
|
@change="handleQuery"
|
||||||
clearable
|
clearable
|
||||||
|
v-if="sysName&&sysName!=='photon'"
|
||||||
style="margin-left: 2px; width: 120px"
|
style="margin-left: 2px; width: 120px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -21,6 +22,7 @@
|
||||||
placeholder="人员类型"
|
placeholder="人员类型"
|
||||||
@change="handleQuery"
|
@change="handleQuery"
|
||||||
clearable
|
clearable
|
||||||
|
v-if="sysName&&sysName!=='photon'"
|
||||||
style="margin-left: 2px; width: 120px"
|
style="margin-left: 2px; width: 120px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -35,6 +37,7 @@
|
||||||
placeholder="人员状态"
|
placeholder="人员状态"
|
||||||
@change="handleQuery"
|
@change="handleQuery"
|
||||||
clearable
|
clearable
|
||||||
|
v-if="sysName&&sysName!=='photon'"
|
||||||
style="margin-left: 2px; width: 120px"
|
style="margin-left: 2px; width: 120px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -88,7 +91,7 @@
|
||||||
>
|
>
|
||||||
<!-- <el-table-column type="selection" width="50"></el-table-column> -->
|
<!-- <el-table-column type="selection" width="50"></el-table-column> -->
|
||||||
<el-table-column label="#" type="index" width="50"></el-table-column>
|
<el-table-column label="#" type="index" width="50"></el-table-column>
|
||||||
<el-table-column label="人员类型" prop="type" width="160">
|
<el-table-column label="人员类型" prop="type" width="160" v-if="sysName&&sysName!=='photon'">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span
|
<span
|
||||||
v-if="
|
v-if="
|
||||||
|
|
@ -113,7 +116,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="性别" prop="gender" width="60">
|
<el-table-column label="性别" prop="gender" width="60">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="证件照" prop="photo" width="120">
|
<el-table-column label="证件照" prop="photo" width="120" v-if="sysName&&sysName!=='photon'">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-avatar :size="50" :src="scope.row.photo" shape="square" />
|
<el-avatar :size="50" :src="scope.row.photo" shape="square" />
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -146,7 +149,7 @@
|
||||||
<span v-if="scope.row.user">{{ scope.row.user_.username }}</span>
|
<span v-if="scope.row.user">{{ scope.row.user_.username }}</span>
|
||||||
</template></el-table-column
|
</template></el-table-column
|
||||||
>
|
>
|
||||||
<el-table-column label="定位卡号" prop="blt_" width="180" :show-overflow-tooltip="true">
|
<el-table-column label="定位卡号" prop="blt_" width="180" :show-overflow-tooltip="true" v-if="sysName&&sysName!=='photon'">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div v-if="scope.row.blt_">
|
<div v-if="scope.row.blt_">
|
||||||
<div>{{ scope.row.blt_.code }}</div>
|
<div>{{ scope.row.blt_.code }}</div>
|
||||||
|
|
@ -190,6 +193,7 @@
|
||||||
@click="handleForm('edit', scope.row)"
|
@click="handleForm('edit', scope.row)"
|
||||||
>编辑
|
>编辑
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<div v-if="sysName&&sysName =='photon'" style="display:inline-block">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.row.blt_"
|
v-if="scope.row.blt_"
|
||||||
link
|
link
|
||||||
|
|
@ -206,6 +210,7 @@
|
||||||
@click="handleBindBlt(10, scope.row)"
|
@click="handleBindBlt(10, scope.row)"
|
||||||
>绑卡
|
>绑卡
|
||||||
</el-button>
|
</el-button>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</scTable>
|
</scTable>
|
||||||
|
|
@ -264,6 +269,8 @@ import saveDialog from "./ep_form.vue";
|
||||||
import ScBind from "@/components/scBind/index.vue";
|
import ScBind from "@/components/scBind/index.vue";
|
||||||
import { genTree } from "@/utils/verificate";
|
import { genTree } from "@/utils/verificate";
|
||||||
import config from "@/config"
|
import config from "@/config"
|
||||||
|
import data from './../../../src/utils/baseJson';
|
||||||
|
const sysName = data[data.current].base.name;
|
||||||
export default {
|
export default {
|
||||||
name: "employee",
|
name: "employee",
|
||||||
components: {
|
components: {
|
||||||
|
|
@ -327,6 +334,8 @@ export default {
|
||||||
mounted() {
|
mounted() {
|
||||||
// this.getBltList();
|
// this.getBltList();
|
||||||
this.getDept();
|
this.getDept();
|
||||||
|
console.log(sysName);
|
||||||
|
debugger;
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async getDept() {
|
async getDept() {
|
||||||
|
|
|
||||||
|
|
@ -38,11 +38,16 @@
|
||||||
<el-option v-for="item in deptOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
<el-option v-for="item in deptOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="执行人" v-if="form.type == 'do_in' || form.type == 'do_out'">
|
<el-form-item label="车间执行人" v-if="form.type == 'do_in' || form.type == 'do_out'">
|
||||||
<el-select v-model="form.do_user" clearable style="width: 100%;">
|
<el-select v-model="form.do_user" clearable style="width: 100%;">
|
||||||
<el-option v-for="item in userOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
<el-option v-for="item in userOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="仓库执行人" v-if="form.type == 'do_in' || form.type == 'do_out'">
|
||||||
|
<el-select v-model="form.mio_user" clearable style="width: 100%;">
|
||||||
|
<el-option v-for="item in userOption" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button type="primary" :loading="isSaveing" @click="submit">
|
<el-button type="primary" :loading="isSaveing" @click="submit">
|
||||||
|
|
@ -84,6 +89,7 @@ export default {
|
||||||
setFiltersVisible: false,
|
setFiltersVisible: false,
|
||||||
deptOptions: [],
|
deptOptions: [],
|
||||||
userOptions: [],
|
userOptions: [],
|
||||||
|
userOption:[],
|
||||||
orderOptions: [],
|
orderOptions: [],
|
||||||
puOrderOptions: [],
|
puOrderOptions: [],
|
||||||
supplierOptions: [],
|
supplierOptions: [],
|
||||||
|
|
@ -102,7 +108,8 @@ export default {
|
||||||
this.getOrderOptions()
|
this.getOrderOptions()
|
||||||
}
|
}
|
||||||
else if (type == 'do_in' || type == 'do_out') {
|
else if (type == 'do_in' || type == 'do_out') {
|
||||||
this.getDeptOptions()
|
this.getDeptOptions();
|
||||||
|
this.getDeptUser();
|
||||||
}
|
}
|
||||||
else if (type == 'other_in') {
|
else if (type == 'other_in') {
|
||||||
this.getSupplierOptions()
|
this.getSupplierOptions()
|
||||||
|
|
@ -141,6 +148,11 @@ export default {
|
||||||
this.userOptions = res
|
this.userOptions = res
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
getDeptUser() {
|
||||||
|
this.$API.system.user.list.req({ belong_dept__name: '8车间', page: 0 }).then(res => {
|
||||||
|
this.userOption = res;
|
||||||
|
})
|
||||||
|
},
|
||||||
//显示
|
//显示
|
||||||
open(mode = "add", type = "") {
|
open(mode = "add", type = "") {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
|
||||||
|
|
@ -14,16 +14,16 @@
|
||||||
<el-descriptions-item label="销售订单" v-if="mioObj.type=='sale_out'">{{ mioObj.pu_order_number }}</el-descriptions-item>
|
<el-descriptions-item label="销售订单" v-if="mioObj.type=='sale_out'">{{ mioObj.pu_order_number }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="客户" v-if="mioObj.type=='sale_out'">{{mioObj.customer_name }}</el-descriptions-item>
|
<el-descriptions-item label="客户" v-if="mioObj.type=='sale_out'">{{mioObj.customer_name }}</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
<el-button type="primary" @click="mioSubmit" v-auth="'mio.submit'" v-if="mioObj.state == 10">
|
<!-- <el-button type="primary" @click="mioSubmit" v-auth="'mio.submit'" v-if="mioObj.state == 10">
|
||||||
提交
|
提交
|
||||||
</el-button>
|
</el-button> -->
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
<div style="height:8px"></div>
|
<div style="height:8px"></div>
|
||||||
<div>
|
<div>
|
||||||
<el-card style="width: 100%" header="物料明细" shadow="hover">
|
<el-card style="width: 100%" header="物料明细" shadow="hover">
|
||||||
<div>
|
<div>
|
||||||
<el-button type="primary" icon="el-icon-plus" @click="table_add" v-if="mioObj.state == 10"></el-button>
|
<el-button type="primary" icon="el-icon-plus" @click="table_add" v-if="mioObj.state == 10">新增</el-button>
|
||||||
</div>
|
</div>
|
||||||
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe :params="params" hidePagination hideDo>
|
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe :params="params" hidePagination hideDo>
|
||||||
<el-table-column type="index" width="50" />
|
<el-table-column type="index" width="50" />
|
||||||
|
|
@ -42,11 +42,11 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" fixed="right" align="center" width="100px">
|
<el-table-column label="操作" fixed="right" align="center" width="100px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-link type="primary" @click="table_check(scope.row)" v-if="scope.row.test_user==null">
|
<el-link type="primary" @click="table_check(scope.row)" v-if="mioObj.state==20&&mioObj.type=='do_in'">
|
||||||
检验
|
检验
|
||||||
</el-link>
|
</el-link>
|
||||||
<el-link type="primary" @click="table_Show(scope.row)" v-else>
|
<el-link type="primary" @click="table_Show(scope.row)" v-else>
|
||||||
产看
|
查看
|
||||||
</el-link>
|
</el-link>
|
||||||
<el-link type="danger" @click="table_del(scope.row)" v-if="mioObj.state == 10">
|
<el-link type="danger" @click="table_del(scope.row)" v-if="mioObj.state == 10">
|
||||||
删除
|
删除
|
||||||
|
|
@ -60,7 +60,6 @@
|
||||||
<save-dialog v-if="dialog.save" ref="saveDialog" :mioId="mioId" :belongDeptId="belongDeptId" :belongDeptName="mioObj.belong_dept_name" :mioObj="mioObj"
|
<save-dialog v-if="dialog.save" ref="saveDialog" :mioId="mioId" :belongDeptId="belongDeptId" :belongDeptName="mioObj.belong_dept_name" :mioObj="mioObj"
|
||||||
@success="handleSaveSuccess" @closed="dialog.save = false">
|
@success="handleSaveSuccess" @closed="dialog.save = false">
|
||||||
</save-dialog>
|
</save-dialog>
|
||||||
|
|
||||||
<check-dialog v-if="dialog.check" ref="checkDialog" :mioitemId="mioitemId"
|
<check-dialog v-if="dialog.check" ref="checkDialog" :mioitemId="mioitemId"
|
||||||
@success="handleCheckSuccess" @closed="dialog.check = false">
|
@success="handleCheckSuccess" @closed="dialog.check = false">
|
||||||
</check-dialog>
|
</check-dialog>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="首件检验"
|
title="过程检验"
|
||||||
v-model="visible"
|
v-model="visible"
|
||||||
:size="1000"
|
:size="1000"
|
||||||
destroy-on-close
|
destroy-on-close
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ export default {
|
||||||
{ label: "加工工具", name: 50 },
|
{ label: "加工工具", name: 50 },
|
||||||
{ label: "辅助工装", name: 60 },
|
{ label: "辅助工装", name: 60 },
|
||||||
{ label: "办公用品", name: 70 },
|
{ label: "办公用品", name: 70 },
|
||||||
{ label: "电/水/气", name: 0 },
|
// { label: "电/水/气", name: 0 },
|
||||||
],
|
],
|
||||||
typeOptions: {
|
typeOptions: {
|
||||||
0: '电/水/气',
|
0: '电/水/气',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue