kpi-web/scripts/welldata.js

4934 lines
153 KiB
JavaScript
Raw Normal View History

2026-04-03 16:14:45 +08:00
var Wellcomponent = {
template:`
<div>
<div v-if="!if_show_d1" style="display: flex;">
<el-input v-model="value1" placeholder="Y/M/D-Y/M/D" clearable style="width: 160px;" @change="input_change"></el-input>
<el-input v-model="id_v" placeholder="序号" clearable style="width: 100px;" @change="input_change"></el-input>
<el-input v-model="sapid_v" placeholder="计划/项目号" clearable style="width: 120px;" @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="conveyer_v" placeholder="交付人" clearable style="width: 120px;" @change="input_change"></el-input>
<el-select clearable v-if="if_show_processed" filterable allow-create v-model="plan_state_v" placeholder="生产状态"
style="width: 110px;" @change="selectChanged">
<el-option-group
key="1"
label="">
<el-option label="核对物料" value="核对物料"></el-option>
<el-option label="待分解" value="待分解"></el-option>
<el-option label="待派产" value="待派产"></el-option>
<el-option label="生产中" value="生产中"></el-option>
<el-option label="外协" value="需外协"></el-option>
<el-option label="交检" value="交检"></el-option>
<el-option label="做账" value="做账"></el-option>
<el-option label="入库" value="入库"></el-option>
<el-option label="物料不足" value="物料不足"></el-option>
<el-option label="物料未到" value="物料未到"></el-option>
<el-option label="物料超期" value="物料超期"></el-option>
<el-option label="文件错误" value="文件错误"></el-option>
<el-option label="设计文件错误" value="设计文件错误"></el-option>
<el-option label="工艺文件错误" value="工艺文件错误"></el-option>
<el-option label="未导入" value="未导入"></el-option>
<el-option label="检验不合格" value="检验不合格"></el-option>
<el-option label="未满足分解条件" value="未满足分解条件"></el-option>
</el-option-group>
</el-select>
<el-tooltip v-if="if_show_d1" content="格式Y/M/D-Y/M/D" placement="top">
<el-input v-model="search_promise_date" placeholder="承诺到料" clearable style="width: 160px;" @change="input_change"></el-input>
</el-tooltip>
<el-checkbox v-if="if_show_processed" style="margin: 0px;" v-model="checked" @change="if_fin_cahnge" border>已处理</el-checkbox>
<el-checkbox v-if="if_del_show" style="margin: 0px;" v-model="if_del" @change="if_del_cahnge" border>已删除</el-checkbox>
<el-select clearable v-if="if_show_task_finished" v-model="group_name_v" placeholder="生产分组"
style="width: 110px;" @change="selectChanged">
<el-option-group
key="1"
label="">
<el-option label="生产组" value="生产组"></el-option>
<el-option label="电装组" value="电装组"></el-option>
<el-option label="保障组" value="保障组"></el-option>
<el-option label="保温瓶组" value="保温瓶组"></el-option>
</el-option-group>
</el-select>
<el-button id ="bt_serach" plain type="primary" icon="el-icon-search" @click="getkpi()" style="padding-left: 10px;padding-right: 10px;">搜索</el-button>
<el-button v-if="!if_show_task_finished" id ="bt_add" plain type="primary" icon="el-icon-document-add" @click="importCsv()" style="margin-left: 0px;padding-left: 10px;padding-right: 10px;">导入</el-button>
<el-button v-if="if_show_export" id ="bt_export" plain type="primary" icon="el-icon-document" @click="exportkpi()" style="margin-left: 0px;padding-left: 10px;padding-right: 10px;">导出</el-button>
<el-button id ="bt_task_transfer" plain type="primary" icon="el-icon-right" @click="show_taskTransfer_disalog()" style="margin-left: 0px;padding-left: 10px;padding-right: 10px;" :disabled="trans_disabled">任务转出</el-button>
<el-button v-if="if_show_task_finished" id ="bt_copy" plain type="primary" icon="el-icon-finished" @click="copy_link()" style="margin-left: 0px;padding-left: 10px;padding-right: 10px;">复制链接</el-button>
<el-dropdown v-if="if_show_task_finished" @command="handleCommand">
<el-button type="primary" plain style="padding-left: 10px;padding-right: 10px;">
更多<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command='export_plan_over'>导出已完成工序</el-dropdown-item>
<el-dropdown-item v-if="if_del_show" command='export_transfer_history'>导出转出记录</el-dropdown-item>
<el-dropdown-item>
<el-upload
style="margin-left: 0px;"
class="upload-demo"
action=""
:on-change="mul_update_kpi_1"
:file-list="fileListUpload1"
:show-file-list="false"
accept=".csv"
:auto-upload="false">导入生产计划(csv文件)</el-upload>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<div v-if="if_show_d1" style="display: flex;">
<el-input v-model="id_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-select clearable filterable allow-create v-model="plan_state_v" placeholder="生产状态"
style="width: 110px;" @change="selectChanged">
<el-option-group
key="1"
label="">
<el-option label="核对物料" value="核对物料"></el-option>
<el-option label="待分解" value="待分解"></el-option>
<el-option label="待派产" value="待派产"></el-option>
<el-option label="生产中" value="生产中"></el-option>
<el-option label="外协" value="需外协"></el-option>
<el-option label="交检" value="交检"></el-option>
<el-option label="做账" value="做账"></el-option>
<el-option label="入库" value="入库"></el-option>
<el-option label="物料不足" value="物料不足"></el-option>
<el-option label="物料未到" value="物料未到"></el-option>
<el-option label="物料超期" value="物料超期"></el-option>
<el-option label="文件错误" value="文件错误"></el-option>
<el-option label="设计文件错误" value="设计文件错误"></el-option>
<el-option label="工艺文件错误" value="工艺文件错误"></el-option>
<el-option label="未导入" value="未导入"></el-option>
<el-option label="检验不合格" value="检验不合格"></el-option>
<el-option label="未满足分解条件" value="未满足分解条件"></el-option>
</el-option-group>
</el-select>
<el-select clearable filterable v-model="more_query_v" placeholder="更多查询"
style="width: 110px;" @change="more_query_select">
<el-option-group
key="1"
label="">
<el-option label="时间段" value="时间段"></el-option>
<el-option label="计划号" value="计划号"></el-option>
<el-option label="承诺到料" value="承诺到料"></el-option>
<el-option label="生产分组" value="生产分组"></el-option>
<el-option label="交付人" value="交付人"></el-option>
<el-option label="RDM" value="RDM"></el-option>
<el-option label="生产人员" value="生产人员"></el-option>
</el-option-group>
</el-select>
<el-input v-if="more_query_v=='时间段'" v-model="value1" placeholder="Y/M/D-Y/M/D" clearable style="width: 160px;" @change="input_change"></el-input>
<el-input v-if="more_query_v=='计划号'" v-model="sapid_v" placeholder="计划/项目号" clearable style="width: 120px;" @change="input_change"></el-input>
<el-tooltip v-if="more_query_v=='承诺到料'" content="格式Y/M/D-Y/M/D" placement="top">
<el-input v-model="search_promise_date" placeholder="承诺到料" clearable style="width: 160px;" @change="input_change"></el-input>
</el-tooltip>
<el-select clearable v-if="more_query_v=='生产分组'" v-model="group_name_v" placeholder="生产分组"
style="width: 110px;" @change="selectChanged">
<el-option-group
key="1"
label="">
<el-option label="生产组" value="生产组"></el-option>
<el-option label="电装组" value="电装组"></el-option>
<el-option label="保障组" value="保障组"></el-option>
<el-option label="保温瓶组" value="保温瓶组"></el-option>
</el-option-group>
</el-select>
<el-input v-if="more_query_v=='交付人'" v-model="conveyer_v" placeholder="" clearable style="width: 120px;" @change="input_change"></el-input>
<el-input v-if="more_query_v=='RDM'" v-model="rdm_v" placeholder="" clearable style="width: 120px;" @change="input_change"></el-input>
<!--<el-input v-if="more_query_v=='生产人员'" v-model="product_user_v" placeholder="" clearable style="width: 120px;" @change="input_change"></el-input>
-->
<el-select v-if="more_query_v=='生产人员'" v-model="product_user_v" filterable placeholder="请选择" style="width: 120px;" >
<el-option
v-for="item in product_users"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-checkbox v-if="if_show_processed" style="margin: 0px;" v-model="checked" @change="if_fin_cahnge" border>已处理</el-checkbox>
<el-checkbox v-if="if_del_show" style="margin: 0px;" v-model="if_del" @change="if_del_cahnge" border>已删除</el-checkbox>
<el-button id ="bt_serach" plain type="primary" icon="el-icon-search" @click="getkpi()" style="padding-left: 10px;padding-right: 10px;">搜索</el-button>
<div v-if="role_id !=4" style="display: flex;">
<el-button v-if="!if_show_task_finished" id ="bt_add" 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_task_transfer" plain type="primary" icon="el-icon-right" @click="show_taskTransfer_disalog()" style="margin-left: 0px;padding-left: 10px;padding-right: 10px;" :disabled="trans_disabled">任务转出</el-button>
<el-button v-if="if_show_task_finished" id ="bt_copy" plain type="primary" icon="el-icon-finished" @click="copy_link()" style="margin-left: 0px;padding-left: 10px;padding-right: 10px;">复制链接</el-button>
<el-dropdown v-if="if_show_task_finished" @command="handleCommand">
<el-button type="primary" plain style="padding-left: 10px;padding-right: 10px;">
更多<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command='export_undo_plan'>导出未完成计划</el-dropdown-item>
<el-dropdown-item command='export_plan_over'>导出已完成工序</el-dropdown-item>
<el-dropdown-item command='export_plan_inspection_not_completed'>导出质检未完成工序</el-dropdown-item>
<el-dropdown-item command='export_plan_inspection_completed'>导出质检已完成工序</el-dropdown-item>
<el-dropdown-item v-if="if_del_show" command='export_transfer_history'>导出转出记录</el-dropdown-item>
<el-dropdown-item>
<el-upload
style="margin-left: 0px;"
class="upload-demo"
action=""
:on-change="mul_update_kpi_1"
:file-list="fileListUpload1"
:show-file-list="false"
accept=".csv"
:auto-upload="false">导入生产计划(csv文件)</el-upload>
</el-dropdown-item>
<el-dropdown-item v-if="if_del_show" command='export_plan_collect'>汇总分解</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<div>
<el-progress v-if="if_show_process1" :percentage="percent_len1" ></el-progress>
</div>
<div v-if="if_show_d1">
<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">
</el-table-column>
<el-table-column
prop="CreateTime"
label="订单日期"
width="70">
</el-table-column>
<el-table-column
prop="department_name"
label="部门"
width="60">
</el-table-column>
<el-table-column
prop="task_id"
label="计划/项目号"
width="130"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="product_id"
label="编号"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="product_name"
label="名称"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="total_num"
label="数量"
width="40">
</el-table-column>
<el-table-column
prop="demand_date"
label="需求日期"
width="70">
</el-table-column>
<el-table-column
prop="rdm_id"
label="RDM"
width="60"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button :style="scope.row.redmine_color" @click="to_redmine(scope.row)" type="text" size="medium">{{scope.row.rdm_id}}</el-button>
</template>
</el-table-column>
<el-table-column
prop="conveyer"
label="交付人"
width="60">
</el-table-column>
<el-table-column
prop="promise_date"
label="承诺到料"
width="70">
</el-table-column>
<el-table-column
prop="m_overdue"
label="物料超期"
width="70">
</el-table-column>
<el-table-column
prop="group_name"
label="班组"
width="50"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="dispath_num"
label="派产量"
width="50">
</el-table-column>
<el-table-column
prop="plan_dispath_date"
label="计划"
width="70">
</el-table-column>
<el-table-column
prop="plan_finished_date"
label="承诺"
width="70">
</el-table-column>
<el-table-column
prop="plan_fin_state"
label="进度"
width="40">
</el-table-column>
<el-table-column
prop="plan_actual_finished_date"
label="实际完成"
width="70">
</el-table-column>
<el-table-column
prop="overdue"
label="超期"
:width="40">
</el-table-column>
<el-table-column
prop="plan_state"
label="生产状态"
width="60"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="code_state"
label="编程"
width="50"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
label="归档"
width="100">
<template slot-scope="scope">
<div v-if='check_code_state(scope.row)'>
<el-tooltip placement="left-start" popper-class="packageDownLoad-tooltip">
<div v-if='tip_show(scope.row.f_c)' slot="content" ><br/></div>
<div v-if='!tip_show(scope.row.f_c)' slot="content" v-for="item in scope.row.f_c">{{item.f_name}} {{item.filing_t}}<br/></div>
<el-button :style="check_file_color_c(scope.row)" @click="down_files(scope.row.f_c)" type="text" size="medium" >Turning</el-button>
</el-tooltip>
<el-tooltip placement="right-start" style="margin-left: 0px;" popper-class="packageDownLoad-tooltip">
<div v-if='tip_show(scope.row.f_x)' slot="content" ><br/></div>
<div v-if='!tip_show(scope.row.f_x)' slot="content" v-for="item in scope.row.f_x">{{item.f_name}} {{item.filing_t}}<br/></div>
<el-button :style="check_file_color_x(scope.row)" @click="down_files(scope.row.f_x)" type="text" size="medium" >Milling</el-button>
</el-tooltip>
</div>
</template>
</el-table-column>
<el-table-column
label="派产"
width="50">
<template slot-scope="scope">
<el-button :style="check_his_color(scope.row)" @click="show_dis_detail(scope.row)" type="text" size="medium">详情</el-button>
</template>
</el-table-column>
<el-table-column
prop="welltime"
label="日志"
width="50">
<template slot-scope="scope">
<el-button @click="showUpdatehistory(scope.row)" type="text" size="medium">详情</el-button>
</template>
</el-table-column>
<el-table-column
label="注"
width="30">
<template slot-scope="scope">
<div >
<el-tooltip placement="left-start" popper-class="packageDownLoad-tooltip">
<div v-if='scope.row.notes==""' slot="content"></div>
<div v-if='scope.row.notes!=""' slot="content">{{scope.row.notes}}</div>
<el-button :style="check_note_color_x(scope.row)" @click="show_update_notes(scope.row)" type="text" size="medium" ></el-button>
</el-tooltip>
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
width="140">
<template slot-scope="scope">
<el-button class="t_hover_button" v-show="scope.row.if_show_update && role_id!=4" @click="show_update_dialog(scope.row)" type="text" size="medium" >修改</el-button>
<el-button style="margin-left: 3px;margin-right: 0px;" v-show="scope.row.if_show_del && role_id!=4" @click="delKpi(scope.row)" type="text" size="medium" >删除</el-button>
<el-button style="margin-left: 3px;margin-right: 0px;" :style="scope.row.flink_color" @click="to_feishu(scope.row)" type="text" size="medium" >飞书链接</el-button>
<el-button style="margin-left: 3px;margin-right: 0px;" v-show="scope.row.if_show_del_his" @click="show_kpi_del_his(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>
<div v-if="if_show_d3">
<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">
<el-table-column
type="selection"
width="30"
>
</el-table-column>
<el-table-column
prop="id"
label="序号"
width="60">
</el-table-column>
<el-table-column
prop="CreateTime"
label="订单日期"
width="80">
</el-table-column>
<el-table-column
prop="department_name"
label="部门"
width="60">
</el-table-column>
<el-table-column
prop="task_id"
label="计划/项目号"
width="150"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="product_id"
label="编号"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="product_name"
label="名称"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="total_num"
label="数量"
width="60">
</el-table-column>
<el-table-column
prop="demand_date"
label="需求日期"
width="80">
</el-table-column>
<el-table-column
prop="rdm_id"
label="RDM"
width="60"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="to_redmine(scope.row)" type="text" size="medium">{{scope.row.rdm_id}}</el-button>
</template>
</el-table-column>
<el-table-column
prop="conveyer"
label="交付人"
width="60">
</el-table-column>
<el-table-column
prop="Material_p"
label="物料属性"
width="60">
</el-table-column>
<el-table-column
prop="Material_inventory"
label="物料库存"
width="80">
</el-table-column>
<el-table-column
prop="promise_date"
label="承诺到料"
width="80">
</el-table-column>
<el-table-column
prop="promised_date"
label="实际到料"
width="80">
</el-table-column>
<el-table-column
prop="Material_overdue"
label="是否超期"
:width="60">
</el-table-column>
<el-table-column
prop="buyer"
label="采购员"
width="60">
</el-table-column>
<el-table-column
prop="plan_state"
label="生产状态"
width="80"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="welltime"
label="日志"
width="50">
<template slot-scope="scope">
<el-button @click="showUpdatehistory(scope.row)" type="text" size="medium">详情</el-button>
</template>
</el-table-column>
<el-table-column
label="注"
width="30">
<template slot-scope="scope">
<div >
<el-tooltip placement="left-start" popper-class="packageDownLoad-tooltip">
<div v-if='scope.row.notes==""' slot="content"></div>
<div v-if='scope.row.notes!=""' slot="content">{{scope.row.notes}}</div>
<el-button :style="check_note_color_x(scope.row)" type="text" size="medium" ></el-button>
</el-tooltip>
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
width="80">
<template slot-scope="scope">
<el-button v-show="scope.row.if_show_update" @click="show_update_dialog(scope.row)" type="text" size="medium" >修改</el-button>
<el-button v-show="scope.row.if_show_del" @click="delKpi(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>
<div v-if="if_show_d5">
<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">
<el-table-column
type="selection"
width="30"
>
</el-table-column>
<el-table-column
prop="id"
label="序号"
width="60">
</el-table-column>
<el-table-column
prop="CreateTime"
label="订单日期"
width="80">
</el-table-column>
<el-table-column
prop="department_name"
label="部门"
width="60">
</el-table-column>
<el-table-column
prop="task_id"
label="计划/项目号"
width="150"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="product_id"
label="编号"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="product_name"
label="名称"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="total_num"
label="数量"
width="60">
</el-table-column>
<el-table-column
prop="demand_date"
label="需求日期"
width="80">
</el-table-column>
<el-table-column
prop="rdm_id"
label="RDM"
width="60"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="to_redmine(scope.row)" type="text" size="medium">{{scope.row.rdm_id}}</el-button>
</template>
</el-table-column>
<el-table-column
prop="conveyer"
label="交付人"
width="60">
</el-table-column>
<el-table-column
prop="Material_inventory"
label="物料库存"
width="80">
</el-table-column>
<el-table-column
prop="plan_state"
label="生产状态"
width="80"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="plan_finished_date"
label="承诺完成"
width="80">
</el-table-column>
<el-table-column
prop="plan_actual_finished_date"
label="实际完成"
width="80">
</el-table-column>
<el-table-column
prop="overdue"
label="超期"
width="40">
</el-table-column>
<el-table-column
prop="welltime"
label="日志"
width="50">
<template slot-scope="scope">
<el-button @click="showUpdatehistory(scope.row)" type="text" size="medium">详情</el-button>
</template>
</el-table-column>
<el-table-column
label="注"
width="30">
<template slot-scope="scope">
<div >
<el-tooltip placement="left-start" popper-class="packageDownLoad-tooltip">
<div v-if='scope.row.notes==""' slot="content"></div>
<div v-if='scope.row.notes!=""' slot="content">{{scope.row.notes}}</div>
<el-button :style="check_note_color_x(scope.row)" type="text" size="medium" ></el-button>
</el-tooltip>
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
width="80">
<template slot-scope="scope">
<el-button v-show="scope.row.if_show_update" @click="show_update_dialog(scope.row)" type="text" size="medium" >修改</el-button>
<el-button v-show="scope.row.if_show_del" @click="delKpi(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-drawer
title="质检详情"
:visible.sync="delivery_detaile_show"
direction="rtl"
:before-close="handleClose">
<el-table
:data="deliveryTableData"
style="font-size:14px;margin-left: 20px;width: 90%;"
:cell-style="{background:'#fff'}"
border
>
<el-table-column
prop="delivery_user"
label="检验员"
width="100">
</el-table-column>
<el-table-column
prop="num_ok"
label="合格数量"
width="100">
</el-table-column>
</el-table>
</el-drawer>
<el-dialog
title="质检"
:visible.sync="add_deliveryVisible_2"
:lock-scroll ="false"
width="30%">
<el-form ref="authform" :model="delivery_form" :rules="rules" label-width="80px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="检验员" prop="delivery_user">
<el-input v-model="delivery_form.delivery_user"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合格数量" prop="num_ok">
<el-input v-model="delivery_form.num_ok" ></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="add_deliveryVisible_2 = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="add_deliveryplan_2();add_deliveryVisible_2 = false"> </el-button>
</span>
</el-dialog>
<el-dialog
title="生产计划"
:visible.sync="updatedialogVisible_2"
:lock-scroll ="false"
width="50%">
<el-form ref="authform" :model="form" :rules="rules" label-width="80px" :inline="false" class="demo-form-inline" size="medium">
<el-row>
<el-col :span="8">
<el-form-item label="计划状态">
<el-select filterable allow-create v-model="form.plan_state" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="核对物料" value="核对物料"></el-option>
<el-option label="待分解" value="待分解"></el-option>
<el-option label="待派产" value="待派产"></el-option>
<el-option label="生产中" value="生产中"></el-option>
<el-option label="外协" value="需外协"></el-option>
<el-option label="交检" value="交检"></el-option>
<el-option label="做账" value="做账"></el-option>
<el-option label="入库" value="入库"></el-option>
<el-option label="物料不足" value="物料不足"></el-option>
<el-option label="物料未到" value="物料未到"></el-option>
<el-option label="物料超期" value="物料超期"></el-option>
<el-option label="文件错误" value="文件错误"></el-option>
<el-option label="设计文件错误" value="设计文件错误"></el-option>
<el-option label="工艺文件错误" value="工艺文件错误"></el-option>
<el-option label="未导入" value="未导入"></el-option>
<el-option label="检验不合格" value="检验不合格"></el-option>
<el-option label="未满足分解条件" value="未满足分解条件"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注">
<el-input v-model="form.notes"></el-input>
</el-form-item>
</el-col>
</el-row>
<div style="margin-top: 20px;">
<el-button id ="bt_add" plain type="primary" icon="el-icon-circle-plus-outline" @click="showAdd_deliveryplan_2()">新增检验</el-button>
<el-table
:data="deliveryTableData"
style="font-size:14px;margin-top: 10px;width: 100%;"
:row-class-name="tableRowClassName"
stripe border>
<el-table-column
prop="delivery_user"
label="检验员"
width="100">
</el-table-column>
<el-table-column
prop="num_ok"
label="合格数量"
width="100">
</el-table-column>
<el-table-column
label="操作"
width="80">
<template slot-scope="scope">
<el-button @click="show_updatedeliveryplan_dialog(scope.row)" type="text" size="medium" >修改</el-button>
<el-button @click="del_deliveryplan(scope.row)" type="text" size="medium" >删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="updatedialogVisible_2 = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="updatekpi_2();updatedialogVisible_2 = false"> </el-button>
</span>
</el-dialog>
<el-drawer
title="派产详情"
:visible.sync="dis_detaile_show"
direction="rtl"
:before-close="handleClose"
size="50%"
>
<el-tag type="success" style="font-size:14px;margin-left: 20px;margin-bottom: 10px;">
计划部门{{plan_page_data.department}}
&nbsp;&nbsp;
计划/项目号{{plan_page_data.task_id}}
&nbsp;&nbsp;
日期{{plan_page_data.task_date}}
&nbsp;&nbsp;
时间{{plan_page_data.task_time}}
</el-tag>
<el-table
:data="planTableData"
style="font-size:14px;margin-left: 20px;"
:cell-style="{background:'#fff'}"
border
>
<el-table-column
prop="produce_plan"
label="工序"
width="60">
</el-table-column>
<el-table-column
prop="produce_plan_use_t"
label="工时"
width="60">
</el-table-column>
<el-table-column
prop="pre_time"
label="准备时间"
width="70">
</el-table-column>
<el-table-column
prop="code_time"
label="编程时间"
width="70">
</el-table-column>
<el-table-column
prop="produce_user"
label="生产人员"
width="70">
</el-table-column>
<el-table-column
prop="dispath_num"
label="派产数量"
width="70">
</el-table-column>
<el-table-column
prop="plan_dispath_date"
label="计划派产"
width="80">
</el-table-column>
<el-table-column
prop="p_plan_finished_t"
label="计划完成"
width="80">
</el-table-column>
<el-table-column
prop="p_actual_finished_t"
label="实际完成"
width="80">
</el-table-column>
<el-table-column
prop="p_finished_overdue_day"
label="超期天数"
width="80">
</el-table-column>
</el-table>
</el-drawer>
<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="12">
<el-form-item label="生产工序" >
<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="生产工时" >
<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="准备时间" >
<el-checkbox v-model="planform.pre_time_checked" @change="pre_time_checked_change"></el-checkbox>
<el-input-number v-model="planform.pre_time" :min="0.5" :max="9999" :step="0.5" style="width: 150px;"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="编程时间" >
<el-checkbox v-model="planform.code_time_checked" @change="code_time_checked_change"></el-checkbox>
<el-input-number v-model="planform.code_time" :min="0.5" :max="9999" :step="0.5" style="width: 150px;"></el-input-number>
</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 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="派工数量" >
<el-input-number v-model="planform.dispath_num" :min="0.5" :max="9999" :step="0.5" style="width: 190px;"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="计划派产" prop="plan_dispath_date">
<el-date-picker
v-model="planform.plan_dispath_date"
type="date"
placeholder="计划派产"
style="width: 190px;"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划完成" prop="p_plan_finished_t">
<el-date-picker
v-model="planform.p_plan_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="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-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="update_notes_visible_1"
:lock-scroll ="false"
width="56%">
<el-form ref="authform_1" :model="form" :rules="rules" label-width="80px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="24">
<el-form-item label="内容">
<el-input v-model="form.notes"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="update_notes_visible_1 = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="update_notes_1();"> </el-button>
</span>
</el-dialog>
<el-dialog
v-dialogDrag
title="生产计划"
:visible.sync="updatedialogVisible_1"
:lock-scroll ="false"
width="56%">
<el-form ref="authform_1" :model="form" :rules="rules" label-width="80px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="生产班组" prop="group_name">
<el-select v-model="form.group_name" placeholder="请选择分组">
<el-option-group
key="1"
label="">
<el-option label="生产组" value="生产组"></el-option>
<el-option label="电装组" value="电装组"></el-option>
<el-option label="保障组" value="保障组"></el-option>
<el-option label="保温瓶组" value="保温瓶组"></el-option>
<el-option label="质检组" value="质检组"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="生产状态" prop="plan_state">
<el-select filterable allow-create v-model="form.plan_state" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="核对物料" value="核对物料"></el-option>
<el-option label="待分解" value="待分解"></el-option>
<el-option label="待派产" value="待派产"></el-option>
<el-option label="生产中" value="生产中"></el-option>
<el-option label="外协" value="需外协"></el-option>
<el-option label="交检" value="交检"></el-option>
<el-option label="做账" value="做账"></el-option>
<el-option label="入库" value="入库"></el-option>
<el-option label="物料不足" value="物料不足"></el-option>
<el-option label="物料未到" value="物料未到"></el-option>
<el-option label="物料超期" value="物料超期"></el-option>
<el-option label="文件错误" value="文件错误"></el-option>
<el-option label="设计文件错误" value="设计文件错误"></el-option>
<el-option label="工艺文件错误" value="工艺文件错误"></el-option>
<el-option label="未导入" value="未导入"></el-option>
<el-option label="检验不合格" value="检验不合格"></el-option>
<el-option label="未满足分解条件" value="未满足分解条件"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="派产数量" prop="dispath_num">
<el-input-number v-model="form.dispath_num" :min="1" :max="9999" style="width: 150px;"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="飞书链接" prop="feishu_link">
<el-input v-model="form.feishu_link"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="编程状态" prop="code_state">
<el-select filterable allow-create v-model="form.code_state" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="需要" value="需要"></el-option>
<el-option label="已有" value="已有"></el-option>
<el-option label="无需" value="无需"></el-option>
<el-option label="完成" value="完成"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="24">
<el-form-item label="注">
<el-input v-model="form.notes"></el-input>
</el-form-item>
</el-col>
</el-row>
<div style="margin-top: 20px;">
<el-button id ="bt_add" plain type="primary" icon="el-icon-circle-plus-outline" @click="showAddkpiplan_1()">新增工序</el-button>
<el-table
:data="planTableData"
style="font-size:14px;margin-top: 10px;width: 100%;"
:row-class-name="tableRowClassName"
stripe border>
<el-table-column
prop="produce_plan"
label="工序"
width="60">
</el-table-column>
<el-table-column
prop="produce_plan_use_t"
label="工时"
width="60">
</el-table-column>
<el-table-column
prop="pre_time"
label="准备时间"
width="70">
</el-table-column>
<el-table-column
prop="code_time"
label="编程时间"
width="70">
</el-table-column>
<el-table-column
prop="produce_user"
label="生产人员"
width="70">
</el-table-column>
<el-table-column
prop="dispath_num"
label="派工数量"
width="70">
</el-table-column>
<el-table-column
prop="plan_dispath_date"
label="计划派产"
width="80">
</el-table-column>
<el-table-column
prop="p_plan_finished_t"
label="计划完成"
width="80">
</el-table-column>
<el-table-column
prop="p_actual_finished_t"
label="实际完成"
width="80">
</el-table-column>
<el-table-column
prop="p_finished_overdue_day"
label="超期天数"
width="80">
</el-table-column>
<el-table-column
label="操作"
width="80">
<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>
</template>
</el-table-column>
</el-table>
</div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="updatedialogVisible_1 = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="updatekpi_1();"> </el-button>
</span>
</el-dialog>
<el-dialog
v-dialogDrag
title="生产计划"
:visible.sync="updatedialogVisible_1_ex"
:lock-scroll ="false"
width="56%">
<el-form ref="authform_1_ex" :model="form" :rules="rules" label-width="100px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="计划/项目号" prop="task_id">
<el-input v-model="form.task_id" style="width: 150px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="产品编号" prop="product_id">
<el-select style="width: 150px;" v-model="form.product_id" filterable placeholder="请选择" remote :remote-method="remoteMethod" :loading="loading">
<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="8" >
<el-form-item label="数量" prop="total_num">
<el-input-number v-model="form.total_num" :min="1" :max="9999" style="width: 150px;"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="需求日期" prop="demand_date">
<el-date-picker
style="width: 150px;"
v-model="form.demand_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="RDM任务号" >
<el-input style="width: 150px;" v-model="form.rdm_id" maxlength="7" onkeyup="value=value.replace(/[^0-9]/g,'');" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="交付人">
<el-input style="width: 150px;" v-model="form.conveyer" onkeyup="this.value=this.value.replace(/[^\u4e00-\u9fa5]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="生产班组" prop="group_name">
<el-select style="width: 150px;" v-model="form.group_name" placeholder="请选择分组">
<el-option-group
key="1"
label="">
<el-option label="生产组" value="生产组"></el-option>
<el-option label="电装组" value="电装组"></el-option>
<el-option label="保障组" value="保障组"></el-option>
<el-option label="保温瓶组" value="保温瓶组"></el-option>
<el-option label="质检组" value="质检组"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="生产状态" prop="plan_state">
<el-select style="width: 150px;" filterable allow-create v-model="form.plan_state" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="核对物料" value="核对物料"></el-option>
<el-option label="待分解" value="待分解"></el-option>
<el-option label="待派产" value="待派产"></el-option>
<el-option label="生产中" value="生产中"></el-option>
<el-option label="外协" value="需外协"></el-option>
<el-option label="交检" value="交检"></el-option>
<el-option label="做账" value="做账"></el-option>
<el-option label="入库" value="入库"></el-option>
<el-option label="物料不足" value="物料不足"></el-option>
<el-option label="物料未到" value="物料未到"></el-option>
<el-option label="物料超期" value="物料超期"></el-option>
<el-option label="文件错误" value="文件错误"></el-option>
<el-option label="设计文件错误" value="设计文件错误"></el-option>
<el-option label="工艺文件错误" value="工艺文件错误"></el-option>
<el-option label="未导入" value="未导入"></el-option>
<el-option label="检验不合格" value="检验不合格"></el-option>
<el-option label="未满足分解条件" value="未满足分解条件"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="派产数量" prop="dispath_num">
<el-input-number v-model="form.dispath_num" :min="1" :max="9999" style="width: 150px;"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="飞书链接" prop="feishu_link">
<el-input style="width: 150px;" v-model="form.feishu_link"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="编程状态" prop="code_state">
<el-select style="width: 150px;" filterable allow-create v-model="form.code_state" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="需要" value="需要"></el-option>
<el-option label="已有" value="已有"></el-option>
<el-option label="无需" value="无需"></el-option>
<el-option label="完成" value="完成"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="24">
<el-form-item label="注">
<el-input v-model="form.notes"></el-input>
</el-form-item>
</el-col>
</el-row>
<div style="margin-top: 20px;">
<el-button id ="bt_add" plain type="primary" icon="el-icon-circle-plus-outline" @click="showAddkpiplan_1()">新增工序</el-button>
<el-table
:data="planTableData"
style="font-size:14px;margin-top: 10px;width: 100%;"
:row-class-name="tableRowClassName"
stripe border>
<el-table-column
prop="produce_plan"
label="工序"
width="60">
</el-table-column>
<el-table-column
prop="produce_plan_use_t"
label="工时"
width="60">
</el-table-column>
<el-table-column
prop="pre_time"
label="准备时间"
width="70">
</el-table-column>
<el-table-column
prop="code_time"
label="编程时间"
width="70">
</el-table-column>
<el-table-column
prop="produce_user"
label="生产人员"
width="70">
</el-table-column>
<el-table-column
prop="dispath_num"
label="派工数量"
width="70">
</el-table-column>
<el-table-column
prop="plan_dispath_date"
label="计划派产"
width="80">
</el-table-column>
<el-table-column
prop="p_plan_finished_t"
label="计划完成"
width="80">
</el-table-column>
<el-table-column
prop="p_actual_finished_t"
label="实际完成"
width="80">
</el-table-column>
<el-table-column
prop="p_finished_overdue_day"
label="超期天数"
width="80">
</el-table-column>
<el-table-column
label="操作"
width="80">
<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>
</template>
</el-table-column>
</el-table>
</div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="updatedialogVisible_1_ex = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="updatekpi_1_ex();"> </el-button>
</span>
</el-dialog>
<el-dialog
title="生产计划"
:visible.sync="adddialogVisible_5"
:lock-scroll ="false"
width="60%">
<el-form ref="authform_5_add" :model="form" :rules="rules" label-width="100px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="计划/项目号" prop="task_id">
<el-input v-model="form.task_id" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="产品编号" prop="product_id">
<el-select v-model="form.product_id" filterable placeholder="请选择" remote :remote-method="remoteMethod" :loading="loading">
<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="8" >
<el-form-item label="数量" prop="total_num">
<el-input v-model="form.total_num" :disabled="false" maxlength="4" οnkeyup="value=value.replace(/[^\d]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="需求日期" prop="demand_date">
<el-date-picker
style="width: 150px;"
v-model="form.demand_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="RDM任务号" >
<el-input v-model="form.rdm_id" maxlength="7" onkeyup="value=value.replace(/[^0-9]/g,'');"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="交付人" prop="conveyer">
<el-input v-model="form.conveyer" onkeyup="this.value=this.value.replace(/[^\u4e00-\u9fa5]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="adddialogVisible_5 = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="addkpi_5();"> </el-button>
</span>
</el-dialog>
<el-dialog
title="生产计划"
:visible.sync="updatedialogVisible_5"
:lock-scroll ="false"
width="60%">
<el-form ref="authform_5" :model="form" :rules="rules" label-width="100px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="计划/项目号" prop="task_id">
<el-input v-model="form.task_id" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="产品编号" prop="product_id">
<el-select v-model="form.product_id" filterable placeholder="请选择" remote :remote-method="remoteMethod" :loading="loading">
<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="8" >
<el-form-item label="数量" prop="total_num">
<el-input-number v-model="form.total_num" :min="1" :max="9999" style="width: 150px;"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="需求日期" prop="demand_date">
<el-date-picker
style="width: 150px;"
v-model="form.demand_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="RDM任务号" >
<el-input v-model="form.rdm_id" maxlength="7" onkeyup="value=value.replace(/[^0-9]/g,'');"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="交付人" prop="conveyer">
<el-input v-model="form.conveyer" onkeyup="this.value=this.value.replace(/[^\u4e00-\u9fa5]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="updatedialogVisible_5 = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="updatekpi_5();"> </el-button>
</span>
</el-dialog>
<el-dialog
title="生产计划"
:visible.sync="updatedialogVisible_5_ex"
:lock-scroll ="false"
width="60%">
<el-form ref="authform_5_ex" :model="form" :rules="rules" label-width="100px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="计划/项目号" prop="task_id">
<el-input v-model="form.task_id" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="产品编号" prop="product_id">
<el-select v-model="form.product_id" filterable placeholder="请选择" remote :remote-method="remoteMethod" :loading="loading">
<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="8" >
<el-form-item label="数量" prop="total_num">
<el-input v-model="form.total_num" :disabled="false" maxlength="4" οnkeyup="value=value.replace(/[^\d]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="updatedialogVisible_5_ex = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="updatekpi_5_ex();"> </el-button>
</span>
</el-dialog>
<el-dialog
title="生产计划"
:visible.sync="adddialogVisible_3"
:lock-scroll ="false"
width="60%">
<el-form ref="authform_3_add" :model="form" :rules="rules" label-width="100px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="计划/项目号" prop="task_id">
<el-input v-model="form.task_id" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="产品编号" prop="product_id">
<el-select v-model="form.product_id" filterable placeholder="请选择" remote :remote-method="remoteMethod" :loading="loading">
<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="8" >
<el-form-item label="数量" prop="total_num">
<el-input v-model="form.total_num" :disabled="false" maxlength="4" οnkeyup="value=value.replace(/[^\d]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="物料库存" >
<el-select v-model="form.Material_inventory" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="有" value="有"></el-option>
<el-option label="无" value="无"></el-option>
<el-option label="不足" value="不足"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="采购员" >
<el-select v-model="form.buyer" filterable placeholder="请选择">
<el-option
v-for="item in buyer_options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="物料属性" prop="Material_p">
<el-select v-model="form.Material_p" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="半成品" value="半成品"></el-option>
<el-option label="组件" value="组件"></el-option>
<el-option label="成品" value="成品"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="承诺到料">
<el-date-picker
style="width: 150px;"
v-model="form.promise_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="实际到料">
<el-date-picker
style="width: 150px;"
v-model="form.promised_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="需求日期" prop="demand_date">
<el-date-picker
style="width: 150px;"
v-model="form.demand_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8" >
<el-form-item label="RDM任务号" >
<el-input v-model="form.rdm_id" maxlength="7" onkeyup="value=value.replace(/[^0-9]/g,'');"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="交付人" prop="conveyer">
<el-input v-model="form.conveyer" onkeyup="this.value=this.value.replace(/[^\u4e00-\u9fa5]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="adddialogVisible_3 = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="addkpi_3();"> </el-button>
</span>
</el-dialog>
<el-dialog
title="生产计划"
:visible.sync="updatedialogVisible_3_ex"
:lock-scroll ="false"
width="60%">
<el-form ref="authform_3_ex" :model="form" :rules="rules" label-width="100px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="计划/项目号" prop="task_id">
<el-input v-model="form.task_id" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="产品编号" prop="product_id">
<el-select v-model="form.product_id" filterable placeholder="请选择" remote :remote-method="remoteMethod" :loading="loading">
<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="8" >
<el-form-item label="数量" prop="total_num">
<el-input-number v-model="form.total_num" :min="1" :max="9999" style="width: 150px;"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="物料库存" >
<el-select v-model="form.Material_inventory" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="有" value="有"></el-option>
<el-option label="无" value="无"></el-option>
<el-option label="不足" value="不足"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="采购员" >
<el-select v-model="form.buyer" filterable placeholder="请选择">
<el-option
v-for="item in buyer_options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="物料属性" prop="Material_p">
<el-select v-model="form.Material_p" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="半成品" value="半成品"></el-option>
<el-option label="组件" value="组件"></el-option>
<el-option label="成品" value="成品"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="承诺到料">
<el-date-picker
style="width: 150px;"
v-model="form.promise_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="实际到料">
<el-date-picker
style="width: 150px;"
v-model="form.promised_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="需求日期" prop="demand_date">
<el-date-picker
style="width: 150px;"
v-model="form.demand_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8" >
<el-form-item label="RDM任务号" >
<el-input v-model="form.rdm_id" maxlength="7" onkeyup="value=value.replace(/[^0-9]/g,'');"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="交付人" prop="conveyer">
<el-input v-model="form.conveyer" onkeyup="this.value=this.value.replace(/[^\u4e00-\u9fa5]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="updatedialogVisible_3_ex = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="updatekpi_3_ex();"> </el-button>
</span>
</el-dialog>
<el-dialog
title="生产计划"
:visible.sync="updatedialogVisible_3"
:lock-scroll ="false"
width="60%">
<el-form ref="authform_3" :model="form" :rules="rules" label-width="80px" :inline="false" class="demo-form-inline" size="medium">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="物料库存" >
<el-select v-model="form.Material_inventory" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="有" value="有"></el-option>
<el-option label="无" value="无"></el-option>
<el-option label="不足" value="不足"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="承诺到料">
<el-date-picker
style="width: 150px;"
v-model="form.promise_date"
type="date"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="实际到料">
<el-date-picker
style="width: 150px;"
v-model="form.promised_date"
type="date"
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="8">
<el-form-item label="采购员" >
<el-select v-model="form.buyer" filterable placeholder="请选择">
<el-option
v-for="item in buyer_options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="物料属性" prop="Material_p">
<el-select v-model="form.Material_p" placeholder="请选择">
<el-option-group
key="1"
label="">
<el-option label="半成品" value="半成品"></el-option>
<el-option label="组件" value="组件"></el-option>
<el-option label="成品" value="成品"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="updatedialogVisible_3 = false"> </el-button>
<el-button id ="bt_ok" plain type="primary" @click="updatekpi_3()"> </el-button>
</span>
</el-dialog>
<el-drawer
title="日志"
:visible.sync="drawer"
:direction="direction"
:before-close="handleClose"
size="40%"
>
<el-tag type="success" style="font-size:14px;margin-left: 20px;margin-bottom: 10px;">
计划当前处理部门{{cur_did_name}}
</el-tag>
<el-table
:data="tableData1"
style="font-size:14px;margin-left: 20px;width: 90%;"
:height="tHeight*0.5"
:cell-style="{background:'#fff'}"
border
>
<el-table-column
prop="op_time"
label="操作时间"
width="150">
</el-table-column>
<el-table-column
prop="op_user"
label="操作人"
width="80">
</el-table-column>
<el-table-column
prop="op_context"
label="记录内容"
width="200"
:show-overflow-tooltip="true">
</el-table-column>
</el-table>
<el-table
:data="usetime_t_data"
style="font-size:14px;margin-left: 20px;width: 90%;"
:height="tHeight*0.5"
:cell-style="{background:'#fff'}"
border
>
<el-table-column
prop="department_name"
label="部门"
width="100">
</el-table-column>
<el-table-column
prop="usetime_h"
label="处理时间(h)"
width="100">
</el-table-column>
<el-table-column
prop="task_in_time"
label="转入时间"
width="150">
</el-table-column>
<el-table-column
prop="task_out_time"
label="转出时间"
width="150">
</el-table-column>
</el-table>
</el-drawer>
<el-dialog
title="生产计划导入"
:visible.sync="importdialogVisible"
:lock-scroll ="false"
:before-close="importDialog_close"
width="50%">
<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="task_id"
label="计划/项目号"
width="150"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="product_id"
label="产品编号"
width="120"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="total_num"
label="数量"
width="60">
</el-table-column>
<el-table-column
prop="demand_date"
label="需求日期"
width="80">
</el-table-column>
<el-table-column
prop="rdm_id"
label="RDM任务号"
width="80">
</el-table-column>
<el-table-column
prop="conveyer"
label="交付人"
width="60">
</el-table-column>
<el-table-column
prop="plan_state"
label="生产状态"
width="80">
</el-table-column>
</el-table>
</el-dialog>
<el-dialog
title="任务转出"
:visible.sync="transdialogVisible"
:lock-scroll ="false"
width="30%">
<div style="display: flex;">
<el-select v-model="transform.department_name" placeholder="请选择转出部门">
<el-option
v-for="item in units_options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="transdialogVisible = false"> </el-button>
<el-button id ="bt_ok_transfer" plain type="primary" @click="task_transfer();transdialogVisible = false"> </el-button>
</span>
</el-dialog>
</div>
`,
data(){
// 获取当前屏幕的分辨率
let screenW = window.screen.width;
let screenH = window.innerHeight;
console.log("screen width:",screenW);
console.log("screen height:",screenH);
return {
tHeight:screenH-240,
tableData: Array(0),
tableData1: Array(0),
currentPage: 1,
pagesize:50,
pagecnt:1,
recordTotal:0,
drawer:false,
direction: 'rtl',
checked:false,
value1:'',
value2:'',
id_v:'',
sapid_v:'',
pid_v:'',
pname_v:'',
puser_v:'',
group_name_v:'',
plan_state_v:'',
conveyer_v:'',
rdm_v:'',
product_user_v:'',
adddialogVisible_5:false,
updatedialogVisible_5:false,
updatedialogVisible_5_ex:false,
adddialogVisible_3:false,
updatedialogVisible_3:false,
updatedialogVisible_3_ex:false,
updatedialogVisible_1:false,
updatedialogVisible_1_ex:false,
updatedialogVisible_2:false,
oper_type:0,
form: {
id:0,
change:false,
priority:'',
department_name:'',
task_id:'',
product_id:'',
product_name:'',
total_num:1,
demand_date:'',
rdm_id:'',
conveyer:'',
Material_p:'',
Material_inventory:'',
promise_date:'',
promised_date:'',
buyer:'',
plan_state:'',
group_name:'',
dispath_num:1,
notes:'',
feishu_link:'',
code_state:'',
},
rules: {
task_id: [
{ required: true, message: '计划/项目号不可为空', trigger: 'blur' }
],
product_id: [
{ required: true, message: '产品编号不可为空', trigger: 'blur' }
],
product_name: [
{ required: true, message: '产品名称不可为空', trigger: 'blur' }
],
total_num: [
{ required: true, message: '数量不可为空', trigger: 'blur' }
],
Material_inventory: [
{ required: true, message: '库存不可为空', trigger: 'blur' }
],
buyer: [
{ required: true, message: '采购者不可为空', trigger: 'blur' }
],
group_name: [
{ required: true, message: '生产组不可为空', trigger: 'blur' }
],
plan_state: [
{ required: true, message: '生产状态不可为空', trigger: 'blur' }
],
dispath_num: [
{ required: true, message: '派发数量不可为空', trigger: 'blur' }
],
demand_date:[
{ required: true, message: '需求日期不可为空', trigger: 'blur' }
],
rdm_id:[
{ required: true, message: 'RDM任务号不可为空', trigger: 'blur' }
],
conveyer:[
{ required: true, message: '交付人不可为空', trigger: 'blur' }
],
produce_plan:[
{ required: true, message: '工序不可为空', trigger: 'blur' }
],
produce_plan_use_t:[
{ required: true, message: '工时不可为空', trigger: 'blur' }
],
produce_user:[
{ required: true, message: '生产人员不可为空', trigger: 'blur' }
],
code_state:[
{ required: true, message: '编程状态不可为空', trigger: 'blur' }
],
},
options: [],
importdialogVisible:false,
fileTemp: null,
fileListUpload: [],
importTableData: [],
transdialogVisible:false,
multipleSelection: [],
transform: {
department_name:'',
},
addplanVisible_1:false,
planTableData:[],
plan_op_type:0,
plan_page_data:{
department:'',
task_id:'',
task_date:'',
task_time:'',
},
maxid:-1,
planform: {
id:0,
produce_plan:'',
produce_plan_use_t:'',
produce_user:'',
dispath_num:1,
plan_dispath_date:'',
p_plan_finished_t:'',
p_actual_finished_t:'',
p_finished_overdue_day:'',
pre_time:'',
code_time:'',
pre_time_checked:false,
code_time_checked:false,
},
dis_detaile_show:false,
add_deliveryVisible_2:false,
delivery_form:{
id:0,
delivery_user:'',
num_ok:0,
},
deliveryTableData:[],
delivery_op_type:0,
delivery_maxid:-1,
delivery_detaile_show:false,
if_show_task_finished:false,
if_show_processed:true,
if_show_task_add:true,
if_show_export:false,
if_show_d1:false,
if_show_d3:false,
if_show_d5:false,
usetime_t_data:[],
buyer_options:[],
b_color:'',
if_del_show:false,
if_del:false,
p_id_options:[],
p_process_options:[],
cur_p_process:'',
loading: false,
trans_disabled:false,
units_options:[],
percent_len:0,
if_show_process:false,
interval:'',
cur_did_name:'',
search_promise_date:'',
if_show_process1:false,
percent_len1:0,
interval1:'',
fileListUpload1:[],
more_query_v:'',
product_users:[],
update_notes_visible_1:false,
role_id:0,
}
},
mounted() {
var _this = this;
var op_user = localStorage.getItem("online_user");
var level = localStorage.getItem("level")
this.$data.role_id = level;
var did = localStorage.getItem("did");
if (level==1 ){
this.$data.if_del_show =true;
}
if(did==1){
this.$data.if_show_d1=true;
this.$data.if_show_export=true;
this.$data.if_show_task_finished=true;
} else if (did==3){
this.$data.if_show_d3=true;
} else if(did>=4){
this.$data.if_show_d5=true;
}
axios.post('/pkpi/getbUsers',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
buser: '',
index: 1,
count: 1000,
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i].busername,
label:objs[i].busername
}
_this.$data.buyer_options.push(obj);
}
})
.catch(function (error) {
console.log(error);
});
this.get_product_user();
var objs;
axios.post('/pkpi/getkpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: this.$data.currentPage,
count: this.$data.pagesize
})
.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);
});
},
filters: {
show_upload_file(file){
console.log("file:",file);
if(file.f_name==""){
return "无";
}else{
return file.f_name+" "+file.filing_t;
}
},
},
methods: {
check_his_color(row){
console.log("flag1:",row.flag1);
if(row.flag1){
return "color: #FFA500;"
}else{
return "color: #409EFF;"
}
},
check_note_color_x(row){
if (typeof(row.notes)=="null" || row.notes==""){
return "color: #C0C4CC;"
}else{
return "color: #409EFF;"
}
},
update_notes_1(){
var _this = this;
axios.post('/pkpi/update_notes_1', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:_this.$data.form.id,
notes:_this.$data.form.notes,
})
.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
});
//更新页面
if(r==0){
_this.getkpi(_this.$data.currentPage);
_this.$data.update_notes_visible_1 = false;
}
})
.catch(function (error) {
console.log(error);
});
},
show_update_notes(row){
this.$data.form.id = row.id;
this.$data.form.notes = row.notes;
this.$data.update_notes_visible_1=true;
},
get_product_user(){
var _this=this;
axios.post('/pkpi/getpUsers',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
puser: '',
group_name_v:'',
index: 1,
count: 1000,
})
.then(function (response) {
_this.$data.product_users=[];
console.log(response.data);
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i].pusername,
label:objs[i].pusername,
}
_this.$data.product_users.push(obj);
}
})
.catch(function (error) {
console.log(error);
});
},
more_query_select(value){
console.log(value);
console.log(this.$data.more_query_v);
if(value=="时间段"){
this.$data.sapid_v='';
this.$data.search_promise_date='';
this.$data.group_name_v='';
this.$data.conveyer_v='';
this.$data.rdm_v='';
this.$data.product_user_v='';
} else if (value=="计划号"){
this.$data.value1='';
this.$data.search_promise_date='';
this.$data.group_name_v='';
this.$data.conveyer_v='';
this.$data.rdm_v='';
this.$data.product_user_v='';
} else if (value=="承诺到料"){
this.$data.value1='';
this.$data.sapid_v='';
this.$data.group_name_v='';
this.$data.conveyer_v='';
this.$data.rdm_v='';
this.$data.product_user_v='';
} else if(value=="生产分组"){
this.$data.value1='';
this.$data.sapid_v='';
this.$data.search_promise_date='';
this.$data.conveyer_v='';
this.$data.rdm_v='';
this.$data.product_user_v='';
} else if(value=="交付人"){
this.$data.value1='';
this.$data.sapid_v='';
this.$data.search_promise_date='';
this.$data.group_name_v='';
this.$data.rdm_v='';
this.$data.product_user_v='';
} else if(value=="RDM"){
this.$data.value1='';
this.$data.sapid_v='';
this.$data.search_promise_date='';
this.$data.group_name_v='';
this.$data.conveyer_v='';
this.$data.product_user_v='';
} else if(value=="生产人员"){
this.$data.value1='';
this.$data.sapid_v='';
this.$data.search_promise_date='';
this.$data.group_name_v='';
this.$data.conveyer_v='';
this.$data.rdm_v='';
} else{
this.$data.value1='';
this.$data.sapid_v='';
this.$data.search_promise_date='';
this.$data.group_name_v='';
this.$data.conveyer_v='';
this.$data.rdm_v='';
this.$data.product_user_v='';
this.getkpi();
}
},
tip_show(files){
console.log("files:",files);
if(files==null ||files.length==0){
return true;
}else{
return false;
}
},
down_files(files){
if(files.length==0){
this.$message({message: '无文件可下载', type:'warning'}) //加提示
return;
}
let _this = this;
for(let i=0;i<files.length;i++){
downloadUrl(files[i].f_name,"/upload/"+files[i].f_name);
/*const iframe = document.createElement("iframe");
iframe.style.display = "none"; // 防止影响页面
iframe.style.height = 0; // 防止影响页面
iframe.src = "/upload/"+files[i].f_name;
document.body.appendChild(iframe); // 这一行必须iframe挂在到dom树上才会发请求
iframe.onload = function () {
document.body.removeAttribute(iframe) // 之后删除iframe
}*/
}
},
check_file_color_c(row){
console.log("row.f_c",row.id,row.f_c);
console.log("row.f_x",row.id,row.f_x);
if(row.f_c==null && row.f_x==null){
//return "color: #c04851;"
return "color:#ed5a65"
}
if(row.f_c.length==0 && row.f_x==null){
//return "color: #c04851;"
return "color:#ed5a65"
}
if(row.f_c==null && row.f_x.length==0){
//return "color: #c04851;"
return "color:#ed5a65"
}
if(row.f_c.length==0 && row.f_x.length==0){
//return "color: #c04851;"
return "color:#ed5a65"
}
if(row.f_c ==null || row.f_c.length==0){
return "color: #C0C4CC;"
}else{
return "color: #409EFF;"
}
},
check_file_color_x(row){
if(row.f_c==null && row.f_x==null){
//return "color: #c04851;"
return "color:#ed5a65"
}
if(row.f_c.length==0 && row.f_x==null){
//return "color: #c04851;"
return "color:#ed5a65"
}
if(row.f_c==null && row.f_x.length==0){
//return "color: #c04851;"
return "color:#ed5a65"
}
if(row.f_c.length==0 && row.f_x.length==0){
//return "color: #c04851;"
return "color:#ed5a65"
}
if(row.f_x==null || row.f_x.length==0){
return "color: #C0C4CC;"
}else{
return "color: #409EFF;"
}
},
check_code_state(row){
if(row.code_state=="无需" || row.code_state==""){
return false;
}else{
return true;
}
},
celldblclick_1(row, column, cell, event){
if( event.type === "dblclick"){
console.log("列",column.id);
console.log(event.target.innerText);
if(column.id=="el-table_1_column_2" || column.id=="el-table_1_column_5" || column.id=="el-table_1_column_6"){
var save = function (e){
      e.clipboardData.setData('text/plain',row.id+" "+row.task_id+" "+row.product_id);
      e.preventDefault();//阻止默认行为
    }
    document.addEventListener('copy',save);
    document.execCommand("copy");
    document.removeEventListener('copy',save);
this.$message({message: '复制成功', type:'success'}) //加提示
}
}
},
setValueNull(val) {
this.$data.planform.produce_plan_use_t='';
},
mul_update_kpi_1(file, fileList) {
this.$data.fileListUpload1=[];
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 objs = []
//遍历csv文件中的数据存放到data中 方法不唯一,可自己更改
for (let i = 0; i < results.data.length; ++i) {
if(i==0){
continue;
}
let obj = {}
obj.produce_plan_data=[];
obj.id =parseInt(results.data[i][0]);
obj.group_name = results.data[i][12];
obj.plan_state =results.data[i][18];
obj.dispath_num= results.data[i][13];
obj.feishu_link=results.data[i][19];
obj.code_state=results.data[i][20];
var t_obj ={
produce_plan:results.data[i][21],
produce_plan_use_t:results.data[i][22],
produce_user:results.data[i][25],
dispath_num:results.data[i][26],
plan_dispath_date:results.data[i][27],
p_plan_finished_t:results.data[i][28],
p_actual_finished_t:results.data[i][29],
pre_time:results.data[i][23],
code_time:results.data[i][24],
}
obj.produce_plan_data.push(t_obj);
if(obj.id==""|| obj.id==undefined||isNaN(obj.id)){
continue;
}
console.log("id",obj.id);
objs.push(obj);
}
console.log('data', objs)
_this.$data.percent_len1=0;
_this.$data.if_show_process1=true;
_this.$data.interval1= setInterval(()=>{
if(_this.$data.percent_len>=99){
clearInterval(_this.$data.interval1);
return;
}
if (_this.$data.percent_len1<98){
_this.$data.percent_len1+=2
}
},20)
//send to server
axios.post('/pkpi/mul_update_kpi_1', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:objs,
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
let len = objs.length;
errType = "success"
s = "导入"+len+"条生产计划成功!";
_this.$data.percent_len1=100;
_this.$data.if_show_process1=false;
} else if(r==1){
errType = "error"
s = "工序派产数量总和不可大于派产总数量!";
clearInterval(_this.$data.interval1);
} else if (r ==3) {
errType = "error"
s = "派产总数量不可大于计划数量!";
clearInterval(_this.$data.interval1);
} else if (r==2){
errType = "error"
s = response.data.err_text;
clearInterval(_this.$data.interval1);
} else {
errType = "error"
s = "导入生产计划失败!";
clearInterval(_this.$data.interval1);
}
_this.$data.if_show_process1=false;
_this.$message({
message: s,
type: errType,
duration: 3000
});
//更新页面
_this.getkpi();
})
.catch(function (error) {
console.log(error);
});
}
})
} else {
this.$data.fileListUpload1=[];
this.$message({
type: 'warning',
message: '附件格式错误,请删除后重新上传!'
})
}
} else {
this.$message({
type: 'warning',
message: '请上传附件!'
})
}
},
code_time_checked_change(val){
if(val){
this.$data.planform.code_time=1;
}
},
pre_time_checked_change(val){
if(val){
this.$data.planform.pre_time=1;
}
},
to_redmine(row){
let id = parseInt(row.rdm_id);
if (id<10000){
return;
}
url = encodeURI("http://123.54.1.214:10010/redmine/issues/"+row.rdm_id);
window.open(url, "");
},
handleCommand(command) {
if (command === 'export_undo_plan') {
this.exportkpi();
} else if (command === 'export_plan_over') {
//document.getElementById("bt_export").blur();
var _this = this;
var objs;
axios.post('/pkpi/exportKpi_ex', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:this.$data.id_v,
task_id:this.$data.sapid_v,
pid:this.$data.pid_v,
pname:this.$data.pname_v,
group_name:this.$data.group_name_v,
month:this.$data.value1,
if_checked:this.$data.checked,
plan_state:this.$data.plan_state_v,
if_del:this.$data.if_del,
plan_finished:true,
})
.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+".csv"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/'+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
} else if (command==='export_transfer_history'){
var _this = this;
var objs;
axios.post('/pkpi/export_transfer_history', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
month:this.$data.value1,
})
.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+".csv"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/'+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
} else if(command == "export_plan_collect"){
var _this = this;
var objs;
axios.post('/pkpi/export_plan_collect', {
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+".csv"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/'+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
} else if(command == "export_plan_inspection_not_completed"){
var _this = this;
var objs;
axios.post('/pkpi/export_not_completed_Kpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:this.$data.id_v,
task_id:this.$data.sapid_v,
pid:this.$data.pid_v,
pname:this.$data.pname_v,
group_name:this.$data.group_name_v,
month:this.$data.value1,
if_checked:this.$data.checked,
plan_state:this.$data.plan_state_v,
if_del:this.$data.if_del,
plan_finished:true,
})
.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+".csv"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/'+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
}else if(command == "export_plan_inspection_completed"){
var _this = this;
var objs;
axios.post('/pkpi/export_completed_Kpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:this.$data.id_v,
task_id:this.$data.sapid_v,
pid:this.$data.pid_v,
pname:this.$data.pname_v,
group_name:this.$data.group_name_v,
month:this.$data.value1,
if_checked:this.$data.checked,
plan_state:this.$data.plan_state_v,
if_del:this.$data.if_del,
plan_finished:true,
})
.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+".csv"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/'+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
}
},
selectChanged(value) {
console.log(value)
this.getkpi();
},
input_change(value) {
console.log(value);
this.getkpi();
},
show_kpi_del_his(row){
var _this =this;
axios.post('/pkpi/get_del_kpi_his', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id: row.id,
})
.then(function (response) {
console.log(response.data);
const h = _this.$createElement;
obj=response.data.data
_this.$notify({
title: '删除详情',
message: h('p', { style: 'color: teal'}, obj)
});
})
.catch(function (error) {
console.log(error);
});
},
copy_link(){
document.getElementById("bt_copy").blur();
var _this = this;
var objs;
axios.post('/pkpi/getkpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: 1,
count: 100000,
id:_this.$data.id_v,
sap_id:_this.$data.sapid_v,
pid:_this.$data.pid_v,
pname:_this.$data.pname_v,
puser:_this.$data.puser_v,
bt:_this.$data.value1,
et:_this.$data.value2,
if_checked:_this.$data.checked,
group_name:_this.$data.group_name_v,
plan_state:_this.$data.plan_state_v,
if_del:_this.$data.if_del,
promise_date:this.$data.search_promise_date,
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
let text='';
let save = function (e){
for(var i=0;i<objs.length;++i){
if (i==0){
text=objs[i].feishu_link.toString();
}else{
text+="\r"+objs[i].feishu_link.toString();
}
}
console.log("feishu_link fin");
e.clipboardData.setData('text/plain',text);
e.preventDefault(); //阻止默认行为
}
document.addEventListener('copy',save);//添加一个copy事件
document.execCommand("copy");//执行copy方法
_this.$message({message: '复制成功', type:'success'})//提示
})
.catch(function (error) {
console.log(error);
});
},
remoteMethod(query) {
if (query !== '') {
this.loading = true;
setTimeout(() => {
var _this=this;
axios.post('/pkpi/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 = [];
}
},
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].plan_process_name == value){
this.$data.planform.produce_plan_use_t = this.$data.cur_p_process.data[i].plan_process_t
console.log("find");
console.log(this.$data.planform.produce_plan_use_t);
break;
}
}
},
if_fin_cahnge(val){
if(val){
this.$data.if_del=false;
this.$data.trans_disabled=true;
}else{
if(this.$data.if_del==false){
this.$data.trans_disabled=false;
}
}
this.getkpi();
},
if_del_cahnge(val){
if(val){
this.$data.checked=false;
this.$data.trans_disabled=true;
}else{
if(this.$data.checked==false){
this.$data.trans_disabled=false;
}
}
this.getkpi();
},
to_feishu(row){
url = encodeURI(row.feishu_link);
window.open(url, "");
},
selectedRowStyle({ row, rowIndex }) {
for(var i=0; i< this.$data.multipleSelection.length;i++){
if(this.$data.multipleSelection[i].id == row.id){
let styleJson ={
"background":"#134857",
"color":"#FFFFFF",
};
return styleJson;
}
}
},
handleMouseEnter(row, column, cell, event){
console.log("enter in")
console.log(row);
row.style="background: #ffffff;";
},
download_template(){
document.getElementById("bt_download").blur();
var _this = this;
var objs;
axios.post('/pkpi/download_template_file', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
})
.then(function (response) {
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/'+fileid;
downloadUrl("生产计划导入文件模板.csv",downUrl);
})
.catch(function (error) {
console.log(error);
});
},
task_finished(){
document.getElementById("bt_task_finished").blur();
if (this.$data.checked){
this.$message({
message: "已处理任务不允许操作",
type: "warning",
duration: 1500
});
return
}
var selectdata = this.multipleSelection;
if(selectdata.length==0){
this.$message({
message: "请选择入库任务",
type: "warning",
duration: 1500
});
return
}
console.log("select cnt:",selectdata.length);
var req = [];
for (var i = 0; i < selectdata.length; i++) {
for(var j=0; j < selectdata[i].produce_plan_data.length;j++){
if(selectdata[i].produce_plan_data[j].p_actual_finished_t ==""){
this.$message({
message: "入库任务实际完成日期不可为空!",
type: "warning",
duration: 2000
});
return
}
}
req.push(selectdata[i].id);
}
var _this = this;
axios.post('/pkpi/task_finished', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:req
})
.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 = response.data.err_text;
} else{
errType = "error"
s = "生产计划入库失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.getkpi();
}).catch(function (error) {
console.log(error);
});
},
show_delivery_detail(row){
this.$data.deliveryTableData = row.DeliveryDetailInfo;
this.$data.delivery_detaile_show = true;
},
add_deliveryplan_2(){
if (this.$data.delivery_op_type==1) {
var obj ={
id:this.$data.delivery_maxid,
delivery_user:this.$data.delivery_form.delivery_user,
num_ok:this.$data.delivery_form.num_ok
}
this.$data.deliveryTableData.push(obj);
this.$data.delivery_maxid+=1;
console.log("id:",this.$data.delivery_maxid);
} else if (this.$data.delivery_op_type==2){
for(var i=0;i<this.$data.deliveryTableData.length;++i){
if(this.$data.deliveryTableData[i].id==this.$data.delivery_form.id){
this.$data.deliveryTableData[i].delivery_user=this.$data.delivery_form.delivery_user;
this.$data.deliveryTableData[i].num_ok=this.$data.delivery_form.num_ok;
break;
}
}
}
},
del_deliveryplan(row){
var index =-1;
for(var i=0;i<this.$data.deliveryTableData.length;++i){
if(this.$data.deliveryTableData[i].id==row.id){
index=i;
break;
}
}
if (index > -1) {
this.$data.deliveryTableData.splice(index, 1);
}
},
show_updatedeliveryplan_dialog(row){
this.$data.delivery_form.id=row.id;
this.$data.delivery_form.delivery_user=row.delivery_user;
this.$data.delivery_form.num_ok=row.num_ok;
this.$data.delivery_op_type=2;
this.$data.add_deliveryVisible_2=true;
},
showAdd_deliveryplan_2(){
this.$data.delivery_form.id=0;
this.$data.delivery_form.delivery_user='';
this.$data.delivery_form.num_ok='';
this.$data.delivery_op_type=1;
for (var i = 0; i < this.$data.deliveryTableData.length; i++) {
if(this.$data.deliveryTableData[i].id >this.$data.delivery_maxid){
this.$data.delivery_maxid = this.$data.deliveryTableData[i].id
}
}
if(this.$data.delivery_maxid !=-1){
this.$data.delivery_maxid+=1;
}else{
this.$data.delivery_maxid = 0;
}
this.$data.add_deliveryVisible_2=true;
},
show_dis_detail(row){
this.$data.planTableData = row.produce_plan_data;
this.$data.plan_page_data.department=row.department_name;
this.$data.plan_page_data.task_id=row.task_id;
this.$data.plan_page_data.task_date = row.CreateTime;
this.$data.plan_page_data.task_time=row.time;
this.$data.dis_detaile_show = true;
},
delKpiplan(row){
var index =-1;
for(var i=0;i<this.$data.planTableData.length;++i){
if(this.$data.planTableData[i].id==row.id){
index=i;
break;
}
}
if (index > -1) {
this.$data.planTableData.splice(index, 1);
}
},
show_updateplan_dialog(row){
var _this=this;
axios.post('/pkpi/getpUsers',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
puser: '',
group_name_v:_this.$data.form.group_name,
index: 1,
count: 1000,
})
.then(function (response) {
_this.$data.options=[];
console.log(response.data);
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i].pusername,
label:objs[i].pusername,
}
_this.$data.options.push(obj);
}
})
.catch(function (error) {
console.log(error);
});
axios.post('/pkpi/get_p_process_options',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
p_id:_this.$data.form.product_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].plan_process_name,
label:objs[i].plan_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.dispath_num=row.dispath_num;
this.$data.planform.id =row.id;
this.$data.planform.plan_dispath_date=row.plan_dispath_date;
this.$data.planform.p_plan_finished_t=row.p_plan_finished_t;
this.$data.planform.p_actual_finished_t=row.p_actual_finished_t;
this.$data.planform.p_finished_overdue_day=row.p_finished_overdue_day;
this.$data.planform.pre_time=row.pre_time;
this.$data.planform.code_time=row.code_time;
this.$data.planform.pre_time_checked=row.pre_time_checked;
this.$data.planform.code_time_checked=row.code_time_checked;
this.$data.plan_op_type=2;
this.$nextTick(() => {
this.$refs['planform_1'].clearValidate()
});
this.$data.addplanVisible_1=true;
},
addkpiplan_1(){
var t_pre_time = '';
var t_code_time = '';
if(this.$data.planform.pre_time_checked){
t_pre_time=this.$data.planform.pre_time;
}
if(this.$data.planform.code_time_checked){
t_code_time=this.$data.planform.code_time;
}
this.$refs['planform_1'].validate((valid) => {
if (valid) {
if (this.$data.plan_op_type==1) {
var obj ={
id:this.$data.maxid,
produce_plan:this.$data.planform.produce_plan,
produce_plan_use_t:this.$data.planform.produce_plan_use_t,
produce_user:this.$data.planform.produce_user,
dispath_num:this.$data.planform.dispath_num,
plan_dispath_date:this.$data.planform.plan_dispath_date,
p_plan_finished_t:this.$data.planform.p_plan_finished_t,
p_actual_finished_t:this.$data.planform.p_actual_finished_t,
p_finished_overdue_day:this.$data.planform.p_finished_overdue_day,
pre_time:t_pre_time,
code_time:t_code_time,
pre_time_checked:this.$data.planform.pre_time_checked,
code_time_checked:this.$data.planform.code_time_checked,
}
this.$data.planTableData.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.planTableData.length;++i){
if(this.$data.planTableData[i].id==this.$data.planform.id){
this.$data.planTableData[i].produce_plan=this.$data.planform.produce_plan;
this.$data.planTableData[i].produce_plan_use_t=this.$data.planform.produce_plan_use_t;
this.$data.planTableData[i].produce_user=this.$data.planform.produce_user;
this.$data.planTableData[i].dispath_num=this.$data.planform.dispath_num;
this.$data.planTableData[i].plan_dispath_date=this.$data.planform.plan_dispath_date;
this.$data.planTableData[i].p_plan_finished_t=this.$data.planform.p_plan_finished_t;
this.$data.planTableData[i].p_actual_finished_t=this.$data.planform.p_actual_finished_t;
this.$data.planTableData[i].p_finished_overdue_day=this.$data.planform.p_finished_overdue_day;
this.$data.planTableData[i].pre_time=t_pre_time;
this.$data.planTableData[i].code_time=t_code_time;
this.$data.planTableData[i].pre_time_checked=this.$data.planform.pre_time_checked;
this.$data.planTableData[i].code_time_checked=this.$data.planform.code_time_checked;
console.log(this.$data.planTableData);
break;
}
}
}
this.$data.addplanVisible_1 = false;
}
});
},
showAddkpiplan_1(){
var op_user = localStorage.getItem("online_user");
var _this=this;
axios.post('/pkpi/getpUsers',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
puser: '',
group_name_v:_this.$data.form.group_name,
index: 1,
count: 1000,
})
.then(function (response) {
_this.$data.options=[];
console.log(response.data);
objs = response.data.data;
for(var i=0;i<objs.length;++i){
var obj ={
value:objs[i].pusername,
label:objs[i].pusername,
}
_this.$data.options.push(obj);
}
})
.catch(function (error) {
console.log(error);
});
axios.post('/pkpi/get_p_process_options',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
p_id:_this.$data.form.product_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].plan_process_name,
label:objs[i].plan_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_use_t='';
this.$data.planform.produce_user='';
if(op_user=="温亚辉" || op_user=="尚永强" || op_user=="刘卫忠"){
this.$data.planform.dispath_num=this.$data.form.dispath_num;
}
//this.$data.planform.dispath_num='';
this.$data.planform.plan_dispath_date='';
this.$data.planform.p_plan_finished_t='';
this.$data.planform.p_actual_finished_t='';
this.$data.planform.p_finished_overdue_day='';
this.$data.planform.pre_time=0.5;
this.$data.planform.code_time=0.5;
this.$data.planform.pre_time_checked=false;
this.$data.planform.code_time_checked=false;
this.$data.plan_op_type=1;
for (var i = 0; i < this.$data.planTableData.length; i++) {
if(this.$data.planTableData[i].id >this.$data.maxid){
this.$data.maxid = this.$data.planTableData[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;
},
handleSelectionChange(val) {
console.log("已选择");
console.log(val);
this.multipleSelection = val;
},
task_transfer(){
document.getElementById("bt_ok_transfer").blur();
var selectdata = this.multipleSelection;
if(selectdata.length==0){
this.$message({
message: "请选择转出任务",
type: "warning",
duration: 1500
});
return
}
console.log("select cnt:",selectdata.length);
var req = [];
for (var i = 0; i < selectdata.length; i++) {
req.push(selectdata[i].id);
}
var _this = this;
axios.post('/pkpi/task_transfer', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:req,
department_name:this.$data.transform.department_name
})
.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.getkpi();
this.$data.form.department_name = '';
this.$data.transdialogVisible = false;
}).catch(function (error) {
console.log(error);
});
},
show_taskTransfer_disalog(){
if (this.$data.checked){
this.$message({
message: "已处理任务不允许操作",
type: "warning",
duration: 1500
});
return
}
document.getElementById("bt_task_transfer").blur();
var selectdata = this.multipleSelection;
if(selectdata.length==0){
this.$message({
message: "请选择转出任务",
type: "warning",
duration: 1500
});
return
}
this.$data.units_options=[];
var obj ={
value:"供应链",
label:"供应链",
}
this.$data.units_options.push(obj);
obj ={
value:"生产",
label:"生产",
}
this.$data.units_options.push(obj);
obj ={
value:"研发",
label:"研发",
}
this.$data.units_options.push(obj);
obj ={
value:"技术",
label:"技术",
}
this.$data.units_options.push(obj);
obj ={
value:"交付",
label:"交付",
}
this.$data.units_options.push(obj);
obj ={
value:"保温瓶",
label:"保温瓶",
}
this.$data.units_options.push(obj);
obj ={
value:"生产订单",
label:"生产订单",
}
this.$data.units_options.push(obj);
this.$data.transdialogVisible=true;
},
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('/pkpi/importKpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:this.$data.importTableData,
})
.then(function (response) {
let r = response.data.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==1){
errType = "error"
s = response.data.err_text;
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.getkpi();
})
.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.task_id = results.data[i][0]
if(obj.task_id==""|| obj.task_id==undefined){
continue;
}
obj.product_id = results.data[i][1]
obj.total_num = results.data[i][2]
obj.demand_date = results.data[i][3]
obj.rdm_id = results.data[i][4]
obj.conveyer = results.data[i][5]
obj.plan_state=results.data[i][6]
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: '请上传附件!'
})
}
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
importCsv(){
this.$data.fileListUpload=[];
this.$data.importTableData=[];
this.$data.importdialogVisible=true;
this.$data.if_show_process=false;
},
exportkpi(){
var _this = this;
var objs;
axios.post('/pkpi/exportKpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:this.$data.id_v,
task_id:this.$data.sapid_v,
pid:this.$data.pid_v,
pname:this.$data.pname_v,
group_name:this.$data.group_name_v,
month:this.$data.value1,
if_checked:this.$data.checked,
plan_state:this.$data.plan_state_v,
if_del:this.$data.if_del,
promise_date:this.$data.search_promise_date,
conveyer:this.$data.conveyer_v,
rdm_id:this.$data.rdm_v,
product_user:this.$data.product_user_v,
})
.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+".csv"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/'+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
},
tableRowClassName({row, rowIndex}) {
var n = rowIndex%2;
if (n == 1) {
return 'success-row';
}
this.$data.b_color="color: #FF0000;"
return '';
},
show_update_dialog(row){
var promise_date;
if(row.promise_date !=undefined &&row.promise_date.length>0){
promise_date="20"+row.promise_date
}else{
promise_date=''
}
var promised_date;
if (row.promised_date !=undefined &&row.promised_date.length>0){
promised_date="20"+row.promised_date;
}else{
promised_date=''
}
var demand_d;
if (row.demand_date != undefined && row.demand_date.length>0){
demand_d="20"+row.demand_date;
}else{
demand_d='';
}
this.$data.form = {
id:row.id,
priority:row.priority,
department_name:row.department_name,
task_id:row.task_id,
product_id:row.product_id,
product_name:row.product_name,
total_num:row.total_num,
demand_date:demand_d,
rdm_id:row.rdm_id,
conveyer:row.conveyer,
Material_p:row.Material_p,
Material_inventory:row.Material_inventory,
promise_date:promise_date,
promised_date:promised_date,
buyer:row.buyer,
group_name:row.group_name,
dispath_num:row.dispath_num,
plan_state:row.plan_state,
notes:row.notes,
feishu_link:row.feishu_link,
code_state:row.code_state,
};
var op_user = localStorage.getItem("online_user");
var level = localStorage.getItem("level");
var did = localStorage.getItem("did");
if(did>=4){
if(row.if_show_del){
this.$nextTick(() => {
this.$refs['authform_5'].clearValidate()
});
this.$data.updatedialogVisible_5 = true;
}else{
this.$nextTick(() => {
this.$refs['authform_5_ex'].clearValidate()
});
this.$data.updatedialogVisible_5_ex = true;
}
}else if(did==3){
if(row.if_show_del){
this.$nextTick(() => {
this.$refs['authform_3_ex'].clearValidate()
});
this.$data.updatedialogVisible_3_ex = true;
}else{
this.$nextTick(() => {
this.$refs['authform_3'].clearValidate()
});
this.$data.updatedialogVisible_3 = true;
}
}else if (did==1){
this.$data.planTableData=[];
if(row.produce_plan_data != null){
for(var i=0;i<row.produce_plan_data.length;++i){
var obj ={
id:row.produce_plan_data[i].id,
produce_plan:row.produce_plan_data[i].produce_plan,
produce_plan_use_t:row.produce_plan_data[i].produce_plan_use_t,
produce_user:row.produce_plan_data[i].produce_user,
dispath_num:row.produce_plan_data[i].dispath_num,
plan_dispath_date:row.produce_plan_data[i].plan_dispath_date,
p_plan_finished_t:row.produce_plan_data[i].p_plan_finished_t,
p_actual_finished_t:row.produce_plan_data[i].p_actual_finished_t,
p_finished_overdue_day:row.produce_plan_data[i].p_finished_overdue_day,
pre_time:row.produce_plan_data[i].pre_time,
code_time:row.produce_plan_data[i].code_time,
pre_time_checked:row.produce_plan_data[i].pre_time_checked,
code_time_checked:row.produce_plan_data[i].code_time_checked
}
this.$data.planTableData.push(obj);
}
}
console.log("planTableData:",row.produce_plan_data);
if(op_user=="温亚辉"){
this.$data.form.group_name="生产组";
} else if(op_user=="尚永强"){
this.$data.form.group_name="电装组";
} else if (op_user=="刘卫忠"){
this.$data.form.group_name="保温瓶组";
}
if(op_user=="温亚辉" || op_user=="尚永强" || op_user=="刘卫忠"){
if(this.$data.form.plan_state=="待分解"){
this.$data.form.plan_state="待派产";
}
this.$data.form.dispath_num=this.$data.form.total_num;
}
if(row.if_show_del){
this.$nextTick(() => {
this.$refs['authform_1_ex'].clearValidate()
});
this.$data.updatedialogVisible_1_ex = true;
}else{
this.$nextTick(() => {
this.$refs['authform_1'].clearValidate()
});
this.$data.updatedialogVisible_1 = true;
}
} else if (did==2){
this.$data.deliveryTableData=[];
if(row.DeliveryDetailInfo != null){
for(var i=0;i<row.DeliveryDetailInfo.length;++i){
var obj ={
id:row.DeliveryDetailInfo[i].id,
delivery_user:row.DeliveryDetailInfo[i].delivery_user,
num_ok:row.DeliveryDetailInfo[i].num_ok
}
this.$data.deliveryTableData.push(obj);
}
}
console.log("planTableData:",row.DeliveryDetailInfo);
this.$data.updatedialogVisible_2 =true;
}
},
updatekpi_2(){
this.$refs['authform'].validate((valid) => {
if (valid) {
var _this = this;
console.log(_this.$data.form);
axios.post('/pkpi/updatekpi_2', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.$data.form.id,
plan_state:_this.$data.form.plan_state,
notes:_this.$data.form.notes,
DeliveryDetailInfo:_this.$data.deliveryTableData,
}
})
.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.getkpi();
})
.catch(function (error) {
console.log(error);
});
}
});
},
updatekpi_1(){
this.$refs['authform_1'].validate((valid) => {
if (valid) {
var _this = this;
let p_data = [];
for(var i=0; i<_this.$data.planTableData.length;++i){
var obj ={
id:_this.$data.planTableData[i].id,
produce_plan:_this.$data.planTableData[i].produce_plan,
produce_plan_use_t:_this.$data.planTableData[i].produce_plan_use_t,
produce_user:_this.$data.planTableData[i].produce_user,
dispath_num:_this.$data.planTableData[i].dispath_num.toString(),
plan_dispath_date:_this.$data.planTableData[i].plan_dispath_date,
p_plan_finished_t:_this.$data.planTableData[i].p_plan_finished_t,
p_actual_finished_t:_this.$data.planTableData[i].p_actual_finished_t,
p_finished_overdue_day:_this.$data.planTableData[i].p_finished_overdue_day,
pre_time:_this.$data.planTableData[i].pre_time.toString(),
code_time:_this.$data.planTableData[i].code_time.toString(),
pre_time_checked:_this.$data.planTableData[i].pre_time_checked,
code_time_checked:_this.$data.planTableData[i].code_time_checked,
}
p_data.push(obj);
}
console.log(_this.$data.form);
axios.post('/pkpi/updatekpi_1', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.$data.form.id,
product_id:_this.$data.form.product_id,
total_num:_this.$data.form.total_num.toString(),
group_name:_this.$data.form.group_name,
plan_state:_this.$data.form.plan_state,
dispath_num:_this.$data.form.dispath_num.toString(),
produce_plan_data:p_data,
feishu_link:_this.$data.form.feishu_link,
code_state:_this.$data.form.code_state,
notes:_this.$data.form.notes,
}
})
.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 if (r ==3) {
errType = "error"
s = "派产总数量不可大于计划数量!";
} else if (r==2){
errType = "error"
s = response.data.err_text;
} else{
errType = "error"
s = "修改生产计划失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
if(r==0){
_this.getkpi(_this.$data.currentPage);
_this.$data.updatedialogVisible_1 = false;
}
})
.catch(function (error) {
console.log(error);
});
}
});
},
updatekpi_1_ex(){
this.$refs['authform_1_ex'].validate((valid) => {
if (valid) {
var _this = this;
let p_data = [];
for(var i=0; i<_this.$data.planTableData.length;++i){
var obj ={
id:_this.$data.planTableData[i].id,
produce_plan:_this.$data.planTableData[i].produce_plan,
produce_plan_use_t:_this.$data.planTableData[i].produce_plan_use_t,
produce_user:_this.$data.planTableData[i].produce_user,
dispath_num:_this.$data.planTableData[i].dispath_num.toString(),
plan_dispath_date:_this.$data.planTableData[i].plan_dispath_date,
p_plan_finished_t:_this.$data.planTableData[i].p_plan_finished_t,
p_actual_finished_t:_this.$data.planTableData[i].p_actual_finished_t,
p_finished_overdue_day:_this.$data.planTableData[i].p_finished_overdue_day,
pre_time:_this.$data.planTableData[i].pre_time.toString(),
code_time:_this.$data.planTableData[i].code_time.toString(),
pre_time_checked:_this.$data.planTableData[i].pre_time_checked,
code_time_checked:_this.$data.planTableData[i].code_time_checked,
}
p_data.push(obj);
}
console.log(_this.$data.form);
axios.post('/pkpi/updatekpi_1_ex', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.$data.form.id,
task_id:_this.$data.form.task_id,
product_id:_this.$data.form.product_id,
total_num:_this.$data.form.total_num.toString(),
demand_date:_this.$data.form.demand_date,
rdm_id:_this.$data.form.rdm_id,
conveyer:_this.$data.form.conveyer,
group_name:_this.$data.form.group_name,
plan_state:_this.$data.form.plan_state,
dispath_num:_this.$data.form.dispath_num.toString(),
feishu_link:_this.$data.form.feishu_link,
code_state:_this.$data.form.code_state,
produce_plan_data:p_data,
notes:_this.$data.form.notes,
}
})
.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 if (r ==3) {
errType = "error"
s = "派产总数量不可大于计划数量!";
} else if(r==2){
errType = "error"
s = response.data.err_text;
} else{
errType = "error"
s = "修改生产计划失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
if(r==0){
_this.getkpi(_this.$data.currentPage);
_this.$data.updatedialogVisible_1_ex = false;
}
})
.catch(function (error) {
console.log(error);
});
}
});
},
updatekpi_5(){
this.$refs['authform_5'].validate((valid) => {
if (valid) {
var _this = this;
console.log(_this.$data.form);
axios.post('/pkpi/updatekpi_5', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.$data.form.id,
priority:_this.$data.form.priority,
department_name:_this.$data.form.department,
task_id:_this.$data.form.task_id,
product_id:_this.$data.form.product_id,
product_name:_this.$data.form.product_name,
total_num:_this.$data.form.total_num.toString(),
plan_state:_this.$data.form.plan_state,
demand_date:_this.$data.form.demand_date,
rdm_id:_this.$data.form.rdm_id,
conveyer:_this.$data.form.conveyer,
}
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
s = "修改生产计划成功!";
} else if (r==2){
errType = "error"
s = response.data.err_text;
} else{
errType = "error"
s = "修改生产计划失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.getkpi(_this.$data.currentPage);
_this.$data.updatedialogVisible_5 = false;
})
.catch(function (error) {
console.log(error);
});
}
});
},
updatekpi_5_ex(){
this.$refs['authform_5_ex'].validate((valid) => {
if (valid) {
var _this = this;
console.log(_this.$data.form);
axios.post('/pkpi/updatekpi_5_ex', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.$data.form.id,
task_id:_this.$data.form.task_id,
product_id:_this.$data.form.product_id,
product_name:_this.$data.form.product_name,
total_num:_this.$data.form.total_num.toString(),
}
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
s = "修改生产计划成功!";
} else if(r==2){
errType = "error"
s = response.data.err_text;
} else{
errType = "error"
s = "修改生产计划失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.getkpi(_this.$data.currentPage);
_this.$data.updatedialogVisible_5_ex = false;
})
.catch(function (error) {
console.log(error);
});
}
});
},
updatekpi_3_ex(){
this.$refs['authform_3_ex'].validate((valid) => {
if (valid) {
if ((this.$data.form.Material_inventory =="不足" || this.$data.form.Material_inventory =="无") && this.$data.form.promise_date==""){
this.$message({
message: "承诺到料日期不可为空!",
type : "warning",
duration: 1500
});
return;
}
var _this = this;
console.log(_this.$data.form);
axios.post('/pkpi/updatekpi_3_ex', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.$data.form.id,
department_name:_this.$data.form.department,
task_id:_this.$data.form.task_id,
product_id:_this.$data.form.product_id,
product_name:_this.$data.form.product_name,
total_num:_this.$data.form.total_num.toString(),
plan_state:_this.$data.form.plan_state,
Material_inventory:_this.$data.form.Material_inventory,
promise_date:_this.$data.form.promise_date,
promised_date:_this.$data.form.promised_date,
buyer:_this.$data.form.buyer,
demand_date:_this.$data.form.demand_date,
rdm_id:_this.$data.form.rdm_id,
conveyer:_this.$data.form.conveyer,
Material_p:_this.$data.form.Material_p,
}
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
s = "修改生产计划成功!";
} else if (r==2){
errType = "error"
s = response.data.err_text;
} else{
errType = "error"
s = "修改生产计划失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.getkpi(_this.$data.currentPage);
_this.$data.updatedialogVisible_3_ex = false;
})
.catch(function (error) {
console.log(error);
});
this.$data.updatedialogVisible_3_ex = false;
}
});
},
updatekpi_3(){
this.$refs['authform_3'].validate((valid) => {
if (valid) {
if ((this.$data.form.Material_inventory =="不足" || this.$data.form.Material_inventory =="无") && this.$data.form.promise_date==""){
this.$message({
message: "承诺到料日期不可为空!",
type : "warning",
duration: 1500
});
return;
}
var _this = this;
console.log(_this.$data.form);
axios.post('/pkpi/updatekpi_3', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.$data.form.id,
product_id:_this.$data.form.product_id,
plan_state:_this.$data.form.plan_state,
Material_inventory:_this.$data.form.Material_inventory,
promise_date:_this.$data.form.promise_date,
promised_date:_this.$data.form.promised_date,
buyer:_this.$data.form.buyer,
Material_p:_this.$data.form.Material_p,
}
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
s = "修改生产计划成功!";
} else if(r==2){
errType = "error"
s = response.data.err_text;
} else{
errType = "error"
s = "修改生产计划失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.getkpi(_this.$data.currentPage);
_this.$data.updatedialogVisible_3 = false;
})
.catch(function (error) {
console.log(error);
});
}
});
},
delKpi(row){
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
var _this = this;
axios.post('/pkpi/delKpi', {
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.getkpi();
})
.catch(function (error) {
console.log(error);
});
}).catch(() => {
});
},
addkpi_5(){
this.$refs['authform_5_add'].validate((valid) => {
if (valid) {
if (this.$data.form.Material_inventory =="不足" && this.$data.form.promise_date==""){
this.$message({
message: "承诺到料日期不可为空!",
type : "warning",
duration: 1500
});
return;
}
var _this = this;
console.log(_this.$data.form);
axios.post('/pkpi/addkpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
oper_type: _this.$data.oper_type,
data:{
priority:_this.$data.form.priority,
department_name:_this.$data.form.department,
task_id:_this.$data.form.task_id,
product_id:_this.$data.form.product_id,
product_name:_this.$data.form.product_name,
total_num:_this.$data.form.total_num,
plan_state:_this.$data.form.plan_state,
Material_inventory:_this.$data.form.Material_inventory,
promise_date:_this.$data.form.promise_date,
promised_date:_this.$data.form.promised_date,
buyer:_this.$data.form.buyer,
demand_date:_this.$data.form.demand_date,
rdm_id:_this.$data.form.rdm_id,
conveyer:_this.$data.form.conveyer,
}
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
s = "新增生产计划成功!";
} else if (r ==2) {
errType = "error"
s = response.data.err_text;
} else {
errType = "error"
s = "新增生产计划失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.getkpi();
_this.$data.adddialogVisible_5 = false;
})
.catch(function (error) {
console.log(error);
});
}
});
},
addkpi_3(){
this.$refs['authform_3_add'].validate((valid) => {
if (valid) {
if (this.$data.form.Material_inventory =="不足" && this.$data.form.promise_date==""){
this.$message({
message: "承诺到料日期不可为空!",
type : "warning",
duration: 1500
});
return;
}
var _this = this;
console.log(_this.$data.form);
axios.post('/pkpi/addkpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
oper_type: _this.$data.oper_type,
data:{
priority:_this.$data.form.priority,
department_name:_this.$data.form.department,
task_id:_this.$data.form.task_id,
product_id:_this.$data.form.product_id,
product_name:_this.$data.form.product_name,
total_num:_this.$data.form.total_num,
plan_state:_this.$data.form.plan_state,
Material_inventory:_this.$data.form.Material_inventory,
promise_date:_this.$data.form.promise_date,
promised_date:_this.$data.form.promised_date,
buyer:_this.$data.form.buyer,
demand_date:_this.$data.form.demand_date,
rdm_id:_this.$data.form.rdm_id,
conveyer:_this.$data.form.conveyer,
Material_p:_this.$data.form.Material_p,
}
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
s = "新增生产计划成功!";
} else if (r ==2) {
errType = "error"
s = response.data.err_text;
} else {
errType = "error"
s = "新增生产计划失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.getkpi();
_this.$data.adddialogVisible_3 = false;
})
.catch(function (error) {
console.log(error);
});
}
});
},
showUpdatehistory(row){
var _this = this;
axios.post('/pkpi/getkpihis', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:row.id,
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
_this.$data.tableData1 = objs;
})
.catch(function (error) {
console.log(error);
});
axios.post('/pkpi/get_cur_did_from_task', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
id:row.id,
})
.then(function (response) {
console.log(response.data);
_this.$data.cur_did_name = response.data.d_name;
_this.$data.drawer = true;
})
.catch(function (error) {
console.log(error);
});
this.$data.usetime_t_data=[];
let obj = {
department_name : "生产部",
usetime_h : row.d1_ut,
task_in_time : row.d1_bt,
task_out_time : row.d1_et,
};
this.$data.usetime_t_data.push(obj);
obj = {
department_name : "供应链",
usetime_h : row.d3_ut,
task_in_time : row.d3_bt,
task_out_time : row.d3_et,
};
this.$data.usetime_t_data.push(obj);
obj = {
department_name : "交付",
usetime_h : row.d4_ut,
task_in_time : row.d4_bt,
task_out_time : row.d4_et,
};
this.$data.usetime_t_data.push(obj);
obj = {
department_name : "研发",
usetime_h : row.d5_ut,
task_in_time : row.d5_bt,
task_out_time : row.d5_et,
};
this.$data.usetime_t_data.push(obj);
obj = {
department_name : "保温瓶",
usetime_h : row.d6_ut,
task_in_time : row.d6_bt,
task_out_time : row.d6_et,
};
this.$data.usetime_t_data.push(obj);
obj = {
department_name : "技术",
usetime_h : row.d7_ut,
task_in_time : row.d7_bt,
task_out_time : row.d7_et,
};
this.$data.usetime_t_data.push(obj);
},
handleClose(done) {
done();
},
getkpi(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('/pkpi/getkpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: this.$data.currentPage,
count: this.$data.pagesize,
id:this.$data.id_v,
sap_id:this.$data.sapid_v,
pid:this.$data.pid_v,
pname:this.$data.pname_v,
bt:this.$data.value1,
et:this.$data.value2,
if_checked:this.$data.checked,
group_name:this.$data.group_name_v,
plan_state:this.$data.plan_state_v,
if_del:this.$data.if_del,
promise_date:this.$data.search_promise_date,
conveyer:this.$data.conveyer_v,
rdm_id:this.$data.rdm_v,
product_user:this.$data.product_user_v,
})
.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('/pkpi/getkpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: this.$data.currentPage,
count: this.$data.pagesize,
id:this.$data.id_v,
sap_id:this.$data.sapid_v,
pid:this.$data.pid_v,
pname:this.$data.pname_v,
puser:this.$data.puser_v,
bt:this.$data.value1,
et:this.$data.value2,
if_checked:this.$data.checked,
group_name:this.$data.group_name_v,
plan_state:this.$data.plan_state_v,
if_del:this.$data.if_del,
promise_date:this.$data.search_promise_date,
conveyer:this.$data.conveyer_v,
rdm_id:this.$data.rdm_v,
})
.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('/pkpi/getkpi', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: this.$data.currentPage,
count: this.$data.pagesize,
id:this.$data.id_v,
sap_id:this.$data.sapid_v,
pid:this.$data.pid_v,
pname:this.$data.pname_v,
puser:this.$data.puser_v,
bt:this.$data.value1,
et:this.$data.value2,
if_checked:this.$data.checked,
group_name:this.$data.group_name_v,
plan_state:this.$data.plan_state_v,
if_del:this.$data.if_del,
promise_date:this.$data.search_promise_date,
conveyer:this.$data.conveyer_v,
rdm_id:this.$data.rdm_v,
})
.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);
});
},
}
}