This commit is contained in:
Li xia 2024-09-19 09:34:56 +08:00
commit 89018c5e59
102 changed files with 7577 additions and 1985 deletions

View File

@ -6,7 +6,7 @@ NODE_ENV = development
VUE_APP_TITLE = '托克逊能源管理平台'
# VUE_APP_TITLE = '中建材光子科技有限公司'
# VUE_APP_TITLE = '超低排放系统'
VUE_APP_PJ = 'pf'
VUE_APP_PJ = ''
# 接口地址
#VUE_APP_API_BASEURL = http://1.203.161.103:2800/api
@ -16,14 +16,17 @@ VUE_APP_PJ = 'pf'
# VUE_APP_API_BASEURL = http://127.0.0.1:2226/api
#测试环境
VUE_APP_API_BASEURL = http://49.232.14.174:2226/api
# VUE_APP_API_BASEURL = http://10.50.211.228:2250/api
#VUE_APP_API_BASEURL = http://127.0.0.1:2226/api
VUE_APP_BASEURL = http://49.232.14.174:2226
VUE_APP_BASEURL = http://10.50.211.228:2250/
# VUE_APP_BASEURL = http://10.50.211.228:2250
#VUE_APP_BASEURL = http://127.0.0.1:2226
# #光子
# VUE_APP_API_BASEURL = http://49.232.14.174:2250/api
# VUE_APP_BASEURL = http://49.232.14.174:2250
VUE_APP_API_BASEURL = http://49.232.14.174:2226/api
VUE_APP_BASEURL = http://49.232.14.174:2226
# 本地端口
VUE_APP_PORT = 2800

View File

@ -18,7 +18,8 @@
"babylonjs-gui": "^6.46.0",
"babylonjs-loaders": "^6.46.0",
"cesium": "1.75",
"codemirror": "5.65.5",
"codemirror": "^5.65.17",
"codemirror-editor-vue3": "^2.7.0",
"core-js": "3.29.0",
"cropperjs": "1.5.13",
"crypto-browserify": "^3.12.0",

View File

@ -301,5 +301,18 @@ export default {
width: 9vh !important;
height: 9vh !important;
}
#progressbwlq .el-progress-bar__innerText{
width: 100%;
position: absolute;
top: 4px;
left: 50%;
color: #cccccc;
}
.el-select-dropdown__item{
height:auto!important;
}
.el-select-dropdown__item div{
margin-left:15px!important;
}
//
</style>

View File

@ -3,6 +3,64 @@ import http from "@/utils/request"
/*EM接口*/
export default {
// 测点
xscript: {
list: {
name: "脚本",
req: async function(data){
return await http.get(
`${config.API_URL}/enm/xscript/`,
data
);
}
},
item: {
name: "获取详情",
req: async function(id){
return await http.get(
`${config.API_URL}/enm/xscript/${id}/`
);
}
},
update: {
name: "更新",
req: async function(id, data){
return await http.put(
`${config.API_URL}/enm/xscript/${id}/`,
data);
}
},
create: {
name: "创建",
req: async function(data){
return await http.post(
`${config.API_URL}/enm/xscript/`,
data);
}
},
delete: {
name: "删除",
req: async function(id){
return await http.delete(
`${config.API_URL}/enm/xscript/${id}/`);
}
},
toggle: {
name: "启用/禁用",
req: async function(id, data){
return await http.put(
`${config.API_URL}/enm/xscript/${id}/toggle/`,
data);
}
},
change_data: {
name: "变更数据",
req: async function(id, data){
return await http.put(
`${config.API_URL}/enm/xscript/${id}/change_data/`,
data);
}
}
},
mpoint: {
mplog: {
name: "测点原始记录",

View File

@ -94,6 +94,64 @@ export default {
}
},
},
mtaskbAdd: {
name: "创建",
req: async function(id,data){
return await http.post(
`${config.API_URL}/pm/mtask/${id}/add_mtaskb/`,
data);
}
},
mtaskb:{
list: {
name: "生产任务列表",
req: async function(data){
return await http.get(
`${config.API_URL}/pm/mtaskb/`,
data
);
}
},
create: {
name: "创建",
req: async function(data){
return await http.post(
`${config.API_URL}/pm/mtaskb/`,
data);
}
},
cquery: {
name: "复杂查询",
req: async function(data){
return await http.post(
`${config.API_URL}/pm/mtaskb/cquery/`,
data);
}
},
item: {
name: "获取详情",
req: async function(id){
return await http.get(
`${config.API_URL}/pm/mtaskb/${id}/`
);
}
},
update: {
name: "更新",
req: async function(id, data){
return await http.put(
`${config.API_URL}/pm/mtaskb/${id}/`,
data);
}
},
delete: {
name: "删除",
req: async function(id){
return await http.delete(
`${config.API_URL}/pm/mtaskb/${id}/`);
}
},
},
// 生产大任务
utask: {
list: {

View File

@ -126,9 +126,53 @@ export default {
},
},
},
fmlog: {
list: {
name: "列表",
req: async function (data) {
return await http.get(`${config.API_URL}/wpm/fmlog/`, data);
},
},
item: {
name: "获取详情",
req: async function (id) {
return await http.get(`${config.API_URL}/wpm/fmlog/${id}/`);
},
},
cquery: {
name: "复杂查询",
req: async function (data) {
return await http.post(
`${config.API_URL}/wpm/fmlog/cquery/`,
data
);
},
},
update: {
name: "更新",
req: async function (id, data) {
return await http.put(
`${config.API_URL}/wpm/fmlog/${id}/`,
data
);
},
},
create: {
name: "创建",
req: async function (data) {
return await http.post(`${config.API_URL}/wpm/fmlog/`, data);
},
},
delete: {
name: "删除",
req: async function (id) {
return await http.delete(`${config.API_URL}/wpm/fmlog/${id}/`);
},
},
},
mlog: {
list: {
name: "值班记录列表",
name: "列表",
req: async function (data) {
return await http.get(`${config.API_URL}/wpm/mlog/`, data);
},
@ -373,4 +417,18 @@ export default {
return await http.post("http://localhost:8080/prints/", data);
},
},
ana:{
equipLastMlog:{
name: "设备状态列表",
req: async function (data) {
return await http.post(`${config.API_URL}/wpm/ana/equip_last_mlog/`, data);
},
},
put_prod:{
name: "统计值",
req: async function (data) {
return await http.post(`${config.API_URL}/wpm/ana/put_prod/`, data);
},
},
},
};

View File

@ -0,0 +1,5 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
<path fill="currentColor" fill-rule="evenodd" d="M12.428 2c-1.114 0-2.129.6-4.157 1.802l-.686.406C5.555 5.41 4.542 6.011 3.985 7c-.557.99-.557 2.19-.557 4.594v.812c0 2.403 0 3.605.557 4.594s1.57 1.59 3.6 2.791l.686.407C10.299 21.399 11.314 22 12.428 22s2.128-.6 4.157-1.802l.686-.407c2.028-1.2 3.043-1.802 3.6-2.791c.557-.99.557-2.19.557-4.594v-.812c0-2.403 0-3.605-.557-4.594s-1.572-1.59-3.6-2.792l-.686-.406C14.555 2.601 13.542 2 12.428 2m-3.75 10a3.75 3.75 0 1 1 7.5 0a3.75 3.75 0 0 1-7.5 0" clip-rule="evenodd" />
</svg>
</template>

View File

@ -23,4 +23,5 @@ export { default as Xiaoshou } from './Xiaoshou.vue'
export { default as Zhixing } from './Zhixing.vue'
export { default as Zhizao } from './Zhizao.vue'
export { default as Env } from './Env.vue'
export { default as Elec } from './Elec.vue'
export { default as Elec } from './Elec.vue'
export { default as Jcpz } from './Jcpz.vue'

View File

@ -304,8 +304,9 @@ export default {
this.visible = this.modelValue;
this.option.legend.data.push(that.cate);
this.option.series[0].name = that.cate;
console.log(that.mgroup)
if (that.mgroup) {
if (that.cate == "总产量t") {
if (that.cate == "总产量t"|| that.cate =="熟料t" ||that.cate == "出厂水泥合计t") {
that.cateName = "total_production";
} else if (
that.cate == "单位产品分布电耗KW·h/t" ||

View File

@ -264,7 +264,7 @@ const routes = [
name: "slag_power",
path: "/enm_slag/power",
meta: {
title: "位产品电耗",
title: "主要设备单耗",
// icon: "el-icon-odometer",
perms: ["enm_slag"],
},
@ -370,7 +370,7 @@ const routes = [
name: "power",
path: "/enm_rm/power",
meta: {
title: "位产品电耗",
title: "主要设备单耗",
// icon: "el-icon-odometer",
perms: ["enm_rm"],
},
@ -496,7 +496,7 @@ const routes = [
name: "coal_power",
path: "/enm_coal/power",
meta: {
title: "位产品电耗",
title: "主要设备单耗",
// icon: "el-icon-odometer",
perms: ["enm_coal"],
},
@ -622,7 +622,7 @@ const routes = [
name: "kiln_power",
path: "/enm_kiln/power",
meta: {
title: "位产品电耗",
title: "主要设备单耗",
// icon: "el-icon-odometer",
perms: ["enm_kiln"],
},
@ -811,7 +811,7 @@ const routes = [
name: "mill_power",
path: "/enm_mill/power",
meta: {
title: "位产品电耗",
title: "主要设备单耗",
// icon: "el-icon-odometer",
perms: ["enm_mill"],
},
@ -930,7 +930,7 @@ const routes = [
name: "enm_energy",
path: "/enm_energy",
meta: {
title: "电量报表",
title: "能源消耗报表",
icon: "sc-icon-elec",
type: "menu",
perms: ["enm_energy"],
@ -1000,7 +1000,7 @@ const routes = [
name: "hourBase",
path: "/enm_energy/hourBase",
meta: {
title: "电量消耗时报表",
title: "电量消耗时报表",
// icon: "el-icon-grid",
perms: ["hour_base"],
},
@ -1088,6 +1088,15 @@ const routes = [
perms: ["enm_report"],
},
component: "enm_report/reportMonth",
},{
name: "exception",
path: "/enm_report/exception",
meta: {
title: "异常动态表",
// icon: "el-icon-grid",
perms: ["enm_report"],
},
component: "enm_report/exception",
},
],
},
@ -1696,68 +1705,6 @@ const routes = [
},
component: "inm/warehouse",
},
{
name: "good",
path: "/inm/good",
meta: {
title: "成品库",
// icon: "el-icon-cellphone",
perms: ["good"],
},
children: [
{
name: "good",
path: "/inm/good",
meta: {
title: "成品库",
// icon: "el-icon-cellphone",
perms: ["good"],
},
component: "inm/good",
},
{
name: "good_mio",
path: "/inm/good_mio",
meta: {
title: "出入库记录",
// icon: "el-icon-cellphone",
perms: ["good_mio"],
},
component: "inm/good_mio",
},
],
},
{
name: "halfgood",
path: "/inm/halfgood",
meta: {
title: "半成品库",
// icon: "el-icon-cellphone",
perms: ["halfgood"],
},
children: [
{
name: "halfgood",
path: "/inm/halfgood",
meta: {
title: "半成品库",
// icon: "el-icon-cellphone",
perms: ["halfgood"],
},
component: "inm/halfgood",
},
{
name: "halfgood_mio",
path: "/inm/halfgood_mio",
meta: {
title: "出入库记录",
// icon: "el-icon-cellphone",
perms: ["halfgood_mio"],
},
component: "inm/halfgood_mio",
},
],
},
{
name: "mainso",
path: "/inm/mainso",
@ -1820,6 +1767,77 @@ const routes = [
},
],
},
{
name: "halfgood",
path: "/inm/halfgood",
meta: {
title: "半成品库",
// icon: "el-icon-cellphone",
perms: ["halfgood"],
},
children: [
{
name: "halfgood",
path: "/inm/halfgood",
meta: {
title: "半成品库",
// icon: "el-icon-cellphone",
perms: ["halfgood"],
},
component: "inm/halfgood",
},
{
name: "halfgood_mio",
path: "/inm/halfgood_mio",
meta: {
title: "出入库记录",
// icon: "el-icon-cellphone",
perms: ["halfgood_mio"],
},
component: "inm/halfgood_mio",
},
],
},
{
name: "good",
path: "/inm/good",
meta: {
title: "成品库",
// icon: "el-icon-cellphone",
perms: ["good"],
},
children: [
{
name: "good",
path: "/inm/good",
meta: {
title: "成品库",
// icon: "el-icon-cellphone",
perms: ["good"],
},
component: "inm/good",
},
{
name: "good_mio",
path: "/inm/good_mio",
meta: {
title: "出入库记录",
// icon: "el-icon-cellphone",
perms: ["good_mio"],
},
component: "inm/good_mio",
},
],
},
{
name: "inmScrap",
path: "/inm/inmScrap",
meta: {
title: "废品库",
perms: ["inmScrap"],
},
component: "inm/inmScrap",
},
// {
// "name": "materialbatch",
// "path": "/inm/materialbatch",
@ -1851,6 +1869,24 @@ const routes = [
},
component: "inm/mioitem",
},
{
name: "workshop",
path: "/inm/workshop",
meta: {
title: "车间库存",
hidden: true,
},
component: "inm/workshop",
},
{
name: "workshop_mio",
path: "/inm/workshop_mio",
meta: {
title: "车间出入库记录",
hidden: true,
},
component: "inm/workshop_mio",
},
],
},
//采购 pum
@ -2721,7 +2757,7 @@ const routes = [
{
path: "/fac_cal/mpointstat",
meta: {
title: "计算数据",
title: "计算结果",
// icon: "el-icon-postcard",
type: "menu",
perms: ["mpointstat"],
@ -2746,7 +2782,7 @@ const routes = [
path: "/enm_base",
meta: {
title: "基础配置",
icon: "el-icon-management",
icon: "sc-icon-jcpz",
type: "menu",
perms: ["enm_base"],
},
@ -3025,7 +3061,7 @@ const routes = [
meta: {
title: "黑化车间",
icon: "el-icon-trend-charts",
perms: ["bigScreenP_dept10"],
perms: ["bigScreenP_dept_hh"],
fullpage: true,
},
component: "bigScreen/index_heihuadept.vue",
@ -3267,6 +3303,17 @@ const routes = [
},
component: "statistics/task_rate_gx.vue",
},
//人员绩效统计——光芯
{
path: "/work_statistics",
name: "work_statistics",
meta: {
title: "人员生产统计",
icon: "el-icon-trend-charts",
perms: ["work_statistics"],
},
component: "statistics/work_statistics.vue",
},
//库存统计——光芯
{
path: "/statistic_inm",

View File

@ -355,7 +355,7 @@ export default {
// let baseInFo = data[data.current];
let base_logo =
this.$TOOL.data.get("BASE_INFO") !== null
? this.$TOOL.data.get("BASE_INFO").base.base_logo
? this.$TOOL.data.get("BASE_INFO").base.base_logo_i
: "img/logo.png";
// let base_logo = baseInFo!==null?baseInFo.base.base_logo:'img/logo.png';
return base_logo;

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
<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="100px">
<el-row>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="责任部门">
<el-cascader v-model="form.belong_dept" :options="group" :props="groupsProps" clearable
@ -11,7 +11,13 @@
</el-cascader>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="所属工段">
<el-select v-model="form.mgroup" placeholder="所属工段" clearable style="width: 100%">
<el-option v-for="item in mgroups" :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="设备名称" prop="name">
<el-input v-model="form.name" placeholder="设备名称" />
@ -22,7 +28,27 @@
<el-input v-model="form.number" placeholder="设备编号" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-col :md="12" :sm="24" v-if="form.type == 10">
<el-form-item
label="表明工段运行的方式"
label-width="160"
>
<el-select
v-model="form.indicate_mgroup_running"
style="width: 100%"
clearable
@clear="() => { form.indicate_mgroup_running=null } "
>
<el-option
v-for="e in iMEnum.values"
:key="e.key"
:value="e.key"
:label="e.text"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="规格型号" prop="model">
<el-input v-model="form.model" placeholder="规格型号" />
</el-form-item>
@ -35,15 +61,16 @@
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-col :md="12" :sm="24">
<el-form-item label="设备分类">
<el-select v-model="form.cate" placeholder="所属大类" clearable style="width: 100%">
<el-option v-for="item in cateOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-divider/>
</el-row>
<el-divider v-if="form.type == 50"/>
<el-row v-if="form.type == 50">
<el-col :md="12" :sm="24">
<el-form-item label="IP地址" prop="ip">
<el-input v-model="form.ip" placeholder="设备IP地址" />
@ -54,8 +81,6 @@
<el-input v-model="form.port" placeholder="设备端口号" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="登录账号" prop="login_name">
<el-input v-model="form.login_name" placeholder="设备登录名" />
@ -66,9 +91,9 @@
<el-input v-model="form.login_pwd" placeholder="设备登录密码" />
</el-form-item>
</el-col>
<el-divider/>
</el-row>
<el-divider/>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="生产厂">
<el-input v-model="form.factory" placeholder="生产厂" />
@ -121,7 +146,70 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="简要技术参数">
<el-input type="textarea" :rows="3" v-model="form.parameter" placeholder="技术参数" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input type="textarea" :rows="3" v-model="form.description" placeholder="备注" />
</el-form-item>
</el-col>
</el-row>
<el-divider/>
<el-row v-if="form.type==20">
<el-col :md="12" :sm="24">
<el-form-item label="仪表类型">
<el-input v-model="form.meter_type" placeholder="仪表类型" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="量程范围">
<el-input v-model="form.measurement_range" placeholder="量范" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="管理等级">
<el-input v-model="form.management_level" placeholder="管理等级" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="精度等级">
<el-input v-model="form.accuracy_level" placeholder="精度等级" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="检定周期(月)">
<el-input-number v-model="form.cycle" :precision="1" :min="0" controls-position="right"
style="width: 100%;" placeholder="检定周期(月)" />
</el-form-item>
</el-col>
</el-row>
<el-divider v-if="form.type==20"/>
<el-row>
<el-col>
<el-form-item label="技术参数">
<el-button @click="addJsonItem" type="primary" size="small">添加</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row v-for="(item, $index) in parameter_json" :key="item" :gutter="4">
<el-col :span="11">
<el-form-item label="参数名">
<el-input v-model="item.key" placeholder="参数名" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="参数值">
<el-input v-model="item.value" placeholder="参数值" />
</el-form-item>
</el-col>
<el-col :span="2">
<el-button @click="delJsonItem($index)" type="danger" size="small">删除</el-button>
</el-col>
</el-row>
</el-form>
</el-main>

View File

@ -161,6 +161,8 @@
<el-input
v-model="form.formula"
clearable
type="textarea"
:rows="3"
></el-input>
</el-form-item>
</el-col>

View File

@ -246,21 +246,32 @@ export default {
that.$emit("success", that.form, that.mode);
that.visible = false;
that.$message.success("操作成功");
})
.catch((error) => {
that.isSaveing = false;
that.$message.error("操作失败,请稍后重试");
console.error("Error creating mgroup:", error);
});
} else {
res = that.$API.mtm.mgroup.update
that.$API.mtm.mgroup.update
.req(that.form.id, that.form)
.then((res) => {
that.isSaveing = false;
that.$emit("success", that.form, that.mode);
that.visible = false;
that.$message.success("操作成功");
})
.catch((error) => {
that.isSaveing = false;
that.$message.error("操作失败,请稍后重试");
console.error("Error updating mgroup:", error);
});
}
}
});
}
}
});
},
//
setFilters(filters) {
this.selectionFilters = filters;

View File

@ -246,7 +246,7 @@
<td class="numCell">处置人</td>
</tr>
<tr v-for="item in sflogexpList" :key="item.id">
<td class="numCell">{{ item.happen_time }}</td>
<td class="numCell">{{ item.stlog_.start_time }}</td>
<td class="numCell">{{ item.stlog_.cate }}</td>
<td class="numCell">{{ item.stlog_.reason }}</td>
<td class="numCell">{{ item.stlog_.measure }}</td>

View File

@ -530,6 +530,9 @@ export default {
let data = response;
data.forEach((item) => {
let index = that.mpoints.indexOf(item.mpoint_name); //mpoint
if(index==-1){
return;
}
let ind = item.hour; //xAxis
seriesData[index][ind] = item.elec_consume_unit;
});
@ -571,6 +574,9 @@ export default {
let data = response;
data.forEach((item) => {
let index = that.mpoints.indexOf(item.mpoint_name); //mpoint
if(index==-1){
return;
}
let ind = item.day_s - 1;
seriesData[index][ind] = item.elec_consume_unit;
});
@ -613,6 +619,9 @@ export default {
data.forEach((item) => {
let ind = item.month_s - 1;
let index = that.mpoints.indexOf(item.mpoint_name); //mpoint
if(index==-1){
return;
}
seriesData[index][ind] = item.elec_consume_unit;
});
let options = { ...that.option3 };

View File

@ -89,6 +89,7 @@ export default {
mgroup: "",
},
tableDatas: [],
goalDatas: [],
};
},
mounted() {
@ -108,12 +109,11 @@ export default {
params.year = year;
params.mgroup = that.query.mgroup;
this.$API.mtm.goal.list.req(params).then((res) => {
let data = [];
// let data = [];
if (res.length > 0) {
data = res[0];
this.goalDatas = res[0];
}
console.log(data);
that.getData(data);
that.getData(this.goalDatas);
});
});
},
@ -127,43 +127,32 @@ export default {
query0.mgroup = that.query.mgroup;
let wrapArr = [],
wrapArr0 = [],
compareArr0 = [],
wrapArrs = [];
this.$API.enm.enstat.req(query0).then((res0) => {
let data0 = res0;
if (data0.length > 0) {
data0.forEach((item0) => {
//
let n0 = item0.month_s;
let ind0 = 0;
if (team_name0.indexOf("甲") > -1) {
ind0 = (n0 - 1) * 3;
} else if (team_name0.indexOf("乙") > -1) {
ind0 = (n0 - 1) * 3 + 1;
} else if (team_name0.indexOf("丙") > -1) {
ind0 = (n0 - 1) * 3 + 2;
}
wrapArr0[ind0] = item0;
});
console.log(wrapArr0);
} else {
}
this.$API.enm.enstat.req(that.query).then((res) => {
//
let data = res;
if (data.length > 0) {
data.forEach((item) => {
//
let compareArr = [];
compareArr.push(item.month_s);
compareArr.push(item.team_name);
compareArr.push(item.elec_consume_unit);
compareArr0.push(compareArr);
});
data.forEach((item) => {
//
let n = item.month_s;
let team_name = item.team_name;
let ind = 0;
if (team_name.indexOf("甲") > -1) {
ind = (n - 1) * 3;
} else if (team_name.indexOf("乙") > -1) {
ind = (n - 1) * 3 + 1;
} else if (team_name.indexOf("丙") > -1) {
ind = (n - 1) * 3 + 2;
}
wrapArrs[ind] = item;
let arr = [];
let time = "" + item.year_s + "." + item.month_s;
arr.push(time);
@ -201,12 +190,12 @@ export default {
? wrapArr0[ind_pre].elec_consume_unit
: "/";
} else {
ind_pre = n - 1;
huanqi = wrapArr[ind_pre]
? wrapArr[ind_pre].elec_consume_unit>=0
? wrapArr[ind_pre].elec_consume_unit
: "/"
: "/";
// wrapArr0wrapArritem.month_s1 item.namehuanbi
compareArr0.forEach((item0) => {
if (item0[0] == item.month_s - 1 && item0[1] == item.team_name) {
huanqi = item0[2];
}
})
}
arr[11] = huanqi; //KW·h/t
if (huanqi !== "/") {
@ -215,22 +204,16 @@ export default {
huanqicha = item.celec_consume_unit;
}
arr[12] = huanqicha; //KW·h/t
arr[13] =
huanqi != "/" ? (huanqicha / huanqi) * 100 : 0; //%
if (wrapArr0[n]) {
tongqicha =
item.celec_consume_unit -
wrapArr0[n].celec_consume_unit;
tongqi = tongqicha / tongqi;
} else {
tongqicha = item.celec_consume_unit;
tongqi = 0;
// arr[13] =
if (arr[11] !=="/" && arr[11]!==0 && arr[11] !==0 && arr[12] !== "undefined"){
arr[13] = ((arr[11]/arr[12])*100).toFixed(2);
}else{
arr[13] = "/"; //%= KW·h/t/KW·h/t*100%
}
arr[14] = tongqi; //%
arr[15] = 0.0; //
wrapArr[ind] = arr;
wrapArr.push(arr);
});
console.log(wrapArr);
that.tableDatas = wrapArr;
} else {
}
@ -239,7 +222,7 @@ export default {
},
handleQuery() {
this.tableDatas = [];
this.getData();
this.getData(this.goalDatas);
},
itemClick(type, item) {
this.type = type;

View File

@ -88,37 +88,41 @@
</tr>
<tr v-if="deptName=='原料车间'">
<th colspan="4">电石渣</th>
<th colspan="6">原料磨</th>
<th colspan="4">原料磨</th>
<th rowspan="2">压缩空气m3</th>
<th rowspan="2">车间用水t</th>
</tr>
<tr v-if="deptName=='烧成车间'">
<th colspan="11">回转窑</th>
<th colspan="4">煤磨</th>
<th colspan="3">煤磨</th>
<th rowspan="2">压缩空气m3</th>
<th rowspan="2">车间用水t</th>
</tr>
<tr v-if="deptName=='水泥车间'">
<th colspan="5">水泥磨</th>
<th colspan="4">水泥磨</th>
<th colspan="4">包装</th>
<th rowspan="2">压缩空气m3</th>
<th rowspan="2">车间用水t</th>
</tr>
<tr>
<th>电量KW.h</th>
<th>电量折标煤tce</th>
<th v-if="deptName=='烧成车间'">煤粉t</th>
<th v-if="deptName=='烧成车间'">煤粉折标煤tce</th>
<th v-if="deptName!='原料车间'">t</th>
<!-- <th v-if="deptName!='原料车间'">t</th> -->
<th v-if="deptName=='烧成车间'">柴油t</th>
<th v-if="deptName=='烧成车间'">柴油折标煤tce</th>
<th v-if="deptName=='烧成车间'">余热锅炉外送蒸汽t</th>
<th v-if="deptName=='烧成车间'">余热锅炉外送蒸汽折标煤tce</th>
<th>产品产量t</th>
<th>单位产品综合能耗tce/t</th>
<th v-if="deptName=='烧成车间'">单位产品综合能耗tce/t</th>
<th v-else>单位产品能耗tce/t</th>
<th>电量KW.h</th>
<th>电量折标煤tce</th>
<th v-if="deptName=='原料车间'">t</th>
<th v-if="deptName=='原料车间'">窑尾余热利用tce</th>
<!-- <th v-if="deptName=='原料车间'">t</th> -->
<!-- <th v-if="deptName=='原料车间'">窑尾余热利用tce</th> -->
<th>产品产量t</th>
<th>单位产品综合能耗tce/t</th>
<th>单位产品能耗tce/t</th>
</tr>
</thead>
<tr v-for="(item,index) in tableDatas3" :key="index">
@ -234,27 +238,34 @@
wrapArr[ind][1]=item
}else if(item.mgroup_name=='原料压缩空气'){
wrapArr[ind][2]=item
}else if(item.mgroup_name=='原料车间用水'){
wrapArr[ind][3]=item
}
}else if(that.deptName=='烧成车间'){
if(item.mgroup_name=='回转窑'){
wrapArr[ind][1]=item
wrapArr[ind][0]=item
}else if (item.mgroup_name=='烧成压缩空气') {
wrapArr[ind][2]=item
}
else if (item.mgroup_name=='烧成车间用水') {
wrapArr[ind][3]=item
}else{
wrapArr[ind][0]=item
wrapArr[ind][1]=item
}
}else{
if(item.mgroup_name=='水泥磨'){
wrapArr[ind][1]=item
wrapArr[ind][0]=item
}else if(item.mgroup_name=='水泥压缩空气'){
wrapArr[ind][2]=item
}else{
wrapArr[ind][0]=item
}else if(item.mgroup_name=='水泥车间用水'){
wrapArr[ind][3]=item
}else if(item.mgroup_name=='水泥包装'){
wrapArr[ind][1]=item
}
}
});
// debugger;
console.log(wrapArr);
// console.log(wrapArr);
wrapArr.forEach((item1)=>{
//item1------
if(item1!=undefined){
@ -270,16 +281,25 @@
if(that.deptName=='烧成车间'){
itemArr.push( item1[0].pcoal_consume)//t
itemArr.push( item1[0].pcoal_coal_consume)//tce)
itemArr.push( item1[0].water_consume)//t
itemArr.push( item1[0].pcoal_consume)//t
itemArr.push( item1[0].pcoal_coal_consume)//tce)
// itemArr.push( item1[0].water_consume)//t
// console.log(item1[0].imaterial_data_dict)
if (item1[0].imaterial_data_dict.length>0 || item1[0].imaterial_data_dict.柴油){
// console.log(item1[0].imaterial_data_dict..amount_consume)
itemArr.push( item1[0].imaterial_data_dict.柴油.amount_consume)//t
itemArr.push( (item1[0].imaterial_data_dict.柴油.amount_consume*1.4571).toFixed(2))//tce)
}else{
itemArr.push(0)//t
itemArr.push(0)//tce)
}
itemArr.push( item1[0].out_steam)//t
itemArr.push( item1[0].out_steam_coal)//tce)
}else if(that.deptName=='水泥车间'){
itemArr.push( item1[0].water_consume)//
}
itemArr.push( item1[0].total_production) //
itemArr.push( item1[0].cen_consume_unit) //
if(item1[1].mgroup_name == '回转窑'){
itemArr.push( item1[0].cen_consume_unit)
}else{
itemArr.push( item1[0].en_consume_unit) //
}
if (item1[1]){
itemArr.push( item1[1].elec_consume)
itemArr.push( item1[1].elec_coal_consume)
@ -287,17 +307,22 @@
itemArr.push( 0)
itemArr.push( 0)
}
if(that.deptName=='原料车间'){
itemArr.push( item1[1].water_consume)//
itemArr.push( item1[1].kiln_end_heat)//
}
// if(that.deptName==''){
// // itemArr.push( item1[1].water_consume)//
// // itemArr.push( item1[1].kiln_end_heat)//
// }
itemArr.push( item1[1].total_production)
itemArr.push( item1[1].cen_consume_unit)
itemArr.push( item1[1].en_consume_unit)
if(item1 &&item1[2]){
itemArr.push(item1[2].cair_consume)//
}else{
itemArr.push( 0)
}
}
if(item1 &&item1[3]){
itemArr.push(item1[3].water_consume)//
}else{
itemArr.push(0)
}
innerArr.push(itemArr)
}
})

View File

@ -203,7 +203,7 @@
<td class="numCell">
{{ reportItem.run_rate }}
</td>
<td class="numCell">停机时长h</td>
<td class="numCell">停机时长s</td>
<td class="numCell">
{{ reportItem.shut_sec }}
</td>

View File

@ -152,7 +152,9 @@ export default {
query0.mgroup = that.query.mgroup;
let wrapArr = [],
wrapArr0 = [],
wrapArrs = [];
wrapArrs = [],
comparEarr = [], //
compareArr0 = [];
this.$API.enm.enstat.req(query0).then((res0) => {
let data0 = res0;
debugger;
@ -168,35 +170,30 @@ export default {
arr0[2] = item0.total_output_unit;
arr0[3] = item0.total_output_unit;
arr0[4] = item0.run_rate_unit;
if (team_name0.indexOf("甲") > -1) {
ind0 = (n0 - 1) * 3;
} else if (team_name0.indexOf("乙") > -1) {
ind0 = (n0 - 1) * 3 + 1;
} else if (team_name0.indexOf("丙") > -1) {
ind0 = (n0 - 1) * 3 + 2;
}
wrapArr0[ind0] = item0;
});
debugger;
console.log(wrapArr0);
} else {
}
this.$API.enm.enstat.req(that.query).then((res) => {
let data = res;
if (data.length > 0) {
data.forEach((item) => {
//
let compareArr = [];
let elecArr = [];
compareArr.push(item.month_s);
elecArr.push(item.month_s);
compareArr.push(item.team_name);
elecArr.push(item.team_name);
compareArr.push(item.coal_consume_unit);
elecArr.push(item.elec_consume_unit);
compareArr0.push(compareArr);
comparEarr.push(elecArr);
});
data.forEach((item) => {
//
let n = item.month_s;
let team_name = item.team_name;
let ind = 0;
if (team_name.indexOf("甲") > -1) {
ind = (n - 1) * 3;
} else if (team_name.indexOf("乙") > -1) {
ind = (n - 1) * 3 + 1;
} else if (team_name.indexOf("丙") > -1) {
ind = (n - 1) * 3 + 2;
}
wrapArrs[ind] = item;
let arr = [];
let time = "" + item.year_s + "." + item.month_s;
arr.push(time);
@ -245,7 +242,7 @@ export default {
};
let dq = 0
if (arr[13] !== null && arr[13] !== undefined){
dq = arr[12] - arr[13]; //KW·h/t
dq = (arr[12] - arr[13]).toFixed(2); //KW·h/t
}else{
dq == "/"
};
@ -258,21 +255,21 @@ export default {
? wrapArr0[ind_pre].coal_consume_unit
: "/";
} else {
ind_pre = ind - 1;
huanbi = wrapArr[ind_pre]
? wrapArr[ind_pre].coal_consume_unit
? wrapArr[ind_pre].coal_consume_unit
: "/"
: "/";
// wrapArr0wrapArritem.month_s1 item.namehuanbi
compareArr0.forEach((item0) => {
if (item0[0] == item.month_s - 1 && item0[1] == item.team_name) {
huanbi = item0[2];
}
})
}
arr[15] = huanbi; //KW·h/t
if(huanbi !=="/"){
arr[16] = arr[12] - huanbi; //KW·h/t
arr[16] = (arr[12] - arr[15]).toFixed(2); //KW·h/t
}else{
arr[16] = "/"
};
if (arr[15] !== "/"&& arr[15]!== 0 && arr[16]!=="/") {
arr[17] = (arr[16] / arr[15]) * 100; //%
arr[17] = ((arr[16] / arr[15]) * 100).toFixed(2); //%
} else{
arr[17] = "/"
};
@ -297,53 +294,52 @@ export default {
? item.高温风机_consume_unit
: "/";
arr[20] =
item.篦冷机一室风机_consume_unit != null
? item.篦冷机一室风机_consume_unit
item.篦冷机一室风机电机_consume_unit != null
? item.篦冷机一室风机电机_consume_unit
: "/";
arr[21] =
item.篦冷机三室风机_consume_unit != null
? item.篦冷机三室风机_consume_unit
item.篦冷机三室风机电机_consume_unit != null
? item.篦冷机三室风机电机_consume_unit
: "/";
arr[22] =
item.篦冷机二室风机_consume_unit != null
? item.篦冷机二室风机_consume_unit
item.篦冷机二室风机电机_consume_unit != null
? item.篦冷机二室风机电机_consume_unit
: "/";
arr[23] =
item.窑头排风机_consume_unit != null
? item.窑头排风机_consume_unit
item.窑头排风机主电机_consume_unit != null
? item.窑头排风机主电机_consume_unit
: "/";
arr[24] = item.elec_consume_unit; //KW·h/t
// arr[25] = item.celec_consume_unit; //KW·h/t//
if (item.elec_consume_unit != null &&item.elec_consume_unit !== "/"){
arr[26] = arr[24]-arr[25] //KW·h/t
arr[26] = (arr[24]-arr[25]).toFixed(2); //KW·h/t
}
let ind_pre1 = 0,
huanbi1 = 0;
let huanbiec = 0;
if (item.month_s == 1) {
ind_pre1 = 12;
huanbi1 = wrapArr0[ind_pre]
huanbiec = wrapArr0[ind_pre]
? wrapArr0[ind_pre].elec_consume_unit
: "/";
} else {
ind_pre1 = ind - 1;
huanbi1 = wrapArr[ind_pre]
? wrapArr[ind_pre].elec_consume_unit
? wrapArr[ind_pre].elec_consume_unit
: "/"
: "/";
// wrapArr0wrapArritem.month_s1 item.namehuanbi
comparEarr.forEach((item0) => {
if (item0[0] == item.month_s - 1 && item0[1] == item.team_name) {
huanbiec = item0[2];
}
})
}
arr[27] = huanbi; //KW·h/t
if(arr[27]!=="/" && huanbi1!=="/"){
arr[28] = arr[24] - huanbi1; //KW·h/t
arr[27] = huanbiec; //KW·h/t
if(arr[27]!=="/" && huanbiec!=="/"){
arr[28] = (arr[24] - huanbiec).toFixed(2); //KW·h/t
}else{
arr[28] = "/"
}
if(arr[28]!=="/" && huanbi1!=="/"){
arr[29] = (arr[28] / huanbi1) * 100; //%
if(arr[28]!=="/" && huanbiec!=="/"&&huanbiec!==0){
arr[29] = ((arr[28] / huanbiec) * 100).toFixed(2); //%
}else{
arr[29] = "/"}; //%
arr[29] = 0}; //%
arr[30] = item.celec_consume_unit; //%
wrapArr[ind] = arr;
wrapArr.push(arr);
});
that.tableDatas = wrapArr;
} else {

View File

@ -516,11 +516,11 @@ export default {
//%
let lastRate = 0;
if (
lastDiff == "/" &&
lastDiff !== "/" &&
lastNum !== "/" &&
lastNum !== 0
) {
lastRate = ((lastDiff / lastNum) * 100).toFixed(2);
lastRate = ((lastDiff / arrs[4]) * 100).toFixed(2);
} else {
lastRate = "/";
}
@ -568,7 +568,7 @@ export default {
: "/";
}
if (arrs2[1] !== "/" && lastNum2 !== "/") {
lastDiff2 = arrs2[1] - lastNum2;
lastDiff2 = (arrs2[1] - lastNum2).toFixed(2);
} else {
lastDiff2 = "/";
}
@ -576,11 +576,11 @@ export default {
//%
let lastRate2 = 0;
if (
lastDiff2 == "/" &&
lastDiff2 !== "/" &&
lastNum2 !== "/" &&
lastNum2 !== 0
) {
lastRate2 = (lastDiff2 / lastNum2) * 100;
lastRate2 = ((lastDiff2 / lastNum2) * 100).toFixed(2);
} else {
lastRate2 = "/";
}
@ -637,11 +637,11 @@ export default {
//%
let lastRate3 = 0;
if (
lastDiff3 == "/" &&
lastDiff3 !== "/" &&
lastNum3 !== "/" &&
lastNum3 !== 0
) {
lastRate3 = (lastDiff3 / lastNum3) * 100;
lastRate3 = ((lastDiff3 / lastNum3) * 100).toFixed(2);
} else {
lastRate3 = "/";
}
@ -698,11 +698,11 @@ export default {
//%
let lastRate4 = 0;
if (
lastDiff4 == "/" &&
lastDiff4 !== "/" &&
lastNum4 !== "/" &&
lastNum4 !== 0
) {
lastRate4 = (lastDiff4 / lastNum4) * 100;
lastRate4 = ((lastDiff4 / lastNum4) * 100).toFixed(2);
} else {
lastRate4 = "/";
}

View File

@ -191,7 +191,7 @@
<td class="numCell">
{{ reportItem.run_rate }}
</td>
<td class="numCell">停机时长h</td>
<td class="numCell">停机时长s</td>
<td class="numCell">
{{ reportItem.shut_hour }}
</td>
@ -239,7 +239,7 @@
<td class="numCell">处置人</td>
</tr>
<tr v-for="item in sflogexpList" :key="item.id">
<td class="numCell">{{ item.happen_time }}</td>
<td class="numCell">{{ item.create_time }}</td>
<td class="numCell">{{ item.cate }}</td>
<td class="numCell">{{ item.reason }}</td>
<td class="numCell">{{ item.measure }}</td>

View File

@ -193,7 +193,7 @@
<td class="numCell">处置人</td>
</tr>
<tr v-for="item in sflogexpList" :key="item.id">
<td class="numCell">{{ item.happen_time }}</td>
<td class="numCell">{{ item.stlog_.start_time }}</td>
<td class="numCell">{{ item.cate }}</td>
<td class="numCell">{{ item.reason }}</td>
<td class="numCell">{{ item.measure }}</td>

View File

@ -204,7 +204,7 @@
<td class="numCell">
{{ reportItem.run_rate }}
</td>
<td class="numCell">停机时长h</td>
<td class="numCell">停机时长s</td>
<td class="numCell">
{{ reportItem.shut_sec }}
</td>
@ -263,7 +263,7 @@
<td class="numCell">处置人</td>
</tr>
<tr v-for="item in sflogexpList" :key="item.id">
<td class="numCell">{{ item.happen_time }}</td>
<td class="numCell">{{ item.stlog_.start_time }}</td>
<td class="numCell">{{ item.stlog_.cate }}</td>
<td class="numCell">{{ item.stlog_.reason }}</td>
<td class="numCell">{{ item.stlog_.measure }}</td>

View File

@ -602,6 +602,9 @@ export default {
let data = response;
data.forEach((item) => {
let index = that.mpoints.indexOf(item.mpoint_name); //mpoint
if(index==-1){
return;
}
let ind = item.hour; //xAxis
seriesData[index][ind] = item.elec_consume_unit;
});
@ -644,6 +647,9 @@ export default {
data.forEach((item) => {
let index = that.mpoints.indexOf(item.mpoint_name); //mpoint
let ind = item.day_s - 1;
if(index==-1){
return;
}
seriesData[index][ind] = item.elec_consume_unit;
});
let options = { ...that.option2 };

View File

@ -814,7 +814,6 @@ export default {
},
dateChange(val) {
let that = this;
console.log(val);
if (val !== null) {
if (this.typeRadio == "day") {
let year = val.split("-")[0];

View File

@ -119,11 +119,21 @@ export default {
if (res.length > 0) {
data = res[0];
}
that.getData(data);
that.getGoalData();
});
});
},
methods: {
getGoalData() {
let that = this;
let params = {};
params.page = 0;
params.year = that.query.year_s;
params.mgroup = that.query.mgroup;
this.$API.mtm.goal.list.req(params).then((res) => {
that.getData(res);
});
},
getData(goalData) {
let that = this;
let query0 = {};
@ -133,6 +143,7 @@ export default {
query0.mgroup = that.query.mgroup;
let wrapArr = [],
wrapArr0 = [],
compareArr0 = [],
wrapArrs = [];
this.$API.enm.enstat.req(query0).then((res0) => {
let data0 = []; //
@ -140,38 +151,27 @@ export default {
if (data0.length > 0) {
data0.forEach((item0) => {
//
let n0 = item0.month_s;
let ind0 = 0;
let team_name0 = item0.team_name;
if (team_name0.indexOf("甲") > -1) {
ind0 = (n0 - 1) * 3;
} else if (team_name0.indexOf("乙") > -1) {
ind0 = (n0 - 1) * 3 + 1;
} else if (team_name0.indexOf("丙") > -1) {
ind0 = (n0 - 1) * 3 + 2;
}
wrapArr0[ind0] = item0;
});
console.log(wrapArr0);
} else {
}
this.$API.enm.enstat.req(that.query).then((res) => {
//
let data = res;
if (data.length > 0) {
data.forEach((item) => {
//
let compareArr = [];
compareArr.push(item.month_s);
compareArr.push(item.team_name);
compareArr.push(item.elec_consume_unit);
compareArr0.push(compareArr);
});
data.forEach((item) => {
//
let n = item.month_s;
let team_name = item.team_name;
let ind = 0;
if (team_name.indexOf("甲") > -1) {
ind = (n - 1) * 3;
} else if (team_name.indexOf("乙") > -1) {
ind = (n - 1) * 3 + 1;
} else if (team_name.indexOf("丙") > -1) {
ind = (n - 1) * 3 + 2;
}
wrapArrs[ind] = item;
let arr = [];
let time = "" + item.year_s + "." + item.month_s;
arr.push(time);
@ -195,8 +195,8 @@ export default {
: "/";
//
arr[9] =
item.循环风机1906_consume_unit != null
? item.循环风机1906_consume_unit
item.循环风机_consume_unit != null
? item.循环风机_consume_unit
: "/";
arr[10] =
item.系统风机_consume_unit != null
@ -223,12 +223,12 @@ export default {
? wrapArr0[ind_pre].elec_consume_unit
: "/";
} else {
ind_pre = n - 1;
huanqi = wrapArr[ind_pre]
? wrapArr[ind_pre].elec_consume_unit
? wrapArr[ind_pre].elec_consume_unit
: "/"
: "/";
// wrapArr0wrapArritem.month_s1 item.namehuanbi
compareArr0.forEach((item0) => {
if (item0[0] == item.month_s - 1 && item0[1] == item.team_name) {
huanqi = item0[2];
}
})
}
arr[14] = huanqi; //KW·h/t
if (huanqi !== "/") {
@ -251,7 +251,7 @@ export default {
arr[17] = tongqi; //%:-/
arr[18] = 0.0; //%
wrapArr[ind] = arr;
wrapArr.push(arr);
});
let newArr = [];
for (let i = 0; i < wrapArr.length; i++) {
@ -270,7 +270,7 @@ export default {
},
handleQuery() {
this.tableDatas = [];
this.getData();
this.getGoalData();
},
itemClick(type, item) {
this.type = type;

View File

@ -50,17 +50,17 @@
@click="handleQuery"
></el-button>
</div>
<div class="right-panel">
<!-- <div class="right-panel">
<el-button
type="primary"
icon="el-icon-plus"
@click="table_add"
v-auth="'feeset.create'"
></el-button>
</div>
</div> -->
</el-header>
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id">
<scTable ref="table" :apiObj="apiObj" :params="params" row-key="id">
<el-table-column
label="#"
type="index"
@ -148,6 +148,9 @@ export default {
fee: "",
mgroup: "",
},
params:{
mgroup__cate:"section"
},
dialog: {
save: false,
},
@ -163,7 +166,7 @@ export default {
methods: {
//
getMgroup() {
this.$API.mtm.mgroup.list.req({ page: 0 }).then((res) => {
this.$API.mtm.mgroup.list.req({ page: 0, cate:"section"}).then((res) => {
this.options = res;
});
},

View File

@ -42,14 +42,14 @@
@click="handleQuery"
></el-button>
</div>
<div class="right-panel">
<!-- <div class="right-panel">
<el-button
type="primary"
icon="el-icon-plus"
@click="roleAdd"
v-auth="'goal.create'"
></el-button>
</div>
</div> -->
</el-header>
<el-main class="nopadding">
<scTable
@ -204,6 +204,7 @@
<el-col :md="12" :sm="24">
<el-form-item label="目标种类" prop="goal_cate">
<el-select
:disabled="type == 'edit'"
v-model="form.goal_cate"
placeholder="目标种类"
clearable

View File

@ -29,14 +29,14 @@
@click="handleQuery"
></el-button>
</div>
<div class="right-panel">
<!-- <div class="right-panel">
<el-button
type="primary"
icon="el-icon-plus"
@click="table_add"
v-auth="'priceset.create'"
></el-button>
</div>
</div> -->
</el-header>
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id">

View File

@ -213,7 +213,7 @@
<td class="numCell">处置人</td>
</tr>
<tr v-for="item in sflogexpList" :key="item.id">
<td class="numCell">{{ item.happen_time }}</td>
<td class="numCell">{{ item.stlog_.start_time }}</td>
<td class="numCell">{{ item.stlog_.cate }}</td>
<td class="numCell">{{ item.stlog_.reason }}</td>
<td class="numCell">{{ item.stlog_.measure }}</td>

View File

@ -117,7 +117,7 @@
</div>
</div>
<sc-dialog v-model="chartShow" draggable title="水泥工段">
<sc-dialog v-model="chartShow" draggable title="水泥包装工段">
<div class="searchHead" v-if="type == 'hours'">
<el-date-picker
v-model="query.start_time"
@ -262,7 +262,7 @@ let toolbox = {
};
let legend = {
top: "2%",
data: ["总产量", "分布电耗"],
data: ["熟料", "分布电耗"],
};
let yAxis = [
{
@ -334,8 +334,7 @@ export default {
["出厂水泥", "P.C42.5 袋装t", 0, 0, 0, "/", "/", "/","/"],
["出厂水泥", "P.C42.5 散装t", 0, 0, 0, "/", "/", "/","/"],
["出厂水泥", "P.O52.5 散装t", 0, 0, 0, "/", "/", "/","/"],
["出厂水泥", "出厂水泥合计(t", 0, 0, 0, 0, 0, 0, 0],
["出厂水泥", "出厂水泥合计t", 0, 0, 0, 0, 0, 0, 0],
["出厂熟料", "熟料t", 0, 0, 0, "/", "/", "/","/"],
["能耗", "单位产品分布电耗KW·h/t", 0, 0, 0, 0, 0, 0, 0],
@ -343,7 +342,7 @@ export default {
tableName: "生产报告",
modelValue: true,
type: "hour_s",
title: "水泥磨工段",
title: "水包装工段",
cate: "",
apiObj: this.$API.enm.enstat,
showClose: true,
@ -539,7 +538,6 @@ export default {
this.$API.mtm.mgroup.list
.req({ page: 0, search: "水泥包装" })
.then((res) => {
console.log("水泥包装", res);
that.query.mgroup = res[0].id;
//
let params1 = {};
@ -569,7 +567,7 @@ export default {
}else if (item.mpoint_name == "出厂熟料"){
that.tableDatas[8][4] = item.val;
}else if (item.mpoint_name == "包装进线") {
that.tableDatas[9][4] = item.val;
that.tableDatas[9][4] = item.elec_consume_unit;
}
}
)}
@ -603,7 +601,7 @@ export default {
}else if (item.mpoint_name == "出厂熟料"){
that.tableDatas[8][3] = item.val;
}else if (item.mpoint_name == "包装进线") {
that.tableDatas[9][3] = item.val;
that.tableDatas[9][3] = item.elec_consume_unit;
}
}
)
@ -684,7 +682,7 @@ export default {
}else if (item.mpoint_name == "出厂熟料"){
that.tableDatas[8][2] = item.val;
}else if (item.mpoint_name == "包装进线") {
that.tableDatas[9][2] = item.val;
that.tableDatas[9][2] = item.elec_consume_unit;
}
}
)
@ -746,7 +744,6 @@ export default {
},
dateChange(val) {
let that = this;
console.log(val);
if (val !== null) {
if (this.typeRadio == "month") {
let year = val.split("-")[0];
@ -805,7 +802,7 @@ export default {
}else if (item.mpoint_name == "出厂熟料"){
seriesData8[ind] = item.val;
}else if (item.mpoint_name == "包装进线") {
seriesData9[ind] = item.val;
seriesData9[ind] = item.elec_consume_unit;
}
});
let options = { ...that.option1 };
@ -869,7 +866,7 @@ export default {
}else if (item.mpoint_name == "出厂熟料"){
seriesData8[ind] = item.val;
}else if (item.mpoint_name == "包装进线") {
seriesData9[ind] = item.val;
seriesData9[ind] = item.elec_consume_unit;
}
});
let options = { ...that.option2 };
@ -897,6 +894,14 @@ export default {
this.cate = item[1];
this.asynDialog = true;
},
itemClick1(type, item) {
this.chartShow = false;
this.$API.bi.dataset.exec.req("3322567213885833216").then((res) => {
this.myOption = JSON.parse(res.echart_options);
debugger;
this.chartShow = true;
});
},
handlePrint() {
this.$PRINT("#myReport");
},

View File

@ -97,22 +97,29 @@ export default {
this.$API.mtm.mgroup.list
.req({ page: 0, search: "水泥包装" })
.then((res) => {
console.log("水泥包装", res);
that.query.mgroup = res[0].id;
let params = {};
params.page = 0;
params.year = year;
params.mgroup = that.query.mgroup;
this.$API.mtm.goal.list.req(params).then((res) => {
let data = [];
if (res.length > 0) {
data = res[0];
}
that.getData(data);
});
that.getGoalData();
});
},
methods: {
getGoalData() {
const self = this;
let params = {};
params.page = 0;
params.year = self.query.year_s;
params.mgroup = self.query.mgroup;
this.$API.mtm.goal.list.req(params).then((res) => {
// let data = [];
// if (res.length > 0) {
// self.data = res[1];
// console.log("", self.data);
// }
self.getData(res[1]);
})
.catch((error) => {
console.error('获取目标数据失败:', error);
});
},
getData(goalData) {
let that = this;
let query0 = {};
@ -121,7 +128,7 @@ export default {
query0.year_s = that.query.year_s - 1;
let wrapArr = [],
wrapArr0 = [],
wrapArrs = [];
compareArr0 = [];
this.$API.enm.enstat.req(query0).then((res0) => {
let data0 = res0;
if (data0.length > 0) {
@ -129,44 +136,39 @@ export default {
//
let n0 = item0.month_s;
let ind0 = 0;
let team_name0 = item0.team_name;
if (team_name0.indexOf("甲") > -1) {
ind0 = (n0 - 1) * 3;
} else if (team_name0.indexOf("乙") > -1) {
ind0 = (n0 - 1) * 3 + 1;
} else if (team_name0.indexOf("丙") > -1) {
ind0 = (n0 - 1) * 3 + 2;
}
wrapArr0[ind0] = item0;
});
console.log(wrapArr0);
} else {
}
this.$API.enm.enstat.req(that.query).then((res) => {
} else {}
});
this.$API.enm.enstat.req(that.query).then((res) => {
let data = res;
if (data.length > 0) {
data.forEach((item) => {
//
let compareArr = [];
compareArr.push(item.month_s);
compareArr.push(item.team_name);
compareArr.push(item.elec_consume_unit);
compareArr0.push(compareArr);
});
data.forEach((item) => {
//
let n = item.month_s;
let team_name = item.team_name;
let ind = 0;
if (team_name.indexOf("甲") > -1) {
ind = (n - 1) * 3;
} else if (team_name.indexOf("乙") > -1) {
ind = (n - 1) * 3 + 1;
} else if (team_name.indexOf("丙") > -1) {
ind = (n - 1) * 3 + 2;
}
wrapArrs[ind] = item;
let arr = [];
let ind = 0;
let time = "" + item.year_s + "." + item.month_s;
arr.push(time);
arr.push(item.team_name);
arr.push(item.total_production);
arr[3] = item.elec_consume_unit; //KW·h/t
let keyVale = "goal_val_" + n;
arr[4] = goalData[keyVale]; //KW·h/t//
arr[5] = arr[3] - arr[4]; //KW·h/t
arr[5] = (arr[3] - arr[4]).toFixed(2); //KW·h/t
let ind_pre = 0,
huanbi = 0;
if (item.month_s == 1) {
@ -175,25 +177,24 @@ export default {
? wrapArr0[ind_pre].elec_consume_unit
: "/";
} else {
ind_pre = ind - 1;
huanbi = wrapArr[ind_pre]
? wrapArr[ind_pre].elec_consume_unit
? wrapArr[ind_pre].elec_consume_unit
: "/"
: "/";
// wrapArr0wrapArritem.month_s1 item.namehuanbi
compareArr0.forEach((item0) => {
if (item0[0] == item.month_s - 1 && item0[1] == item.team_name) {
huanbi = item0[2];
}
})
}
arr[6] = huanbi; //KW·h/t\
let diff = 0;
if (arr[6] == "/"){
diff == "/";
if (arr[6] !== "/"){
arr[7] = (arr[3] - arr[6]).toFixed(2); //KW·h/t
}else{
diff = arr[3] - arr[6]; //KW·h/t
arr[7] = "/"; //KW·h/t
}
arr[7] = diff;
if (arr[7]=="/" || arr[6]=="/" || arr[6]==0){
arr[8] == "/";
// console.log(arr[7], arr[6])
if (arr[7] !=="/" && arr[6] !==0 && arr[7] !== "undefined"){
arr[8] = ((arr[7]/arr[6])*100).toFixed(2);
}else{
arr[8] = (arr[7]/arr[6])*100 //%= KW·h/t/KW·h/t*100%
arr[8] = "/"; //%= KW·h/t/KW·h/t*100%
}
let sameRate = 0;
if (
@ -201,7 +202,7 @@ export default {
wrapArr0[ind].elec_consume_unit
) {
sameRate =
((arrs[1] -
((arr[3] -
wrapArr0[ind].elec_consume_unit) /
wrapArr0[ind].elec_consume_unit) *
100;
@ -210,17 +211,17 @@ export default {
}
arr[9] = sameRate; ///%/ wrapArr0[ind].elec_consume_unit
// arr[10] = item.celec_consume_unit; //%-wrapArr0[ind].elec_consume_unit
wrapArr[ind] = arr;
wrapArr.push(arr);
// console.log(wrapArr);
});
that.tableDatas = wrapArr;
} else {
}
});
});
},
handleQuery() {
this.tableDatas = [];
this.getData();
this.getGoalData();
},
itemClick(type, item) {
this.type = type;
@ -231,7 +232,6 @@ export default {
this.$API.bi.dataset.exec.req("3322567213885833216").then((res) => {
this.myOption = JSON.parse(res.echart_options);
debugger;
console.log(this.myOption);
this.chartShow = true;
});
},

View File

@ -264,11 +264,11 @@ export default {
//%
let lastRate = 0;
if (
lastDiff == "/" &&
lastDiff !== "/" &&
lastNum !== "/" &&
lastNum !== 0
) {
lastRate = (lastDiff / lastNum) * 100;
lastRate = ((lastDiff / lastNum) * 100).toFixed(2);
} else {
lastRate = "/";
}

View File

@ -38,7 +38,7 @@
<th rowspan="3" v-if="query.type == 0">班次</th>
<th rowspan="3" v-if="query.type == 0">班组</th>
<th rowspan="3">实际产量t</th>
<th rowspan="3">总成本</th>
<!-- <th rowspan="3">总成本</th> -->
<th rowspan="3">单位成本/</th>
<th :colspan="materialList.length">直接材料</th>
<th colspan="2">直接人工</th>
@ -101,7 +101,7 @@ export default {
mgroupOptions: [],
tableName: '班组成本计算',
options: [
{ id: 0, name: '班统计' },
// { id: 0, name: '' },
{ id: 1, name: '日统计' },
{ id: 2, name: '月统计' },
],
@ -174,6 +174,7 @@ export default {
},
getData() {
let that = this;
that.tableData1 = [];
that.data1 = 0;
that.data2 = 0;
that.data3 = 0;
@ -200,27 +201,53 @@ export default {
}
that.$API.enm.enstat.req(params).then(res => {
if (res.length > 0) {
let materials = res[0].imaterial_data;
let materials = res[res.length - 1].imaterial_data;
let arr = [];
let dataArr = [];
materials.forEach(item => {
if (item.material_type == 0) {//
that.data2 = that.data2 + 4;
} else if (item.material_type == 30 || item.material_type == 20) {//
if (item.material_name == "湿电石渣进厂"||item.material_name == "工业水"||item.material_name == "动力电") {
// Skip adding item details to arr for "湿"
return;
}
if (item.material_type == 30 || item.material_type == 20) {//
that.data1 = that.data1 + 4;
} else if (item.material_type == 40) {//
that.data3 = that.data3 + 4;
}
arr.push(item.material_name)
let materialName = item.material_name
if (materialName === "入窑生料") {
materialName = "生料";
} else if (materialName === "入窑煤粉") {
materialName = "原煤";
}
arr.push(materialName)
arr.push('单价(元/吨)')
arr.push('总成本(元)')
arr.push('单位成本(元/吨)')
})
materials.forEach(item => {
if(item.material_name == "动力电"){
that.data2 = that.data2 + 4
arr.push(item.material_name)
arr.push('单价(元/度)')
arr.push('总成本(元)')
arr.push('单位成本(元/吨)')
}
})
materials.forEach(item => {
if(item.material_name == "工业水"){
that.data2 = that.data2 + 4
arr.push(item.material_name)
arr.push('单价(元/吨)')
arr.push('总成本(元)')
arr.push('单位成本(元/吨)')
}
})
that.allCol = arr.length + 16
that.materialList = arr;
let dataArr = [];
res.forEach(itemData => {
let time = '';
dataArr = [];
if (that.query.type == 0) {
time = itemData.year_s + '.' + itemData.month_s + '.' + itemData.day_s;
} else if (that.query.type == 1) {
@ -234,20 +261,42 @@ export default {
dataArr.push(itemData.team_name);
}
dataArr.push(itemData.total_production);
dataArr.push(itemData.coal_consume_unit);
dataArr.push(itemData.cen_consume_unit);
// dataArr.push(itemData.coal_consume_unit);
dataArr.push(itemData.production_cost_unit);
let sub1data = itemData.imaterial_data;
for (let i = 0; i < sub1data.length; i++) {
dataArr.push(sub1data[i].cost)
dataArr.push(sub1data[i].price_unit)
dataArr.push(sub1data[i].amount_consume)
dataArr.push(sub1data[i].cost_unit)
if (sub1data[i].material_name === '湿电石渣进厂'|| sub1data[i].material_name === '动力电'|| sub1data[i].material_name === '工业水'){
continue;
}
dataArr.push((sub1data[i].amount_consume).toFixed(2))
dataArr.push((sub1data[i].price_unit).toFixed(2))
dataArr.push((sub1data[i].cost).toFixed(2))
dataArr.push((sub1data[i].cost_unit).toFixed(2))
}
for (let i = 0; i < sub1data.length; i++) {
if (sub1data[i].material_name == '动力电') {
dataArr.push((sub1data[i].amount_consume).toFixed(2));
dataArr.push((sub1data[i].price_unit).toFixed(2))
dataArr.push((sub1data[i].cost).toFixed(2));
dataArr.push((sub1data[i].cost_unit).toFixed(2));
}
}
for (let i = 0; i < sub1data.length; i++) {
if (sub1data[i].material_name == '工业水') {
dataArr.push((sub1data[i].amount_consume).toFixed(2));
dataArr.push((sub1data[i].price_unit).toFixed(2));
dataArr.push((sub1data[i].cost).toFixed(2));
dataArr.push((sub1data[i].cost_unit).toFixed(2));
}
}
let otherdata = itemData.other_cost_data;
for (let j = 0; j < otherdata.length; j++) {
dataArr.push(otherdata[j].cost_unit)
dataArr.push((otherdata[j].cost_unit).toFixed(2))
}
that.tableData1.push(dataArr)
dataArr = [];
arr = [];
})
}
})

View File

@ -0,0 +1,224 @@
<!-- 成本分析 -->
<template>
<el-container class="app-container">
<el-header>
<div>
<el-select v-model="query.mgroup" placeholder="工段" clearable @change="mgroupChange" class="headerSearch">
<el-option v-for="item in mgroupOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<el-select v-model="query.type" placeholder="查询类型" clearable class="headerSearch" @change="typeCange">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<el-date-picker
v-model="query.shift"
type="datetime"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
placeholder="班次"
class="headerSearch"
v-if="query.type == 0"
/>
<el-date-picker
v-model="value1"
type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss"
placeholder="日"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
v-if="query.type == 1"
style="width: 300px;"
/>
<el-date-picker
v-model="query.month"
type="month"
value-format="YYYY-MM"
format="YYYY-MM"
placeholder="月"
v-if="query.type == 2"
/>
<el-button type="primary" icon="el-icon-search"
@click="getTableData">
</el-button>
<el-button type="primary" @click="exportExcel()" :loading="exportLoading">导出xlsx
</el-button>
<el-button type="primary" @click="handlePrint">打印
</el-button>
</div>
</el-header>
<el-main>
<scTable
ref="stlogTable"
:apiObj="apiObjStlog"
:query="query"
:params="params"
row-key="id"
>
<el-table-column type="index" width="100" />
<el-table-column
label="异常类别"
prop="duration"
>
<template #default="scope">
<span v-if="scope.row.is_shutdown"
>停机</span
>
<span v-else>其他</span>
</template>
</el-table-column>
<el-table-column
label="发生时间"
prop="start_time"
></el-table-column>
<el-table-column
label="结束时间"
prop="end_time"
></el-table-column>
<el-table-column
label="原因类别"
prop="cate"
></el-table-column>
<el-table-column
label="异常名称"
prop="title"
></el-table-column>
<el-table-column
label="事件原因"
prop="reason"
></el-table-column>
<el-table-column
label="处置措施"
prop="measure"
></el-table-column>
<el-table-column
label="停机时长"
prop="duration"
></el-table-column>
</scTable>
</el-main>
</el-container>
</template>
<script>
export default {
data() {
return {
query: {
type: 1,
month: '',
year: '',
mgroup: '',
start_time__gt: '',
start_time__lt: '',
shift: '',
},
params:{
mgroup: "",
start_time__gt: '',
start_time__lt: '',
},
value1:[],
materialList: [],
mgroupOptions: [],
tableName: '班组成本计算',
options: [
// { id: 0, name: '' },
{ id: 1, name: '日统计' },
{ id: 2, name: '月统计' },
],
tableNmae: '',
tableData1: [],
apiObjStlog: null,
sourceData: {}
};
},
mounted() {
var myDate = new Date();
let month = myDate.getMonth() + 1;
if (month < 10) {
month = '0' + month;
}
this.getShift();
this.getMgroup();
},
methods: {
//
getMgroup() {
this.$API.mtm.mgroup.list.req({ page: 0, cate: 'section' }).then(res => {
res.forEach(item => {
this.mgroupOptions.push(item);
})
this.mgroupOptions = this.mgroupOptions.reverse();
this.query.mgroup = this.mgroupOptions[0].id;
this.params.mgroup = this.mgroupOptions[0].id;
this.apiObjStlog = this.$API.wpm.stlog.list;
this.tableName = this.mgroupOptions[0].name;
this.getTableData();
})
},
//
getShift() {
this.$API.mtm.shift.list.req({ page: 0 }).then(res => {
this.optionsShift = res;
})
},
//
// getData() {
// let that = this;
// that.tableData1 = [];
// let params = {};
// params.mgroup = that.query.mgroup;
// // if (that.query.type == 0) {//
// // arr = that.query.day.split('-');
// // params.year_s = Number(arr[0]);
// // params.month_s = Number(arr[1]);
// // params.day_s = Number(arr[2]);
// // params.type = "day_s"
// // } else if (that.query.type == 1) {//
// // arr = that.query.month.split('-');
// // params.start_time__year = Number(arr[0]);
// // params.start_time__month = Number(arr[1]);
// // params.start_time__day = Number(arr[2]);
// // } else {//
// // params.start_time__year = Number(that.query.year);
// // params.start_time__month = Number(that.query.month);
// // }
// params.start_time__gt = that.query[0];
// params.start_time__lt = that.query[1];
// this.$API.wpm.stlog.list.req(params).then(res => {
// that.apiObjStlog = res;
// })
// },
getTableData() {
let that = this;
let arr = [];
if (that.query.type == 1) {
this.query.start_time__gt = this.value1[0];
this.query.start_time__lt = this.value1[1];}
else if (that.query.type == 2) {
console.log(this.query.month);
arr = that.query.month.split('-');
this.query.start_time__year = Number(arr[0]);
this.query.start_time__month = Number(arr[1]);
}
this.$refs.stlogTable.queryData(this.query);
},
handlePrint() {
this.$PRINT('#myReport');
},
exportExcel() {
this.exportLoading = true;
this.$XLSX('#myTable', this.tableName)
this.exportLoading = false;
},
}
};
</script>
<style scoped>
.printContainer {
width: 100%;
overflow-x: scroll;
}
</style>

View File

@ -204,22 +204,22 @@
that.header2Obj=[{name:'辅料',lengths:3},{name:'干混生料',lengths:4}];
that.header2 = ['辅料','干混生料'];//
// that.header3 = ['','Fe2O3','','','Fe2O3','','CaO'];//
that.header4 = ['平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率'];//
that.header4 = ['平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率'];//
}else if(that.deptName=='烧成车间'){
that.header2Obj=[{name:'入窑生料',lengths:4},{name:'熟料',lengths:4}];
that.header2 = ['入窑生料','熟料'];//
// that.header3 = ['CaO','Fe2O3','','','','f-CaO','',''];//
that.header4 = ['平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率'];//
that.header4 = ['平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率'];//
}else{
that.header2Obj=[{name:'出磨水泥',lengths:3}];
that.header2 = ['出磨水泥'];//
// that.header3 = ['','SO3',''];//
that.header4 = ['平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率'];//
that.header4 = ['平均值','检次','合次','格率','平均值','检次','合次','格率','平均值','检次','合次','格率'];//
}
let params = {page: 0};
let arr = [];
if(that.query.type==0){//
console.log(that.query.month)
arr = that.query.month.split('-');
params.year_s = arr[0];
params.month_s = arr[1];
@ -248,6 +248,7 @@
}
if(that.deptName=='原料车间'){
wrapArr[ind].push(item)
}else if(that.deptName=='烧成车间'){
if(item.mgroup_name=='回转窑'){
wrapArr[ind][1]=item
@ -258,7 +259,6 @@
wrapArr[ind].push(item)
}
});
wrapArr = wrapArr.filter(item=>{
return item
})
@ -269,6 +269,7 @@
let time =item1[0].day_s!=null? item1[0].year_s+'.'+item1[0].month_s+'.'+item1[0].day_s:item1[0].year_s+'.'+item1[0].month_s;
itemArr.push(time)
//
console.log(item1)
item1.forEach(item2=>{
let data2 =item2.qua_data;
//
@ -285,22 +286,22 @@
header4tem.push('平均值')
header4tem.push('检次')
header4tem.push('合次')
header4tem.push('格率')
header4tem.push('格率')
let indexObj = header2tem.indexOf(item3.material_name);
if(indexObj>0&&index3==0){
let inde = indexObj-1;
let ind =header2Objtem[inde].lengths*4+1;
itemArr[ind] = item3.val_avg.toFixed(2);
itemArr[ind] = (item3.val_avg).toFixed(2);
itemArr.push(item3.num_test)
itemArr.push(item3.num_ok)
let pass = (item3.rate_pass).toFixed(2);
pass= pass+'%';
itemArr.push(pass)
}else{
itemArr.push(item3.val_avg.toFixed(2))
itemArr.push(item3.num_test)
itemArr.push(Number(item3.val_avg).toFixed(2));
itemArr.push(item3.num_test);
itemArr.push(item3.num_ok)
let pass = (item3.rate_pass).toFixed(2);
let pass = Number(item3.rate_pass).toFixed(2);
pass= pass+'%';
itemArr.push(pass)
}
@ -332,7 +333,6 @@
if(header4.length>0){
that.header4 = header4;
}
console.log(innerArr)
this.$forceUpdate();
innerArr.forEach(item=>{
if(item.length>1){

View File

@ -63,8 +63,8 @@
<td class="numCell" v-if="index==0" rowspan="5">{{item[1]}}</td>
<td class="numCell" v-else-if="index==5" rowspan="9">{{item[1]}}</td>
<td class="numCell" v-else-if="index==14" rowspan="14">{{item[1]}}</td>
<td class="numCell" v-else-if="index==28" rowspan="5">{{item[1]}}</td>
<td class="numCell" v-else-if="index==33" rowspan="6">{{item[1]}}</td>
<td class="numCell" v-else-if="index==28" rowspan="4">{{item[1]}}</td>
<td class="numCell" v-else-if="index==32" rowspan="6">{{item[1]}}</td>
<td class="numCell" v-else-if="index>38">{{item[1]}}</td>
<td class="numCell" style="width: 180px !important;">{{item[2]}}</td>
<td class="numCell" v-if="index<39" colspan="3">{{item[3]}}</td>
@ -129,23 +129,16 @@
[30,'成本','日生料成本(元/吨)'],
[31,'成本','日熟料成本(元/吨)'],
[32,'成本','日水泥粉磨成本(元/吨)'],
[33,'成本','日水泥包装成本(元/吨)'],
// [33,'','(/)'],
[34,'耗电量','日电石渣耗电量kw.h'],
[35,'耗电量','日生料耗电量kw.h'],
[36,'耗电量','日熟料耗电量kw.h'],
[37,'耗电量','日水泥粉磨耗电量kw.h'],
[38,'耗电量','日水泥包装耗电量kw.h'],
[39,'耗电量','日生活区耗电量kw.h'],
[33,'耗电量','日电石渣耗电量kw.h'],
[34,'耗电量','日生料耗电量kw.h'],
[35,'耗电量','日熟料耗电量kw.h'],
[36,'耗电量','日水泥粉磨耗电量kw.h'],
[37,'耗电量','日水泥包装耗电量kw.h'],
[38,'耗电量','日生活区耗电量kw.h'],
['生产异常动态','工段','类别','原因','处置措施','处置人'],
['生产异常动态','电石渣'],
['生产异常动态','原料磨'],
['生产异常动态','回转窑'],
['生产异常动态','煤磨'],
['生产异常动态','水泥磨'],
],
year:'',
month:'',
@ -223,23 +216,23 @@
that.tableDatas[12][3] = dataList.水泥磨.elec_consume_unit;
that.tableDatas[13][3] = dataList.水泥包装.elec_consume_unit;
//(t)
that.tableDatas[14][3] = dataList.电石渣.production_hour;
that.tableDatas[16][3] = dataList.原料磨.production_hour;
that.tableDatas[18][3] = dataList.回转窑.production_hour;
that.tableDatas[20][3] = dataList.水泥磨.production_hour;
that.tableDatas[14][3] = dataList.电石渣.total_production;
that.tableDatas[16][3] = dataList.原料磨.total_production;
that.tableDatas[18][3] = dataList.回转窑.total_production;
that.tableDatas[20][3] = dataList.水泥磨.total_production;
//(/)
that.tableDatas[28][3] = dataList.电石渣.production_cost_unit;
that.tableDatas[29][3] = dataList.原料磨.production_cost_unit;
that.tableDatas[30][3] = dataList.回转窑.production_cost_unit;
that.tableDatas[31][3] = dataList.水泥磨.production_cost_unit;
that.tableDatas[32][3] = dataList.水泥包装.production_cost_unit;
// that.tableDatas[32][3] = dataList..production_cost_unit;
//kw.h
that.tableDatas[33][3] = dataList.电石渣.elec_consume;
that.tableDatas[34][3] = dataList.原料磨.elec_consume;
that.tableDatas[35][3] = dataList.回转窑.elec_consume;
that.tableDatas[36][3] = dataList.煤磨.elec_consume;
that.tableDatas[37][3] = dataList.水泥磨.elec_consume;
that.tableDatas[38][3] = dataList.水泥包装.elec_consume;
that.tableDatas[32][3] = dataList.电石渣.elec_consume;
that.tableDatas[33][3] = dataList.原料磨.elec_consume;
that.tableDatas[34][3] = dataList.回转窑.elec_consume;
that.tableDatas[35][3] = dataList.煤磨.elec_consume;
that.tableDatas[36][3] = dataList.水泥磨.elec_consume;
that.tableDatas[37][3] = dataList.水泥包装.elec_consume;
// that.tableDatas[39][3] = dataList..elec_consume;
}).then(res=>{
//
@ -257,10 +250,10 @@
if(this.type=='day'){
ind = 'goal_val_'+that.month;
}
that.tableDatas[15][3] = dataList1.电石渣&&dataList1.电石渣[ind]!==0&&dataList1.电石渣[ind]!==''&&that.tableDatas[14][3]!==''?(that.tableDatas[14][3] /dataList1.电石渣[ind])*100:'/';
that.tableDatas[17][3] = dataList1.原料磨&&dataList1.原料磨[ind]!==0&&dataList1.原料磨[ind]!==''&&that.tableDatas[14][3]!==''?(that.tableDatas[16][3] /dataList1.原料磨[ind])*100:'/';
that.tableDatas[19][3] = dataList1.回转窑&&dataList1.回转窑[ind]!==0&&dataList1.回转窑[ind]!==''&&that.tableDatas[14][3]!==''?(that.tableDatas[18][3] /dataList1.回转窑[ind])*100:'/';
that.tableDatas[21][3] = dataList1.水泥磨&&dataList1.水泥磨[ind]!==0&&dataList1.水泥磨[ind]!==''&&that.tableDatas[14][3]!==''?(that.tableDatas[20][3] /dataList1.水泥磨[ind])*100:'/';
that.tableDatas[15][3] = dataList1.电石渣&&dataList1.电石渣[ind]!==0&&dataList1.电石渣[ind]!==''&&that.tableDatas[14][3]!==''?((that.tableDatas[14][3] /dataList1.电石渣[ind])*100).toFixed(2):'/';
that.tableDatas[17][3] = dataList1.原料磨&&dataList1.原料磨[ind]!==0&&dataList1.原料磨[ind]!==''&&that.tableDatas[14][3]!==''?((that.tableDatas[16][3] /dataList1.原料磨[ind])*100).toFixed(2):'/';
that.tableDatas[19][3] = dataList1.回转窑&&dataList1.回转窑[ind]!==0&&dataList1.回转窑[ind]!==''&&that.tableDatas[14][3]!==''?((that.tableDatas[18][3] /dataList1.回转窑[ind])*100).toFixed(2):'/';
that.tableDatas[21][3] = dataList1.水泥磨&&dataList1.水泥磨[ind]!==0&&dataList1.水泥磨[ind]!==''&&that.tableDatas[14][3]!==''?((that.tableDatas[20][3] /dataList1.水泥磨[ind])*100).toFixed(2):'/';
})
}).then(res=>{
let obj1 = {};
@ -271,7 +264,7 @@
obj1.day_s = this.day;
that.$API.enm.enstat2.req(obj1).then((res1) => {
if(res1.length>0){
that.tableDatas[22][3]=res1[0].clinker_val;
that.tableDatas[22][3]=res1[0].bulk_clinker_val;
that.tableDatas[24][3] = res1[0].bulk_cement_val;
that.tableDatas[26][3] = res1[0].bag_cement_val;
}
@ -283,7 +276,7 @@
obj2.page = 0;
that.$API.enm.enstat2.req(obj2).then((res2) => {
if(res2.length>0){
that.tableDatas[23][3] = res2[0].clinker_val;
that.tableDatas[23][3] = res2[0].bulk_clinker_val;
that.tableDatas[25][3] = res2[0].bulk_cement_val;
that.tableDatas[27][3] = res2[0].bag_cement_val;
}

View File

@ -35,13 +35,14 @@
<table border="1" cellspacing="0" :key="timeStamp" id="numTable" class="myTable">
<thead class="myTableHead">
<tr>
<th colspan="7">生产月报</th>
<th colspan="9">生产月报</th>
</tr>
<tr>
<th>序号</th>
<th colspan="2">项目</th>
<th colspan="2">环比增长</th>
<th colspan="2">同比增长</th>
<th >月数据</th>
<th>环比增长</th>
<th>同比增长</th>
</tr>
</thead>
<tr v-for="(item,index) in tableDatas" :key="index">
@ -53,10 +54,9 @@
<td class="numCell" v-else-if="index==33" rowspan="6">{{item[1]}}</td>
<td class="numCell" v-else-if="index>38">{{item[1]}}</td>
<td class="numCell" style="width: 180px !important;">{{item[2]}}</td>
<td class="numCell" v-if="index<39" colspan="2">{{item[3]}}</td>
<td class="numCell" v-else>{{item[3]}}</td>
<td class="numCell" >{{item[3]}}</td>
<td class="numCell">{{item[4]}}</td>
<td class="numCell" v-if="index>38">{{item[5]}}</td>
<td class="numCell">{{item[5]}}</td>
</tr>
</table>
</div>
@ -103,27 +103,19 @@
[29,'成本','电石渣成本(元/吨)'],
[30,'成本','生料成本(元/吨)'],
[31,'成本','熟料成本(元/吨)'],
[32,'成本','水泥粉磨成本(元/吨)'],
[33,'成本','水泥包装成本(元/吨)'],
[29,'成本','电石渣成本(元/吨)'],
[30,'成本','生料成本(元/吨)'],
[31,'成本','熟料成本(元/吨)'],
[32,'成本','水泥粉磨成本(元/吨)'],
[33,'成本','水泥包装成本(元/吨)'],
[34,'耗电量','日电石渣耗电量kw.h'],
[35,'耗电量','日生料耗电量kw.h'],
[36,'耗电量','日熟料耗电量kw.h'],
[37,'耗电量','日水泥粉磨耗电量kw.h'],
[38,'耗电量','日水泥包装耗电量kw.h'],
[39,'耗电量','日生活区耗电量kw.h'],
['生产异常动态','工段','类别','原因','处置措施','处置人'],
['生产异常动态','电石渣'],
['生产异常动态','原料磨'],
['生产异常动态','回转窑'],
['生产异常动态','煤磨'],
['生产异常动态','水泥磨'],
[34,'耗电量','月电石渣耗电量kw.h'],
[35,'耗电量','月生料耗电量kw.h'],
[36,'耗电量','月熟料耗电量kw.h'],
[37,'耗电量','月水泥粉磨耗电量kw.h'],
[38,'耗电量','月水泥包装耗电量kw.h'],
[39,'耗电量','月生活区耗电量kw.h'],
],
year:'',
month:'',
@ -176,40 +168,71 @@
dataList[label] = item;
});
//
that.nowData[0] = dataList.原料磨.production_hour;
that.nowData[1] = dataList.电石渣.production_hour;
that.nowData[2] = dataList.煤磨.production_hour;
that.nowData[3] = dataList.回转窑.production_hour;
that.nowData[0] = dataList.原料磨.production_hour;
that.tableDatas[0][3] = dataList.原料磨.production_hour;
that.nowData[1] = dataList.电石渣.production_hour;
that.tableDatas[1][3] = dataList.电石渣.production_hour;
that.nowData[2] = dataList.煤磨.production_hour;
that.tableDatas[2][3] = dataList.煤磨.production_hour;
that.nowData[3] = dataList.回转窑.production_hour;
that.tableDatas[3][3] = dataList.回转窑.production_hour;
that.nowData[4] = dataList.水泥磨.production_hour;
that.tableDatas[4][3] = dataList.水泥磨.production_hour;
//kw.h/t
that.nowData[5] = dataList.回转窑.celec_consume_unit;
that.tableDatas[5][3] = dataList.回转窑.celec_consume_unit;
that.nowData[6] = dataList.回转窑.coal_consume_unit;
that.tableDatas[6][3] = dataList.回转窑.coal_consume_unit;
that.nowData[7] = dataList.回转窑.cen_consume_unit;
that.tableDatas[7][3] = dataList.回转窑.cen_consume_unit;
that.nowData[8] = dataList.水泥磨.cen_consume_unit;
that.tableDatas[8][3] = dataList.水泥磨.cen_consume_unit;
that.nowData[9] = dataList.电石渣.elec_consume_unit;
that.tableDatas[9][3] = dataList.电石渣.elec_consume_unit;
that.nowData[10] = dataList.原料磨.elec_consume_unit;
that.tableDatas[10][3] = dataList.原料磨.elec_consume_unit;
that.nowData[11] = dataList.回转窑.elec_consume_unit;
that.tableDatas[11][3] = dataList.回转窑.elec_consume_unit;
that.nowData[12] = dataList.水泥磨.elec_consume_unit;
that.tableDatas[12][3] = dataList.水泥磨.elec_consume_unit;
that.nowData[13] = dataList.水泥包装.elec_consume_unit;
that.tableDatas[13][3] = dataList.水泥磨.elec_consume_unit;
//(t)
that.nowData[14] = dataList.电石渣.production_hour;
that.tableDatas[14][3] = dataList.电石渣.production_hour;
that.nowData[16] = dataList.原料磨.production_hour;
that.tableDatas[16][3] = dataList.原料磨.production_hour;
that.nowData[18] = dataList.回转窑.production_hour;
that.tableDatas[18][3] = dataList.回转窑.production_hour;
that.nowData[20] = dataList.水泥磨.production_hour;
that.tableDatas[20][3] = dataList.水泥磨.production_hour;
//(/)
that.nowData[28] = dataList.电石渣.production_cost_unit;
that.tableDatas[28][3] = dataList.电石渣.production_cost_unit;
that.nowData[29] = dataList.原料磨.production_cost_unit;
that.tableDatas[29][3] = dataList.原料磨.production_cost_unit;
that.nowData[30] = dataList.回转窑.production_cost_unit;
that.tableDatas[30][3] = dataList.回转窑.production_cost_unit;
that.nowData[31] = dataList.水泥磨.production_cost_unit;
that.tableDatas[31][3] = dataList.水泥磨.production_cost_unit;
that.nowData[32] = dataList.水泥包装.production_cost_unit;
that.tableDatas[32][3] = dataList.水泥包装.production_cost_unit;
//kw.h
that.nowData[33] = dataList.电石渣.elec_consume;
that.tableDatas[33][3] = dataList.电石渣.elec_consume;
that.nowData[34] = dataList.原料磨.elec_consume;
that.tableDatas[34][3] = dataList.原料磨.elec_consume;
that.nowData[35] = dataList.回转窑.elec_consume;
that.nowData[36] = dataList.煤磨.elec_consume;
that.nowData[37] = dataList.水泥磨.elec_consume;
that.nowData[38] = dataList.水泥包装.elec_consume;
// that.nowData[39] = dataList..elec_consume;
that.tableDatas[35][3] = dataList.回转窑.elec_consume;
// that.nowData[36] = dataList..elec_consume;
// that.tableDatas[36][3] = dataList..elec_consume;
that.nowData[36] = dataList.水泥磨.elec_consume;
that.tableDatas[36][3] = dataList.水泥磨.elec_consume;
that.nowData[37] = dataList.水泥包装.elec_consume;
that.tableDatas[37][3] = dataList.水泥包装.elec_consume;
that.nowData[38] = dataList.生活区.elec_consume;
that.tableDatas[38][3] = dataList.生活区.elec_consume;
}).then(res=>{
//
let params1 = {};
@ -223,9 +246,13 @@
dataList1[label] = item1;
});
that.nowData[15] = dataList1.电石渣&&dataList1.电石渣.goal_val!==0&&dataList1.电石渣.goal_val!==''&&that.nowData[14]!==''?(that.nowData[14] /dataList1.电石渣.goal_val)*100:'/';
that.tableDatas[15][3] = dataList1.电石渣&&dataList1.电石渣.goal_val!==0&&dataList1.电石渣.goal_val!==''&&that.nowData[14]!==''?((that.nowData[14] /dataList1.电石渣.goal_val)*100).toFixed(2):'/';
that.nowData[17] = dataList1.原料磨&&dataList1.原料磨.goal_val!==0&&dataList1.原料磨.goal_val!==''&&that.nowData[14]!==''?(that.nowData[16] /dataList1.原料磨.goal_val)*100:'/';
that.tableDatas[17][3] = dataList1.原料磨&&dataList1.原料磨.goal_val!==0&&dataList1.原料磨.goal_val!==''&&that.nowData[14]!==''?((that.nowData[16] /dataList1.原料磨.goal_val)*100).toFixed(2):'/';
that.nowData[19] = dataList1.回转窑&&dataList1.回转窑.goal_val!==0&&dataList1.回转窑.goal_val!==''&&that.nowData[14]!==''?(that.nowData[18] /dataList1.回转窑.goal_val)*100:'/';
that.tableDatas[19][3] = dataList1.回转窑&&dataList1.回转窑.goal_val!==0&&dataList1.回转窑.goal_val!==''&&that.nowData[14]!==''?((that.nowData[18] /dataList1.回转窑.goal_val)*100).toFixed(2):'/';
that.nowData[21] = dataList1.水泥磨&&dataList1.水泥磨.goal_val!==0&&dataList1.水泥磨.goal_val!==''&&that.nowData[14]!==''?(that.nowData[20] /dataList1.水泥磨.goal_val)*100:'/';
that.tableDatas[21][3] = dataList1.水泥磨&&dataList1.水泥磨.goal_val!==0&&dataList1.水泥磨.goal_val!==''&&that.nowData[14]!==''?((that.nowData[20] /dataList1.水泥磨.goal_val)*100).toFixed(2):'/';
})
}).then(res=>{
let obj1 = {};
@ -236,8 +263,11 @@
that.$API.enm.enstat2.req(obj1).then((res1) => {
if(res1.length>0){
that.nowData[22]=res1[0].clinker_val;
that.tableDatas[22][3]=res1[0].clinker_val;
that.nowData[24] = res1[0].bulk_cement_val;
that.tableDatas[24][3] = res1[0].bulk_cement_val;
that.nowData[26] = res1[0].bag_cement_val;
that.tableDatas[26][3] = res1[0].bag_cement_val;
}
})
let obj2 = {};
@ -247,14 +277,30 @@
that.$API.enm.enstat2.req(obj2).then((res2) => {
if(res2.length>0){
that.nowData[23] = res2[0].clinker_val;
that.tableDatas[23][3] = res2[0].clinker_val;
that.nowData[25] = res2[0].bulk_cement_val;
that.tableDatas[25][3] = res2[0].bulk_cement_val;
that.nowData[27] = res2[0].bag_cement_val;
that.tableDatas[27][3] = res2[0].bag_cement_val;
}
})
}).then(res=>{
this.getHuanbiData();
});
},
canCompute(a,b){
debugger;
if(b!=0&&b!=='/'&&b!==''&&b!==null){
if(a!=='/'&&a!==''&&a!==null){
a= Number(a)
b= Number(b)
let num =((a-b)/b*100).toFixed(2)
return num
}
}else{
return 0
}
},
getHuanbiData(){
let that = this;
let params = {};
@ -268,53 +314,41 @@
let label = item.mgroup_name;
dataList[label] = item;
});
function canCompute(a,b){
debugger;
if(b!=0&&b!=='/'&&b!==''&&b!==null){
if(a!=='/'&&a!==''&&a!==null){
a= Number(a)
b= Number(b)
let num =(a-b)/b*100
return num
}
}else{
return 0
}
}
//
that.tableDatas[0][3] = canCompute(that.nowData[0],dataList.原料磨.production_hour);
that.tableDatas[1][3] = canCompute(that.nowData[1],dataList.电石渣.production_hour);
that.tableDatas[2][3] = canCompute(that.nowData[2],dataList.煤磨.production_hour);
that.tableDatas[3][3] = canCompute(that.nowData[3],dataList.回转窑.production_hour);
that.tableDatas[4][3] = canCompute(that.nowData[4],dataList.水泥磨.production_hour);
that.tableDatas[0][4] = this.canCompute(that.nowData[0],dataList.原料磨.production_hour);
that.tableDatas[1][4] = this.canCompute(that.nowData[1],dataList.电石渣.production_hour);
that.tableDatas[2][4] = this.canCompute(that.nowData[2],dataList.煤磨.production_hour);
that.tableDatas[3][4] = this.canCompute(that.nowData[3],dataList.回转窑.production_hour);
that.tableDatas[4][4] = this.canCompute(that.nowData[4],dataList.水泥磨.production_hour);
//kw.h/t
that.tableDatas[5][3] = canCompute(that.nowData[5],dataList.回转窑.celec_consume_unit);
that.tableDatas[6][3] = canCompute(that.nowData[6],dataList.回转窑.coal_consume_unit);
that.tableDatas[7][3] = canCompute(that.nowData[7],dataList.回转窑.cen_consume_unit);
that.tableDatas[8][3] = canCompute(that.nowData[8],dataList.水泥磨.cen_consume_unit);
that.tableDatas[9][3] = canCompute(that.nowData[9],dataList.电石渣.elec_consume_unit);
that.tableDatas[10][3] = canCompute(that.nowData[10],dataList.原料磨.elec_consume_unit);
that.tableDatas[11][3] = canCompute(that.nowData[11],dataList.回转窑.elec_consume_unit);
that.tableDatas[12][3] = canCompute(that.nowData[12],dataList.水泥磨.elec_consume_unit);
that.tableDatas[13][3] = canCompute(that.nowData[13], dataList.水泥包装.elec_consume_unit);
that.tableDatas[5][4] = this.canCompute(that.nowData[5],dataList.回转窑.celec_consume_unit);
that.tableDatas[6][4] = this.canCompute(that.nowData[6],dataList.回转窑.coal_consume_unit);
that.tableDatas[7][4] = this.canCompute(that.nowData[7],dataList.回转窑.cen_consume_unit);
that.tableDatas[8][4] = this.canCompute(that.nowData[8],dataList.水泥磨.cen_consume_unit);
that.tableDatas[9][4] = this.canCompute(that.nowData[9],dataList.电石渣.elec_consume_unit);
that.tableDatas[10][4] = this.canCompute(that.nowData[10],dataList.原料磨.elec_consume_unit);
that.tableDatas[11][4] = this.canCompute(that.nowData[11],dataList.回转窑.elec_consume_unit);
that.tableDatas[12][4] = this.canCompute(that.nowData[12],dataList.水泥磨.elec_consume_unit);
that.tableDatas[13][4] = this.canCompute(that.nowData[13], dataList.水泥包装.elec_consume_unit);
//(t)
that.tableDatas[14][3] = canCompute(that.nowData[14],dataList.电石渣.production_hour);
that.tableDatas[16][3] = canCompute(that.nowData[16],dataList.原料磨.production_hour);
that.tableDatas[18][3] = canCompute(that.nowData[18],dataList.回转窑.production_hour);
that.tableDatas[20][3] = canCompute(that.nowData[20],dataList.水泥磨.production_hour);
that.tableDatas[14][4] = this.canCompute(that.nowData[14],dataList.电石渣.production_hour);
that.tableDatas[16][4] = this.canCompute(that.nowData[16],dataList.原料磨.production_hour);
that.tableDatas[18][4] = this.canCompute(that.nowData[18],dataList.回转窑.production_hour);
that.tableDatas[20][4] = this.canCompute(that.nowData[20],dataList.水泥磨.production_hour);
//(/)
that.tableDatas[28][3] = canCompute(that.nowData[28],dataList.电石渣.production_cost_unit);
that.tableDatas[29][3] = canCompute(that.nowData[29],dataList.原料磨.production_cost_unit);
that.tableDatas[30][3] = canCompute(that.nowData[30],dataList.回转窑.production_cost_unit);
that.tableDatas[31][3] = canCompute(that.nowData[31],dataList.水泥磨.production_cost_unit);
that.tableDatas[32][3] = canCompute(that.nowData[32],dataList.水泥包装.production_cost_unit);
that.tableDatas[28][4] = this.canCompute(that.nowData[28],dataList.电石渣.production_cost_unit);
that.tableDatas[29][4] = this.canCompute(that.nowData[29],dataList.原料磨.production_cost_unit);
that.tableDatas[30][4] = this.canCompute(that.nowData[30],dataList.回转窑.production_cost_unit);
that.tableDatas[31][4] = this.canCompute(that.nowData[31],dataList.水泥磨.production_cost_unit);
that.tableDatas[32][4] = this.canCompute(that.nowData[32],dataList.水泥包装.production_cost_unit);
//kw.h
that.tableDatas[33][3] = canCompute(that.nowData[33],dataList.电石渣.elec_consume);
that.tableDatas[34][3] = canCompute(that.nowData[34],dataList.原料磨.elec_consume);
that.tableDatas[35][3] = canCompute(that.nowData[35],dataList.回转窑.elec_consume);
that.tableDatas[36][3] = canCompute(that.nowData[36],dataList.煤磨.elec_consume);
that.tableDatas[37][3] = canCompute(that.nowData[37],dataList.水泥磨.elec_consume);
that.tableDatas[38][3] = canCompute(that.nowData[38],dataList.水泥包装.elec_consume);
that.tableDatas[33][4] = this.canCompute(that.nowData[33],dataList.电石渣.elec_consume);
that.tableDatas[34][4] = this.canCompute(that.nowData[34],dataList.原料磨.elec_consume);
that.tableDatas[35][4] = this.canCompute(that.nowData[35],dataList.回转窑.elec_consume);
that.tableDatas[36][4] = this.canCompute(that.nowData[36],dataList.煤磨.elec_consume);
that.tableDatas[37][4] = this.canCompute(that.nowData[37],dataList.水泥磨.elec_consume);
that.tableDatas[38][4] = this.canCompute(that.nowData[38],dataList.水泥包装.elec_consume);
// that.tableDatas[39][3] = dataList..elec_consume;
}).then(res=>{
//
@ -328,10 +362,10 @@
let label = item1.mgroup_name;
dataList1[label] = item1;
});
that.tableDatas[15][3] = dataList1.电石渣&&dataList1.电石渣.goal_val!==0&&dataList1.电石渣.goal_val!==''&&that.tableDatas[14][3]!==''?(that.tableDatas[14][3] /dataList1.电石渣.goal_val)*100:'/';
that.tableDatas[17][3] = dataList1.原料磨&&dataList1.原料磨.goal_val!==0&&dataList1.原料磨.goal_val!==''&&that.tableDatas[14][3]!==''?(that.tableDatas[16][3] /dataList1.原料磨.goal_val)*100:'/';
that.tableDatas[19][3] = dataList1.回转窑&&dataList1.回转窑.goal_val!==0&&dataList1.回转窑.goal_val!==''&&that.tableDatas[14][3]!==''?(that.tableDatas[18][3] /dataList1.回转窑.goal_val)*100:'/';
that.tableDatas[21][3] = dataList1.水泥磨&&dataList1.水泥磨.goal_val!==0&&dataList1.水泥磨.goal_val!==''&&that.tableDatas[14][3]!==''?(that.tableDatas[20][3] /dataList1.水泥磨.goal_val)*100:'/';
that.tableDatas[15][4] = dataList1.电石渣&&dataList1.电石渣.goal_val!==0&&dataList1.电石渣.goal_val!==''&&that.tableDatas[14][4]!==''?((that.tableDatas[14][4] /dataList1.电石渣.goal_val)*100).toFixed(2):'/';
that.tableDatas[17][4] = dataList1.原料磨&&dataList1.原料磨.goal_val!==0&&dataList1.原料磨.goal_val!==''&&that.tableDatas[14][4]!==''?((that.tableDatas[16][4] /dataList1.原料磨.goal_val)*100).toFixed(5):'/';
that.tableDatas[19][4] = dataList1.回转窑&&dataList1.回转窑.goal_val!==0&&dataList1.回转窑.goal_val!==''&&that.tableDatas[14][4]!==''?((that.tableDatas[18][4] /dataList1.回转窑.goal_val)*100).toFixed(2):'/';
that.tableDatas[21][4] = dataList1.水泥磨&&dataList1.水泥磨.goal_val!==0&&dataList1.水泥磨.goal_val!==''&&that.tableDatas[14][4]!==''?((that.tableDatas[20][4] /dataList1.水泥磨.goal_val)*100).toFixed(2):'/';
})
}).then(res=>{
let obj1 = {};
@ -341,9 +375,9 @@
obj1.type = 'month_s';
that.$API.enm.enstat2.req(obj1).then((res1) => {
if(res1.length>0){
that.tableDatas[22][3]= canCompute(that.nowData[22],res1[0].clinker_val);
that.tableDatas[24][3] = canCompute(that.nowData[24],res1[0].bulk_cement_val);
that.tableDatas[26][3] = canCompute(that.nowData[26],res1[0].bag_cement_val);
that.tableDatas[22][4]= this.canCompute(that.nowData[22],res1[0].clinker_val);
that.tableDatas[24][4] = this.canCompute(that.nowData[24],res1[0].bulk_cement_val);
that.tableDatas[26][4] = this.canCompute(that.nowData[26],res1[0].bag_cement_val);
}
})
let obj2 = {};
@ -352,9 +386,9 @@
obj2.year_s = this.year;
that.$API.enm.enstat2.req(obj2).then((res2) => {
if(res2.length>0){
that.tableDatas[23][3] = canCompute(that.nowData[23],res2[0].clinker_val);
that.tableDatas[25][3] = canCompute(that.nowData[25],res2[0].bulk_cement_val);
that.tableDatas[27][3] = canCompute(that.nowData[27],res2[0].bag_cement_val);
that.tableDatas[23][4] = this.canCompute(that.nowData[23],res2[0].clinker_val);
that.tableDatas[25][4] = this.canCompute(that.nowData[25],res2[0].bulk_cement_val);
that.tableDatas[27][4] = this.canCompute(that.nowData[27],res2[0].bag_cement_val);
}
})
}).then(res=>{
@ -369,45 +403,47 @@
params.month_s = that.month_t;
params.type = 'month_s';
this.$API.enm.enstat.req(params).then((res) => {
let dataList = {};
res.forEach(item => {
let label = item.mgroup_name;
dataList[label] = item;
});
if (res.length>0){
let dataList = {};
res.forEach(item => {
let label = item.mgroup_name;
dataList[label] = item;
});
//
that.tableDatas[0][4] = canCompute(that.nowData[0],dataList.原料磨.production_hour);
that.tableDatas[1][4] = canCompute(that.nowData[1],dataList.电石渣.production_hour);
that.tableDatas[2][4] = canCompute(that.nowData[2],dataList.煤磨.production_hour);
that.tableDatas[3][4] = canCompute(that.nowData[3],dataList.回转窑.production_hour);
that.tableDatas[4][4] = canCompute(that.nowData[4],dataList.水泥磨.production_hour);
that.tableDatas[0][5] = this.canCompute(that.nowData[0],dataList.原料磨.production_hour);
that.tableDatas[1][5] = this.canCompute(that.nowData[1],dataList.电石渣.production_hour);
that.tableDatas[2][5] = this.canCompute(that.nowData[2],dataList.煤磨.production_hour);
that.tableDatas[3][5] = this.canCompute(that.nowData[3],dataList.回转窑.production_hour);
that.tableDatas[4][5] = this.canCompute(that.nowData[4],dataList.水泥磨.production_hour);
//kw.h/t
that.tableDatas[5][4] = canCompute(that.nowData[5],dataList.回转窑.celec_consume_unit);
that.tableDatas[6][4] = canCompute(that.nowData[6],dataList.回转窑.coal_consume_unit);
that.tableDatas[7][4] = canCompute(that.nowData[7],dataList.回转窑.cen_consume_unit);
that.tableDatas[8][4] = canCompute(that.nowData[8],dataList.水泥磨.cen_consume_unit);
that.tableDatas[9][4] = canCompute(that.nowData[9],dataList.电石渣.elec_consume_unit);
that.tableDatas[10][4] = canCompute(that.nowData[10],dataList.原料磨.elec_consume_unit);
that.tableDatas[11][4] = canCompute(that.nowData[11],dataList.回转窑.elec_consume_unit);
that.tableDatas[12][4] = canCompute(that.nowData[12],dataList.水泥磨.elec_consume_unit);
that.tableDatas[13][4] = canCompute(that.nowData[13], dataList.水泥包装.elec_consume_unit);
that.tableDatas[5][5] = this.canCompute(that.nowData[5],dataList.回转窑.celec_consume_unit);
that.tableDatas[6][5] = this.canCompute(that.nowData[6],dataList.回转窑.coal_consume_unit);
that.tableDatas[7][5] = this.canCompute(that.nowData[7],dataList.回转窑.cen_consume_unit);
that.tableDatas[8][5] = this.canCompute(that.nowData[8],dataList.水泥磨.cen_consume_unit);
that.tableDatas[9][5] = this.canCompute(that.nowData[9],dataList.电石渣.elec_consume_unit);
that.tableDatas[10][5] = this.canCompute(that.nowData[10],dataList.原料磨.elec_consume_unit);
that.tableDatas[11][5] = this.canCompute(that.nowData[11],dataList.回转窑.elec_consume_unit);
that.tableDatas[12][5] = this.canCompute(that.nowData[12],dataList.水泥磨.elec_consume_unit);
that.tableDatas[13][5] = this.canCompute(that.nowData[13], dataList.水泥包装.elec_consume_unit);
//(t)
that.tableDatas[14][4] = canCompute(that.nowData[14],dataList.电石渣.production_hour);
that.tableDatas[16][4] = canCompute(that.nowData[16],dataList.原料磨.production_hour);
that.tableDatas[18][4] = canCompute(that.nowData[18],dataList.回转窑.production_hour);
that.tableDatas[20][4] = canCompute(that.nowData[20],dataList.水泥磨.production_hour);
that.tableDatas[14][5] = this.canCompute(that.nowData[14],dataList.电石渣.production_hour);
that.tableDatas[16][5] = this.canCompute(that.nowData[16],dataList.原料磨.production_hour);
that.tableDatas[18][5] = this.canCompute(that.nowData[18],dataList.回转窑.production_hour);
that.tableDatas[20][5] = this.canCompute(that.nowData[20],dataList.水泥磨.production_hour);
//(/)
that.tableDatas[28][4] = canCompute(that.nowData[28],dataList.电石渣.production_cost_unit);
that.tableDatas[29][4] = canCompute(that.nowData[29],dataList.原料磨.production_cost_unit);
that.tableDatas[30][4] = canCompute(that.nowData[30],dataList.回转窑.production_cost_unit);
that.tableDatas[31][4] = canCompute(that.nowData[31],dataList.水泥磨.production_cost_unit);
that.tableDatas[32][4] = canCompute(that.nowData[32],dataList.水泥包装.production_cost_unit);
that.tableDatas[28][5] = this.canCompute(that.nowData[28],dataList.电石渣.production_cost_unit);
that.tableDatas[29][5] = this.canCompute(that.nowData[29],dataList.原料磨.production_cost_unit);
that.tableDatas[30][5] = this.canCompute(that.nowData[30],dataList.回转窑.production_cost_unit);
that.tableDatas[31][5] = this.canCompute(that.nowData[31],dataList.水泥磨.production_cost_unit);
that.tableDatas[32][5] = this.canCompute(that.nowData[32],dataList.水泥包装.production_cost_unit);
//kw.h
that.tableDatas[33][4] = canCompute(that.nowData[33],dataList.电石渣.elec_consume);
that.tableDatas[34][4] = canCompute(that.nowData[34],dataList.原料磨.elec_consume);
that.tableDatas[35][4] = canCompute(that.nowData[35],dataList.回转窑.elec_consume);
that.tableDatas[36][4] = canCompute(that.nowData[36],dataList.煤磨.elec_consume);
that.tableDatas[37][4] = canCompute(that.nowData[37],dataList.水泥磨.elec_consume);
that.tableDatas[38][4] = canCompute(that.nowData[38],dataList.水泥包装.elec_consume);
that.tableDatas[33][5] = this.canCompute(that.nowData[33],dataList.电石渣.elec_consume);
that.tableDatas[34][5] = this.canCompute(that.nowData[34],dataList.原料磨.elec_consume);
that.tableDatas[35][5] = this.canCompute(that.nowData[35],dataList.回转窑.elec_consume);
that.tableDatas[36][5] = this.canCompute(that.nowData[36],dataList.煤磨.elec_consume);
that.tableDatas[37][5] = this.canCompute(that.nowData[37],dataList.水泥磨.elec_consume);
that.tableDatas[38][5] = this.canCompute(that.nowData[38],dataList.水泥包装.elec_consume);
}
// that.tableDatas[39][4] = dataList..elec_consume;
}).then(res=>{
//
@ -421,22 +457,22 @@
let label = item1.mgroup_name;
dataList1[label] = item1;
});
that.tableDatas[15][4] = dataList1.电石渣&&dataList1.电石渣.goal_val!==0&&dataList1.电石渣.goal_val!==''&&that.tableDatas[14][4]!==''?(that.tableDatas[14][4] /dataList1.电石渣.goal_val)*100:'/';
that.tableDatas[17][4] = dataList1.原料磨&&dataList1.原料磨.goal_val!==0&&dataList1.原料磨.goal_val!==''&&that.tableDatas[14][4]!==''?(that.tableDatas[16][4] /dataList1.原料磨.goal_val)*100:'/';
that.tableDatas[19][4] = dataList1.回转窑&&dataList1.回转窑.goal_val!==0&&dataList1.回转窑.goal_val!==''&&that.tableDatas[14][4]!==''?(that.tableDatas[18][4] /dataList1.回转窑.goal_val)*100:'/';
that.tableDatas[21][4] = dataList1.水泥磨&&dataList1.水泥磨.goal_val!==0&&dataList1.水泥磨.goal_val!==''&&that.tableDatas[14][4]!==''?(that.tableDatas[20][4] /dataList1.水泥磨.goal_val)*100:'/';
that.tableDatas[15][5] = dataList1.电石渣&&dataList1.电石渣.goal_val!==0&&dataList1.电石渣.goal_val!==''&&that.tableDatas[14][5]!==''&&that.tableDatas[14][5]!==undefined?(that.tableDatas[14][5] /dataList1.电石渣.goal_val)*100:'';
that.tableDatas[17][5] = dataList1.原料磨&&dataList1.原料磨.goal_val!==0&&dataList1.原料磨.goal_val!==''&&that.tableDatas[14][5]!==''&&that.tableDatas[14][5]!==undefined?(that.tableDatas[16][5] /dataList1.原料磨.goal_val)*100:'';
that.tableDatas[19][5] = dataList1.回转窑&&dataList1.回转窑.goal_val!==0&&dataList1.回转窑.goal_val!==''&&that.tableDatas[14][5]!==''&&that.tableDatas[14][5]!==undefined?(that.tableDatas[18][5] /dataList1.回转窑.goal_val)*100:'';
that.tableDatas[21][5] = dataList1.水泥磨&&dataList1.水泥磨.goal_val!==0&&dataList1.水泥磨.goal_val!==''&&that.tableDatas[14][5]!==''&&that.tableDatas[14][5]!==undefined?(that.tableDatas[20][5] /dataList1.水泥磨.goal_val)*100:'';
})
}).then(res=>{
let obj1 = {};
obj1.page = 0;
obj1.year_s = this.year_h;
obj1.year_s = this.year_t;
obj1.month_s = this.month_h;
obj1.type = 'month_s';
that.$API.enm.enstat2.req(obj1).then((res1) => {
if(res1.length>0){
that.tableDatas[22][4]= canCompute(that.nowData[22],res1[0].clinker_val);
that.tableDatas[24][4] = canCompute(that.nowData[24],res1[0].bulk_cement_val);
that.tableDatas[26][4] = canCompute(that.nowData[26],res1[0].bag_cement_val);
that.tableDatas[22][5]= this.canCompute(that.nowData[22],res1[0].clinker_val);
that.tableDatas[24][5] = this.canCompute(that.nowData[24],res1[0].bulk_cement_val);
that.tableDatas[26][5] = this.canCompute(that.nowData[26],res1[0].bag_cement_val);
}
})
let obj2 = {};
@ -445,9 +481,9 @@
obj2.year_s = this.year;
that.$API.enm.enstat2.req(obj2).then((res2) => {
if(res2.length>0){
that.tableDatas[23][4] = canCompute(that.nowData[23],res2[0].clinker_val);
that.tableDatas[25][4] = canCompute(that.nowData[25],res2[0].bulk_cement_val);
that.tableDatas[27][4] = canCompute(that.nowData[27],res2[0].bag_cement_val);
that.tableDatas[23][5] = this.canCompute(that.nowData[23],res2[0].clinker_val);
that.tableDatas[25][5] = this.canCompute(that.nowData[25],res2[0].bulk_cement_val);
that.tableDatas[27][5] = this.canCompute(that.nowData[27],res2[0].bag_cement_val);
}
})
})
@ -457,7 +493,7 @@
this.tableDatas[i][3] = '';
this.tableDatas[i][4] = '';
}
this.getData();
this.getNowData();
},
handlePrint() {
this.$PRINT('#myReport');

View File

@ -202,7 +202,7 @@
<td class="numCell">
{{ reportItem.run_rate }}
</td>
<td class="numCell">停机时长h</td>
<td class="numCell">停机时长s</td>
<td class="numCell">
{{ reportItem.shut_sec }}
</td>
@ -306,7 +306,7 @@
<td class="numCell">处置人</td>
</tr>
<tr v-for="item in sflogexpList" :key="item.id">
<td class="numCell">{{ item.happen_time }}</td>
<td class="numCell">{{ item.stlog_.start_time }}</td>
<td class="numCell">{{ item.stlog_.cate }}</td>
<td class="numCell">{{ item.stlog_.reason }}</td>
<td class="numCell">{{ item.stlog_.measure }}</td>
@ -415,6 +415,7 @@ export default {
that.$API.wpm.sflogexp.list
.req({ page: 0, sflog: id })
.then((res) => {
console.log("sflogexp", res);
that.sflogexpList = res;
});
},

View File

@ -467,7 +467,7 @@
<el-button
link
size="small"
@click="editStlog(scope.row)"
@click.stop="editStlog(scope.row)"
type="primary"
>编辑</el-button
>
@ -494,6 +494,7 @@
:height="heightTable"
hidePagination
highlightCurrentRow
hideDo
>
<el-table-column type="index" width="50" />
<el-table-column label="班组名称">
@ -589,7 +590,7 @@
ref="stlogDialog"
:current_sflog="current_sflog"
:mgroupId="mgroupId"
@success="sflogExpSuccess"
@success="stLogSuccess"
@closed="stlogVisiable = false"
></stlog-dialog>
</el-tab-pane>
@ -686,7 +687,6 @@ export default {
this.form = JSON.parse(form);
this.getMpoint();
this.getTeam();
this.getStlog();
let height = document.getElementById("elMain").clientHeight;
let heightdetail = document.getElementById("logDetail").clientHeight;
let heightTabs = height - heightdetail - 40;
@ -842,14 +842,14 @@ export default {
});
},
//***** fourth ****** */
//
getStlog() {
let obj = {};
obj.page = 0;
obj.mgroup = this.mgroupId;
this.$API.wpm.stlog.list.req(obj).then((res) => {
this.stlogList = res;
});
stLogSuccess(stlogid){
this.$refs.stlogTable.refresh();
if(stlogid != undefined || stlogid != null){
this.getSflogexp(stlogid);
}else{
this.sflogexpList = [];
}
},
//
@ -897,11 +897,8 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("删除成功");
this.getStlog();
this.stLogSuccess();
})
.catch((err) => {
this.$message.success(err);
});
});
},
//stlogsflogexp

View File

@ -423,7 +423,6 @@ export default {
obj.ordering = "report_sortstr";
obj.material__code__in = "elec,elec_0";
this.$API.enm.mpoint.list.req(obj).then((res) => {
console.log("mpoints", res);
let arr = [];
res.forEach((item) => {
arr.push(item.name);
@ -581,6 +580,9 @@ export default {
let data = response;
data.forEach((item) => {
let index = that.mpoints.indexOf(item.mpoint_name); //mpoint
if(index==-1){
return;
}
let ind = item.hour; //xAxis
seriesData[index][ind] = item.elec_consume_unit;
});
@ -622,6 +624,9 @@ export default {
let data = response;
data.forEach((item) => {
let index = that.mpoints.indexOf(item.mpoint_name); //mpoint
if(index==-1){
return;
}
let ind = item.day_s - 1;
seriesData[index][ind] = item.elec_consume_unit;
});
@ -664,6 +669,9 @@ export default {
data.forEach((item) => {
let ind = item.month_s - 1;
let index = that.mpoints.indexOf(item.mpoint_name); //mpoint
if(index==-1){
return;
}
seriesData[index][ind] = item.elec_consume_unit;
});
let options = { ...that.option3 };

View File

@ -61,7 +61,6 @@
<el-col :md="12" :sm="24">
<el-form-item label="异常原因" prop="reason">
<el-input
:disabled="form.is_shutdown"
v-model="form.reason"
placeholder="异常原因"
/>
@ -178,7 +177,7 @@ export default {
},
],
start_time: [{ required: true, message: "请选择发生时间" }],
end_time: [{ required: true, message: "请选择结束时间" }],
// end_time: [{ required: true, message: "" }],
current_note: [
{ required: true, message: "请填写值班异常处理备注" },
],
@ -189,7 +188,9 @@ export default {
setFiltersVisible: false,
};
},
mounted() {},
mounted() {
console.log(this.current_sflog)
},
methods: {
//
open(mode = "add") {
@ -203,14 +204,15 @@ export default {
that.$refs.dialogForm.validate(async (valid) => {
if (valid) {
that.isSaveing = true;
that.form.current_sflog = that.current_sflog;
if (that.mode == "add") {
that.form.mgroup = that.mgroupId;
that.form.current_sflog = that.current_sflog;
that.$API.wpm.stlog.create
.req(that.form)
.then((res) => {
that.isSaveing = false;
that.$emit("success", that.form, that.mode);
that.$emit("success", res.id);
that.visible = false;
that.$message.success("操作成功");
})
@ -222,7 +224,7 @@ export default {
.req(that.form.id, that.form)
.then((res) => {
that.isSaveing = false;
that.$emit("success", that.form, that.mode);
that.$emit("success", res.id);
that.visible = false;
that.$message.success("操作成功");
})

View File

@ -101,6 +101,7 @@ export default {
mgroup: "",
},
tableDatas: [],
goalDatas: [],
exportLoading: false,
};
},
@ -119,11 +120,10 @@ export default {
params.year = year;
params.mgroup = that.query.mgroup;
this.$API.mtm.goal.list.req(params).then((res) => {
let data = [];
if (res.length > 0) {
data = res[0];
that.goalDatas = res[0];
}
that.getData(data);
that.getData(that.goalDatas);
});
});
},
@ -137,23 +137,13 @@ export default {
query0.mgroup = that.query.mgroup;
let wrapArr = [],
wrapArr0 = [],
wrapArrs = [];
wrapArrs = [],
compareArr0 = [];
this.$API.enm.enstat.req(query0).then((res0) => {
let data0 = res0;
debugger;
if (data0.length > 0) {
data0.forEach((item0) => {
//
let n0 = item0.month_s;
let ind0 = 0;
let team_name0 = item0.team_name;
if (team_name0.indexOf("甲") > -1) {
ind0 = (n0 - 1) * 3;
} else if (team_name0.indexOf("乙") > -1) {
ind0 = (n0 - 1) * 3 + 1;
} else if (team_name0.indexOf("丙") > -1) {
ind0 = (n0 - 1) * 3 + 2;
}
wrapArr0[ind0] = item0;
});
} else {
@ -161,19 +151,18 @@ export default {
this.$API.enm.enstat.req(that.query).then((res) => {
let data = res;
if (data.length > 0) {
data.forEach((item) => {
//
let compareArr = [];
compareArr.push(item.month_s);
compareArr.push(item.team_name);
compareArr.push(item.elec_consume_unit);
compareArr0.push(compareArr);
});
data.forEach((item) => {
//
let n = item.month_s;
let team_name = item.team_name;
let ind = 0;
if (team_name.indexOf("甲") > -1) {
ind = (n - 1) * 3;
} else if (team_name.indexOf("乙") > -1) {
ind = (n - 1) * 3 + 1;
} else if (team_name.indexOf("丙") > -1) {
ind = (n - 1) * 3 + 2;
}
wrapArrs[ind] = item;
let arr = [];
let time = "" + item.year_s + "." + item.month_s;
arr.push(time);
@ -237,21 +226,30 @@ export default {
? wrapArr0[ind_pre].elec_consume_unit
: "/";
} else {
ind_pre = ind - 1;
huanbi = wrapArr[ind_pre]
? wrapArr[ind_pre].elec_consume_unit
? wrapArr[ind_pre].elec_consume_unit
: "/"
: "/";
// wrapArr0wrapArritem.month_s1 item.namehuanbi
compareArr0.forEach((item0) => {
if (item0[0] == item.month_s - 1 && item0[1] == item.team_name) {
huanbi = item0[2];
}
})
}
arr[19] = huanbi; //KW·h/t
arr[20] = item.celec_consume_unit; //KW·h/t
//KW·h/t
if (arr[19] !== "/"){
arr[20] = (arr[16] - arr[19]).toFixed(2); //KW·h/t
}else{
arr[20] = "/"; //KW·h/t
}
arr[21] = item.celec_consume_unit; //%
if (arr[19] !=="/" && arr[20] !==0 && arr[20] !== "undefined"){
arr[21] = ((arr[19]/arr[20])*100).toFixed(2);
}else{
arr[21] = "/"; //%= KW·h/t/KW·h/t*100%
}
arr[22] = item.celec_consume_unit; //%
arr[23] = item.celec_consume_unit; //%
wrapArr[ind] = arr;
wrapArr.push(arr);
});
console.log(wrapArr);
that.tableDatas = wrapArr;
} else {
}
@ -260,7 +258,7 @@ export default {
},
handleQuery() {
this.tableDatas = [];
this.getData();
this.getData(this.goalDatas);
},
itemClick(type, item) {
this.type = type;

View File

@ -229,7 +229,7 @@ export default {
//KW·h/t
let diff = 0;
if (item[2] !== "/") {
diff = item[1] - item[2];
diff = (item[1] - item[2]).toFixed(2);
} else {
diff = "/";
}
@ -264,11 +264,11 @@ export default {
//%
let lastRate = 0;
if (
lastDiff == "/" &&
lastDiff !== "/" &&
lastNum !== "/" &&
lastNum !== 0
) {
lastRate = (lastDiff / lastNum) * 100;
lastRate = ((lastDiff / lastNum) * 100).toFixed(2);
} else {
lastRate = "/";
}

View File

@ -231,7 +231,7 @@
<td class="numCell">处置人</td>
</tr>
<tr v-for="item in sflogexpList" :key="item.id">
<td class="numCell">{{ item.happen_time }}</td>
<td class="numCell">{{ item.stlog_.start_time }}</td>
<td class="numCell">{{ item.cate }}</td>
<td class="numCell">{{ item.reason }}</td>
<td class="numCell">{{ item.measure }}</td>

View File

@ -211,7 +211,7 @@
<td class="numCell">处置人</td>
</tr>
<tr v-for="item in sflogexpList" :key="item.id">
<td class="numCell">{{ item.happen_time }}</td>
<td class="numCell">{{ item.stlog_.start_time }}</td>
<td class="numCell">{{ item.stlog_.cate }}</td>
<td class="numCell">{{ item.stlog_.reason }}</td>
<td class="numCell">{{ item.stlog_.measure }}</td>

View File

@ -39,7 +39,10 @@
</thead>
<tbody>
<tr v-for="item in tableDatas" :key="item">
<td class="numCell">{{ item[0] }}</td>
<td class="numCell"
>
{{ item[0] }}
</td>
<td class="numCell">{{ item[1] }}</td>
<td
class="numCell hoursItem"
@ -238,7 +241,7 @@
<script>
import scEcharts from "@/components/scEcharts";
import { defineAsyncComponent } from "vue";
const colors = ["#647bfe", "#cbd3fe", "#91CC75", "#EE6666"];
const colors = ["#647bfe", "#cbd3fe", "#91CC75", "#EE6666", "#CC00CC"];
let tooltip = {
show: true,
trigger: "axis",
@ -263,7 +266,7 @@ let toolbox = {
};
let legend = {
top: "2%",
data: ["总产量", "分布电耗", "成本"],
data: ["总产量", "分布电耗", "成本", "消耗", "进厂"],
};
let yAxis = [
{
@ -312,6 +315,38 @@ let yAxis = [
formatter: "{value}",
},
},
{
type: "value",
name: "消耗(t)",
position: "right",
alignTicks: true,
offset: 130,
axisLine: {
show: true,
lineStyle: {
color: colors[3],
},
},
axisLabel: {
formatter: "{value}",
},
},
{
type: "value",
name: "进厂(t)",
position: "right",
alignTicks: true,
offset: 180,
axisLine: {
show: true,
lineStyle: {
color: colors[4],
},
},
axisLabel: {
formatter: "{value}",
},
},
];
export default {
components: {
@ -340,6 +375,8 @@ export default {
["产量", "总产量t", 0, 0, 0, 0, 0, 0, 0, 0],
["能耗", "单位产品分布电耗KW·h/t", 0, 0, 0, 0, 0, 0, 0, 0],
["成本", "电石渣成本(元/吨)", 0, 0, 0, 0, 0, 0, 0, 0],
["湿电石渣", "消耗", 0, 0, 0, 0, 0, 0, 0, 0],
["湿电石渣", "进厂", 0, 0, 0, 0, 0, 0, 0, 0],
],
cate: "",
apiObj: this.$API.enm.enstat,
@ -384,6 +421,18 @@ export default {
yAxisIndex: 2,
data: [],
},
{
name: "消耗",
type: "bar",
yAxisIndex: 3,
data: [],
},
{
name: "进厂",
type: "bar",
yAxisIndex: 4,
data: [],
},
],
},
option2: {
@ -420,6 +469,18 @@ export default {
yAxisIndex: 2,
data: [],
},
{
name: "消耗",
type: "bar",
yAxisIndex: 3,
data: [],
},
{
name: "进厂",
type: "bar",
yAxisIndex: 4,
data: [],
},
],
},
};
@ -473,7 +534,16 @@ export default {
that.tableDatas[0][2] = data3.total_production;
that.tableDatas[1][2] = data3.elec_consume_unit;
that.tableDatas[2][2] = data3.production_cost_unit;
if (data3.imaterial_data.length > 0) {
data3.imaterial_data.forEach((item) => {
if (item.material_name == "湿电石渣消耗") {
that.tableDatas[3][2] = item.amount_consume;
}else if(item.material_name == "湿电石渣进厂"){
that.tableDatas[4][2] = item.amount_consume;
}
});
}
}
});
//
let params5 = {};
@ -531,6 +601,15 @@ export default {
that.tableDatas[2][4],
that.tableDatas[2][7]
);
if (data1.imaterial_data.length > 0) {
data1.imaterial_data.forEach((item) => {
if (item.material_name == "湿电石渣消耗") {
that.tableDatas[3][4] = item.amount_consume;
}else if(item.material_name == "湿电石渣进厂"){
that.tableDatas[4][4] = item.amount_consume;
}
});
}
} else {
}
});
@ -560,6 +639,15 @@ export default {
that.tableDatas[2][3],
that.tableDatas[2][5]
);
if (data2.imaterial_data.length > 0) {
data2.imaterial_data.forEach((item) => {
if (item.material_name == "湿电石渣消耗") {
that.tableDatas[3][3] = item.amount_consume;
}else if(item.material_name == "湿电石渣进厂"){
that.tableDatas[4][3] = item.amount_consume;
}
});
}
}
});
});
@ -573,7 +661,6 @@ export default {
},
dateChange(val) {
let that = this;
console.log(val);
if (val !== null) {
if (this.typeRadio == "month") {
let year = val.split("-")[0];
@ -603,18 +690,31 @@ export default {
this.$API.enm.enstat.req(query1).then((response) => {
let seriesData0 = [],
seriesData1 = [],
seriesData2 = [];
seriesData2 = [],
seriesData3 = [],
seriesData4 = [];
let data = response;
data.forEach((item) => {
let ind = item.day_s - 1;
seriesData0[ind] = item.total_production;
seriesData1[ind] = item.production_cost_unit;
seriesData2[ind] = item.elec_consume_unit;
if (item.imaterial_data.length > 0) {
item.imaterial_data.forEach((items_n) => {
if (items_n.material_name == "湿电石渣消耗") {
seriesData3[ind] = items_n.amount_consume;
}else if(items_n.material_name == "湿电石渣进厂"){
seriesData4[ind] = items_n.amount_consume;
}
});
}
});
let options = { ...that.option1 };
options.series[0].data = seriesData0;
options.series[1].data = seriesData1;
options.series[2].data = seriesData2;
options.series[3].data = seriesData3;
options.series[4].data = seriesData4;
let dayXAxis = [];
for (let i = 1; i <= that.days; i++) {
let item = i + "日";
@ -635,18 +735,31 @@ export default {
this.$API.enm.enstat.req(query2).then((response) => {
let seriesData0 = [],
seriesData1 = [],
seriesData2 = [];
seriesData2 = [],
seriesData3 = [],
seriesData4 = [];
let data = response;
data.forEach((item) => {
let ind = item.month_s - 1;
seriesData0[ind] = item.total_production;
seriesData1[ind] = item.production_cost_unit;
seriesData2[ind] = item.elec_consume_unit;
if (item.imaterial_data.length > 0) {
item.imaterial_data.forEach((items_n) => {
if (items_n.material_name == "湿电石渣消耗") {
seriesData3[ind] = items_n.amount_consume;
}else if(items_n.material_name == "湿电石渣进厂"){
seriesData4[ind] = items_n.amount_consume;
}
});
}
});
let options = { ...that.option2 };
options.series[0].data = seriesData0;
options.series[1].data = seriesData1;
options.series[2].data = seriesData2;
options.series[3].data = seriesData3;
options.series[4].data = seriesData4;
let monthXAxis = [];
for (let i = 1; i <= that.month; i++) {
let item = i + "月";

View File

@ -85,6 +85,7 @@ export default {
timeStamp: null,
exportLoading: false,
tableDatas: [],
goalDatas: [],
};
},
mounted() {
@ -105,9 +106,9 @@ export default {
this.$API.mtm.goal.list.req(params).then((res) => {
let data = [];
if (res.length > 0) {
data = res[0];
this.goalDatas = res[0];
}
that.getData(data);
that.getData(this.goalDatas);
});
});
},
@ -121,42 +122,31 @@ export default {
query0.mgroup = that.query.mgroup;
let wrapArr = [],
wrapArr0 = [],
compareArr0 = [],
wrapArrs = [];
this.$API.enm.enstat.req(query0).then((res0) => {
let data0 = res0;
if (data0.length > 0) {
data0.forEach((item0) => {
//
let n0 = item0.month_s;
let ind0 = 0;
if (item0.team_name.indexOf("甲") > -1) {
ind0 = (n0 - 1) * 3;
} else if (item0.team_name.indexOf("乙") > -1) {
ind0 = (n0 - 1) * 3 + 1;
} else if (item0.team_name.indexOf("丙") > -1) {
ind0 = (n0 - 1) * 3 + 2;
}
wrapArr0[ind0] = item0;
});
console.log(wrapArr0);
} else {
}
this.$API.enm.enstat.req(that.query).then((res) => {
let data = res;
if (data.length > 0) {
data.forEach((item) => {
//
let compareArr = [];
compareArr.push(item.month_s);
compareArr.push(item.team_name);
compareArr.push(item.elec_consume_unit);
compareArr0.push(compareArr);
});
data.forEach((item) => {
//
let n = item.month_s;
let team_name = item.team_name;
let ind = 0;
if (team_name.indexOf("甲") > -1) {
ind = (n - 1) * 3;
} else if (team_name.indexOf("乙") > -1) {
ind = (n - 1) * 3 + 1;
} else if (team_name.indexOf("丙") > -1) {
ind = (n - 1) * 3 + 2;
}
wrapArrs[ind] = item;
let arr = [];
let time = "" + item.year_s + "." + item.month_s;
arr.push(time);
@ -179,22 +169,21 @@ export default {
? wrapArr0[ind_pre].elec_consume_unit
: "/";
} else {
ind_pre = n - 1;
huanqi = wrapArr[ind_pre]
? wrapArr[ind_pre].elec_consume_unit
? wrapArr[ind_pre].elec_consume_unit
: "/"
: "/";
// wrapArr0wrapArritem.month_s1 item.namehuanbi
compareArr0.forEach((item0) => {
if (item0[0] == item.month_s - 1 && item0[1] == item.team_name) {
huanqi = item0[2];
}
})
}
arr[7] = huanqi; //KW·h/t
if (huanqi !== "/") {
huanqicha = item.celec_consume_unit - huanqi;
} else {
huanqicha = item.celec_consume_unit;
if (arr[6] !== "/"){
arr[8] = (arr[4] - arr[7]).toFixed(2); //KW·h/t
}else{
arr[8] = "/"; //KW·h/t
}
arr[8] = huanqicha; //KW·h/t
arr[9] =
huanqi != "/" ? (huanqicha / huanqi) * 100 : 0; //%
// arr[8] = huanqicha; //KW·h/t
arr[9] = arr[8] != "/" ? ((arr[7] / arr[8]) * 100).toFixed(2) : 0; //%
if (wrapArr0[n]) {
tongqicha =
item.celec_consume_unit -
@ -206,8 +195,10 @@ export default {
}
arr[10] = tongqi; //%
arr[11] = 0; //
wrapArr[ind] = arr;
wrapArr.push(arr);
});
console.log(wrapArr);
that.tableDatas = wrapArr;
} else {
}
@ -216,7 +207,7 @@ export default {
},
handleQuery() {
this.tableDatas = [];
this.getData();
this.getData(this.goalDatas);
},
itemClick(type, item) {
this.type = type;

5
src/views/home/blank.vue Normal file
View File

@ -0,0 +1,5 @@
<template>
<el-container>
</el-container>
</template>

214
src/views/inm/inmScrap.vue Normal file
View File

@ -0,0 +1,214 @@
<template>
<el-container>
<el-header>
<!-- <div class="left-panel">
<el-button type="primary" v-auth="'handover.create'" @click="table_add(40)">
报废</el-button>
</div> -->
<div class="right-panel">
<!-- <el-button type="primary" @click="materialsChoses('wm')"
>选择物料</el-button
> -->
<!-- <el-select
v-model="query.mgroupx"
placeholder="工段"
clearable
@change="handleQuery"
style="width: 250px"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> -->
<el-input
style="margin-right: 5px;width: 250px"
v-model="query.search"
placeholder="名称"
clearable
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
:params="params"
:query="query"
>
<el-table-column label="状态" prop="state" width="100" >
<template #default="scope">
<el-tag :type="wmState[scope.row.state]?.type">
{{wmState[scope.row.state]?.text}}
</el-tag>
</template>
</el-table-column>
<el-table-column
label="物料名称"
prop="material_name"
min-width="150"
>
<template #default="scope">
{{ scope.row.material_name }}
<span v-if="scope.row.material_origin != null"
>{{ scope.row.material_origin_name }}</span
>
</template>
</el-table-column>
<el-table-column
label="批次号"
prop="batch"
min-width="120"
></el-table-column>
<el-table-column
label="部门/工段"
prop="belong_dept_name"
>
<template #default="scope">
{{scope.row.belong_dept_name}}/{{scope.row.mgroup_name}}
</template>
</el-table-column>
<el-table-column
label="数量"
prop="count"
min-width="80"
></el-table-column>
<el-table-column
label="不合格标记"
prop="notok_sign_name"
></el-table-column>
<el-table-column
label="创建时间"
prop="create_time"
width="150"
></el-table-column>
</scTable>
</el-main>
<el-dialog title="选择物料" v-model="materialsVisible" width="90%">
<materials
style="height: 500px"
:materialType="materialType"
ref="materialsChose"
@choseChange="choseChange"
></materials>
</el-dialog>
<scrap-dialog
v-if="dialog.scrap"
ref="scrapDialog"
:type="type"
:mgroupName="mgroupName"
:mgroupId="mgroupId"
@success="handleScrapSuccess"
@closed="dialog.scrap = false"
>
</scrap-dialog>
</el-container>
</template>
<script>
import { wmState } from "@/utils/enum.js";
// import materials from "./../mtm/materials.vue";
// import checkDialog from "./check_form.vue";
// import showDrawer from "./check_drawer.vue";
// import scrapDialog from "./handover_form.vue";
export default {
props: {
mgroupName: {
type: String,
default: "",
},
},
// components: {
// materials,
// checkDialog,
// showDrawer,
// scrapDialog
// },
name: "wmaterial",
data() {
return {
wmState,
apiObj: this.$API.wpm.wmaterial.list,
params: {
state : 50,
state_all: 1
},
query: {
search:''
},
dialog: {
scrap: false,
},
options:[],
tableData: [],
selection: [],
queryWm: {
search: "",
material: "",
},
materialType: "wm",
visibleDrawer: false,
};
},
mounted() {
let that = this;
// that.$API.mtm.mgroup.list.req({ page: 0 }).then((res) => {
// that.options = res;
// if(res.length>0){
// that.params.mgroupx = res[0].id;
// }
// });
},
methods: {
materialsChoses(str) {
this.materialType = str;
this.materialsVisible = true;
},
choseChange(data) {
this.queryWm.material = data;
this.$refs.table_wm.queryData(this.queryWm);
this.materialsVisible = false;
},
tomio() {
this.$router.push({ name: "halfgood_mio" });
},
table_Check(row){
this.checkItem = row;
let mode = this.mgroupName;
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open(mode);
});
},
//
selectionChange(selection) {
this.selection = selection;
},
//
table_add(type) {
this.dialog.scrap = true;
this.type = type;
this.$nextTick(() => {
this.$refs.scrapDialog.open("add");
});
},
handleScrapSuccess(){
this.dialog.scrap = false;
this.$refs.table.refresh();
},
//
handleQuery() {
this.$refs.table.queryData(this.query);
},
},
};
</script>
<style scoped></style>

View File

@ -94,6 +94,14 @@
width="150px"
>
<template #default="scope">
<el-button
link
type="primary"
@click="table_edit(scope.row)"
v-if="scope.row.state == 10&&(scope.row.type == 'other_in' ||scope.row.type == 'other_out')"
>
编辑
</el-button>
<el-button
link
type="primary"
@ -106,11 +114,7 @@
type="primary"
@click="table_submit(scope.row)"
v-auth="'mio.submit'"
v-if="
scope.row.state == 10 &&
(scope.row.type == 'other_in' ||
scope.row.type == 'other_out')
"
v-if="scope.row.state == 10 &&(scope.row.type == 'other_in' ||scope.row.type == 'other_out')"
>
提交
</el-button>
@ -211,9 +215,10 @@ export default {
table_edit(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("edit", type).setData(row);
this.$refs.saveDialog.open("edit", row.type).setData(row);
});
},
//
table_detail(row) {
this.type = row.type;

View File

@ -1019,15 +1019,10 @@ export default {
that.weight_kgs.forEach((item) => {
arr.push(item.value);
});
let obj = {};
obj.test_date = that.form.test_date;
obj.test_user = that.form.test_user;
obj.count_bag = that.form.count_bag;
obj.weight_kgs = arr;
obj.is_testok = that.form.is_testok;
console.log(obj);
that.form.weight_kgs = arr;
console.log('that.form',that.form);
that.$API.inm.mioitem.testpurin
.req(that.mioitemId, obj)
.req(that.mioitemId, that.form)
.then((res) => {
that.isSaveing = false;
that.$emit("success");

105
src/views/inm/workshop.vue Normal file
View File

@ -0,0 +1,105 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-select
v-model="query.mgroup"
clearable
placeholder="所在工段"
@change="handleQuery"
style="margin-left: 10px; width: 150px"
>
<el-option
v-for="item in mgroupOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</div>
<div class="right-panel">
<el-input
v-model="query.search"
placeholder="物料名/批次号"
clearable
style="margin-right: 5px"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table_wm"
:apiObj="apiObjWm"
row-key="id"
:params="paramsWm"
stripe
>
<el-table-column label="批次" prop="batch">
</el-table-column>
<el-table-column label="物料名" prop="material">
<template #default="scope">{{scope.row.material_.name}}</template>
</el-table-column>
<el-table-column label="规格" prop="material">
<template #default="scope">{{scope.row.material_.specification}}</template>
</el-table-column>
<el-table-column label="型号" prop="material">
<template #default="scope">{{scope.row.material_.model}}</template>
</el-table-column>
<el-table-column label="已到工序" prop="material">
<template #default="scope">{{scope.row.material_.process_name}}</template>
</el-table-column>
<el-table-column label="所在工段" prop="belong_dept_name">
</el-table-column>
<el-table-column label="数量" prop="count" width="80">
</el-table-column>
</scTable>
</el-main>
</el-container>
</template>
<script>
export default {
name: "halfgood",
data() {
return {
apiObj: this.$API.inm.warehouse.batch,
params: { count__gte: 1, material__type: 10 },
selection: [],
query: {},
mgroupOptions: [],
apiObjWm: this.$API.wpm.wmaterial.list,
paramsWm: { count__gte: 1, material__type: 10 },
queryWm: {},
};
},
mounted() {
this.getMgroup();
},
methods: {
getMgroup() {
let that = this;
this.$API.mtm.mgroup.list.req({ page: 0 }).then((res) => {
this.mgroupOptions = res;
});
},
getProcessOptions() {
this.$API.mtm.process.list.req({ page: 0 }).then((res) => {
this.processOptions = res;
});
},
handleQueryWm() {
this.$refs.table_wm.queryData(this.queryWm);
},
handleQuery() {
this.$refs.table.queryData(this.query);
},
resetQuery() {
this.query = {};
},
},
};
</script>

View File

@ -0,0 +1,254 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button
type="primary"
@click="add('do_out')"
v-auth="'mio.do'"
>生产领料</el-button
>
<el-button
type="primary"
@click="add('do_in')"
v-auth="'mio.do'"
>生产入库</el-button
>
<el-select
v-model="query.type"
clearable
style="width: 120px; margin-left: 2px"
placeholder="出入库类型"
@change="handleQuery"
>
<el-option
v-for="item in cateOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
<el-select
v-model="query.state"
clearable
style="width: 120px; margin-left: 2px"
placeholder="状态"
@change="handleQuery"
>
<el-option
v-for="item in stateOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</div>
<div class="right-panel">
<el-input
v-model="query.search"
placeholder="编号"
clearable
style="margin-right: 5px"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="apiObj"
:params="params"
:query="query"
row-key="id"
stripe
>
<el-table-column type="index" width="50" />
<el-table-column
label="记录编号"
prop="number"
></el-table-column>
<el-table-column label="出/入库类型">
<template #default="scope">
{{ typeDict[scope.row.type] }}
</template>
</el-table-column>
<el-table-column label="记录状态">
<template #default="scope">
{{ stateDict[scope.row.state] }}
</template>
</el-table-column>
<el-table-column label="出/入库日期" prop="inout_date">
</el-table-column>
<el-table-column label="执行部门" prop="belong_dept_name">
<template #default="scope">
{{ scope.row.belong_dept_name }} - {{ scope.row.mgroup_name }}
</template>
</el-table-column>
<el-table-column label="创建人" prop="create_by_name">
</el-table-column>
<el-table-column label="创建时间" prop="create_time">
</el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
width="150px"
>
<template #default="scope">
<el-button
link
type="primary"
@click="table_detail(scope.row)"
>
查看
</el-button>
<el-button
link
type="primary"
@click="table_submit(scope.row)"
v-auth="'mio.submit'"
v-if="scope.row.state == 10"
>
提交
</el-button>
<el-button
link
type="danger"
@click="table_del(scope.row)"
v-auth="'mio.delete'"
v-if="scope.row.state == 10"
>
删除
</el-button>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
<record-dialog
ref="showDrawer"
v-if="visibleDrawer"
:type="type"
:cate="cate"
:mioId="mioId"
@closed="visibleDrawer = false"
>
</record-dialog>
</template>
<script>
import saveDialog from "./mio_form.vue";
import recordDialog from "./mioitem.vue";
export default {
name: "mio",
components: {
saveDialog,
recordDialog,
},
data() {
return {
stateDict: {
10: "创建中",
20: "已提交",
},
stateOptions: [
{ id: 10, name: "创建中" },
{ id: 20, name: "已提交" },
],
typeDict: {
do_out: "生产领料",
do_in: "生产入库",
},
cateOptions: [
{ id: "do_out", name: "生产领料" },
{ id: "do_in", name: "生产入库" },
],
dialog: {
save: false,
record: false,
},
query: {},
params: {
type__in: "sale_out,do_in",
materials__type: 10,
},
form: {},
apiObj: this.$API.inm.mio.list,
selection: [],
type: "",
cate: "good",
mioId: "",
visibleDrawer: false,
};
},
methods: {
//
add(type) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add", type);
});
},
//
table_edit(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("edit", type).setData(row);
});
},
//
table_detail(row) {
this.type = row.type;
this.mioId = row.id;
this.visibleDrawer = true;
this.$nextTick(() => {
this.$refs.showDrawer.open();
});
},
//
table_del(row) {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
})
.then(() => {
this.$API.inm.mio.delete
.req(row.id)
.then((res) => {
this.$message.success("删除成功");
this.$refs.table.refresh();
return res;
})
.catch((err) => {
return err;
});
})
.catch(() => {});
},
table_submit(row) {
this.$API.inm.mio.submit.req(row.id).then((res) => {
this.$message.success("提交成功");
this.$refs.table.refresh();
});
},
handleQuery() {
this.$refs.table.queryData(this.query);
},
resetQuery() {
this.query = {};
},
handleSaveSuccess() {
this.$refs.table.refresh();
},
},
};
</script>

View File

@ -61,7 +61,7 @@
<!-- <div class="login-oauth" v-else>
<el-button type="default" @click="faceLogin">刷脸登录</el-button>
</div> -->
<div class="copyright">Copyright © 2024 {{ baseConfig.base_right }}</div>
<!-- <div class="copyright">Copyright © 2024 {{ baseConfig.base_right }}</div> -->
</div>
</div>
</div>

View File

@ -66,8 +66,15 @@
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="计量单位">
<el-input
v-model="form.unit"
placeholder="计量单位"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="form.type==10||form.type==20">
<el-form-item label="已到工序" prop="process">
<el-select
v-model="form.process"

View File

@ -225,6 +225,7 @@ export default {
console.log("materialType", this.materialType);
this.apiObj = this.$API.mtm.material.list;
this.$refs.table.queryData(this.query);
this.materialTemplate = this.materialTemplate+"?t=" + new Date().getTime();
},
methods: {
rowClick(row) {

View File

@ -226,6 +226,9 @@ export default {
that.visible = false;
that.$message.success("操作成功");
})
.catch(error => {
console.error("请求失败", error);
});
}
}
});

View File

@ -66,10 +66,10 @@
</el-form-item>
</el-col> -->
<el-col :md="12" :sm="24">
<el-form-item label="主要输入" prop="material_in">
<el-form-item label="输入物料" prop="material_in">
<el-select
v-model="form.material_in"
placeholder="物料"
placeholder="输入物料"
clearable
filterable
:value-on-clear="null"
@ -99,10 +99,10 @@
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="主要输出" prop="material_out">
<el-form-item label="输出物料" prop="material_out">
<el-select
v-model="form.material_out"
placeholder="物料"
placeholder="输出物料"
clearable
filterable
:value-on-clear="null"
@ -131,10 +131,10 @@
</el-col> -->
<el-col :md="12" :sm="24">
<el-form-item label="工时" prop="hour_work">
<el-form-item label="计划时长" prop="hour_work">
<el-input-number
v-model="form.hour_work"
:min="1"
:min="0"
style="width: 100%"
/>
</el-form-item>
@ -171,9 +171,12 @@ const defaultForm = {
process: null,
sort: 1,
out_rate: 100,
material_in:'',
material_out:'',
hour_work:0,
batch_bind: true,
is_autotask: true,
is_count_utask: false,
// is_count_utask: false,
};
export default {
props: {
@ -185,7 +188,7 @@ export default {
loading: false,
mode: "add",
//
form: defaultForm,
form: Object.assign({}, defaultForm),
//
rules: {
process: [

View File

@ -79,67 +79,73 @@
<!--工序!-->
<el-main class="nopadding" v-if="active === 1">
<div class="left-panel" style="margin: 10px">
<el-button
type="primary"
icon="el-icon-plus"
@click="table_add"
></el-button>
</div>
<scTable
ref="tables"
:apiObj="apiObj"
:query="query"
:params="query"
row-key="id"
hidePagination
hideDo
stripe
style="height: 500px"
>
<el-table-column label="排序" prop="sort" width="50">
</el-table-column>
<el-table-column label="工序" prop="process_name">
</el-table-column>
<el-table-column label="输入" prop="material_in_name">
</el-table-column>
<el-table-column label="输出" prop="material_out_name">
</el-table-column>
<el-table-column label="出材率" prop="out_rate">
</el-table-column>
<el-table-column label="工时" prop="hour_work">
</el-table-column>
<el-table-column label="批次校验" prop="batch_bind">
</el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
width="200"
>
<template #default="scope">
<el-container>
<el-header>
<div class="left-panel" style="margin: 10px">
<el-button
text
type="primary"
size="small"
@click="table_edit(scope.row)"
>编辑</el-button
icon="el-icon-plus"
@click="table_add"
></el-button>
</div>
</el-header>
<el-main>
<scTable
ref="tables"
:apiObj="apiObj"
:query="query"
:params="query"
row-key="id"
hidePagination
hideDo
stripe
>
<el-table-column label="排序" prop="sort" width="50">
</el-table-column>
<el-table-column label="工序" prop="process_name">
</el-table-column>
<el-table-column label="输入" prop="material_in_name">
</el-table-column>
<el-table-column label="输出" prop="material_out_name">
</el-table-column>
<el-table-column label="出材率" prop="out_rate">
</el-table-column>
<el-table-column label="工时" prop="hour_work">
</el-table-column>
<el-table-column label="批次校验" prop="batch_bind">
</el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
width="200"
>
<el-popconfirm
title="确定删除该工序吗?"
@confirm="delWorker(scope.row)"
>
<template #reference>
<el-button text type="danger" size="small"
>删除</el-button
<template #default="scope">
<el-button
text
type="primary"
size="small"
@click="table_edit(scope.row)"
>编辑</el-button
>
<el-popconfirm
title="确定删除该工序吗?"
@confirm="delWorker(scope.row)"
>
<template #reference>
<el-button text type="danger" size="small"
>删除</el-button
>
</template>
</el-popconfirm>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable>
<div style="margin-top: 20px; text-align: center">
<el-button @click="handleLastStep" style="margin-right: 4px"
</el-table-column>
</scTable>
</el-main>
</el-container>
</el-main>
<el-footer v-if="active === 1" style="text-align: center">
<el-button @click="handleLastStep" style="margin-right: 4px"
>上一步</el-button
>
<el-button
@ -155,8 +161,7 @@
<el-button @click="$emit('closed')" type="warning"
>退出</el-button
>
</div>
</el-main>
</el-footer>
</el-container>
<save-dialog
v-if="dialog.save"

View File

@ -43,11 +43,9 @@
</el-table-column>
<el-table-column label="联系方式" prop="contact_phone">
</el-table-column>
<el-table-column
label="地址"
prop="address"
show-overflow-tooltip
>
<el-table-column label="地址" prop="address" show-overflow-tooltip>
</el-table-column>
<el-table-column label="单位编号" prop="number" show-overflow-tooltip>
</el-table-column>
<el-table-column label="是否外协" prop="can_outsource">
<template #default="scope">

View File

@ -49,6 +49,14 @@
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="单位编号">
<el-input
v-model="form.number"
placeholder="单位编号"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="是否外协">
<el-switch v-model="form.can_outsource">

View File

@ -106,6 +106,25 @@
</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
filterable
style="width: 100%;"
>
<el-option
v-for="item in shiftOtions"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-divider style="margin-top:0"></el-divider>
<el-row v-if="mode=='sizeAdd'||mode=='sizeEdit'||mode=='sizeShow'">
@ -291,6 +310,18 @@
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="棕圈">
<el-input-number
controls-position="right"
v-model="count_notok_json.count_n_zq"
style="width: 100%"
precision="0"
:disabled="mode=='sizeShow'||mode=='facadeShow'"
@change="handleCountChange"
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="划伤">
<el-input-number
@ -352,7 +383,7 @@
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="圈">
<el-form-item label="圈">
<el-input-number
controls-position="right"
v-model="count_notok_json.count_n_lq"
@ -417,6 +448,7 @@ export default {
count_n_swen: 0,
count_n_bb: 0,
count_n_zb: 0,
count_n_zq: 0,
count_n_hs: 0,
count_n_md: 0,
count_n_hqbx: 0,
@ -445,12 +477,14 @@ export default {
isSaveing: false,
options: [],
userList:[],
shiftOtions:[],
selectionFilters: [],
setFiltersVisible: false,
};
},
mounted() {
this.getUsers();
this.getShift();
},
methods: {
//
@ -460,6 +494,12 @@ export default {
this.getMaterialBatch();
return this;
},
getShift(){
let that = this;
that.$API.mtm.shift.list.req({ page: 0 }).then((res) => {
that.shiftOtions = res;
});
},
getUsers(){
let that = this;
let userList = [];
@ -485,6 +525,7 @@ export default {
this.count_notok_json.count_n_qp=
this.count_notok_json.count_n_swen=
this.count_notok_json.count_n_zb=
this.count_notok_json.count_n_zq=
this.count_notok_json.count_n_hs=
this.count_notok_json.count_n_md=
this.count_notok_json.count_n_hqbx=
@ -507,6 +548,7 @@ export default {
this.count_notok_json.count_n_z+
this.count_notok_json.count_n_swen+
this.count_notok_json.count_n_zb+
this.count_notok_json.count_n_zq+
this.count_notok_json.count_n_hs+
this.count_notok_json.count_n_md+
this.count_notok_json.count_n_hqbx+

View File

@ -2,6 +2,39 @@
<el-container>
<el-header>
<div class="right-panel">
<!-- 检验类型 -->
<el-select v-model="query.process_name"
placeholder="检验类型">
<el-option
v-for="item in options"
:key="item.value"
:label="item.name"
:value="item.value"
>
</el-option>
</el-select>
<!-- 检验人 -->
<!-- <el-select v-model="query.test_user"
placeholder="检验人">
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
<el-select v-model="query.shift"
placeholder="班次">
<el-option
v-for="item in shiftOptions"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select> -->
<el-date-picker
v-model="query.start_date"
type="date"
@ -18,8 +51,13 @@
</div>
<el-button @click="handleExport" type="primary">导出</el-button>
</el-header>
<el-main style="background: #ffffff">
<scTable :data="tableData" id="exportDiv">
<el-main class="nopadding">
<scTable
:data="tableData"
id="exportDiv"
stripe
hideDo
hidePagination>
<el-table-column type="index" width="50" />
<el-table-column label="物料名称" prop="物料名"></el-table-column>
<el-table-column label="规格" prop="规格"> </el-table-column>
@ -32,12 +70,38 @@
</el-table-column>
<el-table-column label="检验数" prop="检验数"></el-table-column>
<el-table-column label="合格数" prop="合格数量"></el-table-column>
<el-table-column label="不合格数" prop="不合格数"></el-table-column>
<el-table-column label="不合格数" align="center" v-if="query.process_name == '一次超洗'">
<el-table-column label="黑圈内径" prop="黑圈内径"></el-table-column>
<el-table-column label="黑圈内径圆度" prop="黑圈内径圆度"></el-table-column>
<el-table-column label="黑圈外径" prop="黑圈外径"></el-table-column>
<el-table-column label="黑圈外径圆度" prop="黑圈外径圆度"></el-table-column>
<el-table-column label="产品外径" prop="产品外径"></el-table-column>
<el-table-column label="产品圆度" prop="产品圆度"></el-table-column>
<el-table-column label="产品同心度" prop="产品同心度"></el-table-column>
<el-table-column label="厚度" prop="厚度"></el-table-column>
<el-table-column label="准合格" prop="准合格"></el-table-column>
<el-table-column label="圆准" prop="圆准"></el-table-column>
<el-table-column label="合计" prop="不合格数"></el-table-column>
</el-table-column>
<el-table-column label="不合格数" align="center" v-else>
<el-table-column label="脏" prop="脏"></el-table-column>
<el-table-column label="气泡" prop="气泡"></el-table-column>
<el-table-column label="水纹" prop="水纹"></el-table-column>
<el-table-column label="崩边" prop="崩边"></el-table-column>
<el-table-column label="棕边" prop="棕边"></el-table-column>
<el-table-column label="棕圈" prop="棕圈"></el-table-column>
<el-table-column label="划伤" prop="划伤"></el-table-column>
<el-table-column label="麻点" prop="麻点"></el-table-column>
<el-table-column label="黑圈变形" prop="黑圈变形"></el-table-column>
<el-table-column label="倒角" prop="倒角"></el-table-column>
<el-table-column label="破损" prop="破损"></el-table-column>
<el-table-column label="蓝圈" prop="蓝圈"></el-table-column>
<el-table-column label="合计" prop="不合格数"></el-table-column>
</el-table-column>
</scTable>
</el-main>
</el-container>
</template>
<script>
export default {
name: "chart",
@ -45,12 +109,25 @@ export default {
data() {
return {
query:{
start_date:'',
fw_type:'prod',
end_date:'',
fw_type:'prod'
start_date:'',
process_name:'一次超洗',
group_by_dept: ", dept.id",
group_by_user: ", suser.id",
group_by_shift: ", shift.id",
select_col_dept: ", dept.name as 部门",
select_col_user: ", suser.name as 检验人",
select_col_shift: ", shift.name as 班次"
},
currentDate: "",
tableData: [],
options:[
{name:'外观',value:'一次超洗'},
{name:'尺寸',value:'二次超洗'}
],
userOptions:[],
shiftOptions:[],
};
},
mounted() {
@ -64,8 +141,22 @@ export default {
let queryDate = year + "-" + month + "-" + day;
that.query.start_date = that.query.end_date = that.currentDate = queryDate;
this.getData();
this.getUsers();
this.getShifts();
},
methods: {
getUsers(){
let that = this;
this.$API.system.user.list.req({ page: 0, posts__code__contains: "check" }).then((res) => {
that.userOptions = res;
});
},
getShifts(){
let that = this;
that.$API.mtm.shift.list.req({ page: 0 }).then((res) => {
that.shiftOptions = res;
});
},
getData() {
let that = this;
let obj = {};

File diff suppressed because it is too large Load Diff

View File

@ -2,14 +2,27 @@
<el-container>
<el-header>
<div class="right-panel">
<el-select v-model="query.process_name"
style="width: 200px"
placeholder="请选择工序">
<el-option
v-for="item in options"
:key="item.name"
:label="item.name"
:value="item.name"
>
</el-option>
</el-select>
<el-date-picker
v-model="query.start_date"
type="date"
placeholder="查询日期"
value-format="YYYY-MM-DD"
style="width: 160px"
style="width: 200px"
>
</el-date-picker>
<el-input v-model="query.m_s"
placeholder="物料名称" clearable style="width:200px"></el-input>
<el-button
type="primary"
icon="el-icon-search"
@ -18,8 +31,13 @@
</div>
<el-button @click="handleExport" type="primary">导出</el-button>
</el-header>
<el-main style="background: #ffffff">
<scTable :data="tableData" id="exportDiv">
<el-main>
<scTable
:data="tableData"
id="exportDiv"
stripe
hideDo
hidePagination>
<el-table-column type="index" width="50" />
<el-table-column label="物料名称" prop="物料名"></el-table-column>
<el-table-column label="规格" prop="规格"> </el-table-column>
@ -31,8 +49,20 @@
</template>
</el-table-column>
<el-table-column label="检验数" prop="检验数"></el-table-column>
<el-table-column label="合格数" prop="合格数量"></el-table-column>
<el-table-column label="不合格数" prop="不合格数"></el-table-column>
<el-table-column label="合格数" prop="合格数"></el-table-column>
<el-table-column label="不合格数" align="center">
<el-table-column label="划伤" prop="划伤"></el-table-column>
<el-table-column label="气泡" prop="气泡"></el-table-column>
<el-table-column label="水纹" prop="水纹"></el-table-column>
<el-table-column label="崩边" prop="崩边"></el-table-column>
<el-table-column label="雾面" prop="雾面"></el-table-column>
<el-table-column label="小崩边" prop="小崩边"></el-table-column>
<el-table-column label="麻点" prop="麻点"></el-table-column>
<el-table-column label="线痕" prop="线痕"></el-table-column>
<el-table-column label="破损" prop="破损"></el-table-column>
<el-table-column label="其他" prop="其他"></el-table-column>
<el-table-column label="合计" prop="不合格数"></el-table-column>
</el-table-column>
</scTable>
</el-main>
</el-container>
@ -45,12 +75,21 @@ export default {
data() {
return {
query:{
start_date:'',
m_s:'',
fw_type:'process',
end_date:'',
fw_type:'process'
start_date:'',
process_name:'',
group_by_dept: ", dept.id",
group_by_user: ", suser.id",
group_by_shift: ", shift.id",
select_col_dept: ", dept.name as 部门",
select_col_user: ", suser.name as 检验人",
select_col_shift: ", shift.name as 班次"
},
currentDate: "",
tableData: [],
options:[],
};
},
mounted() {
@ -63,14 +102,21 @@ export default {
day = day < 10 ? "0" + day : day;
let queryDate = year + "-" + month + "-" + day;
that.query.start_date = that.query.end_date = that.currentDate = queryDate;
this.getProcess();
this.getData();
},
methods: {
getProcess(){
let that = this;
that.$API.mtm.process.list.req({ page: 0}).then((res) => {
that.options = res;
});
},
getData() {
let that = this;
let obj = {};
obj.query = that.query;
that.tableData =[];
that.$API.bi.dataset.exec.req('ftestDay', obj).then((res) => {
that.tableData = res.data2.ds0;
console.log(that.tableData);

View File

@ -2,12 +2,25 @@
<el-container>
<el-header>
<div class="right-panel">
<el-select v-model="material__name">
<el-select v-model="searchType" style="width: 200px" @change="searchTypeChange">
<el-option label="原料批次号" value="batch"></el-option>
<el-option label="物料名称" value="material"></el-option>
</el-select>
<el-input
v-if="searchType === 'batch'"
v-model="query.batch" placeholder="物料批次"
clearable style="width:200px"
></el-input>
<el-select v-else
v-model="query.m_name"
style="width: 200px"
@change="materialChange"
placeholder="请选择物料">
<el-option
v-for="item in options"
:key="item"
:label="item"
:value="item"
:key="item.id"
:label="item.name"
:value="item.name"
>
</el-option>
</el-select>
@ -16,76 +29,78 @@
icon="el-icon-search"
@click="handleQuery"
></el-button>
<el-button
@click="handleExport"
class="tables"
type="primary"
>导出</el-button
>
</div>
</el-header>
<el-main id="elMain">
<el-row :gutter="10" id="elCol">
<el-col :lg="12">
<el-card shadow="never">
<div id="bachart1"></div>
<!-- <scEcharts height="500px" :option="option"></scEcharts> -->
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport"
class="tables"
type="primary"
>导出</el-button
>
<el-table
:data="tableData1"
id="exportDiv7"
:height="tableHeight"
>
<el-table-column type="index" width="50" />
<el-table-column
label="任务编号"
prop="number"
min-width="100px"
>
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
<el-main class="nopadding">
<scTable
:data="tableData"
id="exportDiv"
stripe
hideDo
hidePagination
>
<el-table-column type="index" width="50" />
<el-table-column label="部门" prop="部门">
</el-table-column>
<el-table-column label="工段" prop="工段">
</el-table-column>
<el-table-column label="原料数" prop="原料数">
</el-table-column>
<el-table-column label="待加工原料数" prop="待加工原料数">
</el-table-column>
<el-table-column label="非本段产物数" prop="非本段产物数">
</el-table-column>
<el-table-column label="待加工产物数" prop="待加工产物数">
</el-table-column>
<el-table-column label="加工中原料数" prop="加工中原料数">
</el-table-column>
<el-table-column label="加工中产物数" prop="加工中产物数">
</el-table-column>
<el-table-column label="合格品数" prop="合格品数">
</el-table-column>
<el-table-column label="不合格品数" prop="不合格品数">
</el-table-column>
<el-table-column label="返工品数" prop="返工品数">
</el-table-column>
<el-table-column label="检验数" prop="检验数">
</el-table-column>
<el-table-column label="废品数" prop="废品数">
</el-table-column>
<el-table-column label="仓库原料数" prop="仓库原料数">
</el-table-column>
<el-table-column label="仓库合格品数" prop="仓库合格品数">
</el-table-column>
<el-table-column label="仓库合格成品数" prop="仓库合格成品数">
</el-table-column>
</scTable>
</el-main>
</el-container>
</template>
<script>
import * as echarts from "echarts";
import T from "@/components/scEcharts/echarts-theme-T.js";
echarts.registerTheme("T", T);
import scEcharts from "@/components/scEcharts";
function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}
export default {
name: "chart",
components: {
scEcharts,
},
data() {
return {
currentYear:'',
currentMonth:'',
start_date:'',
end_date:'',
queryDate:'',
option:{},
seriesData1:[],
seriesData2:[],
seriesData3:[],
material__name:'',
options:['白片','DDG片','一次抛','外协海富'],
query: {
batch: "",
m_name: "",
m_model: "",
m_specification: ""
},
searchType:'batch',
options:[],
tableData:[],
basicOption: {
backgroundColor: "transparent",
title: {
@ -132,77 +147,49 @@ export default {
};
},
mounted() {
let that = this;
let that = this;
that.getOptions();
that.getInmMaterial();
},
methods: {
getOptions(){
let that = this;
let obj = {};
obj.page = 0;
obj.type__in = "10,20";
obj.is_hidden = false;
that.options = [];
that.$API.mtm.material.list.req(obj).then((res) => {
if(res.length>0){
that.options = res;
}
});
},
getInmMaterial(){
let that = this;
let obj = {
name__contains:that.material__name,
page:0
};
this.$API.mtm.material.list.req(obj).then(res=>{
console.log('InmMaterial',res);
that.getWmaterial();
if(res.length>0){
res.forEach(item => {
that.seriesData3[0]+=item.count;
});
let obj = {};
obj.query = that.query;
that.tableData =[];
that.$API.bi.dataset.exec.req('batch_search', this.query).then((res) => {
if(res.data2.ds0){
that.tableData = res.data2.ds0;
}
})
});
},
getWmaterial(){
searchTypeChange(){
this.query.batch = '';
this.query.m_name = '';
this.query.m_model = '';
this.query.m_specification = '';
},
materialChange(val){
let that = this;
let obj = {
material__name__contains:that.material__name,
page:0
};
this.$API.wpm.wmaterial.list.req(obj).then(res=>{
console.log('Wmaterial',res);
if(res.length>0){
res.forEach(item => {
if(item.belong_dept_name=="扫边车间"){
if(item.count_xtest==null){
seriesData3[1]+=item.count;
}else{
seriesData1[1]+=item.count;
}
}else if(item.belong_dept_name=="黑化车间"){
if(item.count_xtest==null){
seriesData3[2]+=item.count;
}else{
seriesData1[2]+=item.count;
}
}else if(item.belong_dept_name=="减薄车间"){
if(item.count_xtest==null){
seriesData3[3]+=item.count;
}else{
seriesData1[3]+=item.count;
}
}else if(item.belong_dept_name=="精雕车间"){
if(item.count_xtest==null){
seriesData3[4]+=item.count;
}else{
seriesData1[4]+=item.count;
}
}else if(item.belong_dept_name=="倒角车间"){
if(item.count_xtest==null){
seriesData3[5]+=item.count;
}else{
seriesData1[5]+=item.count;
}
}else if(item.belong_dept_name=="磨抛车间"){
if(item.count_xtest==null){
seriesData3[6]+=item.count;
}else{
seriesData1[6]+=item.count;
}
}
});
console.log(val);
that.options.forEach((item) => {
if (item.name == val) {
that.query.m_model = item.model;
that.query.m_specification = item.specification;
}
let option = deepCopy(that.basicOption);
that.setChart("bachart1", option);
})
},
handleQuery(){
@ -234,9 +221,7 @@ export default {
width: 100%;
height: 500px;
}
.tables{
width:
}
.tableHead {
background:rgb(0,176,240);
height:40px;

View File

@ -2,7 +2,7 @@
<el-container>
<el-header>
<div class="right-panel">
<el-select v-model="mgroupId"
<!-- <el-select v-model="mgroupId"
placeholder="请选择工段"
@change="mgroupChange">
<el-option
@ -12,7 +12,7 @@
:value="item.id"
>
</el-option>
</el-select>
</el-select> -->
<el-date-picker
v-model="searchDate"
type="month"
@ -29,31 +29,25 @@
</div>
</el-header>
<el-main id="elMain">
<el-row :gutter="10" id="elCol">
<el-col :lg="8">
<el-card shadow="never">
<scEcharts height="500px" :option="option"></scEcharts>
</el-card>
</el-col>
<el-col :lg="16">
<el-card shadow="never" style="position: relative">
<!-- 0 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart0"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport('7')"
@click="handleExport(0)"
class="tables"
type="primary"
>导出</el-button
>
<el-table
:data="tableData1"
id="exportDiv7"
:height="tableHeight"
>
<el-table :data="tableData0" id="exportDiv0" :height="300">
<el-table-column type="index" width="50" />
<el-table-column
label="任务编号"
prop="number"
min-width="100px"
>
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
@ -63,13 +57,490 @@
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-col>
</el-row>
</el-card>
<!-- 1 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart1"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(1)"
class="tables"
type="primary"
>导出</el-button
>
<el-table
:data="tableData1"
id="exportDiv1"
:height="300"
>
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 2 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart2"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(2)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData2" id="exportDiv2" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 3 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart3"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(3)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData3" id="exportDiv3" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 4 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart4"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(4)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData4" id="exportDiv4" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 5 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart5"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(5)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData5" id="exportDiv5" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 6 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart6"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(6)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData6" id="exportDiv6" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 7 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart7"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(7)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData7" id="exportDiv7" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 8 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart8"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(8)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData8" id="exportDiv8" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 9 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart9"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(9)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData9" id="exportDiv9" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 10 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart10"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(10)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData10" id="exportDiv10" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 11 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart11"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(11)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData11" id="exportDiv11" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 12 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart12"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(12)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData12" id="exportDiv12" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 13 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart13"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(13)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData13" id="exportDiv13" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 14 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart14"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(14)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData14" id="exportDiv14" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 15 -->
<el-card shadow="never" style="margin-bottom: 8px">
<el-row :gutter="10">
<el-col :lg="12">
<el-card shadow="never">
<div id="linechart15"></div>
</el-card>
</el-col>
<el-col :lg="12">
<el-card shadow="never" style="position: relative">
<el-button
@click="handleExport(15)"
class="tables"
type="primary"
>导出</el-button
>
<el-table :data="tableData15" id="exportDiv15" :height="300">
<el-table-column type="index" width="50" />
<el-table-column label="任务编号" prop="number" min-width="100px">
</el-table-column>
<el-table-column label="计划数" prop="count">
</el-table-column>
<el-table-column label="完成数" prop="count_ok">
</el-table-column>
<el-table-column label="完成率" prop="rate">
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
</el-main>
</el-container>
</template>
<script>
import * as echarts from "echarts";
import T from "@/components/scEcharts/echarts-theme-T.js";
echarts.registerTheme("T", T);
import scEcharts from "@/components/scEcharts";
function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}
const ondDayTime = 86400000;
export default {
name: "chart",
components: {
@ -90,8 +561,7 @@ export default {
currentDate: "",
searchDate:'',
options:[],
tableData1: [],
option: {
basicOption: {
title: {
text: "",
},
@ -104,7 +574,7 @@ export default {
},
color: ["rgb(64,158,255)", "orange"],
series: {
name: "7车间完成率",
name: "任务进度",
type: "pie",
radius: ["40%", "70%"],
center: ["50%", "60%"],
@ -114,69 +584,126 @@ export default {
formatter: "{b} : {c} ({d}%)",
},
data: [
{ value: 0, name: "已完成" },
{ value: 0, name: "合格数" },
{ value: 0, name: "未完成" },
],
},
},
tableData0: [],
tableData1: [],
tableData2: [],
tableData3: [],
tableData4: [],
tableData5: [],
tableData6: [],
tableData7: [],
tableData8: [],
tableData9: [],
tableData10: [],
tableData11: [],
tableData12: [],
tableData13: [],
tableData14: [],
tableData15: [],
};
},
mounted() {
let that = this;
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
month = month < 10 ? "0" + month : month;
that.currentDate = that.searchDate = year + "-" + month;
let days = new Date(year, month, 0).getDate();
let start_date = year + "-" + month + "-01";
let end_date = year + "-" + month + "-"+days;
that.start_date = that.query.querys[0][0].value = start_date;
that.end_date = that.query.querys[1][0].value = end_date;
let height = document.getElementById("elCol").clientHeight;
let chartheight = height+'px';
that.tableHeight = height-20;
let nowDate = new Date();
that.getMgroup();
},
methods: {
getWeekDate(dates){
let that = this;
dates = new Date(dates);
let week =dates.getDay(); //week
let weekFirst = 0, weekLast = 0;
if (week == 0) {
weekFirst = 6;
weekLast = 0; //
} else {
weekFirst = week - 1;
weekLast = 7 - week;
}
let first = new Date(dates.getTime() - weekFirst * ondDayTime); //
let last = new Date(new Date(dates.getTime() + weekLast * ondDayTime)); //
let dateArr = [];
for (let i = 0; i < 7; i++) {
let itemDate = new Date(first.getTime() + i * ondDayTime);
let item = itemDate.getDate();
dateArr.push(item);
}
that.weekDateList = dateArr;
that.query.start_date = that.query.querys[0][0].value = first.toISOString().split('T')[0];
that.query.end_date = that.query.querys[1][0].value = last.toISOString().split('T')[0];
that.options.forEach((item,index)=>{
console.log('item',item);
setTimeout(()=>{
that.getData(item.id,item.name,index);
},500)
})
},
getMgroup(){
let that = this;
that.options = [];
that.$API.mtm.mgroup.list.req({ page: 0}).then((res) => {
// that.options = res.slice(21);
that.options = res;
let nowDate = new Date();
that.getWeekDate(nowDate);
});
},
getData7() {
setChart(name, option = null) {
// name , optionoption
var myChart = echarts.getInstanceByDom(
document.getElementById(name)
);
if (myChart == undefined) {
myChart = echarts.init(document.getElementById(name), "T");
}
if (option == null) {
option = Object.assign({}, this.basicOption);
}
setTimeout(() => {
try {
myChart.setOption(option);
} catch (error) {}
}, 500);
},
getData(mgroup_id,mgroup_name,mgroup_index) {
let that = this;
that.tableData1 = [];
that.option.series.data[0].value = 0;
that.option.series.data[1].value = 0;
that.query.querys[0][1].value = null;
that.query.querys[1][1].value = null;
let option = deepCopy(that.basicOption);
option.title.text = mgroup_name+"任务进度";
option.series.data[0].value = 0;
option.series.data[1].value = 0;
that.query.querys[0][1].value = mgroup_id;
that.query.querys[1][1].value = mgroup_id;
that.$API.pm.mtask.cquery.req(that.query).then((res) => {
let data = [];
let count_ok1 = 0;
let count_notok1 = 0;
let names = 'tableData'+mgroup_index;
that[names] = res;
// console.log('names',names);
// console.log('that[names]',that[names]);
let count_jh = 0,count_ok = 0,count_diff = 0;
if (res.length > 0) {
res.forEach((item) => {
let obj = item;
obj.rate = Math.round((item.count_ok / item.count) * 100).toFixed(2) + "%";
if (item.count_ok >= item.count) {
count_ok1++;
} else {
count_notok1++;
}
data.push(obj);
count_jh+=item.count;
count_ok+=item.count_ok;
});
that.tableData1 = data;
// that.option.series.data[0].value = count_ok1;
count_diff = count_jh - count_ok;
option.series.data[0].value = count_ok;
option.series.data[1].value = count_diff;
let chartId = 'linechart'+mgroup_index;
that.setChart(chartId, option);
}else{
let chartId = 'linechart'+mgroup_index;
that.setChart(chartId, option);
}
that.option.series.data[0].value = count_ok1;
that.option.series.data[1].value = count_notok1;
});
},
mgroupChange(){
let that = this;
that.query.querys[0][1].value = that.mgroupId;
that.query.querys[1][1].value = that.mgroupId;
},
handleQuery(){
let that = this;
if(this.searchDate!==''&&this.searchDate!==null){
@ -192,7 +719,11 @@ export default {
that.query.querys[0][0].value = that.start_date;
that.query.querys[1][0].value = that.end_date;
}
that.getData7();
that.options.forEach((item,index)=>{
setTimeout(()=>{
that.getData(item.id,item.name,index);
},500)
})
},
handleExport(val) {
this.exportLoading = true;
@ -206,8 +737,12 @@ export default {
</script>
<style scoped>
#elCol{
height:100%;
#linechart1,#linechart2,#linechart3,#linechart4,
#linechart5,#linechart6,#linechart7,#linechart8,
#linechart9,#linechart10,#linechart11,#linechart12,
#linechart13,#linechart14,#linechart15,#linechart0{
width: 100%;
height: 300px;
}
.tables {
position: absolute;

View File

@ -0,0 +1,223 @@
<template>
<el-container>
<el-aside style="width: 45%; background: #ffffff">
<el-container>
<el-header>
<div class="left-panel">
<span style="font-size: 14px">人员生产统计</span>
</div>
<div class="right-panel">
<!-- 工段 -->
<el-select
v-model="query.mgroup_name"
>
<el-option
v-for="item in options"
:key="item.name"
:label="item.name"
:value="item.name"
>
</el-option>
</el-select>
<!-- 日期 -->
<el-date-picker
v-model="queryData"
type="date"
placeholder="查询日期"
value-format="YYYY-MM-DD"
style="width: 160px"
@change="dateChange"
>
</el-date-picker>
<el-button
type="primary"
icon="el-icon-search"
@click="searchHandle"
></el-button>
<el-button @click="handleExport('1')" type="primary"
>导出</el-button>
</div>
</el-header>
<el-main>
<scTable
ref="tables1"
:data="tableData"
id="exportDiv1"
@row-click="rowClick"
stripe
hideDo
hidePagination
>
<el-table-column label="工段" prop="工段"></el-table-column>
<el-table-column label="操作人" prop="操作人"></el-table-column>
<el-table-column label="生产数" prop="生产数"></el-table-column>
<el-table-column label="合格数" prop="合格数"></el-table-column>
<el-table-column label="不合格数" prop="不合格数"></el-table-column>
<el-table-column label="合格率" prop="合格率"></el-table-column>
<el-table-column label="日期" prop="日期"></el-table-column>
</scTable>
</el-main>
</el-container>
</el-aside>
<el-main class="nopadding">
<el-container>
<el-header>
<div class="left-panel">
<span style="font-size: 14px">人员生产统计详情</span>
</div>
<div class="right-panel">
<el-button @click="handleExport('2')" type="primary"
>导出</el-button
>
</div>
</el-header>
<el-main>
<scTable
ref="tables2"
:data="tableData2"
id="exportDiv2"
stripe
hideDo
hidePagination
>
<el-table-column label="工段" prop="工段"></el-table-column>
<el-table-column label="物料名" prop="物料名"></el-table-column>
<el-table-column label="操作人" prop="操作人"></el-table-column>
<el-table-column label="规格" prop="规格"></el-table-column>
<el-table-column label="型号" prop="型号"></el-table-column>
<el-table-column label="生产数" prop="生产数"></el-table-column>
<el-table-column label="合格数" prop="合格数"></el-table-column>
<el-table-column label="不合格数" prop="不合格数"></el-table-column>
<el-table-column label="合格率" prop="合格率"></el-table-column>
<el-table-column label="日期" prop="日期"></el-table-column>
</scTable>
</el-main>
</el-container>
</el-main>
</el-container>
</template>
<script>
import { mioTypeEnum } from "@/utils/enum.js";
function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}
const ondDayTime = 86400000;
export default {
name: "chart",
data() {
return {
query:{
start_date:"",
end_date:''
},
start_date: "",
end_date: "",
options:[],
tableData: [],
tableData2: [],
queryData:'',
};
},
mounted() {
let that = this;
let date = new Date();
that.query.start_date = that.start_date = that.queryData =
that.query.end_date = that.end_date = date.toISOString().split('T')[0];
// let week = date.getDay(); //week
// let weekFirst = week - 1; //
// let weekLast = 7 - week; //
// if (week == 0) {
// weekFirst = 6;
// weekLast = 0; //
// } else {
// weekFirst = week - 1;
// weekLast = 7 - week;
// }
// let first = new Date(new Date(date.getTime() - weekFirst * ondDayTime)); //
// let last = new Date(new Date(date.getTime() + weekLast * ondDayTime)); //
// this.query.start_date = this.start_date = first.toISOString().split('T')[0];
// this.query.end_date = this.end_date = last.toISOString().split('T')[0];
this.getMgroup();
},
methods: {
getWeekDate(dateTime) {
let date = new Date(dateTime);
let week = date.getDay(); //week
let weekFirst = week - 1; //
let weekLast = 7 - week; //
if (week == 0) {
weekFirst = 6;
weekLast = 0; //
} else {
weekFirst = week - 1;
weekLast = 7 - week;
}
let first = new Date(new Date(date.getTime() - weekFirst * ondDayTime)); //
let last = new Date(new Date(date.getTime() + weekLast * ondDayTime)); //
this.query.start_date = first.toISOString().split('T')[0];
this.query.end_date = last.toISOString().split('T')[0];
},
getMgroup(){
let that = this;
this.$API.mtm.mgroup.list.req({page:0}).then((res) => {
that.options = res;
that.query.mgroup_name = res[0].name;
that.getTableData();
})
},
searchHandle() {
let that = this;
that.tableData = [];
that.getTableData();
},
dateChange(){
this.query.start_date = this.query.end_date = this.queryData;
},
//
getTableData() {
let that = this;
let obj = {};
let query = deepCopy(that.query);
query.group_by_material = "";
query.select_col_material = "";
obj.query = query;
that.$API.bi.dataset.exec.req('ryjxtj', obj).then((res) => {
if (res.data2.ds0) {
that.tableData = res.data2.ds0;
}
});
},
rowClick(row){
console.log(row);
let that = this;
let obj = {};
let query = deepCopy(that.query);
query.where_user = "and userd.name = '"+row.操作人+"'";
obj.query = query;
that.tableData2 = [];
that.$API.bi.dataset.exec.req('ryjxtj', obj).then((res) => {
if( res.data2.ds0){
that.tableData2 = res.data2.ds0;
}
})
},
handleExport(val) {
this.exportLoading = true;
let id = "#exportDiv" + val;
let name = val == "1" ? "库存统计" : "库存出入库统计";
this.$XLSX(id, name);
this.exportLoading = false;
},
},
};
</script>
<style scoped>
.tables {
position: absolute;
top: 4px;
right: 6px;
z-index: 10;
}
</style>

View File

@ -1,11 +1,16 @@
<template>
<el-button
type="primary"
icon="el-icon-plus"
@click="table_add"
></el-button>
<el-divider></el-divider>
<scTable
<el-container>
<el-header>
<div class="left-panel">
<el-button
type="primary"
icon="el-icon-plus"
@click="table_add"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
@ -13,7 +18,6 @@
:params="params"
hidePagination
hideDo
style="height: 400px"
@row-click="rowClick"
>
<el-table-column label="类型" prop="name" width="80">
@ -26,7 +30,7 @@
prop="name"
min-width="100"
></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="80">
<el-table-column label="操作" align="center" width="80">
<template #default="scope">
<el-popconfirm
title="确定删除吗?"
@ -46,7 +50,8 @@
</template>
</el-table-column>
</scTable>
<el-dialog title="创建/编辑" v-model="dialogVisible" width="80%">
</el-main>
<el-dialog title="创建/编辑" v-model="dialogVisible" width="80%">
<el-form :model="saveForm" label-width="100px" ref="saveForm">
<el-form-item label="策略类型" required>
<el-select v-model="saveForm.type">
@ -126,6 +131,7 @@
>
</template>
</el-dialog>
</el-container>
</template>
<script>
import { scheduleTypeEnum, schedulePeriodEnum } from "@/utils/enum.js";

View File

@ -158,7 +158,7 @@ export default {
} else if (cateType.indexOf("opl_") != -1) {
projectId = row.ticket_data.opl;
cateType = "opl";
} else if (cateType == "routepack") {
} else if (cateType == "routepack"||cateType == "backfire") {
projectId = row.ticket_data.t_id;
}
this.$router.push({

View File

@ -168,6 +168,7 @@
</el-card>
<el-card
style="margin-top: 4px; position: relative"
v-if="cateType === 'routepack'"
header="工艺流程"
>
<el-table
@ -599,6 +600,8 @@ export default {
this.getRpj();
} else if (this.cateType === "routepack") {
this.getRoutePack();
} else if (this.cateType === "backfire") {
// 退
} else {
this.getOpl();
}

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

View File

@ -1,16 +1,21 @@
<template>
<el-main>
<el-card>
<div id="main" style="width: 1200px; height: 500px"></div>
<div
id="mains"
style="
width: 1200px;
height: 500px;
position: absolute;
top: 155px;
"
></div>
<div>
<div id="title"
style="width: 850px;padding-left:10px; height: 50px;background-color: rgb(204,51,0);color:white;font-size: 30px;line-height: 50px">
Decarbonization Roadmap of Cement Industry in China
</div>
<div id="title"
style="width: 850px;padding-left:10px; height: 50px;background-color: rgb(204,51,0);color:white;font-size: 30px;line-height: 50px">
when low carbon cement technology breakthroughs
</div>
<!-- 柱状图 -->
<div id="main" style="width: 1200px; height: 600px;border: 4px solid rgb(204,51,0)"></div>
<!-- 折线图 155 / 205-->
<div id="mains" style="width: 1200px;height: 600px;position: absolute;top: 205px;"></div>
</div>
</el-card>
</el-main>
</template>
@ -19,15 +24,22 @@
import * as echarts from "echarts";
const updateFrequency = 2000;
const dimension = 0;
// const countryColors = {
// : "rgb(244,192,0)",
// : "rgb(242,119,36)",
// : "rgb(103,169,59)",
// : "rgb(77,148,211)",
// : "rgb(159,159,159)",
// : "rgb(84,112,198)",
// };
const countryColors = {
水泥碳排放: "rgb(244,192,0)",
石膏板排放: "rgb(242,119,36)",
建筑卫生陶瓷排放: "rgb(103,169,59)",
玻璃排放: "rgb(77,148,211)",
玻纤排放: "rgb(159,159,159)",
墙体材料: "rgb(84,112,198)",
'Low carbon cement': "rgb(244,192,0)",
'Alternative Fuel': "rgb(242,119,36)",
'Clean Energy Electricity': "rgb(103,169,59)",
'Energy Efficiencylmprovement Technology': "rgb(77,148,211)",
'CCUS': "rgb(159,159,159)",
};
const years = [2022, 2025, 2030, 2040, 2050, 2060];
const years = [2021, 2025, 2030, 2040, 2050, 2060];
export default {
name: "chart",
data() {
@ -39,61 +51,94 @@ export default {
var myChart = echarts.init(chartDom);
var option;
let startIndex = 0;
let data1 = [
["Income", "Life Expectancy", "Population", "Country", "Year"],
[0, 34.05, 0, "Low carbon cement", 2021],
[0, 39, 0, "Alternative Fuel", 2021],
[0, 32, 0, "Clean Energy Electricity", 2021],
[0, 32.2, 0, "Energy Efficiencylmprovement Technology", 2021],
[0, 36.57, 0, "CCUS", 2021],
[6, 34.05, 6, "Low carbon cement", 2025],
[14, 39, 14, "Alternative Fuel", 2025],
[6, 32, 6, "Clean Energy Electricity", 2025],
[8, 32.2, 8, "Energy Efficiencylmprovement Technology", 2025],
[4, 36.5, 4, "CCUS", 2025],
[33, 34.05, 33, "Low carbon cement", 2030],
[26, 39, 26, "Alternative Fuel", 2030],
[10, 32, 10, "Clean Energy Electricity", 2030],
[18, 32.2, 18, "Energy Efficiencylmprovement Technology", 2030],
[9, 36.57, 9, "CCUS", 2030],
[78, 34.05, 78, "Low carbon cement", 2040],
[68, 39, 68, "Alternative Fuel", 2040],
[17, 32, 17, "Clean Energy Electricity", 2040],
[18, 32.2, 18, "Energy Efficiencylmprovement Technology", 2040],
[19, 36.57, 19, "CCUS", 2040],
[118, 34.05, 118, "Low carbon cement", 2050],
[111, 39, 111, "Alternative Fuel", 2050],
[23, 32, 23, "Clean Energy Electricity", 2050],
[16, 32.2, 16, "Energy Efficiencylmprovement Technology", 2050],
[57, 36.57, 57, "CCUS", 2050],
[118, 34.05, 118, "Low carbon cement", 2060],
[177, 39, 117, "Alternative Fuel", 2060],
[26, 32, 26, "Clean Energy Electricity", 2060],
[16, 32.2, 16, "Energy Efficiencylmprovement Technology", 2060],
[254, 36.57, 254, "CCUS", 2060],
];
let data = [
["Income", "Life Expectancy", "Population", "Country", "Year"],
[12.09, 34.05, 0, "水泥碳排放", 2022],
[1.31, 39, 0, "石膏板排放", 2022],
[1.45, 32, 0, "建筑卫生陶瓷排放", 2022],
[0.36, 32.2, 0, "玻璃排放", 2022],
[0.12, 36.57, 0, "玻纤排放", 2022],
[0.25, 36.57, 0, "墙体材料", 2022],
[0, 34.05, 0, "Low carbon cement", 2021],
[0, 39, 0, "Alternative Fuel", 2021],
[0, 32, 0, "Clean Energy Electricity", 2021],
[0, 32.2, 0, "Energy Efficiencylmprovement Technology", 2021],
[0, 36.57, 0, "CCUS", 2021],
[11.61, 34.05, 6, "水泥碳排放", 2025],
[1.06, 39, 14, "石膏板排放", 2025],
[1.16, 32, 6, "建筑卫生陶瓷排放", 2025],
[0.31, 32.2, 8, "玻璃排放", 2025],
[0.1, 36.5, 4, "玻纤排放", 2025],
[0.23, 36.57, 0, "墙体材料", 2025],
[6, 34.05, 6, "Low carbon cement", 2025],
[14, 39, 14, "Alternative Fuel", 2025],
[6, 32, 6, "Clean Energy Electricity", 2025],
[8, 32.2, 8, "Energy Efficiencylmprovement Technology", 2025],
[3, 36.5, 4, "CCUS", 2025],
[9.32, 34.05, 33, "水泥碳排放", 2030],
[0.88, 39, 26, "石膏板排放", 2030],
[0.95, 32, 10, "建筑卫生陶瓷排放", 2030],
[0.27, 32.2, 18, "玻璃排放", 2030],
[0.08, 36.57, 9, "玻纤排放", 2030],
[0.19, 36.57, 9, "墙体材料", 2030],
[33, 34.05, 33, "Low carbon cement", 2030],
[26, 39, 26, "Alternative Fuel", 2030],
[10, 32, 10, "Clean Energy Electricity", 2030],
[18, 32.2, 18, "Energy Efficiencylmprovement Technology", 2030],
[7, 36.57, 9, "CCUS", 2030],
[4.61, 34.05, 78, "水泥碳排放", 2040],
[0.63, 39, 68, "石膏板排放", 2040],
[0.68, 32, 17, "建筑卫生陶瓷排放", 2040],
[0.22, 32.2, 18, "玻璃排放", 2040],
[0.06, 36.57, 19, "玻纤排放", 2040],
[0.10, 36.57, 19, "墙体材料", 2040],
[118, 34.05, 78, "Low carbon cement", 2040],
[68, 39, 68, "Alternative Fuel", 2040],
[17, 32, 17, "Clean Energy Electricity", 2040],
[18, 32.2, 18, "Energy Efficiencylmprovement Technology", 2040],
[14, 36.57, 19, "CCUS", 2040],
[2.65, 34.05, 118, "水泥碳排放", 2050],
[0.26, 39, 111, "石膏板排放", 2050],
[0.27, 32, 23, "建筑卫生陶瓷排放", 2050],
[0.14, 32.2, 16, "玻璃排放", 2050],
[0.035, 36.57, 57, "玻纤排放", 2050],
[0.055, 36.57, 57, "墙体材料", 2050],
[157, 34.05, 118, "Low carbon cement", 2050],
[111, 39, 111, "Alternative Fuel", 2050],
[23, 32, 23, "Clean Energy Electricity", 2050],
[16, 32.2, 16, "Energy Efficiencylmprovement Technology", 2050],
[41, 36.57, 57, "CCUS", 2050],
[1.94, 34.05, 118, "水泥碳排放", 2060],
[0.04, 39, 117, "石膏板排放", 2060],
[0.0008, 32, 26, "建筑卫生陶瓷排放", 2060],
[0.09, 32.2, 16, "玻璃排放", 2060],
[0.022, 36.57, 254, "玻纤排放", 2060],
[0.034, 36.57, 254, "墙体材料", 2060],
[196, 34.05, 118, "Low carbon cement", 2060],
[177, 39, 117, "Alternative Fuel", 2060],
[26, 32, 26, "Clean Energy Electricity", 2060],
[16, 32.2, 16, "Energy Efficiencylmprovement Technology", 2060],
[184, 36.57, 254, "CCUS", 2060],
];
let startYear = years[startIndex];
option = {
grid: {
top: 50,
bottom: 30,
left: 150,
left: 300,
right: 80,
},
xAxis: {
max: "13",
min: "0.0008",
max: "dataMax",
// max: "13",
// min: "0.0008",
position: "top",
axisLabel: {
// show: false,
@ -186,38 +231,47 @@ export default {
myChart.setOption(option);
}
//线
let countries = ["建材行业碳排放总量"];
let countries = ["CementCO:Emissions"];
let datasetWithFilters = [];
let seriesList = [];
let _rawData1 = [
["Income", "Country", "Year"],
[575, "CementCO:Emissions", 2021],
[558, "CementCO:Emissions", 2025],
[520, "CementCO:Emissions", 2030],
[420, "CementCO:Emissions", 2040],
[296, "CementCO:Emissions", 2050],
[31, "CementCO:Emissions", 2060],
];
let _rawData = [
["Income", "Country", "Year"],
[15.6, "建材行业碳排放总量", 2022],
[14.2, "建材行业碳排放总量", 2025],
[11.1, "建材行业碳排放总量", 2030],
[5.7, "建材行业碳排放总量", 2040],
[2.4, "建材行业碳排放总量", 2050],
[0.1, "建材行业碳排放总量", 2060],
[575, "CementCO:Emissions", 2021],
[559, "CementCO:Emissions", 2025],
[523, "CementCO:Emissions", 2030],
[386, "CementCO:Emissions", 2040],
[272, "CementCO:Emissions", 2050],
[23, "CementCO:Emissions", 2060],
];
var chartDoms = document.getElementById("mains");
var myCharts = echarts.init(chartDoms);
datasetWithFilters.push({
id: "dataset_建材行业碳排放总量",
id: "dataset_CementCO:Emissions",
fromDatasetId: "dataset_raw",
transform: {
type: "filter",
config: {
and: [
{ dimension: "Year", gte: 1950 },
{ dimension: "Country", "=": "建材行业碳排放总量" },
{ dimension: "Country", "=": "CementCO:Emissions" },
],
},
},
});
seriesList.push({
type: "line",
datasetId: "dataset_建材行业碳排放总量",
datasetId: "dataset_CementCO:Emissions",
showSymbol: false,
name: "建材行业碳排放总量",
name: "CementCO:Emissions",
endLabel: {
show: true,
formatter: function (params) {
@ -276,7 +330,8 @@ export default {
name: "",
},
grid: {
left: 140,
top:70,
left: 300,
},
series: seriesList,
};

View File

@ -0,0 +1,107 @@
<template>
<el-drawer
v-model="visible"
title="检验记录"
:size="'90%'"
destroy-on-close
@closed="$emit('closed')"
>
<el-container>
<el-main>
<scTable
ref="drawer_table"
:apiObj="apiObj"
row-key="id"
stripe
:params="paramsObj"
>
<!-- <el-table-column type="index" width="50" /> -->
<el-table-column label="检验类型">
<template #default="scope">
<el-tag v-if="scope.row.type2 == 10">
{{ type2_[scope.row.type2] }}
</el-tag>
<el-tag v-else type="success">
{{ type2_[scope.row.type2] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="物料批次" prop="batch">
</el-table-column>
<el-table-column label="总数" prop="count">
</el-table-column>
<el-table-column label="检验数">
<template #default="scope">
<span v-if="scope.row.type2 == 10">{{ scope.row.count_sampling }}</span>
<span v-else>{{ scope.row.count }}</span>
</template>
</el-table-column>
<el-table-column label="合格数">
<template #default="scope">
<span v-if="scope.row.type2 == 10">{{ scope.row.count_sampling_ok }}</span>
<span v-else>{{ scope.row.count_ok }}</span>
</template>
</el-table-column>
<el-table-column label="不合格数" prop="count_notok">
</el-table-column>
<el-table-column label="合格率">
<template #default="scope">
<span v-if="scope.row.type2 == 10">{{ scope.row.count_sampling_ok/scope.row.count_sampling*100 }}%</span>
<span v-else>{{ scope.row.count_ok/scope.row.count*100 }}%</span>
</template>
</el-table-column>
<el-table-column label="检验日期" prop="test_date">
</el-table-column>
<el-table-column label="检验人" prop="test_user_name">
</el-table-column>
<!-- <el-table-column label="操作" fixed="right" width="60">
<template #default="scope">
<el-button
link
type="primary"
v-auth="'ftestwork.update'"
@click="table_del(scope.row)"
>删除
</el-button>
</template>
</el-table-column> -->
</scTable>
</el-main>
</el-container>
</el-drawer>
</template>
<script>
export default {
emits: ["closed"],
props: {
wm: { type: String, default: "" },
},
data() {
return {
visible: false,
apiObj: null,
paramsObj: {},
form: {},
type2_: {
10: "抽检",
20: "全检",
},
isSaveing: false,
};
},
mounted() {},
methods: {
open() {
this.visible = true;
this.paramsObj.wm = this.wm;
this.apiObj = this.$API.qm.ftestwork.list;
return this;
},
table_del(row){
this.$API.qm.ftestwork.delete.req(row.id).then((res) => {
this.$refs.drawer_table.fetch();
});
},
},
};
</script>

View File

@ -16,26 +16,26 @@
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="物料批次" prop="batch">
<el-form-item label="检验类型">
<el-select
v-model="form.batch"
placeholder="物料批次"
clearable
v-model="form.type2"
placeholder="检验类型"
style="width: 100%"
@change="handleChange"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.batch"
:value="item.id"
>
<span>{{item.batch}}</span>
<span style="float:right">({{item.count}})</span>
</el-option>
<el-option
v-for="item in typeOption"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="物料批次" prop="batch">
<el-input v-model="form.batch" disabled></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="总数">
<el-input
@ -44,34 +44,44 @@
></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-col :md="12" :sm="24" v-if="form.type2==20">
<el-form-item label="检验数量">
<el-input-number
:max="batchCount"
controls-position="right"
v-model="form.count"
style="width: 100%"
precision="0"
@change="handleCheckChange"
@change="handleCountNotokChange"
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-col :md="12" :sm="24" v-if="form.type2==20">
<el-form-item label="合格数量">
<el-input v-model="form.count_ok" disabled></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="form.type2==10">
<el-form-item label="抽检数量">
<el-input-number
:max="batchCount"
controls-position="right"
v-model="form.count_sampling"
style="width: 100%"
precision="0"
@change="handleCheckChange"
@change="handleCountNotokChange"
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="合格数量">
<el-input
v-model="form.count_ok"
<el-col :md="12" :sm="24" v-if="form.type2==10">
<el-form-item label="抽检合格数">
<el-input-number
controls-position="right"
v-model="form.count_sampling_ok"
style="width: 100%"
disabled
></el-input>
precision="0"
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
@ -85,6 +95,16 @@
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="合格率">
<el-input-number
controls-position="right"
v-model="count_ok_rate"
style="width: 100%"
precision="0"
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="检验日期" prop="test_date">
<el-date-picker
@ -123,7 +143,6 @@
v-model="count_notok_json.count_n_hd"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -135,7 +154,6 @@
v-model="count_notok_json.count_n_wj"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -147,7 +165,6 @@
v-model="count_notok_json.count_n_yd"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -159,7 +176,6 @@
v-model="count_notok_json.count_n_txd"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -171,7 +187,6 @@
v-model="count_notok_json.count_n_qp"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -183,7 +198,6 @@
v-model="count_notok_json.count_n_swen"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -195,12 +209,21 @@
v-model="count_notok_json.count_n_bb"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="小崩边">
<el-input-number
controls-position="right"
v-model="count_notok_json.count_n_xbb"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="划伤">
<el-input-number
@ -208,7 +231,6 @@
v-model="count_notok_json.count_n_hs"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -220,7 +242,6 @@
v-model="count_notok_json.count_n_md"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -233,7 +254,17 @@
v-model="count_notok_json.count_n_ps"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="其他">
<el-input-number
controls-position="right"
v-model="count_notok_json.count_n_qt"
style="width: 100%"
precision="0"
@change="handleCountChange"
></el-input-number>
</el-form-item>
@ -243,7 +274,7 @@
</el-main>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit"
>保存</el-button>
>提交</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-container>
@ -273,10 +304,12 @@ export default {
test_date: "",
batch: "",
count: null,
count_ok: null,
count_ok: 0,
count_sampling_ok:'',
count_notok: 0,
count_notok_json:{}
},
count_ok_rate:100,
count_notok_json:{
//
count_n_wj: 0,
@ -289,40 +322,36 @@ export default {
count_n_hs: 0,
count_n_md: 0,
count_n_bb:0,
count_n_xbb:0,
count_n_ps: 0,
count_n_qt:0,
},
rules: {
test_date: [
{
required: true,
message: "请选择检验日期",
trigger: "blur",
},
],
batch: [
{
required: true,
message: "请选择物料批次",
trigger: "blur",
},
],
test_date: [{required: true,message: "请选择检验日期",trigger: "blur"}],
batch: [{required: true,message: "请选择物料批次",trigger: "blur"}],
test_user: [{required: true,message: "请选择物料批次",trigger: "blur"}],
},
options: [],
userList : [],
typeOption:[
{name:'全检',value:20},
{name:'抽检',value:10},
],
selectionFilters: [],
batchCount:null,
formCount:null,
visible: false,
supplier:null,
isSaveing: false,
options: [],
userList : [],
selectionFilters: [],
setFiltersVisible: false,
};
},
mounted() {
this.batchCount = this.itemObj.count;
this.batchCount = this.itemObj.count_cando;
this.form.batch = this.itemObj.batch;
this.form.wm = this.itemObj.id;
this.form.count = this.itemObj.count;
this.form.count = this.itemObj.count_cando;
this.form.supplier = this.itemObj.supplier;
this.deptID = this.$TOOL.data.get('gx_deptID');
this.getUsers();
},
@ -332,7 +361,6 @@ export default {
this.mode = mode;
this.modeTitle = mode+'抽检';
this.visible = true;
return this;
},
getUsers(){
@ -351,9 +379,6 @@ export default {
});
});
},
handleCheckChange(){
this.form.count_ok = this.form.count-this.form.count_notok;
},
handleCountChange(type){
this.form.count_notok =
this.count_notok_json.count_n_wj+
@ -364,12 +389,20 @@ export default {
this.count_notok_json.count_n_swen+
this.count_notok_json.count_n_hs+
this.count_notok_json.count_n_bb+
this.count_notok_json.count_n_xbb+
this.count_notok_json.count_n_md+
this.count_notok_json.count_n_ps;
this.form.count_ok = this.form.count - this.form.count_notok;
this.count_notok_json.count_n_ps+
this.count_notok_json.count_n_qt;
this.handleCountNotokChange();
},
handleCountNotokChange(){
this.form.count_ok = this.form.count - this.form.count_notok;
if(this.form.type2==10){//
this.form.count_sampling_ok = this.form.count_sampling - this.form.count_notok;
this.count_ok_rate = ((this.form.count_sampling_ok/this.form.count_sampling)*100).toFixed(2);
}else if(this.form.type2==20){//
this.form.count_ok = this.form.count - this.form.count_notok;
this.count_ok_rate = ((this.form.count_ok/this.form.count)*100).toFixed(2);
}
},
//
getMaterialBatch() {
@ -398,17 +431,28 @@ export default {
this.count_notok_json.count_n_swen+
this.count_notok_json.count_n_hs+
this.count_notok_json.count_n_bb+
this.count_notok_json.count_n_xbb+
this.count_notok_json.count_n_md+
this.count_notok_json.count_n_ps;
if(count_notok>this.form.count_notok){
this.$notify.error("不合格数量有问题");
this.count_notok_json.count_n_ps+
this.count_notok_json.count_n_qt;
if(count_notok>that.form.count_notok){
that.$notify.error("不合格数量有问题");
that.isSaveing = false;
}else{
if(count_notok<this.form.count_notok){
that.count_notok_json.count_n_qt = this.form.count_notok-count_notok;
if(count_notok<that.form.count_notok){
that.count_notok_json.count_n_qt = that.form.count_notok-count_notok;
}
if(that.supplier!== null&&that.form.type2==10){
that.form.need_update_wm = false;
}
// that.form.count_ok = that.form.count-that.form.count_notok;
if(that.form.type2==10){//
that.form.count_sampling_ok = that.form.count_sampling - that.form.count_notok;
}else{//
that.form.count_ok = that.form.count - that.form.count_notok;
}
that.form.count_ok = this.form.count-this.form.count_notok;
that.form.count_notok_json = that.count_notok_json;
console.log('that.form',that.form)
that.$API.qm.ftestwork.create.req(that.form)
.then((res) => {
that.$API.qm.ftestwork.submit.req(res.id)

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

View File

@ -0,0 +1,547 @@
<template>
<el-dialog
:title="titleMap[mode]"
v-model="visible"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
label-position="right"
label-width="100px"
style="padding: 0 10px"
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="生产设备">
<el-select
v-model="form.equipment"
placeholder="生产设备"
clearable
filterable
class="width100"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.label"
:value="item.id"
>
<span style="float:left">{{item.name}}</span>
<span style="float:right">{{item.number}}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="个人任务">
<el-select
v-model="form.mtaskb"
placeholder="个人任务"
clearable
filterable
class="width100"
>
<el-option
v-for="item in mtaskbOtions"
:key="item.id"
:label="item.handle_user_name"
:value="item.id"
>
<span style="float:left">{{item.handle_user_name}}</span>
<span style="float:right">{{item.count}}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="开始时间" prop="work_start_time">
<el-date-picker
v-model="form.work_start_time"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
class="width100"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="结束时间" prop="work_end_time">
<el-date-picker
v-model="form.work_end_time"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
class="width100"
:disabledDate="disabledDateFn"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="班次">
<el-select
v-model="form.shift"
placeholder="班次"
clearable
filterable
class="width100"
>
<el-option
v-for="item in shiftOtions"
: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="批次号" prop="wm_in">
<el-select
v-model="form.wm_in"
placeholder="交接物料"
clearable
class="width100"
>
<el-option
v-for="item in materialOptions"
:key="item.id"
:label="item.batch"
:value="item.id"
>
<div
style="
display: flex;
justify-content: space-between;
"
>
<span style="flex:1;margin-right:15px!important;">{{ item.batch }}</span>
<span style="flex:1;">{{ item.count }}</span>
</div>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="领用数量">
<el-input-number
v-model="form.count_use"
:min="1"
controls-position="right"
class="width100"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="加工前不良" prop="count_pn_jgqbl">
<el-input-number
v-model="form.count_pn_jgqbl"
:min="0"
class="width100"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="实际生产数">
<el-input-number
v-model="form.count_real"
:min="0"
class="width100"
controls-position="right"
@change="countChanges"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="合格数量">
<el-input-number
v-model="form.count_ok"
:min="0"
class="width100"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="不合格数量">
<el-input-number
v-model="form.count_notok"
:min="0"
class="width100"
@change="countChanges"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input
v-model="form.note"
clearable
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-divider></el-divider>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="划伤">
<el-input-number
v-model="form.count_n_hs"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="气泡">
<el-input-number
v-model="form.count_n_qp"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="水纹">
<el-input-number
v-model="form.count_n_swen"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="崩边">
<el-input-number
v-model="form.count_n_bb"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="雾面">
<el-input-number
v-model="form.count_n_wm"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="小崩边">
<el-input-number
v-model="form.count_n_xbb"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="麻点">
<el-input-number
v-model="form.count_n_md"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="线痕">
<el-input-number
v-model="form.count_n_xh"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="破损">
<el-input-number
v-model="form.count_n_ps"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
<!-- <el-col :md="12" :sm="24">
<el-form-item label="棕圈">
<el-input-number
v-model="form.count_n_zq"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col> -->
<el-col :md="12" :sm="24">
<el-form-item label="其他">
<el-input-number
v-model="form.count_n_qt"
:min="0"
class="width100"
controls-position="right"
@change="countChange"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-main>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit"
>保存</el-button
>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-container>
</el-dialog>
</template>
<script>
const defaultForm = {
batch: null,
equipment: null,
mtaskb: null,
shift: null,
wm_in: null,
fmlog:null,
work_start_time:'',
work_end_time:'',
material_out:'',
count_pn_jgqbl:0,
count_use:0,
count_real: 0,
count_ok: 0,
count_notok: 0,
count_n_hs: 0,
count_n_qp: 0,
count_n_swen: 0,
count_n_bb: 0,
count_n_xbb:0,
count_n_md: 0,
count_n_xh: 0,
count_n_ps: 0,
count_n_qt: 0,
count_n_wm: 0,
count_n_zq:0,
note:''
};
export default {
props: {
fmlog: {
type: String,
default: "",
},
mgroup: {
type: String,
default: "",
},
mtask: {
type: String,
default: "",
},
},
computed: {
title() {
return this.titleMap[this.mode];
},
},
emits: ["success", "closed"],
data() {
return {
loading: false,
mode: "add",
titleMap: {
add: "新增日志",
edit: "编辑日志",
show: "查看日志",
},
//
form: Object.assign({}, defaultForm),
//
rules: {
work_start_time: [{required: true,message: "请选择生产开始时间",trigger: "blur",},],
work_end_time:[{required: true,message: "请选择生产开始时间",trigger: "blur",},],
route: [{required: true,message: "请选择工艺路线",trigger: "blur",},]
},
material_in:'',
material_out:'',
shiftOtions:[],
mtaskbOtions:[],
visible: false,
isSaveing: false,
options: [],
routeOptions: [],
supplierOptions: [],
materialOptions:[],
setFiltersVisible: false,
};
},
mounted() {
this.getShift();
this.getMgroup();
this.getMtask();
this.getMtaskb();
console.log('this.fmlog',this.fmlog)
this.form.fmlog = this.fmlog;
console.log('this.form.fmlog',this.form.fmlog)
},
methods: {
disabledDateFn(time) {
return time.getTime() > new Date().getTime();
},
getShift(){
let that = this;
that.$API.mtm.shift.list.req({ page: 0 }).then((res) => {
that.shiftOtions = res;
});
},
getMgroup(){
let that = this;
that.$API.mtm.mgroup.item.req(that.mgroup).then((res) => {
that.deptId = res.belong_dept;
that.process = res.process;
that.getEquipment();
});
},
getEquipment() {
let that = this;
that.options = [];
that.$API.em.equipment.list.req({ page: 0, type: 10,mgroup:that.mgroup }).then((res) => {
res.forEach((item) => {
let obj = {};
Object.assign(obj, item);
obj.label = item.name+'-'+item.number;
that.options.push(obj);
});
});
},
getMtask() {
let that = this;
that.$API.pm.mtask.item.req(that.mtask).then(res=>{
that.material_in = res.material_in;
that.material_out = that.form.material_out = res.material_out;
that.getMaterial();
});
},
getMtaskb() {
let that = this;
that.$API.pm.mtaskb.list.req({ page: 0, mtask:that.mtask }).then((res) => {
that.mtaskbOtions = res;
});
},
//
getMaterial() {
let that = this;
that.$API.wpm.wmaterial.list.req({mgroupx: that.mgroup,material: that.material_in,page: 0,}).then((res) => {
that.materialOptions = res;
});
},
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
//
setData(data) {
console.log("data", data);
Object.assign(this.form, data);
},
countChange() {
this.form.count_notok =
this.form.count_n_hs +
this.form.count_n_qp +
this.form.count_n_swen +
this.form.count_n_bb +
this.form.count_n_xbb +
this.form.count_n_md +
this.form.count_n_xh +
this.form.count_n_ps +
this.form.count_n_zq +
this.form.count_n_qt +
this.form.count_n_wm;
this.form.count_ok = this.form.count_real - this.form.count_notok;
},
countChanges(){
this.form.count_ok = this.form.count_real - this.form.count_notok;
},
//
submit() {
let that = this;
that.$refs.dialogForm.validate(async (valid) => {
if (valid) {
that.isSaveing = true;
that.form.mgroup = that.mgroup;
if (that.mode === "add") {
that.$API.wpm.mlog.create.req(that.form).then((res) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}).catch(()=>{
that.isSaveing = false;
});
} else {
let obj = {};
obj.work_end_time = that.form.work_end_time;
obj.handle_user = that.form.handle_user;
obj.note = that.form.note;
that.$API.wpm.mlog.update.req(that.form.id, that.form).then((res) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}).catch(()=>{
that.isSaveing = false;
});
}
}
});
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style>
.form_unit {
position: absolute;
right: -25px;
}
.width100{
width: 100%;
}
</style>

View File

@ -0,0 +1,312 @@
<template>
<el-drawer
title="日志详情"
v-model="visible"
:size="'90%'"
destroy-on-close
@closed="$emit('closed')"
>
<el-container>
<el-header style="height:100px;padding:0">
<el-card style="width: 100%" header="基本信息" shadow="never">
<el-descriptions>
<el-descriptions-item label="工艺路线">{{
fmlogItem.routepack_name
}}</el-descriptions-item>
<el-descriptions-item label="任务编号">{{
fmlogItem.mtask_number
}}</el-descriptions-item>
<el-descriptions-item label="部门/车间">{{
fmlogItem.belong_dept_name
}}</el-descriptions-item>
</el-descriptions>
</el-card>
</el-header>
<!-- mlog -->
<el-main style="padding-top: 40px;position: relative;">
<el-button
type="primary"
style="position: absolute;top: 5px;"
v-if="fmlogItem.submit_time == null"
icon="el-icon-plus"
@click="table_add"
>新增</el-button
>
<scTable
stripe
ref="table"
:apiObj="apiObj"
row-key="id"
:params="params"
:query="params"
@row-click="table_detail"
>
<el-table-column type="index" width="50"></el-table-column>
<el-table-column type="expand">
<template #default="props">
<div style="padding-left: 50px">
<el-descriptions :column="2">
<template v-for="item in props.row.mlogb_full" :key="item.id">
<el-descriptions-item :label="item.material_out!==null?'输出物料':'输入物料'">
<span v-if="item.material_out!==null">{{item.batch}}</span>
<span v-else>{{item.batch}}</span>
</el-descriptions-item>
</template>
</el-descriptions>
<el-divider></el-divider>
<el-descriptions :column="4">
<el-descriptions-item label="划伤" v-if="props.row.count_n_hs>0">
{{props.row.count_n_hs}}
</el-descriptions-item>
<el-descriptions-item label="气泡" v-if="props.row.count_n_qp>0">
{{props.row.count_n_qp}}
</el-descriptions-item>
<el-descriptions-item label="水纹" v-if="props.row.count_n_swen>0">
{{props.row.count_n_swen}}
</el-descriptions-item>
<el-descriptions-item label="崩边" v-if="props.row.count_n_bb>0">
{{props.row.count_n_bb}}
</el-descriptions-item>
<el-descriptions-item label="小崩边" v-if="props.row.count_n_xbb>0">
{{props.row.count_n_xbb}}
</el-descriptions-item>
<el-descriptions-item label="雾面" v-if="props.row.count_n_wm>0">
{{props.row.count_n_wm}}
</el-descriptions-item>
<el-descriptions-item label="麻点" v-if="props.row.count_n_md>0">
{{props.row.count_n_md}}
</el-descriptions-item>
<el-descriptions-item label="线痕" v-if="props.row.count_n_xh>0">
{{props.row.count_n_xh}}
</el-descriptions-item>
<el-descriptions-item label="破损" v-if="props.row.count_n_ps>0">
{{props.row.count_n_ps}}
</el-descriptions-item>
</el-descriptions>
</div>
</template>
</el-table-column>
<el-table-column label="操作员" prop="handle_user_name" min-width="80"></el-table-column>
<el-table-column label="设备" prop="equipment_name" min-width="150"></el-table-column>
<el-table-column label="领料数" prop="count_use"></el-table-column>
<el-table-column label="加工数" prop="count_real"></el-table-column>
<el-table-column label="加工前不良" prop="count_pn_jgqbl"></el-table-column>
<el-table-column label="合格数" prop="count_ok"></el-table-column>
<el-table-column label="不合格数" prop="count_notok"></el-table-column>
<el-table-column label="开始时间" prop="work_start_time"></el-table-column>
<el-table-column label="结束时间" prop="work_end_time"></el-table-column>
<el-table-column label="班次" prop="shift_name"></el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
width="100"
>
<template #default="scope">
<el-button link size="small" v-auth="'mlog.update'"
v-if="scope.row.submit_time == null" type="primary"
@click.stop="table_edit(scope.row)"
>编辑
</el-button>
<el-button link size="small" v-auth="'mlog.submit'"
v-if="scope.row.submit_time == null" type="primary"
@click.stop="mlogSubmit(scope.row)"
>提交
</el-button>
<el-button link size="small" v-auth="'mlog.delete'" type="danger"
v-if="scope.row.submit_time == null"
@click.stop="table_del(scope.row)"
>删除
</el-button>
<el-button link v-else size="small" type="danger"
@click.stop="mlogRevert(scope.row)"
>撤回
</el-button>
</template>
</el-table-column>
</scTable>
</el-main>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
:fmlog="params.fmlog"
:mgroup="mgroup"
:mtask="mtask"
@success="handleSaveSuccess"
@closed="dialog.save = false"
>
</save-dialog>
<check-dialog
v-if="dialog.check"
ref="checkDialog"
@success="handleCheckSuccess"
@closed="dialog.check = false"
>
</check-dialog>
</el-container>
</el-drawer>
</template>
<script>
import saveDialog from "./f_mlogs_form.vue";
import checkDialog from "./mlogb_check.vue";
export default {
props: {
fmlogId: {
type: String,
default: "",
},
},
components: {
saveDialog,
checkDialog,
},
emits: ["success", "closed"],
data() {
return {
loading: false,
//
form: {},
dialog: {
save: false,
edit: false,
check: false,
},
apiObj: null,
params: {
page: 0,
fmlog: "",
},
mgroup: "",
fmlogItem: {},
saveInForm: {
count_use: 0,
count_pn_jgqbl: 0,
},
oinfo_json:{
退火炉号:'',
退火时间:'',
退火温度:'',
抽检结果:'',
抽检数:'',
强度落球:'',
},
fileList:[],
test_file:'',
deptId: "",
visible: false,
isSaveing: false,
options: [],
saveInDialog: false,
ticketDialog:false,
setFiltersVisible: false,
rules: {
count_use: [
{
required: true,
message: "请输入领取数量",
trigger: "blur",
},
],
},
};
},
mounted() {
this.getfmlogItem();
this.params.fmlog = this.fmlogId;
console.log('this.params.fmlog',this.params.fmlog);
this.apiObj = this.$API.wpm.mlog.list;
},
methods: {
open() {
this.visible = true;
},
getfmlogItem() {
let that = this;
that.$API.wpm.fmlog.item.req(that.fmlogId).then((res) => {
that.fmlogItem = res;
that.mgroup = res.mgroup;
that.mtask = res.mtask;
});
},
//
setData(data) {
Object.assign(this.form, data);
this.getRoute(data.id);
},
table_add() {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open('add');
});
},
table_edit(row){
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open('edit').setData(row);
});
},
//
mlogSubmit(row) {
let that = this;
that.isSaveing = true;
that.$API.wpm.mlog.submit.req(row.id).then((res) => {
that.isSaveing = false;
this.$refs.table.refresh();
that.$message.success("操作成功");
});
},
//
mlogRevert(row) {
this.$confirm(`确定撤回该日志吗?`, "提示", {
type: "warning",
}).then(() => {
var id = row.id;
this.$API.wpm.mlog.revert.req(id).then((res) => {
if (res.err_msg) {
this.$message.error(res.err_msg);
} else {
this.$refs.table.refresh();
this.$message.success("撤回成功");
}
});
});
},
//
table_del(row) {
let that = this;
this.$confirm(`确定删除该日志吗?`, "提示", {
type: "warning",
}).then(() => {
var id = row.id;
this.$API.wpm.mlog.delete.req(id).then((res) => {
if (res.err_msg) {
this.$message.error(res.err_msg);
} else {
this.$refs.table.refresh();
this.$message.success("删除成功");
}
});
});
},
handleSaveSuccess() {
this.$refs.table.refresh();
},
handleCheckSuccess() {
this.$refs.table.refresh();
},
fileUPSuccess(res) {
console.log('res',res);
this.test_file = res.id;
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style></style>

View File

@ -0,0 +1,232 @@
<template>
<el-dialog
:title="titleMap[mode]"
v-model="visible"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
label-position="right"
label-width="80px"
style="padding: 0 10px"
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="工艺路线" prop="route">
<el-select
v-model="form.route"
placeholder="工艺路线"
clearable
filterable
style="width: 100%"
:disabled="mode == 'edit'"
>
<el-option
v-for="item in routeOptions"
:key="item.id"
:label="item.routepack_name"
:value="item.id"
>
<span
>{{ item.routepack_name }}-{{
item.process_name
}}</span
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="关联任务">
<el-select
v-model="form.mtask"
placeholder="关联任务"
clearable
style="width: 100%"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.number"
:value="item.id"
>
<!-- <span>{{ item.material_out_name }}</span>/ -->
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input
v-model="form.note"
clearable
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-main>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit"
>保存</el-button
>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-container>
</el-dialog>
</template>
<script>
const defaultForm = {
route: "",
mtask:"",
mgroup:"",
note:'',
};
export default {
props: {
process: {
type: String,
default: "",
},
mgroupName:{
type: String,
default: "",
},
mgroup: {
type: String,
default: "",
},
dept: {
type: String,
default: "",
},
},
computed: {
title() {
return this.titleMap[this.mode];
},
},
emits: ["success", "closed"],
data() {
return {
loading: false,
mode: "add",
titleMap: {
add: "新增日志",
edit: "编辑日志",
show: "查看日志",
},
//
form: Object.assign({}, defaultForm),
//
rules: {
route: [
{
required: true,
message: "请选择工艺路线",
trigger: "blur",
},
],
},
visible: false,
isSaveing: false,
options: [],
routeOptions: [],
setFiltersVisible: false,
};
},
mounted() {
this.$nextTick(() => {
this.getRoute();
this.getMtask();
})
},
methods: {
disabledDateFn(time) {
return time.getTime() > new Date().getTime();
},
getMtask() {
let that = this;
this.$API.pm.mtask.list
.req({ page: 0, mgroup: that.mgroup, state: 20 })
.then((res) => {
that.options = res;
});
},
getRoute(id) {
let that = this;
that.$API.mtm.route.list
.req({ process: that.process, page: 0, routepack__state: 30 })
.then((res) => {
that.routeOptions = res;
});
},
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
//
setData(data) {
console.log("data", data);
Object.assign(this.form, data);
this.getRoute(data.id);
},
//
submit() {
let that = this;
that.$refs.dialogForm.validate(async (valid) => {
if (valid) {
that.isSaveing = true;
if (that.mode === "add") {
that.form.mgroup = that.mgroup;
that.$API.wpm.fmlog.create.req(that.form).then((res) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}).catch(()=>{
that.isSaveing = false;
});
} else {
that.$API.wpm.fmlog.update.req(that.form.id, that.form).then((res) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}).catch(()=>{
that.isSaveing = false;
});
}
}
});
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style>
.form_unit {
position: absolute;
right: -25px;
}
</style>

215
src/views/wpm_gx/fmlogs.vue Normal file
View File

@ -0,0 +1,215 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button
type="primary"
icon="el-icon-plus"
@click="table_add"
v-auth="'mlog.create'"
>新增</el-button
>
</div>
<div class="right-panel">
<el-input
style="margin-right: 5px"
v-model="query.search"
placeholder="名称"
clearable
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main>
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
:params="params"
:query="params"
@row-click="table_detail"
>
<el-table-column label="#" type="index" width="50"></el-table-column>
<el-table-column label="工艺路线" prop="routepack_name">
</el-table-column>
<el-table-column label="任务编号" prop="mtask_number">
</el-table-column>
<el-table-column label="部门/工段" prop="belong_dept_name">
<template #default="scope">
{{scope.row.belong_dept_name}}/{{scope.row.mgroup_name}}
</template>
</el-table-column>
<el-table-column label="创建时间" prop="create_time"></el-table-column>
<el-table-column label="备注" prop="note"></el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
width="150"
>
<template #default="scope">
<el-button
link
size="small"
v-auth="'mlog.update'"
v-if="scope.row.submit_time == null"
type="primary"
@click.stop="table_edit(scope.row)"
>编辑</el-button
>
<el-button
link
size="small"
@click="table_detail(scope.row)"
type="primary"
>详情</el-button
>
<el-button
link
size="small"
v-auth="'mlog.delete'"
type="danger"
v-if="scope.row.submit_time == null"
@click.stop="table_del(scope.row, scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</scTable>
</el-main>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
:process="processId"
:mgroup="mgroupId"
:dept="deptId"
:mgroupName = "mgroupName"
@success="handleSaveSuccess"
@closed="dialog.save = false"
>
</save-dialog>
<detail-drawer
v-if="dialog.detail"
ref="detailDialog"
:fmlogId="fmlogId"
@closed="detailClose"
>
</detail-drawer>
</el-container>
</template>
<script>
import saveDialog from "./fmlog_form.vue";
import detailDrawer from "./fmlog_detail.vue";
export default {
props: {
mgroupName: {
type: String,
default: "",
},
},
name: "mlog",
components: {
saveDialog,
detailDrawer,
},
data() {
return {
apiObj: null,
params: { mgroup: "" },
query: {},
dialog: {
save: false,
detail: false,
},
tableData: [],
selection: [],
mtask: "",
mlogId: "",
deptId: null,
processId: "",
processCate: "",
};
},
mounted() {
let that = this;
that.$API.mtm.mgroup.list
.req({ page: 0, search: that.mgroupName })
.then((res) => {
if (res.length < 1) {
that.$message.error("获取工段错误");
return;
}
that.mgroupId = res[0].id;
that.deptId = res[0].belong_dept;
that.processId = res[0].process;
that.processCate = res[0].process_cate;
that.params.mgroup = res[0].id;
that.apiObj = that.$API.wpm.fmlog.list;
});
},
methods: {
detailClose() {
this.dialog.detail = false;
this.$refs.table.refresh();
},
//
table_add() {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add");
});
},
//
table_edit(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("edit").setData(row);
});
},
//
table_detail(row) {
this.fmlogId = row.id;
this.dialog.detail = true;
this.$nextTick(() => {
this.$refs.detailDialog.open();
});
},
//
table_del(row) {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
}).then(() => {
var id = row.id;
this.$API.wpm.fmlog.delete.req(id).then((res) => {
if (res.err_msg) {
this.$message.error(res.err_msg);
} else {
this.$refs.table.refresh();
this.$message.success("删除成功");
}
});
});
},
//
selectionChange(selection) {
this.selection = selection;
},
//
handleQuery() {
this.$refs.table.queryData(this.query);
},
//
//
handleSaveSuccess(data, mode) {
this.dialog.save = true;
this.$refs.table.refresh();
},
},
};
</script>
<style scoped></style>

View File

@ -16,6 +16,11 @@
v-auth="'handover.create'"
>返工</el-button
>
<el-button
type="primary"
@click="printSetting"
>打印机</el-button
>
<el-button
type="primary"
icon="el-icon-plus"
@ -67,27 +72,44 @@
type="index"
width="50"
></el-table-column>
<el-table-column type="expand">
<template #default="props">
<div style="padding-left: 50px">
<template v-for="item in props.row.handoverb" :key="item.id">
<el-descriptions :column="3">
<el-descriptions-item label="批次">
{{item.batch}}
</el-descriptions-item>
<el-descriptions-item label="数量">
{{item.count}}
</el-descriptions-item>
<el-descriptions-item label="不合格标记" v-if="item.notok_sign_name!==null">
{{item.notok_sign_name}}
</el-descriptions-item>
</el-descriptions>
</template>
</div>
</template>
</el-table-column>
<el-table-column
label="物料"
prop="material_name"
min-width="140"
></el-table-column>
<el-table-column label="批次" prop="batch" min-width="140">
<template #default="scope">
<el-text v-if="scope.row.handoverb.length>0" type="primary">{{scope.row.handoverb.length}}</el-text>
</template>
</el-table-column>
<el-table-column label="数量" prop="count" width="80"></el-table-column>
<el-table-column label="交接类型" prop="type" width="100">
<template #default="scope">
<el-text
v-if="scope.row.send_mgroup == mgroupId"
type="primary"
>交送</el-text
>
<span style="width: 4px;"></span>
<el-text
v-if="scope.row.recive_mgroup == mgroupId"
type="success"
>接收</el-text
>
<template #default="scope" v-if="mgroupName=='size'||mgroupName=='facade'">
<el-text v-if="scope.row.send_dept == deptId" type="primary">交送</el-text>
<el-text v-if="scope.row.recive_dept == deptId" type="success">接收</el-text>
</template>
<template #default="scope" v-else>
<el-text v-if="scope.row.send_mgroup == mgroupId" type="primary">交送</el-text>
<el-text v-if="scope.row.recive_mgroup == mgroupId" type="success">接收</el-text>
</template>
</el-table-column>
<el-table-column label="交接类别" prop="type" width="80">
@ -98,9 +120,12 @@
<el-tag v-if="scope.row.type == 20" type="warning"
>返工</el-tag
>
<el-tag v-if="scope.row.type == 30" type="warning"
<el-tag v-if="scope.row.type == 30" type="primary"
>检验</el-tag
>
<el-tag v-if="scope.row.type == 40" type="danger"
>报废</el-tag
>
</template>
</el-table-column>
<el-table-column
@ -138,12 +163,14 @@
size="small"
@click="table_receive(scope.row)"
type="success"
v-if="
scope.row.recive_mgroup == mgroupId &&
scope.row.submit_time == null
"
>接收</el-button
>
v-if="(scope.row.recive_mgroup == mgroupId||scope.row.recive_dept == deptId)&&scope.row.submit_time == null"
>接收</el-button>
<el-button
link
size="small"
@click="table_show(scope.row)"
type="success"
>查看</el-button>
<el-button
link
size="small"
@ -238,8 +265,10 @@ export default {
selection: [],
handoverItem: {},
values: "交送",
deptId:'',
mtask: "",
mlogId: "",
mgroupId: "",
processId: "",
processCate: "",
printer_name: "",
@ -248,12 +277,27 @@ export default {
},
mounted() {
let that = this;
console.log('that.mgroupName',that.mgroupName);
if(that.mgroupName=="size"){//
that.params.material__process__name="一次超洗";
that.apiObj = that.$API.wpm.handover.list;
// that.params.material__process__name="";
that.$API.system.dept.list.req({name__contains:'尺寸',page:0}).then((res) => {
if(res.length>0){
that.deptId = res[0].id;
that.params.dept=res[0].id;
console.log('that.deptId',that.deptId);
}
that.apiObj = that.$API.wpm.handover.list;
})
}else if(that.mgroupName=="facade"){//
that.params.material__process__name="二次超洗";
that.apiObj = that.$API.wpm.handover.list;
// that.params.material__process__name="";
that.$API.system.dept.list.req({name__contains:'外观',page:0}).then((res) => {
if(res.length>0){
that.deptId = res[0].id;
that.params.dept=res[0].id;
console.log('that.deptId',that.deptId);
}
that.apiObj = that.$API.wpm.handover.list;
})
}else{//
that.printer_name = localStorage.getItem("printer_name");
that.$API.mtm.mgroup.list
@ -273,6 +317,9 @@ export default {
}
},
methods: {
printSetting(){
this.setNameVisible = true;
},
handoverPrint() {
let that = this;
let str = [
@ -324,6 +371,13 @@ export default {
this.$refs.saveDialog.open("edit").setData(row);
});
},
table_show(row){
this.type=row.type;
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("show").setData(row);
});
},
//
async table_del(row) {
var id = row.id;
@ -346,14 +400,26 @@ export default {
searchTypeQuery() {
let that = this;
if (that.searchType == "send") {
that.query.send_mgroup = that.mgroupId;
that.query.recive_mgroup = "";
if(that.mgroupName=="size"||that.mgroupName=="facade"){
that.query.send_dept = that.deptId;
that.query.recive_dept = "";
}else{
that.query.send_mgroup = that.mgroupId;
that.query.recive_mgroup = "";
}
} else if (that.searchType == "recive") {
that.query.recive_mgroup = that.mgroupId;
that.query.send_mgroup = "";
if(that.mgroupName=="size"||that.mgroupName=="facade"){
that.query.send_dept = "";
that.query.recive_dept =that.deptId;
}else{
that.query.recive_mgroup = that.mgroupId;
that.query.send_mgroup = "";
}
} else {
that.query.send_mgroup = "";
that.query.recive_mgroup = "";
that.query.recive_dept = "";
that.query.send_dept = "";
}
console.log(that.query);
this.$refs.table.queryData(that.query);

View File

@ -14,35 +14,6 @@
label-width="80px"
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="交接物料" prop="wm">
<el-select
v-model="form.wm"
placeholder="交接物料"
filterable
clearable
style="width: 100%"
@change="materialChange"
>
<el-option
v-for="item in materialOptions"
:key="item.id"
:label="item.batch"
:value="item.id"
>
<span>{{ item.batch }}</span>
<div style="float: right">
<span>{{ item.count }}</span>
<span
v-if="item.notok_sign_name !== null"
style="color: #aaaaaa"
>({{ item.notok_sign_name }})</span
>
</div>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="交送日期" prop="send_date">
<el-date-picker
@ -55,7 +26,7 @@
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<!-- <el-col :md="12" :sm="24">
<el-form-item label="交接数量" width="100">
<el-input-number
v-model="form.count"
@ -68,7 +39,7 @@
>
</el-input-number>
</el-form-item>
</el-col>
</el-col> -->
<el-col :md="12" :sm="24">
<el-form-item label="交送人" prop="send_user">
<el-select
@ -91,7 +62,7 @@
<el-form-item label="接收部门" prop="recive_dept">
<el-select
v-model="form.recive_dept"
placeholder="接收工段"
placeholder="接收部门"
clearable
style="width: 100%"
@change="getUserList3"
@ -141,9 +112,60 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-form-item label="交接物料">
<el-button type="primary" icon="el-icon-plus" @click="addMaterial"></el-button>
</el-form-item>
</el-row>
<el-row v-for="(listItem,$index) in form.handoverb" :key="listItem">
<el-col :span="11">
<el-form-item label="交接物料">
<el-select
v-model="listItem.wm"
placeholder="交接物料"
filterable
clearable
style="width: 100%"
>
<el-option
v-for="item in materialOptions"
:key="item.id"
:label="item.label"
:value="item.id"
>
<span>{{ item.batch }}</span>
<div style="float: right">
<span>{{ item.count }}</span>
<span v-if="item.notok_sign_name !== null" style="color: #aaaaaa">
({{ item.notok_sign_name }})
</span>
</div>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="交接数量">
<el-input-number
v-model="listItem.count"
controls-position="right"
:min="0"
step="1"
:step-strictly="true"
style="width: 100%"
placeholder="交接数量"
>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="2">
<el-button type="danger" icon="el-icon-delete" @click="delMaterial($index)"></el-button>
</el-col>
</el-row>
</el-form>
<el-footer>
<el-footer v-if="mode!=='show'">
<el-button type="primary" v-loading="isSaveing" @click="submit"
>确定</el-button
>
@ -178,16 +200,15 @@ export default {
edit: "编辑交接记录",
show: "查看交接记录",
},
lists:[],//
handle_user: [],
form: {
batch: "",
count: 0, //
wm: "",
send_date: "",
send_user: "",
send_mgroup: "",
recive_user: "",
recive_mgroup: "",
send_date: null,
send_user: null,
send_mgroup: null,
recive_user: null,
recive_mgroup: null,
handoverb:[{wm:'',count:''}],
},
rules: {
batch: [
@ -260,7 +281,6 @@ export default {
let day = date.getDate();
that.form.handle_date = year + "-" + month + "-" + day;
that.form.send_mgroup = that.mgroupId;
console.log('mgroupName',that.mgroupName)
if(that.mgroupName=="size"||that.mgroupName=="facade"){//
that.$API.system.user.list
.req({ page: 0, posts__code__contains: "check" })
@ -271,7 +291,11 @@ export default {
that.deptID = that.$TOOL.data.get('gx_deptID');
that.getUserList();
}
that.getMaterial();
if(that.type==20||that.type==40){
that.getMaterialNotok();
}else{
that.getMaterial();
}
that.getDeptOptions();
that.getMgroupOptions();
},
@ -296,40 +320,83 @@ export default {
getMaterial() {
let that = this;
var req = {
mgroupx: that.mgroupId,
page: 0,
notok_sign__isnull : 1,
count_xtest__isnull:1
};
if(that.mgroupName=="size"){
req.material__process__name="一次超洗";
}else if(that.mgroupName=="facade"){
req.material__process__name="二次超洗";
}
// else{
// if (this.type == 10) {
// req.notok_sign__isnull = 1;
// } else if (this.type == 20) {
// req.notok_sign__isnull = 0;
// }else if (this.type == 30) {
// req.notok_sign__isnull = 1;
// }
// }
that.$API.system.dept.list.req({name__contains:'尺寸',page:0}).then((res) => {
if(res.length>0){
req.belong_dept=res[0].id;
this.$API.wpm.wmaterial.list.req(req).then((res) => {
let arr = [];
res.forEach(item=>{
let obj = {};
Object.assign(obj,item);
obj.label = item.batch;
arr.push(obj);
})
that.materialOptions = arr;
});
}
})
}else if(that.mgroupName=="facade"){
that.$API.system.dept.list.req({name__contains:'外观',page:0}).then((res) => {
if(res.length>0){
req.belong_dept=res[0].id;
this.$API.wpm.wmaterial.list.req(req).then((res) => {
let arr = [];
res.forEach(item=>{
let obj = {};
Object.assign(obj,item);
obj.label = item.batch;
arr.push(obj);
})
that.materialOptions = arr;
});
}
})
}else{
req.mgroupx = that.mgroupId;
this.$API.wpm.wmaterial.list.req(req).then((res) => {
let arr = [];
res.forEach(item=>{
let obj = {};
Object.assign(obj,item);
obj.label = item.batch;
arr.push(obj);
})
that.materialOptions = arr;
});
}
this.$API.wpm.wmaterial.list
.req(req)
.then((res) => {
that.materialOptions = res;
});
},
//
getMaterialNotok() {
let that = this;
var req = {
mgroupx: that.mgroupId,
page: 0,
notok_sign__isnull : 0,
count_xtest__isnull:1
};
this.$API.wpm.wmaterial.list.req(req).then((res) => {
let arr = [];
res.forEach(item=>{
let obj = {};
Object.assign(obj,item);
obj.label = item.batch+'('+item.notok_sign_name+')';
arr.push(obj);
})
that.materialOptions = arr;
});
},
//
getUserList() {
let that = this;
this.$API.system.user.list
.req({ depts: that.deptID, page: 0 })
.then((res) => {
that.userList = res;
});
this.$API.system.user.list.req({ depts: that.deptID, page: 0 }).then((res) => {
that.userList = res;
});
},
//
getUserList2() {
@ -338,9 +405,7 @@ export default {
this.mgroupOptions.forEach(item => {
if(item.id==that.form.recive_mgroup){
deptID = item.belong_dept;
this.$API.system.user.list
.req({ depts: deptID, page: 0 })
.then((res) => {
this.$API.system.user.list.req({ depts: deptID, page: 0 }).then((res) => {
that.userList2 = res;
});
}
@ -355,6 +420,12 @@ export default {
that.userList2 = res;
});
},
addMaterial(){
this.form.handoverb.push({wm:'',count:''});
},
delMaterial(index){
this.form.handoverb.splice(index,1);
},
//
open(mode = "add") {
this.mode = mode;
@ -369,36 +440,42 @@ export default {
},
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
let that = this;
that.$refs.dialogForm.validate(async (valid) => {
if (valid) {
if (this.mode == "add") {
this.$API.wpm.handover.create
.req(this.form)
.then((res) => {
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
})
.catch((err) => {
//
this.isSaveing = false;
return err;
});
} else if (this.mode == "edit") {
this.$API.wpm.handover.update
.req(this.form.id, this.form)
.then((res) => {
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
})
.catch((err) => {
//
this.isSaveing = false;
return err;
});
if (that.mode == "add") {
that.$API.wpm.handover.create.req(that.form).then((res) => {
if(that.type==40){
//
that.$API.wpm.handover.submit.req(res.id).then((res1) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
});
}else{
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}
}).catch((err) => {
//
that.isSaveing = false;
return err;
});
} else if (that.mode == "edit") {
that.$API.wpm.handover.update.req(that.form.id, that.form).then((res) => {
that.isSaveing = false;
that.$emit("success", that.form, that.mode);
that.visible = false;
that.$message.success("操作成功");
})
.catch((err) => {
//
that.isSaveing = false;
return err;
});
}
}
});

View File

@ -9,6 +9,8 @@
<el-button type="primary" @click="tomio" v-auth="'mio.do'"
>入库</el-button
>
<el-button type="primary" v-auth="'handover.create'" @click="table_add(40)">
报废</el-button>
</div>
<div class="right-panel">
<!-- <el-button type="primary" @click="materialsChoses('wm')"
@ -32,22 +34,16 @@
ref="table"
:apiObj="apiObj"
row-key="id"
hidePagination
:params="params"
:query="query"
>
<el-table-column
label="状态"
prop="state"
width="100"
><template #default="scope"
><el-tag
:type="wmState[scope.row.state]?.type"
>{{
wmState[scope.row.state]?.text
}}</el-tag
>
</template></el-table-column>
<el-table-column label="状态" prop="state" width="100" >
<template #default="scope">
<el-tag :type="wmState[scope.row.state]?.type">
{{wmState[scope.row.state]?.text}}
</el-tag>
</template>
</el-table-column>
<el-table-column
label="物料名称"
prop="material_name"
@ -100,18 +96,24 @@
label="操作"
fixed="right"
align="center"
width="80"
width="120"
v-if="mgroupName!=='size'&&mgroupName!=='facade'"
>
<template #default="scope">
<el-button
link
size="small"
link size="small"
@click="table_Check(scope.row)"
v-auth="'mgroup.update'"
v-auth="'ftestwork.create'"
type="primary"
v-if="scope.row.notok_sign_name == null"
>抽检
>检验
</el-button>
<el-button
link size="small"
type="warning"
@click="tableCheckList(scope.row)"
v-if="scope.row.notok_sign_name == null"
>检验记录
</el-button>
</template>
</el-table-column>
@ -134,12 +136,31 @@
@closed="dialog.save = false"
>
</check-dialog>
<scrap-dialog
v-if="dialog.scrap"
ref="scrapDialog"
:type="type"
:mgroupName="mgroupName"
:mgroupId="mgroupId"
@success="handleScrapSuccess"
@closed="dialog.scrap = false"
>
</scrap-dialog>
<showDrawer
ref="showDrawer"
v-if="visibleDrawer"
:wm="wm"
@closed="visibleDrawer = false"
>
</showDrawer>
</el-container>
</template>
<script>
import { wmState } from "@/utils/enum.js";
import materials from "./../mtm/materials.vue";
import checkDialog from "./check_form.vue";
import showDrawer from "./check_drawer.vue";
import scrapDialog from "./handover_form.vue";
export default {
props: {
mgroupName: {
@ -149,7 +170,9 @@ export default {
},
components: {
materials,
checkDialog
checkDialog,
showDrawer,
scrapDialog
},
name: "wmaterial",
data() {
@ -158,10 +181,12 @@ export default {
apiObj: null,
params: {
mgroupx: "",
belong_dept:''
},
query: {},
dialog: {
save: false,
scrap: false,
permission: false,
},
tableData: [],
@ -177,11 +202,21 @@ export default {
mounted() {
let that = this;
if(that.mgroupName=="size"){
that.params.material__process__name = "一次超洗";
that.apiObj = that.$API.wpm.wmaterial.list;
// that.params.material__process__name = "";
that.$API.system.dept.list.req({name__contains:'尺寸',page:0}).then((res) => {
if(res.length>0){
that.params.belong_dept=res[0].id;
}
that.apiObj = that.$API.wpm.wmaterial.list;
})
}else if(that.mgroupName=="facade"){
that.params.material__process__name = "二次超洗";
that.apiObj = that.$API.wpm.wmaterial.list;
// that.params.material__process__name = "";
that.$API.system.dept.list.req({name__contains:'外观',page:0}).then((res) => {
if(res.length>0){
that.params.belong_dept=res[0].id;
}
that.apiObj = that.$API.wpm.wmaterial.list;
})
}else{
that.$API.mtm.mgroup.list
.req({ page: 0, search: that.mgroupName })
@ -193,6 +228,7 @@ export default {
that.mgroupId = res[0].id;
that.$TOOL.data.set('gx_deptID',res[0].belong_dept)
that.params.mgroupx = res[0].id;
that.params.belong_dept = res[0].belong_dept;
that.apiObj = that.$API.wpm.wmaterial.list;
});
}
@ -218,10 +254,30 @@ export default {
this.$refs.saveDialog.open(mode);
});
},
//
tableCheckList(row){
this.wm = row.id;
this.visibleDrawer = true;
this.$nextTick(() => {
this.$refs.showDrawer.open();
});
},
//
selectionChange(selection) {
this.selection = selection;
},
//
table_add(type) {
this.dialog.scrap = true;
this.type = type;
this.$nextTick(() => {
this.$refs.scrapDialog.open("add");
});
},
handleScrapSuccess(){
this.dialog.scrap = false;
this.$refs.table.refresh();
},
//
handleQuery() {
this.$refs.table.queryData(this.query);

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

View File

@ -10,6 +10,12 @@
<el-card style="width: 100%" header="基本信息" shadow="never">
<el-descriptions>
<el-descriptions-item label="工艺路线">{{
mlogItem.routepack_name
}}</el-descriptions-item>
<el-descriptions-item label="输入物料">{{
mlogItem.material_in_name
}}</el-descriptions-item>
<el-descriptions-item label="输出物料">{{
mlogItem.material_out_name
}}</el-descriptions-item>
<el-descriptions-item label="工段名称">{{
@ -33,40 +39,49 @@
<el-descriptions-item label="创建时间">{{
mlogItem.create_time
}}</el-descriptions-item>
<el-descriptions-item label="工单状态" v-if="mlogItem.mgroup_name=='退火'">
<el-tag v-if="mlogItem.ticket_">{{act_states[mlogItem.ticket_.act_state]}}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="检验表单" v-if="mlogItem.mgroup_name=='退火'||mlogItem.mgroup_name=='黑化'">
<el-link :href="mlogItem.test_file" target="_blank" type="primary" :underline="false">{{mlogItem.test_file}}</el-link>
</el-descriptions-item>
</el-descriptions>
<div
style="
padding: 5px 10px;
display: flex;
justify-content: end;
"
>
<div style="padding: 5px 10px;display: flex;justify-content: end;">
<el-button
type="primary"
v-if="mlogItem.submit_time == null"
v-if="mlogItem.submit_time == null&&(mlogItem.ticket==null||(mlogItem.ticket_&&mlogItem.ticket_.state_.type==1))"
@click="mlogUpdate"
style="margin-right: 10px;"
v-auth="'mlog.update'"
>
编辑
</el-button>
<el-button
type="primary"
v-if="mlogItem.submit_time == null"
v-if="mlogItem.mgroup_name!='退火'&&mlogItem.submit_time == null"
:loading="isSaveing"
@click="mlogSubmit"
>提交</el-button
>
<!-- 退火-->
<el-button
type="primary"
v-if="mlogItem.mgroup_name=='退火'&&(mlogItem.ticket==null||(mlogItem.ticket_&&mlogItem.ticket_.state_.type==1))"
:loading="isSaveing"
@click="createTicket"
>放行审批</el-button>
</div>
</el-card>
<!-- 输入物料 -->
<el-card
style="width: 100%; margin: 1vh 0"
header="物料消耗"
header="输入物料"
shadow="never"
>
<div>
<el-button
type="primary"
v-if="mlogItem.submit_time == null"
v-if="mlogItem.submit_time == null&&(mlogItem.ticket==null||(mlogItem.ticket_&&mlogItem.ticket_.state_.type==1))"
icon="el-icon-plus"
@click="table_add"
>新增</el-button
@ -91,7 +106,7 @@
</el-table-column>
<el-table-column label="领用数量" prop="count_use">
</el-table-column>
<el-table-column label="破碎数量" prop="count_break">
<el-table-column label="加工前不良" prop="count_pn_jgqbl">
</el-table-column>
<el-table-column
label="创建时间"
@ -110,13 +125,13 @@
link
type="primary"
@click="table_in_edit(scope.row)"
:disabled="mlogItem.submit_time !== null"
:disabled="mlogItem.submit_time !== null||mlogItem.ticket!==null||(mlogItem.ticket_&&mlogItem.ticket_.state_.type==1)"
>
编辑
</el-button>
<el-button
link
:disabled="mlogItem.submit_time !== null"
:disabled="mlogItem.submit_time !== null||mlogItem.ticket!==null||(mlogItem.ticket_&&mlogItem.ticket_.state_.type==1)"
type="danger"
@click="table_in_del(scope.row)"
>
@ -126,7 +141,48 @@
</el-table-column>
</scTable>
</el-card>
<el-card style="width: 100%" header="产出物料" shadow="never">
<!-- 输入物料编辑 -->
<el-dialog v-model="saveInDialog" title="编辑">
<el-form
:model="saveInForm"
:rules="rules"
label-width="100px"
ref="saveInForm"
>
<el-row>
<el-col :span="23">
<el-form-item label="领取数量" prop="count_use">
<el-input-number
v-model="saveInForm.count_use"
:min="1"
style="width: 100%"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="23">
<el-form-item label="加工前不良" prop="count_pn_jgqbl">
<el-input-number
v-model="saveInForm.count_pn_jgqbl"
:min="0"
style="width: 100%"
controls-position="right"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button
type="primary"
:loading="isSaveing"
@click="saveInSubmit()"
> </el-button
>
</template>
</el-dialog>
<!-- 输出物料 -->
<el-card style="width: 100%" header="输出物料" shadow="never">
<scTable
ref="tableOut"
:apiObj="apiObj"
@ -138,7 +194,20 @@
<el-table-column type="index" width="50" />
<el-table-column type="expand">
<template #default="props">
<div style="padding-left: 50px">
<div style="padding-left: 50px" v-if="props.row.count_notok_json.length>0">
<el-descriptions :column="4" v-for="item in props.row.count_notok_json" :key="item">
<el-descriptions-item label="层数">
{{item.floor}}
</el-descriptions-item>
<el-descriptions-item label="抽检数">
{{item.count_sampling}}
</el-descriptions-item>
<el-descriptions-item label="总数">
{{item.count}}
</el-descriptions-item>
</el-descriptions>
</div>
<div style="padding-left: 50px" v-else>
<el-descriptions :column="4">
<el-descriptions-item label="划伤">{{
props.row.count_n_hs
@ -152,6 +221,9 @@
<el-descriptions-item label="崩边">{{
props.row.count_n_bb
}}</el-descriptions-item>
<el-descriptions-item label="小崩边">{{
props.row.count_n_xbb
}}</el-descriptions-item>
<el-descriptions-item label="雾面">{{
props.row.count_n_wm
}}</el-descriptions-item>
@ -194,7 +266,7 @@
<el-button
link
type="primary"
:disabled="mlogItem.submit_time !== null"
:disabled="mlogItem.submit_time !== null||mlogItem.ticket!==null||(mlogItem.ticket_&&mlogItem.ticket_.state_.type==1)"
@click="table_out_check(scope.row)"
>
检验
@ -220,7 +292,17 @@
@closed="dialog.check = false"
>
</check-dialog>
<el-dialog v-model="saveInDialog" title="新增/编辑">
<edit-dialog
v-if="dialog.edit"
ref="editDialog"
:dept="deptId"
:mgroupName= "mlogItem.mgroup_name"
@success="handleEditSuccess"
@closed="dialog.edit = false"
>
</edit-dialog>
<!-- 退火放行通知单 -->
<el-dialog v-model="ticketDialog" title="退火放行通知单">
<el-form
:model="saveInForm"
:rules="rules"
@ -228,45 +310,81 @@
ref="saveInForm"
>
<el-row>
<el-col :span="23">
<el-form-item label="领取数量" prop="count_use">
<el-col :md="12" :sm="24">
<el-form-item label="退火炉号">
<el-input v-model="oinfo_json.退火炉号"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="退火时间">
<el-input-number
v-model="saveInForm.count_use"
v-model="oinfo_json.退火时间"
:min="1"
controls-position="right"
/>min
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="退火温度">
<el-input-number
v-model="oinfo_json.退火温度"
:min="1"
style="width: 100%"
controls-position="right"
/>
<span style="position: absolute;right: -17px;">°C</span>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="抽检结果">
<el-input v-model="oinfo_json.抽检结果"/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="抽检数">
<el-input-number
v-model="oinfo_json.抽检数"
:precision="0"
:min="1"
style="width: 100%"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="23">
<el-form-item label="破碎数量" prop="count_break">
<el-input-number
v-model="saveInForm.count_break"
:min="0"
style="width: 100%"
controls-position="right"
/>
<el-col :md="12" :sm="24">
<el-form-item label="强度落球">
<el-input v-model="oinfo_json.强度落球"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-form-item label="放行标准">退火后直径23.5±0.2黑圈内径5.9±0.1外径7.6-7.77</el-form-item>
</el-row>
<el-form-item label="检验附件">
<sc-upload-file
v-model="fileList"
:multiple="false"
:limit="1"
:accept="['.xlsx', '.xls']"
@success = "fileUPSuccess"
>
<el-button type="primary" icon="el-icon-upload"> </el-button>
</sc-upload-file>
</el-form-item>
</el-form>
<template #footer>
<el-button
v-for="item in initForm.transitions"
:key="item.id"
type="primary"
:loading="isSaveing"
@click="saveInSubmit()"
> </el-button
:disabled="isSaveing"
@click="submitTicketCreate(item.id)"
style="margin-right: 4px"
>{{ item.name }}</el-button
>
</template>
</el-dialog>
<edit-dialog
v-if="dialog.edit"
ref="editDialog"
:dept="deptId"
@success="handleEditSuccess"
@closed="dialog.edit = false"
>
</edit-dialog>
</div>
</el-drawer>
</template>
@ -312,13 +430,32 @@ export default {
mlogItem: {},
saveInForm: {
count_use: 0,
count_break: 0,
count_pn_jgqbl: 0,
},
oinfo_json:{
退火炉号:'',
退火时间:'',
退火温度:'',
抽检结果:'',
抽检数:'',
强度落球:'',
},
act_states: {
0: "草稿中",
1: "进行中",
2: "被退回",
3: "被撤回",
4: "已完成",
5: "已关闭",
},
fileList:[],
test_file:'',
deptId: "",
visible: false,
isSaveing: false,
options: [],
saveInDialog: false,
ticketDialog:false,
setFiltersVisible: false,
rules: {
count_use: [
@ -328,13 +465,6 @@ export default {
trigger: "blur",
},
],
count_break: [
{
required: true,
message: "请输入破碎数量",
trigger: "blur",
},
],
},
};
},
@ -343,15 +473,21 @@ export default {
this.paramsIn.mlog = this.mlogId;
this.paramsOut.mlog = this.mlogId;
this.apiObj = this.$API.wpm.mlogb.list;
this.getInit();
},
methods: {
open() {
this.visible = true;
},
getMlogItem() {
let that = this;
that.$API.wpm.mlog.item.req(that.mlogId).then((res) => {
that.mlogItem = res;
if(res.test_file!==null){
that.fileList = [{name:res.test_file,url:res.test_file}];
that.form.test_file = res.test_file;
}
that.mgroup = res.mgroup;
that.materialIn = res.material_in;
that.deptId = res.belong_dept;
@ -391,7 +527,7 @@ export default {
that.isSaveing = true;
let obj = {};
obj.count_use = that.saveInForm.count_use;
obj.count_break = that.saveInForm.count_break;
obj.count_pn_jgqbl = that.saveInForm.count_pn_jgqbl;
that.$API.wpm.mlogb.updateIn
.req(that.saveInForm.id, obj)
.then((res) => {
@ -420,8 +556,11 @@ export default {
},
table_out_check(row) {
this.dialog.check = true;
let obj = {};
Object.assign(obj, row);
obj.mgroup_name = this.mlogItem.mgroup_name;
this.$nextTick(() => {
this.$refs.checkDialog.open(row);
this.$refs.checkDialog.open(obj);
});
},
@ -434,6 +573,49 @@ export default {
that.$message.success("操作成功");
});
},
//
getInit() {
let that = this;
that.$API.wf.workflow.initkey.req(" backfire").then((res) => {
that.initForm = res;
});
},
//退
createTicket(){
if(this.mlogItem.work_end_time==null){
this.$message.error("请先编辑日志并选择结束时间");
}else{
let sum = 0;
this.mlogItem.reminder_interval_list.forEach(item => {
sum+=item;
});
this.oinfo_json.退火时间 = sum;
this.oinfo_json.退火炉号 =this.mlogItem.equipment_name!==null?this.mlogItem.equipment_name.split("|")[0]:'';
this.ticketDialog = true;
}
},
//退,
submitTicketCreate(id) {
let that = this;
let obj = {};
obj.oinfo_json = that.oinfo_json;
obj.test_file = that.test_file;
that.$API.wpm.mlog.change.req(that.mlogItem.id, obj).then((res) => {
let ticket = {};
that.isSaveing = true;
ticket.title = '退火放行审批单';
ticket.workflow = that.initForm.workflow;
ticket.ticket_data = {t_id: that.mlogItem.id};
ticket.transition = id;
that.$API.wf.ticket.create.req(ticket).then((res) => {
that.isSaveing = false;
that.ticketDialog = false;
that.$message.success("提交成功");
}).catch((e) => {
that.isSaveing = false;
});
});
},
handleSaveSuccess() {
this.$refs.tableIn.refresh();
this.$refs.tableOut.refresh();
@ -441,6 +623,11 @@ export default {
handleCheckSuccess() {
this.$refs.tableOut.refresh();
},
fileUPSuccess(res) {
let that = this;
console.log('res',res);
this.test_file = res.path;
},
handleEditSuccess() {},
//
setFilters(filters) {

View File

@ -13,7 +13,7 @@
:model="form"
:rules="rules"
label-position="right"
label-width="100px"
label-width="80px"
style="padding: 0 10px"
>
<el-row>
@ -72,7 +72,7 @@
<el-option
v-for="item in routeOptions"
:key="item.id"
:label="item.process_name"
:label="item.routepack_name"
:value="item.id"
>
<span
@ -97,7 +97,7 @@
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:label="item.label"
:value="item.id"
>
<span style="float:left">{{item.name}}</span>
@ -132,6 +132,24 @@
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mgroupName=='黑化'||mgroupName=='退火'">
<el-form-item label="保温时间" required>
<el-input-number
v-model="form.reminder_interval_list[0]"
:min="0"
controls-position="right"
/>(min)
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mgroupName=='黑化'||mgroupName=='退火'">
<el-form-item label="冷却时间" required>
<el-input-number
v-model="form.reminder_interval_list[1]"
:min="0"
controls-position="right"
/>(min)
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="操作人">
<ehsSelect
@ -140,21 +158,23 @@
:apiObj="this.$API.system.user.list"
:params="{ depts: dept }"
></ehsSelect>
<!-- <el-select
v-model="form.handle_user"
placeholder="操作人"
clearable
style="width: 100%"
>
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> -->
</el-form-item>
</el-col>
<!-- 黑化 -->
<el-col :md="12" :sm="24" v-if="mgroupName=='黑化'">
<el-form-item label="检验文件">
<sc-upload-file
v-model="fileList"
:multiple="false"
:limit="1"
:accept="['.xlsx', '.xls']"
@success = "fileUPSuccess"
>
<el-button type="primary" icon="el-icon-upload"> </el-button>
</sc-upload-file>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input
@ -163,39 +183,6 @@
></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="间隔提醒">
<el-input-number
v-model="form.reminder_interval_list[0]"
:min="1"
:disabled="mode == 'edit'"
style="width: 25%"
controls-position="right"
/>
<el-input-number
v-model="form.reminder_interval_list[1]"
:min="1"
:disabled="mode == 'edit'"
style="width: 25%"
controls-position="right"
/>
<el-input-number
v-model="form.reminder_interval_list[2]"
:min="1"
:disabled="mode == 'edit'"
style="width: 25%"
controls-position="right"
/>
<el-input-number
v-model="form.reminder_interval_list[3]"
:min="1"
:disabled="mode == 'edit'"
style="width: 25%"
controls-position="right"
/>
<div class="form_unit">(h)</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-main>
@ -211,12 +198,15 @@
<script>
const defaultForm = {
note: "",
mtype: "",
supplier:'',
route: "",
equipment: "",
handle_user: null,
work_start_time: "",
reminder_interval_list: [],
work_end_time:null,
note:'',
reminder_interval_list: [0,0],
};
export default {
@ -225,6 +215,10 @@ export default {
type: String,
default: "",
},
mgroupName:{
type: String,
default: "",
},
mgroup: {
type: String,
default: "",
@ -250,8 +244,10 @@ export default {
edit: "编辑日志",
show: "查看日志",
},
test_file:'',
fileList:[],
//
form: defaultForm,
form: Object.assign({}, defaultForm),
//
rules: {
supplier: [
@ -301,6 +297,7 @@ export default {
this.getUser();
this.getSupplier();
this.getEquipment();
},
methods: {
disabledDateFn(time) {
@ -313,11 +310,15 @@ export default {
});
},
getEquipment() {
this.$API.em.equipment.list
.req({ page: 0, type: 10,belong_dept:this.dept })
.then((res) => {
this.options = res;
let that = this;
this.$API.em.equipment.list.req({ page: 0, type: 10,mgroup:that.mgroup}).then((res) => {
res.forEach((item) => {
let obj = {};
Object.assign(obj, item);
obj.label = item.name+'-'+item.number;
that.options.push(obj);
});
});
},
getSupplier() {
let that = this;
@ -346,12 +347,17 @@ export default {
setData(data) {
console.log("data", data);
Object.assign(this.form, data);
if(data.test_file!==null){
this.form.test_file = data.test_file;
this.fileList = [{name:data.test_file,url:data.test_file}];
}
this.getRoute(data.id);
},
setMgroup(id) {
this.form.mgroup = id;
fileUPSuccess(res) {
let that = this;
console.log('res',res);
this.test_file = res.path;
},
//
submit() {
let that = this;
@ -365,20 +371,25 @@ export default {
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}).catch(()=>{
that.isSaveing = false;
});
} else {
let obj = {};
obj.work_end_time = that.form.work_end_time;
obj.handle_user = that.form.handle_user;
obj.note = that.form.note;
that.$API.wpm.mlog.change
.req(that.form.id, that.form)
.then((res) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
});
if(that.mgroupName=='黑化'){
that.form.test_file = that.test_file;
}
that.$API.wpm.mlog.change.req(that.form.id, that.form).then((res) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}).catch(()=>{
that.isSaveing = false;
});
}
}
});

View File

@ -32,6 +32,7 @@
:min="0"
class="width-100"
controls-position="right"
@change="countChanges"
/>
</el-form-item>
</el-col>
@ -51,11 +52,66 @@
v-model="form.count_notok"
:min="0"
class="width-100"
@change="countChanges"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-divider></el-divider>
</el-row>
<el-divider></el-divider>
<el-row v-if="mgroupName=='黑化'||mgroupName=='退火'">
<el-col :span="24">
<el-form-item label="不合格统计">
<el-button
type="primary"
icon="el-icon-plus"
@click="notok_add"
></el-button>
</el-form-item>
</el-col>
</el-row>
<template v-if="mgroupName=='黑化'||mgroupName=='退火'">
<el-row style="margin-bottom:10px" v-for="(item, $index) in count_notok_json" :key="item">
<el-col :span="7">
<el-input-number
style="width:90%"
v-model="item.floor"
:min="0"
class="width-100"
placeholder="层数"
controls-position="right"
/>
</el-col>
<el-col :span="7">
<el-input-number
style="width:90%"
v-model="item.count_sampling"
:min="0"
class="width-100"
placeholder="抽检数"
controls-position="right"
/>
</el-col>
<el-col :span="7">
<el-input-number
style="width:90%"
v-model="item.count"
:min="0"
class="width-100"
placeholder="总数"
controls-position="right"
/>
</el-col>
<el-col :span="2">
<el-button
type="danger"
icon="el-icon-delete"
@click="notok_del( $index)"
></el-button>
</el-col>
</el-row>
</template>
<el-row v-else>
<el-col :md="12" :sm="24">
<el-form-item label="划伤">
<el-input-number
@ -122,7 +178,6 @@
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="麻点">
<el-input-number
@ -179,6 +234,7 @@
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="24">
<el-form-item label="前道不良">
@ -225,9 +281,7 @@
</el-form>
</el-main>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit"
>保存</el-button
>
<el-button type="primary" :loading="isSaveing" @click="submit">保存</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-container>
@ -289,7 +343,7 @@ export default {
],
},
options: [],
notokList:[],
count_notok_json:[],
materialOptions: [],
visible: false,
isSaveing: false,
@ -305,13 +359,14 @@ export default {
open(data) {
this.visible = true;
Object.assign(this.form, data);
this.mgroupName = data.mgroup_name;
console.log(this.form);
},
notok_add(){
this.notokList.push({file:'',value:0});
this.count_notok_json.push({notok:'qt',count:null,floor:null,count_sampling:null});
},
notok_del(index){
this.notokList.splice(index, 1)
this.count_notok_json.splice(index, 1)
},
countChange() {
this.form.count_notok =
@ -326,6 +381,9 @@ export default {
this.form.count_n_zq +
this.form.count_n_qt +
this.form.count_n_wm;
this.form.count_ok = this.form.count_real - this.form.count_notok;
},
countChanges(){
this.form.count_ok = this.form.count_real - this.form.count_notok;
},
//
@ -335,7 +393,16 @@ export default {
if (valid) {
that.isSaveing = true;
that.form.mlog = that.mlog;
this.form.count_notok =
let sum = 0;
if(that.mgroupName=='黑化'||that.mgroupName=='退火'){
let total = 0;
that.count_notok_json.forEach(item => {
total+=item.count;
});
this.form.count_notok = total;
this.form.count_notok_json = this.count_notok_json;
}else{
this.form.count_notok =
this.form.count_n_hs +
this.form.count_n_qp +
this.form.count_n_swen +
@ -347,7 +414,8 @@ export default {
this.form.count_n_zq +
this.form.count_n_qt +
this.form.count_n_wm;
let sum = this.form.count_ok + this.form.count_notok;
}
sum = this.form.count_ok + this.form.count_notok;
if (sum - this.form.count_real == 0) {
that.$API.wpm.mlogb.updateOut
.req(that.form.id, that.form)

View File

@ -65,6 +65,9 @@
controls-position="right"
/>
</el-form-item>
<el-form-item label="所在层数">
<el-input v-model="form.note"/>
</el-form-item>
</el-form>
</el-main>
<el-footer>

View File

@ -54,13 +54,18 @@
prop="equipment_name"
min-width="150"
></el-table-column>
<el-table-column label="进度" prop="belong_dept_name" v-if="mgroupName=='黑化'||mgroupName=='退火'">
<template #default="scope">
<el-progress id="progressbwlq" :percentage="customMethod(scope.row,1)" :stroke-width="20" :color="customMethod(scope.row,2)" :text-inside="true"><span>{{customMethod(scope.row,3)}}</span></el-progress>
</template>
</el-table-column>
<el-table-column
label="部门/工段"
prop="belong_dept_name"
>
<template #default="scope">
{{scope.row.belong_dept_name}}/{{scope.row.mgroup_name}}
</template>
<template #default="scope">
{{scope.row.belong_dept_name}}/{{scope.row.mgroup_name}}
</template>
</el-table-column>
<el-table-column
label="处理人"
@ -75,10 +80,17 @@
label="结束时间"
prop="work_end_time"
></el-table-column>
<!-- <el-table-column
label="创建时间"
prop="create_time"
></el-table-column> -->
<el-table-column label="是否提交">
<template #default="scope">
<el-icon v-if="scope.row.submit_time != null" color="green">
<CircleCheckFilled />
</el-icon>
</template>
</el-table-column>
<el-table-column
label="提交时间"
prop="submit_time"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
@ -86,7 +98,7 @@
width="150"
>
<template #default="scope">
<el-button
<!-- <el-button
link
size="small"
v-auth="'mlog.update'"
@ -94,7 +106,7 @@
type="primary"
@click.stop="table_edit(scope.row)"
>编辑</el-button
>
> -->
<el-button
link
size="small"
@ -129,6 +141,7 @@
:process="processId"
:mgroup="mgroupId"
:dept="deptId"
:mgroupName = "mgroupName"
@success="handleSaveSuccess"
@closed="dialog.save = false"
>
@ -253,7 +266,57 @@ export default {
});
});
},
customMethod(row,index){
let color = '',context = '';
let percent = 0;
if(row.reminder_interval_list.length>0){
let data = new Date();
//
let currentTime = data.getTime();
//
let startTime = new Date(row.work_start_time).getTime();
//
let endTime = new Date(row.work_end_time).getTime();
//
let times = (currentTime-startTime)/1000/60;
//
let sum = row.reminder_interval_list[0]+row.reminder_interval_list[1];
if(endTime!==0&&(currentTime>endTime)){
percent = 100;
color = row.mstate_json[1].color;
context = '已完成';
}else{
if(times>0){
percent = Math.round((times/sum)*100);
}else{
percent = 0;
}
if(times>0){
if(times>row.reminder_interval_list[0]){//
color = row.mstate_json[1].color;
context = row.mstate_json[1].name;
}else if(times>row.reminder_interval_list[1]){//
color = row.mstate_json[1].color;
context = '已完成';
}else{//
color = row.mstate_json[0].color;
context = row.mstate_json[0].name;
}
}else{
color = "#ffffff";
}
}
if(index==1){
return percent
}else if(index==2){
return color
}else{
return context
}
}
},
//
selectionChange(selection) {
this.selection = selection;
@ -271,4 +334,6 @@ export default {
},
};
</script>
<style scoped></style>
<style scoped>
</style>

View File

@ -8,23 +8,10 @@
row-key="id"
:params="params"
>
<el-table-column
label="任务列表"
type="index"
width="80"
></el-table-column>
<el-table-column
label="产品名"
prop="material_out_name"
show-overflow-tooltip
>
<el-table-column label="任务列表" type="index" width="80"></el-table-column>
<el-table-column label="产品名" prop="material_out_name" show-overflow-tooltip>
</el-table-column>
<el-table-column
label="任务编号"
prop="number"
width="140"
show-overflow-tooltip
>
<el-table-column label="任务编号" prop="number" width="140" show-overflow-tooltip>
</el-table-column>
<el-table-column label="任务量" prop="count"> </el-table-column>
<el-table-column label="开始时间" prop="start_date">
@ -33,31 +20,50 @@
</el-table-column>
<el-table-column label="合格数" prop="count_ok">
</el-table-column>
<el-table-column label="状态" prop="state">
<el-table-column label="分配人数" prop="mtaskb">
<template #default="scope">
<el-tag :type="elTagType(scope.row.state)">
{{ state_[scope.row.state] }}
</el-tag>
<span v-if="scope.row.mtaskb.length>0">
{{scope.row.mtaskb.length}}
</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="60">
<el-table-column label="操作" fixed="right" width="90">
<template #default="scope">
<el-link
type="primary"
@click="mtask_submit(scope.row)"
<el-button
link
size="small"
v-auth="'mtask.submit'"
v-if="
scope.row.state != 40 && scope.row.state != 34
"
type="primary"
v-if="scope.row.state == 20 "
@click="mtask_submit(scope.row)"
>提交
</el-link>
</el-button>
<el-button
link
size="small"
v-auth="'mtask.submit'"
type="primary"
v-if="scope.row.state == 20 "
@click="mtask_deliver(scope.row)"
>分配
</el-button>
</template>
</el-table-column>
</scTable>
</el-main>
<deliver-drawer
v-if="deliverShow"
ref="detailDialog"
:mgroup="mgroupId"
:dept="deptId"
@success = "refreshMtask"
@closed="detailClose"
>
</deliver-drawer>
</el-container>
</template>
<script>
import deliverDrawer from "./mtask_deliver.vue";
export default {
props: {
mgroupName: {
@ -65,11 +71,14 @@ export default {
default: "",
},
},
components: {
deliverDrawer,
},
name: "mtask",
data() {
return {
apiObj: null,
params: { mgroup: "" },
params: { mgroup: "",state:20 },
query: {},
tableData: [],
@ -85,13 +94,15 @@ export default {
34: "danger",
40: "success",
},
state_: {
10: "创建中",
20: "已下达",
30: "生产中",
34: "已终止",
40: "已提交",
},
// state_: {
// 10: "",
// 20: "",
// 30: "",
// 34: "",
// 40: "",
// },
deptId: null,
deliverShow:false,
};
},
mounted() {
@ -104,17 +115,38 @@ export default {
return;
}
that.mgroupId = res[0].id;
that.deptId = res[0].belong_dept;
that.processId = res[0].process;
that.processCate = res[0].process_cate;
that.params.mgroup = res[0].id;
that.apiObj = this.$API.pm.mtask.list;
console.log("mgroupId", res[0].id);
});
},
methods: {
elTagType(state) {
return this.type_[state];
},
mtask_submit(row){
this.$confirm('确定提交该任务吗?提交后不可更改相关信息', "提示", {
type: "warning",
}).then(() => {
this.$API.pm.mtask.submit.req(row.id).then((res) => {
this.$message.success("操作成功");
this.$refs.table_mtask.refresh();
this.mtaskClick(this.currentMtask);
})
.catch((err) => {});
});
},
mtask_deliver(row){
this.deliverShow = true;
this.$nextTick(() => {
this.$refs.detailDialog.open(row);
});
},
refreshMtask(){
this.$refs.table.refresh();
},
//
selectionChange(selection) {
this.selection = selection;

View File

@ -0,0 +1,202 @@
<template>
<el-drawer
title="任务分配"
v-model="visible"
:size="'90%'"
destroy-on-close
@closed="$emit('closed')"
>
<div>
<el-card style="width: 100%" header="基本信息" shadow="never">
<el-descriptions>
<el-descriptions-item label="名称">{{
mtaskObj.material_out_name
}}</el-descriptions-item>
<el-descriptions-item label="任务编号">{{
mtaskObj.number
}}</el-descriptions-item>
<el-descriptions-item label="任务量">{{
mtaskObj.count
}}</el-descriptions-item>
<el-descriptions-item label="开始时间">{{
mtaskObj.start_date
}}</el-descriptions-item>
<el-descriptions-item label="结束时间">{{
mtaskObj.end_date
}}</el-descriptions-item>
</el-descriptions>
</el-card>
<!-- 选择人员 -->
<el-form
:model="form"
:rules="rules"
label-width="100px"
ref="form"
style="margin-top: 10px;margin-bottom:50px"
>
<el-row>
<el-col :span="24">
<el-form-item label="操作人员">
<el-checkbox-group
v-model="choose_user"
@change="userChange"
>
<el-checkbox class="checkboxItem" v-for="item in userList" :key="item.id" :label="item.name" :value="item.id">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
</el-row>
<el-divider style="margin-top:0"></el-divider>
<el-row>
<el-col :md="6" :sm="8" v-for="item in cUserList" :key="item.id">
<el-form-item :label="item.handle_user_name">
<el-input-number
v-model="item.count"
:precision="0"
:min="1"
style="width: 90%"
controls-position="right"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="footer">
<el-button type="primary" @click="mtaskb_submit">提交</el-button>
</div>
</div>
</el-drawer>
</template>
<script>
export default {
props: {
mgroup: {
type: String,
default: "",
},
dept: {
type: String,
default: "",
},
},
emits: ["success", "closed"],
data() {
return {
form: {},
apiObj: null,
loading: false,
visible: false,
isSaveing: false,
mtaskObj:{},
userList:[],
cUserList:[],//
choose_user:[],//id
rules: {
count_use: [
{
required: true,
message: "请输入领取数量",
trigger: "blur",
},
],
},
};
},
mounted() {
this.$nextTick(() => {
this.getUsers();
})
},
methods: {
open(data) {
let that = this;
this.visible = true;
this.mtaskObj = data;
that.cUserList = data.mtaskb;
that.choose_user = [];
if(that.cUserList.length>0){
that.cUserList.forEach(item=>{
that.choose_user.push(item.handle_user);
})
}
},
getUsers() {
let that = this;
that.$API.system.user.list.req({ belong_dept: that.dept, page: 0 }).then(res => {
// that.$API.system.user.list.req({ page:1,page_size:60}).then(res => {
that.userList = res;
})
},
userChange(){
let that = this;
let average = Math.floor( that.mtaskObj.count/that.choose_user.length);
let remainder = that.mtaskObj.count%that.choose_user.length;//
that.cUserList = [];
console.log('that.choose_user',that.choose_user);
that.userList.forEach(item=>{
if(that.choose_user.indexOf(item.id)>-1){
let obj = {};
obj.handle_user_name = item.name;
obj.handle_user = item.id;
obj.count = average;
that.cUserList.push(obj);
}
})
console.log('that.cUserList',that.cUserList);
for(let i=0;i<remainder;i++){
that.cUserList[i].count += 1;
}
},
mtaskb_submit() {
let that = this;
console.log(that.cUserList);
let sum = 0;
that.cUserList.forEach(item => {
sum+=item.count;
});
console.log(sum-that.mtaskObj.count)
if(sum-that.mtaskObj.count==0){
that.isSaveing = true;
that.$API.pm.mtaskbAdd.req(that.mtaskObj.id,that.cUserList).then((res) => {
that.isSaveing = false;
that.visible = false;
this.$emit("success");
that.$message.success("提交成功");
}).catch((e) => {
that.isSaveing = false;
});
}else{
that.$message.error("分配数量与任务总数不匹配,请确认后再提交");
}
},
handleEditSuccess() {},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style scoped>
.checkboxItem{
width:80px;
}
.footer{
position: absolute;
bottom: 0px;
width: 100%;
z-index: 10;
text-align: center;
background: #ffffff;
height: 40px;
}
</style>

View File

@ -32,7 +32,7 @@
<script>
import inm from "./inm.vue";
import mlogs from "./mlogs.vue";
import mlogs from "./fmlogs.vue";
import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {

Some files were not shown because too many files have changed in this diff Show More