ma-web/scripts/tw.js

1829 lines
50 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var twcomponent = {
template:`
<div>
<div style="display: flex;">
<el-input v-model="rid_v" placeholder="退库任务" clearable style="width: 100px;" @change="input_change"></el-input>
<!--<el-input v-model="head_v" placeholder="负责人" clearable style="width: 100px;" @change="input_change"></el-input>
-->
<el-input v-model="pid_v" placeholder="产品编号" clearable style="width: 105px;" @change="input_change"></el-input>
<el-input v-model="pname_v" placeholder="产品名称" clearable style="width: 105px;" @change="input_change"></el-input>
<el-input v-model="p_serial_v" placeholder="序列号" clearable style="width: 105px;" @change="input_change"></el-input>
<el-select v-model="repairer_v" clearable filterable placeholder="维修人员" style="width: 105px;" @change="input_change">
<el-option
v-for="item in ma_users"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select clearable v-model="rt_v" clearable placeholder="维修类型" style="width: 105px;" @change="input_change">
<el-option label="天工" value="天工"></el-option>
<el-option label="退库" value="退库"></el-option>
</el-select>
<el-checkbox style="margin: 0px;" v-model="checked" @change="if_fin_cahnge" border>已处理</el-checkbox>
<el-checkbox style="margin: 0px;" v-model="e1_checked" @change="input_change" border>转入E1库</el-checkbox>
<el-button id ="bt_serach" plain type="primary" icon="el-icon-search" @click="get_ma_plan()" style="padding-left: 10px;padding-right: 10px;">搜索</el-button>
<el-button id ="bt_add" v-if='level!="3"' plain type="primary" icon="el-icon-document-add" @click="importCsv()" style="margin-left: 0px;padding-left: 10px;padding-right: 10px;">导入</el-button>
<el-button id ="bt_export" plain type="primary" icon="el-icon-document" @click="export_plan()" style="margin-left: 0px;padding-left: 10px;padding-right: 10px;">导出</el-button>
</div>
<div>
<el-progress v-if="if_show_process1" :percentage="percent_len1" ></el-progress>
</div>
<div >
<div class="span">
<el-table
:data="tableData"
style="width: 100%;font-size:14px"
:height="tHeight"
:row-class-name="tableRowClassName"
@selection-change="handleSelectionChange"
border
:row-style="selectedRowStyle"
@cell-dblclick="celldblclick_1"
>
<!--
<el-table-column
type="selection"
width="30"
>
</el-table-column>
-->
<el-table-column
prop="id"
label="序号"
width="60"
:resizable="false">
</el-table-column>
<el-table-column
prop="recv_date"
label="接收日期"
width="70"
:resizable="false">
</el-table-column>
<el-table-column
prop="return_task"
label="退货任务"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
<template slot-scope="scope">
<el-button v-if='scope.row.return_task!=""' @click="to_redmine1(scope.row)" type="text" size="medium">{{scope.row.return_task}}</el-button>
</template>
</el-table-column>
<el-table-column
prop="head"
label="负责人"
width="60"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="p_id"
label="产品编号"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="p_name"
label="产品名称"
width="100"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="p_serial"
label="序列号"
width="60"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="repairer"
label="维修人员"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="rt"
label="维修类型"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="work"
label="工作内容"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="work_h"
label="天工工时(h)"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="if_e1_str"
label="转入E1库"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="odd_num"
label="转储单号"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<!--<el-table-column
prop="ia"
label="初检分析"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>-->
<el-table-column
prop="rp"
label="维修方案"
width="100"
:show-overflow-tooltip="true"
:resizable="false">
</el-table-column>
<el-table-column
prop="acd"
label="完成日期"
width="80"
:resizable="false">
</el-table-column>
<!--<el-table-column
prop="link"
label="自检记录"
width="70"
:resizable="false"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button class="t_hover_button" @click="to_link(scope.row)" type="text" size="medium" >{{scope.row.link}}</el-button>
</template>
</el-table-column>-->
<el-table-column
prop="ms"
label="缺料情况"
width="80"
:resizable="false">
</el-table-column>
<el-table-column
prop="mt"
label="物料任务"
width="80"
:show-overflow-tooltip="true"
:resizable="false">
<template slot-scope="scope">
<el-button v-if='scope.row.mt!=""' :style="scope.row.redmine_color" @click="to_redmine(scope.row)" type="text" size="medium">详情</el-button>
</template>
</el-table-column>
<el-table-column
label="操作"
width="100"
:resizable="false">
<template slot-scope="scope">
<el-button v-if="level!=3" class="t_hover_button" @click="show_update_dialog(scope.row)" type="text" size="medium" >修改</el-button>
<el-button v-if="level==1" style="margin-left: 3px;margin-right: 0px;" @click="remove_ma_plan(scope.row)" type="text" size="medium" >删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="block">
<span class="demonstration"></span>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[50,100, 200, 300]"
:page-size="pagesize"
:total="recordTotal"
layout="total, sizes, prev, pager, next, jumper"
>
</el-pagination>
</div>
</div>
<el-dialog
title="维保计划"
:visible.sync="updatedialogVisible_ex"
:lock-scroll ="false"
width="95%">
<el-form ref="authform_ex" :model="form" :rules="rules" label-width="120px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="5">
<el-form-item label="序号" prop="id" >
<el-input v-model="form.id" :disabled="true" ></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="接收日期" prop="recv_date">
<el-input v-model="form.recv_date" :disabled="disabled"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="退货任务" prop="return_task">
<el-input v-model="form.return_task" :disabled="disabled"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="负责人" prop="head" >
<el-input v-model="form.head" :disabled="disabled" ></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="5">
<el-form-item label="产品编号" prop="p_id">
<el-select style="width: 150px;" v-model="form.p_id" :disabled="disabled" clearable filterable placeholder="请选择" remote :remote-method="remoteMethod" :loading="loading" @change="pid_selectChanged">
<el-option
v-for="item in p_id_options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="5" >
<el-form-item label="产品名称" prop="p_name">
<el-input v-model="form.p_name" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="5" >
<el-form-item label="序列号" prop="p_serial">
<el-input v-model="form.p_serial" :disabled="disabled"></el-input>
</el-form-item>
</el-col>
<el-col :span="5" >
<el-form-item label="维保人员" prop="repairer">
<el-select v-model="form.repairer" clearable filterable placeholder="请选择" :disabled="false">
<el-option
v-for="item in ma_users"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" >
<el-form-item label="维修类型" prop="rt">
<el-select clearable v-model="form.rt" clearable :disabled="disabled">
<el-option label="天工" value="天工"></el-option>
<el-option label="退库" value="退库"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="20" >
<el-form-item label="工作内容(天工)" prop="work">
<el-input v-model="form.work" :disabled="disabled"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" >
<el-form-item label="天工工时(h)" prop="work_h">
<el-input v-model="form.work_h" :disabled="disabled"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12" >
<el-form-item label="初检分析" >
<el-input v-model="form.ia"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" >
<el-form-item label="维修方案" >
<el-input v-model="form.rp"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="5" >
<el-form-item label="完成日期" prop="acd">
<el-date-picker
style="width: 150px;"
v-model="form.acd"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5" >
<el-form-item label="自检记录链接" >
<el-input v-model="form.link"></el-input>
</el-form-item>
</el-col>
<el-col :span="5" >
<el-form-item label="缺料情况" >
<el-input v-model="form.ms"></el-input>
</el-form-item>
</el-col>
<el-col :span="5" >
<el-form-item label="物料任务" >
<el-input v-model="form.mt"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="5" >
<el-form-item label="转入E1库" >
<!--<el-input v-model="form.mt"></el-input>-->
<el-checkbox v-model="form.if_e1" border>转入E1库</el-checkbox>
</el-form-item>
</el-col>
<el-col :span="5" >
<el-form-item label="转储单号" >
<el-input v-model="form.odd_num"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="margin-top: 20px;">
<div>
<el-button id ="bt_add" plain type="primary" icon="el-icon-circle-plus-outline" @click="showAddkpiplan_1()">新增工序</el-button>
<span style="margin-left: 10px;">总工时:{{form.total_work_time}}</span>
</div>
<el-table
:data="form.plan_data"
style="font-size:14px;margin-top: 10px;width: 100%;"
:row-class-name="tableRowClassName"
stripe border>
<el-table-column
prop="produce_plan"
label="维修工序"
width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="produce_plan_use_t"
label="工时"
width="120">
</el-table-column>
<el-table-column
prop="times"
label="次数"
width="120">
</el-table-column>
<el-table-column
prop="produce_user"
label="维保人员"
width="120">
</el-table-column>
<el-table-column
prop="p_actual_finished_t"
label="完成日期"
width="120">
</el-table-column>
<el-table-column
prop="state"
label="审核状态"
width="120">
</el-table-column>
<el-table-column
label="操作"
width="120">
<template slot-scope="scope">
<el-button @click="show_updateplan_dialog(scope.row)" type="text" size="medium" >修改</el-button>
<el-button @click="delKpiplan(scope.row)" type="text" size="medium" >删除</el-button>
<!--<el-button v-if="approve_flag" @click="approve_plan(scope.row)" type="text" size="medium" >审核</el-button>-->
</template>
</el-table-column>
</el-table>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="updatedialogVisible_ex = false">取 消</el-button>
<el-button id ="bt_ok" plain type="primary" @click="update_ma_ex();">确 定</el-button>
</span>
</el-dialog>
<el-dialog
v-dialogDrag
title="维修工序"
:visible.sync="addplanVisible_1"
:lock-scroll ="false"
width="45%">
<el-form ref="planform_1" :model="planform" :rules="rules" label-width="100px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="24">
<el-form-item label="维修工序" prop="produce_plan_t">
<el-select style="width: 100%;" v-model="planform.produce_plan_t" multiple collapse-tags clearable filterable placeholder="请选择" @change="process_selectChanged" @clear="setValueNull">
<el-option
v-for="item in p_process_options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<!--<el-col :span="12">
<el-form-item label="工时" prop="produce_plan_use_t">
<el-input style="width: 190px;" v-model="planform.produce_plan_use_t" :disabled="true"></el-input>
</el-form-item>
</el-col>
-->
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="维保人员" prop="produce_user">
<el-select style="width: 190px;" v-model="planform.produce_user" filterable placeholder="请选择">
<el-option
v-for="item in ma_users"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="完成日期" prop="p_actual_finished_t">
<el-date-picker
v-model="planform.p_actual_finished_t"
type="date"
placeholder="完成日期"
style="width: 190px;"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="次数" prop="times">
<el-input-number v-model="planform.times" :min="1" :max="1000" ></el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addplanVisible_1 = false">取 消</el-button>
<el-button id ="bt_ok" plain type="primary" @click="addkpiplan_1();">确 定</el-button>
</span>
</el-dialog>
<el-dialog
v-dialogDrag
title="维修工序"
:visible.sync="updateplanVisible_1"
:lock-scroll ="false"
width="45%">
<el-form ref="planform_1" :model="planform" :rules="rules" label-width="100px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="维修工序" prop="produce_plan">
<el-select style="width: 190px;" v-model="planform.produce_plan" clearable filterable placeholder="请选择" @change="process_selectChanged" @clear="setValueNull">
<el-option
v-for="item in p_process_options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工时" prop="produce_plan_use_t">
<el-input style="width: 190px;" v-model="planform.produce_plan_use_t" :disabled="true"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="维保人员" prop="produce_user">
<el-select style="width: 190px;" v-model="planform.produce_user" filterable placeholder="请选择">
<el-option
v-for="item in ma_users"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="完成日期" prop="p_actual_finished_t">
<el-date-picker
v-model="planform.p_actual_finished_t"
type="date"
placeholder="完成日期"
style="width: 190px;"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="次数" prop="times">
<el-input-number v-model="planform.times" :min="1" :max="1000" ></el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="updateplanVisible_1 = false">取 消</el-button>
<el-button id ="bt_ok" plain type="primary" @click="addkpiplan_1();">确 定</el-button>
</span>
</el-dialog>
<el-dialog
title="计划导入"
:visible.sync="importdialogVisible"
:lock-scroll ="false"
:before-close="importDialog_close"
width="75%">
<div style="display: flex;">
<el-upload
class="upload-demo"
action=""
:on-change="handleChange"
:file-list="fileListUpload"
:show-file-list="false"
accept=".csv"
:auto-upload="false">
<el-button id ="bt_upload" size="small" plain type="primary">点击上传csv文件</el-button>
</el-upload>
<el-button id ="bt_import" size="small" plain type="primary" @click="importData" style="margin-left: 10px;">确认导入</el-button>
<el-button id ="bt_download" size="small" plain type="primary" @click="download_template" style="margin-left: 10px;">下载导入模板文件</el-button>
</div>
<div>
<el-progress v-if="if_show_process" :percentage="percent_len" :stroke-width="2"></el-progress>
</div>
<el-table
:data="importTableData"
style="font-size:14px;margin-top: 10px;width: 100%;"
:row-class-name="tableRowClassName"
stripe border>
<el-table-column
prop="recv_date"
label="接收日期"
width="70"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="return_task"
label="退库任务"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="head"
label="负责人"
width="100">
</el-table-column>
<el-table-column
prop="p_id"
label="产品编号"
width="100">
</el-table-column>
<el-table-column
prop="p_name"
label="产品名称"
width="100">
</el-table-column>
<el-table-column
prop="p_serial"
label="序列号"
width="60"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="repairer"
label="维修人员"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="rt"
label="维修类型"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="work"
label="天工内容"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="work_h"
label="天工工时"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="if_e1_str"
label="转入E1库"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
</el-table>
</el-dialog>
</div>
`,
data(){
// 获取当前屏幕的分辨率
let screenW = window.screen.width;
let screenH = window.screen.height;
console.log("screen width:",screenW);
console.log("screen height:",screenH);
return {
tHeight:screenH*0.7,
tableData: Array(0),
tableData1: Array(0),
currentPage: 1,
pagesize:50,
pagecnt:1,
recordTotal:0,
checked:false,
e1_checked:false,
value1:'',
value2:'',
id_v:'',
dispatch_date_v:'',
rid_v:'',
head_v:'',
pid_v:'',
pname_v:'',
p_serial_v:'',
repairer_v:'',
rt_v:'',
regional_head_v:'',
ms_v:'',
asc_v:'',
location_v:'',
m_station_v:'',
updatedialogVisible_ex:false,
form: {
id:0,
recv_date:'',
dispath_date:'',
return_task:'',
head:'',
p_id:'',
p_name:'',
p_serial:'',
repairer:'',
rt:'',
work:'',
work_h:'',
ia:'',
rp:'',
acd:'',
link:'',
ms:'',
mt:'',
if_e1:false,
odd_num:'',
total_work_time:0,
plan_data:[],
},
rules: {
product_id: [
{ required: true, message: '产品编号不可为空', trigger: 'blur' }
],
produce_plan: [
{ required: true, message: '工序名称不可为空', trigger: 'blur' }
],
produce_user: [
{ required: true, message: '维保人员不可为空', trigger: 'blur' }
],
p_actual_finished_t: [
{ required: true, message: '完成日期不可为空', trigger: 'blur' }
],
times: [
{ required: true, message: '次数不可为空', trigger: 'blur' }
],
},
options: [],
importdialogVisible:false,
fileTemp: null,
fileListUpload: [],
importTableData: [],
multipleSelection: [],
if_show_processed:true,
if_del_show:false,
if_del:false,
p_id_options:[],
loading: false,
percent_len:0,
if_show_process:false,
interval:'',
if_show_process1:false,
percent_len1:0,
ma_users:[],
disabled:false,
if_do:true,
rs_data:[],
level:0,
addplanVisible_1:false,
updateplanVisible_1:false,
maxid:-1,
planform: {
id:0,
produce_plan:'',
produce_plan_t:[],
produce_plan_use_t:'',
produce_user:'',
p_actual_finished_t:'',
times:1,
},
plan_op_type:0,
p_process_options:[],
cur_p_process:'',
approve_flag:false,
loc:'',
}
},
mounted() {
var op_user = localStorage.getItem("online_user");
if (op_user =="霍涛"){
this.$data.approve_flag=true;
}
var loc = localStorage.getItem("loc");
this.$data.loc=loc;
var level = localStorage.getItem("level");
this.$data.level=level;
var did = localStorage.getItem("did");
if (level==1 ){
this.$data.if_del_show =true;
}
this.get_ma_user();
this.get_rs();
this.get_ma_plan();
},
methods: {
export_plan_process(){
document.getElementById("bt_export_process").blur();
var _this = this;
var objs;
axios.post('/u_ma/export_plan_process', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
})
.then(function (response) {
var date = new Date();
//年 getFullYear():四位数字返回年份
var year = date.getFullYear()%2000; //getFullYear()代替getYear()
console.log(year.toString());
//月 getMonth()0 ~ 11
var month = date.getMonth() + 1;
if(month<10){
month='0'+month
}
//日 getDate()(1 ~ 31)
var day = date.getDate();
if(day<10){
day='0'+day;
}
//时 getHours()(0 ~ 23)
var hour = date.getHours();
if (hour<10){
hour='0'+hour;
}
//分 getMinutes() (0 ~ 59)
var minute = date.getMinutes();
if (minute<10){
minute='0'+minute;
}
//秒 getSeconds()(0 ~ 59)
var second = date.getSeconds();
if (second<10){
second='0'+second;
}
var filename=year.toString()+month.toString()+day.toString() +" " + hour.toString()+minute.toString()+second.toString();
filename = "工序 "+filename+".xlsx"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = '/u_ma/download_file'+"?id="+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
},
approve_plan(row){
for(var i=0;i<this.$data.form.plan_data.length;++i){
if(this.$data.form.plan_data[i].id==row.id){
this.$data.form.plan_data[i].state="已审核";
break;
}
}
},
delKpiplan(row){
var op_user = localStorage.getItem("online_user");
if (op_user !="霍涛" && row.state == "已审核"){
this.$message({
message: "工序已审核,用户无权限修改",
type: "warning",
duration: 1500
});
return;
}
var index =-1;
for(var i=0;i<this.$data.form.plan_data.length;++i){
if(this.$data.form.plan_data[i].id==row.id){
index=i;
break;
}
}
if (index > -1) {
this.$data.form.plan_data.splice(index, 1);
}
var total =0
for(var i=0;i<this.$data.form.plan_data.length;++i){
console.log("工时:",parseFloat(this.$data.form.plan_data[i].produce_plan_use_t));
var t = parseFloat(this.$data.form.plan_data[i].produce_plan_use_t)
t = t * this.$data.form.plan_data[i].times;
total = total+t;
}
console.log("总工时:",total);
this.$data.form.total_work_time=total;
},
show_updateplan_dialog(row){
var op_user = localStorage.getItem("online_user");
if (op_user !="霍涛" && row.state == "已审核"){
this.$message({
message: "工序已审核,用户无权限修改",
type: "warning",
duration: 1500
});
return;
}
var _this = this;
axios.post('/u_ma/get_p_process_options',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
pid:_this.$data.form.p_id,
})
.then(function (response) {
_this.$data.p_process_options=[];
console.log(response.data);
_this.$data.cur_p_process = response.data;
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i].process_name,
label:objs[i].process_name,
}
_this.$data.p_process_options.push(obj);
}
})
.catch(function (error) {
console.log(error);
});
this.$data.planform.produce_plan=row.produce_plan;
this.$data.planform.produce_plan_use_t=row.produce_plan_use_t;
this.$data.planform.produce_user=row.produce_user;
this.$data.planform.id =row.id;
this.$data.planform.p_actual_finished_t=row.p_actual_finished_t;
this.$data.planform.times=row.times;
this.$data.plan_op_type=2;
this.$nextTick(() => {
this.$refs['planform_1'].clearValidate()
});
this.$data.updateplanVisible_1=true;
},
setValueNull(val) {
this.$data.planform.produce_plan_use_t='';
},
process_selectChanged(value){
console.log("select change");
console.log(value);
console.log(this.$data.cur_p_process.data);
for(var i=0; i <this.$data.cur_p_process.data.length;++i){
if(this.$data.cur_p_process.data[i].process_name == value){
this.$data.planform.produce_plan_use_t = this.$data.cur_p_process.data[i].process_t
console.log("find");
console.log(this.$data.planform.produce_plan_use_t);
break;
}
}
},
addkpiplan_1(){
this.$refs['planform_1'].validate((valid) => {
if (valid) {
if (this.$data.plan_op_type==1) {
const sel_map = new Map();
for(var i=0; i <this.$data.cur_p_process.data.length;++i){
sel_map.set(this.$data.cur_p_process.data[i].process_name, this.$data.cur_p_process.data[i].process_t);
}
for(var i = 0;i < this.$data.planform.produce_plan_t.length;i++){
var obj ={
id:this.$data.maxid,
produce_plan:this.$data.planform.produce_plan_t[i],
produce_plan_use_t:sel_map.get(this.$data.planform.produce_plan_t[i]),
produce_user:this.$data.planform.produce_user,
p_actual_finished_t:this.$data.planform.p_actual_finished_t,
times:this.$data.planform.times,
}
console.log(this.$data.form);
this.$data.form.plan_data.push(obj);
this.$data.maxid+=1;
console.log("id:",this.$data.maxid);
}
} else if (this.$data.plan_op_type==2){
for(var i=0;i<this.$data.form.plan_data.length;++i){
if(this.$data.form.plan_data[i].id==this.$data.planform.id){
this.$data.form.plan_data[i].produce_plan=this.$data.planform.produce_plan;
this.$data.form.plan_data[i].produce_plan_use_t=this.$data.planform.produce_plan_use_t;
this.$data.form.plan_data[i].produce_user=this.$data.planform.produce_user;
this.$data.form.plan_data[i].p_actual_finished_t=this.$data.planform.p_actual_finished_t;
this.$data.form.plan_data[i].times=this.$data.planform.times;
console.log(this.$data.form.plan_data);
break;
}
}
}
var total =0
for(var i=0;i<this.$data.form.plan_data.length;++i){
console.log("工时:",parseFloat(this.$data.form.plan_data[i].produce_plan_use_t));
var t = parseFloat(this.$data.form.plan_data[i].produce_plan_use_t)
t = t * this.$data.form.plan_data[i].times;
total = total+t;
}
console.log("总工时:",total);
this.$data.form.total_work_time=total;
if (this.$data.plan_op_type==1) {
this.$data.addplanVisible_1 = false;
} else if (this.$data.plan_op_type==2){
this.$data.updateplanVisible_1 = false;
}
}
});
},
showAddkpiplan_1(){
var _this = this;
axios.post('/u_ma/get_p_process_options',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
pid:_this.$data.form.p_id,
})
.then(function (response) {
_this.$data.p_process_options=[];
console.log(response.data);
_this.$data.cur_p_process = response.data;
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i].process_name,
label:objs[i].process_name,
}
_this.$data.p_process_options.push(obj);
}
})
.catch(function (error) {
console.log(error);
});
this.$data.planform.produce_plan='';
this.$data.planform.produce_plan_t=[];
this.$data.planform.produce_plan_use_t='';
this.$data.planform.produce_user='';
this.$data.planform.p_actual_finished_t='';
this.$data.planform.times=1;
this.$data.plan_op_type=1;
for (var i = 0; i < this.$data.form.plan_data.length; i++) {
if(this.$data.form.plan_data[i].id >this.$data.maxid){
this.$data.maxid = this.$data.form.plan_data[i].id
}
}
if(this.$data.maxid !=-1){
this.$data.maxid+=1;
}else{
this.$data.maxid = 0;
}
this.$nextTick(() => {
this.$refs['planform_1'].clearValidate()
});
this.$data.addplanVisible_1=true;
},
to_link(row){
if (row.link ==""){
return;
}
url = encodeURI(row.link);
window.open(url, "");
},
mcd_change(form){
console.log(form);
var bt ="";
var days = form.rc;
if(form.mcd !=""){
bt = form.mcd;
}else{
bt = form.rod;
}
var _this = this;
axios.post('/u_ma/cal_completion_date',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
bt:bt,
days:days
})
.then(function (response) {
_this.form.ccd = response.data.completion_date;
})
.catch(function (error) {
console.log(error);
});
},
get_rs(){
var _this = this;
axios.post('/u_ma/get_rs',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
})
.then(function (response) {
_this.$data.rs_data=[];
console.log(response.data);
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i].rs,
label:objs[i].rs
}
_this.$data.rs_data.push(obj);
}
})
.catch(function (error) {
console.log(error);
});
},
get_ma_user(){
var _this = this;
axios.post('/u_ma/get_ma_username',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
location:_this.$data.location_v,
})
.then(function (response) {
_this.$data.ma_users=[];
console.log(response.data);
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i],
label:objs[i]
}
_this.$data.ma_users.push(obj);
}
var obj ={
value:"空",
label:"空"
}
_this.$data.ma_users.push(obj);
})
.catch(function (error) {
console.log(error);
});
},
celldblclick_1(row, column, cell, event){
this.show_update_dialog(row);
},
to_redmine1(row){
if(row.return_task!=""){
const replacedStr = row.return_task.split("#").join("");
url = encodeURI("http://123.54.1.214:10010/redmine/issues/"+replacedStr);
window.open(url, "");
}
},
to_redmine(row){
if(row.mt!=""){
url = encodeURI("http://123.54.1.214:10010/redmine/issues/"+row.mt);
window.open(url, "");
}
},
input_change(value) {
console.log(value);
this.get_ma_plan();
if(this.$data.location_v !=""){
this.get_ma_user();
}
},
pid_selectChanged(value){
console.log("select change");
this.loading = true;
var _this=this;
axios.post('/u_ma/get_p_name',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
p_id:value,
})
.then(function (response) {
_this.$data.form.p_name = response.data.p_name;
})
.catch(function (error) {
console.log(error);
});
},
remoteMethod(query) {
if (query !== '') {
this.loading = true;
setTimeout(() => {
var _this=this;
axios.post('/u_ma/get_p_id_options',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
p_like_id:query,
})
.then(function (response) {
_this.$data.p_id_options=[];
console.log(response.data);
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i],
label:objs[i],
}
_this.$data.p_id_options.push(obj);
}
_this.$data.loading = false;
console.log(_this.$data.loading)
})
.catch(function (error) {
console.log(error);
_this.$data.loading = false;
});
}, 200);
} else {
_this.$data.p_id_options = [];
}
},
if_fin_cahnge(val){
if(val){
this.$data.if_do=false;
}else{
this.$data.if_do=true;
}
this.get_ma_plan();
},
selectedRowStyle({ row, rowIndex }) {
if(row.if_warn == 1){
let styleJson ={
"color":"#ff0000",
};
return styleJson;
}
},
download_template(){
document.getElementById("bt_download").blur();
var downUrl = '/u_ma/download_file'+"?id="+"导入临时计划.csv";
downloadUrl("临时计划导入文件模板.csv",downUrl);
},
handleSelectionChange(val) {
console.log("已选择");
console.log(val);
this.multipleSelection = val;
},
importData(){
document.getElementById("bt_import").blur();
if(this.$data.importTableData.length==0){
this.$message({
message: "请选择导入文件",
type: "warning",
duration: 1500
});
return;
}
this.$data.percent_len=0;
this.$data.if_show_process=true;
this.$data.interval= setInterval(()=>{
if(this.$data.percent_len>=99){
clearInterval(this.$data.interval);
return;
}
this.$data.percent_len+=1
},20)
var _this = this;
axios.post('/u_ma/import_ma_temp_plan', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
plan:this.$data.importTableData,
})
.then(function (response) {
let r = response.data.r;
console.log("r:",r);
let s = ""
let errType = ""
if (r == 0) {
let len = _this.$data.importTableData.length;
_this.$data.percent_len=100;
_this.$data.if_show_process=false;
errType = "success"
s = "导入"+len+"生产计划成功!";
} else if(r==2){
errType = "error"
s = response.data.context;
console.log(s);
clearInterval(_this.$data.interval);
} else{
errType = "error"
s = "导入生产计划失败!";
clearInterval(_this.$data.interval);
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
_this.$data.importdialogVisible=false;
//更新页面
_this.get_ma_plan();
})
.catch(function (error) {
console.log(error);
});
},
importDialog_close(done){
console.log("关闭导入对话框");
done();
},
handleChange(file, fileList) {
document.getElementById("bt_upload").blur();
this.fileTemp = file.raw
console.log("filetype:",this.fileTemp);
if (this.fileTemp) {
console.log("begin ...")
console.log(this.fileTemp.type);
if ((this.fileTemp.type == 'text/csv') || (this.fileTemp.type == '.csv') || (this.fileTemp.type == 'application/vnd.ms-excel')) {
let _this = this//如果需要点击事件结束之后对DOM进行操作使用)_this.xx=xx进行操作
Papa.parse(_this.fileTemp, {
encoding:'gb2312',
complete (results) {
console.log(results)//这个是csv文件的数据
let data = []
//遍历csv文件中的数据存放到data中 方法不唯一,可自己更改
for (let i = 0; i < results.data.length; ++i) {
if(i==0){
continue;
}
let obj = {}
obj.recv_date = results.data[i][0]
if(obj.recv_date==""|| obj.recv_date==undefined){
continue;
}
obj.return_task = results.data[i][1]
obj.head = results.data[i][2]
obj.p_id=results.data[i][3]
obj.p_name=results.data[i][4]
obj.p_serial=results.data[i][5]
obj.repairer=results.data[i][6]
obj.rt=results.data[i][7]
obj.work=results.data[i][8]
obj.work_h=results.data[i][9]
obj.if_e1_str=results.data[i][10]
console.log(obj);
data.push(obj)
}
//data.splice(0, 1)//将数组第一位的表格名称去除
let num = 0
console.log('data', data)
_this.$data.importTableData=data;
}
})
} else {
this.$data.fileListUpload=[];
this.$message({
type: 'warning',
message: '附件格式错误,请删除后重新上传!'
})
}
} else {
this.$message({
type: 'warning',
message: '请上传附件!'
})
}
},
importCsv(){
this.$data.fileListUpload=[];
this.$data.importTableData=[];
this.$data.importdialogVisible=true;
this.$data.if_show_process=false;
},
export_plan(){
document.getElementById("bt_export").blur();
var _this = this;
var objs;
axios.post('/u_ma/export_ma_temp_plan', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
rid:this.$data.rid_v,
head:this.$data.head_v,
p_id:this.$data.pid_v,
p_name:this.$data.pname_v,
p_serial:this.$data.p_serial_v,
repairer:this.$data.repairer_v,
rt:this.$data.rt_v,
if_done:this.$data.checked,
if_e1:this.$data.e1_checked,
})
.then(function (response) {
var date = new Date();
//年 getFullYear():四位数字返回年份
var year = date.getFullYear()%2000; //getFullYear()代替getYear()
console.log(year.toString());
//月 getMonth()0 ~ 11
var month = date.getMonth() + 1;
if(month<10){
month='0'+month
}
//日 getDate()(1 ~ 31)
var day = date.getDate();
if(day<10){
day='0'+day;
}
//时 getHours()(0 ~ 23)
var hour = date.getHours();
if (hour<10){
hour='0'+hour;
}
//分 getMinutes() (0 ~ 59)
var minute = date.getMinutes();
if (minute<10){
minute='0'+minute;
}
//秒 getSeconds()(0 ~ 59)
var second = date.getSeconds();
if (second<10){
second='0'+second;
}
var filename=year.toString()+month.toString()+day.toString() +" " + hour.toString()+minute.toString()+second.toString();
filename = "维保临时计划 "+filename+".xlsx"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = '/u_ma/download_file'+"?id="+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
},
tableRowClassName({row, rowIndex}) {
var n = rowIndex%2;
if (n == 1) {
return 'success-row';
}
return '';
},
show_update_dialog(row){
console.log(row.ccd);
var recv_date;
if(row.recv_date !=undefined &&row.recv_date.length>0){
recv_date="20"+row.recv_date
}else{
recv_date=''
}
var dispath_date;
if (row.dispath_date !=undefined &&row.dispath_date.length>0){
dispath_date="20"+row.dispath_date;
}else{
dispath_date=''
}
var acd;
if (row.acd != undefined && row.acd.length>0){
acd="20"+row.acd;
}else{
acd='';
}
this.$data.form = {
id:row.id,
recv_date:recv_date,
dispath_date:dispath_date,
return_task:row.return_task,
head:row.head,
p_id:row.p_id,
p_name:row.p_name,
p_serial:row.p_serial,
repairer:row.repairer,
rt:row.rt,
work:row.work,
work_h:row.work_h,
ia:row.ia,
rp:row.rp,
acd:acd,
link:row.link,
ms:row.ms,
mt:row.mt,
if_e1:row.if_e1,
odd_num:row.odd_num,
total_work_time:row.total_work_time,
plan_data:[],
};
for(var i=0;i<row.plan_data.length;++i){
let times = 1
if(row.plan_data[i].times>times){
times=row.plan_data[i].times;
}
let obj = {
id:row.plan_data[i].id,
produce_plan:row.plan_data[i].produce_plan,
produce_plan_use_t:row.plan_data[i].produce_plan_use_t,
produce_user:row.plan_data[i].produce_user,
p_actual_finished_t:row.plan_data[i].p_actual_finished_t,
state:row.plan_data[i].state,
times:times,
}
this.$data.form.plan_data.push(obj);
}
console.log(this.$data.form)
this.get_ma_user();
//this.get_rs();
var op_user = localStorage.getItem("online_user");
var level = localStorage.getItem("level");
var did = localStorage.getItem("did");
if(level==1){
this.$data.disabled=false;
}else{
this.$data.disabled =true;
}
this.$data.updatedialogVisible_ex = true;
},
update_ma_ex(){
this.$refs['authform_ex'].validate((valid) => {
if (valid) {
var _this = this;
axios.post('/u_ma/update_ma_temp_plan', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.form.id,
recv_date:_this.form.recv_date,
dispath_date:_this.form.dispath_date,
return_task:_this.form.return_task,
head:_this.form.head,
p_id:_this.form.p_id,
p_name:_this.form.p_name,
p_serial:_this.form.p_serial,
repairer:_this.form.repairer,
rt:_this.form.rt,
work:_this.form.work,
work_h:_this.form.work_h,
ia:_this.form.ia,
rp:_this.form.rp,
acd:_this.form.acd,
link:_this.form.link,
ms:_this.form.ms,
mt:_this.form.mt,
if_e1:_this.form.if_e1,
odd_num:_this.form.odd_num,
total_work_time:_this.form.total_work_time.toString(),
plan_data:_this.form.plan_data,
}
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
s = "修改成功!";
} else if(r==1){
errType = "error"
s = "无权限!";
}else{
errType = "error"
s = "修改失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
if(r==0){
_this.get_ma_plan(_this.$data.currentPage);
_this.$data.updatedialogVisible_ex = false;
}
})
.catch(function (error) {
console.log(error);
});
}
});
},
remove_ma_plan(row){
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
var _this = this;
axios.post('/u_ma/remove_ma_temp_plan', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:row.id
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
s = "删除成功!";
} else{
errType = "error"
s = "删除失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.get_ma_plan();
})
.catch(function (error) {
console.log(error);
});
}).catch(() => {
});
},
get_ma_plan(cur_page){
console.log("cur_page:",cur_page);
document.getElementById("bt_serach").blur();
var _this = this;
if (cur_page==undefined){
_this.$data.currentPage=1;
} else {
_this.$data.currentPage=cur_page;
}
var objs;
axios.post('/u_ma/get_ma_temp_plan', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: this.$data.currentPage,
count: this.$data.pagesize,
rid:this.$data.rid_v,
head:this.$data.head_v,
p_id:this.$data.pid_v,
p_name:this.$data.pname_v,
p_serial:this.$data.p_serial_v,
repairer:this.$data.repairer_v,
rt:this.$data.rt_v,
if_done:this.$data.checked,
if_e1:this.$data.e1_checked,
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
_this.$data.tableData = objs;
_this.$data.recordTotal = rcnt;
//_this.$data.pagecnt = response.data.pagecnt;
})
.catch(function (error) {
console.log(error);
});
},
handleSizeChange(val) {
//console.log(`每页 ${val} 条`);
this.$data.pagesize = val;
var _this = this;
var objs;
axios.post('/u_ma/get_ma_temp_plan', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: this.$data.currentPage,
count: this.$data.pagesize,
rid:this.$data.rid_v,
head:this.$data.head_v,
p_id:this.$data.pid_v,
p_name:this.$data.pname_v,
p_serial:this.$data.p_serial_v,
repairer:this.$data.repairer_v,
rt:this.$data.rt_v,
if_done:this.$data.checked,
if_e1:this.$data.e1_checked,
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
_this.$data.tableData = objs;
_this.$data.recordTotal = rcnt;
})
.catch(function (error) {
console.log(error);
});
},
handleCurrentChange(val) {
//console.log(`当前页: ${val}`);
this.$data.currentPage = val;
var _this = this;
var objs;
axios.post('/u_ma/get_ma_temp_plan', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: this.$data.currentPage,
count: this.$data.pagesize,
rid:this.$data.rid_v,
head:this.$data.head_v,
p_id:this.$data.pid_v,
p_name:this.$data.pname_v,
p_serial:this.$data.p_serial_v,
repairer:this.$data.repairer_v,
rt:this.$data.rt_v,
if_done:this.$data.checked,
if_e1:this.$data.e1_checked,
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
_this.$data.tableData = objs;
_this.$data.recordTotal = rcnt;
})
.catch(function (error) {
console.log(error);
});
},
}
}