From a2bce22a3a4df5f4662c373e57c07fa4268aeee1 Mon Sep 17 00:00:00 2001 From: 小小儁爺 <1694218219@qq.com> Date: 星期五, 13 六月 2025 09:02:52 +0800 Subject: [PATCH] 1.修改工单打印模板 --- src/views/materialManager/inventoryList.vue | 3480 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,774 insertions(+), 1,706 deletions(-) diff --git a/src/views/materialManager/inventoryList.vue b/src/views/materialManager/inventoryList.vue index 0762d0a..cd8aba5 100644 --- a/src/views/materialManager/inventoryList.vue +++ b/src/views/materialManager/inventoryList.vue @@ -1,1706 +1,1774 @@ -<template> - <div> - <div class="body" :style="{height:mainHeight+'px'}"> - - <div style="display: flex"> - <div style="width: 300px;margin: 10px 10px 0 0;background:#fff"> - - <div style="margin: 20px 10px 0 10px;display: flex;justify-content: space-between;"> - <div style="display: flex;"> - <div - style="width: 5px;height: 100%;border-radius: 5px;" - :style="{background:$store.state.settings.theme}" - /> - <div style="margin-left: 8px;">瀛樿揣妗f</div> - </div> - - <div style="margin-right:10px"> - <el-tooltip v-del-tab-index class="item" effect="dark" content="鏂板" placement="top"> - <i class="el-icon-plus" style="cursor: pointer;color: #999" @click="treeAddClick('add')" /> - </el-tooltip> - </div> - - </div> - - <el-tree - ref="treeLeftRef" - style="padding: 10px;overflow: auto" - :style="{height:(tableHeight+222)+'px'}" - :data="treeLeft" - node-key="code" - highlight-current - :props="defaultPropsLeft" - :default-expand-all="true" - :expand-on-click-node="false" - @node-click="getTMaterielData" - > - <span slot-scope="{ node, data }" class="custom-tree-node"> - <span v-if="!data.isEdit" class="ellipsis" style="width:150px;">{{ data.name }}</span> - <span v-if="!data.isEdit"> - <el-tooltip v-del-tab-index class="item" effect="dark" content="缂栬緫" placement="top"> - <i - v-if="data.code!=='-1'" - class="el-icon-edit" - style="margin-right:10px;color: #999" - @click.stop="treeEditClick(node,data,'edit')" - /> - </el-tooltip> - <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> - <i - v-if="data.code!=='-1'" - class="el-icon-delete" - style="margin-right: 4px;color: #999" - @click.stop="treeDeleteClick(node,data)" - /> - </el-tooltip> - </span> - </span> - </el-tree> - </div> - - <div - style=" width:calc(100% - 300px);" - > - <div class="bodyTopButtonGroup" style="justify-content: space-between"> - <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button> - <div style="display: flex"> - <el-button - v-waves - type="success" - icon="el-icon-download" - @click="$router.push('./../systemSetting/dataImport?fileCode=8')" - >瀵煎叆 - </el-button> - <el-button v-waves icon="el-icon-refresh-right" @click="syncERP">鍚屾瀛樿揣妗f</el-button> - </div> - </div> - - <div class="bodyTopFormGroup"> - <el-form - ref="form" - :model="form" - label-width="100px" - inline - style="display: flex;" - > - <div class="elForm"> - <el-form-item label="瀛樿揣缂栫爜" style=" display: flex;"> - <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" /> - </el-form-item> - <el-form-item label="瀛樿揣鍚嶇О" style=" display: flex;"> - <el-input v-model="form.partname" placeholder="璇疯緭鍏�" style="width: 200px" /> - </el-form-item> - <el-form-item label="瀛樿揣瑙勬牸" style=" display: flex;"> - <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" /> - </el-form-item> - <!-- <el-form-item label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> - <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> - <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> - <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> - <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> - <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> - <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> - <!-- </el-form-item>--> - </div> - <div - class="bodySearchReset" - :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}" - > - <el-button - v-waves - type="primary" - icon="el-icon-search" - @click="getTMaterielData($refs.treeLeftRef.getCurrentNode())" - >鏌ヨ - </el-button> - <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button> - </div> - </el-form> - <div - class="bodyTopFormExpand" - style="height: 5px;" - > - <!-- <svg-icon--> - <!-- v-show="mouseHoverType==='mouseout'"--> - <!-- style="cursor: pointer"--> - <!-- :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"--> - <!-- @mouseenter="mouseHoverType=$event.type"--> - <!-- />--> - <!-- <svg-icon--> - <!-- v-show="mouseHoverType==='mouseenter'"--> - <!-- style="cursor: pointer"--> - <!-- :icon-class="!isExpandForm?'doubleDown':'doubleUp'"--> - <!-- @click="isExpandForm=!isExpandForm"--> - <!-- @mouseout="mouseHoverType=$event.type"--> - <!-- />--> - </div> - </div> - - <div class="elTableDiv"> - <el-table - ref="tableDataRef" - class="tableFixed" - :data="tableData" - :height="isExpandForm?tableHeight:(tableHeight+80)+'px'" - border - row-class-name="custom-row" - :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}" - highlight-current-row - :header-cell-style="this.$headerCellStyle" - :cell-style="this.$cellStyle" - @sort-change="sortChange" - > - <!-- prop="RowNum"--> - <el-table-column - prop="rowNum" - width="50" - fixed - label="搴忓彿" - /> - <el-table-column - prop="partcode" - label="瀛樿揣缂栫爜" - sortable="custom" - width="110" - /> - <el-table-column - prop="partname" - label="瀛樿揣鍚嶇О" - sortable="custom" - show-tooltip-when-overflow - min-width="200" - /> - <el-table-column - prop="partspec" - label="瑙勬牸鍨嬪彿" - width="110" - sortable="custom" - > - <template slot-scope="{row}"> - {{ row.partspec ? row.partspec : '/' }} - </template> - </el-table-column> - <el-table-column - prop="idinventoryclassname" - label="鎵�灞炵被鍒�" - sortable="custom" - width="110" - /> - <el-table-column - label="璁¢噺鍗曚綅" - width="110" - sortable="custom" - > - <template slot-scope="{row}"> - {{ row.isSingleUnit === '0' ? row.idunitgroupname : row.idunitname }} - </template> - </el-table-column> - <el-table-column - prop="status" - label="瀛樿揣鐘舵��" - width="110" - sortable="custom" - > - <template slot-scope="{row}"> - <el-tag v-if="row.status==='0'" size="small" type="success">姝e父</el-tag> - <el-tag v-if="row.status==='1'" size="small" type="danger">鍋滅敤</el-tag> - </template> - </el-table-column> - <el-table-column - label="瀛樿揣灞炴��" - sortable="custom" - min-width="220" - > - <template slot-scope="{row}"> - {{ row.isPurchase === '1' ? '澶栬喘' : '' }} - {{ row.isSale === '1' ? '閿�鍞�' : '' }} - {{ row.isMadeSelf === '1' ? '鑷埗' : '' }} - {{ row.isMaterial === '1' ? '鐢熶骇娑堣��' : '' }} - {{ row.isMadeRequest === '1' ? '濮斿' : '' }} - </template> - </el-table-column> - - <el-table-column - label="宸ヨ壓" - prop="" - - width="110" - > - <template slot-scope="{row}"> - - <!-- <i--> - <!-- v-if="row.is_retdproc==='Y'"--> - <!-- :style="{color:$store.state.settings.theme}"--> - <!-- class="el-icon-share"--> - <!-- style="cursor: pointer"--> - <!-- @click="routeClick(row)"--> - <!-- />--> - - <i - :style="{color:row.is_retdproc==='Y'?$store.state.settings.theme:`rgb(180 ,181, 185)`,cursor: 'pointer'}" - class="el-icon-share" - @click="mesSetting.route?routeClick(row):routeClick2(row)" - /> - </template> - </el-table-column> - - <!-- <el-table-column--> - <!-- label="鏁版嵁鏉ユ簮"--> - <!-- prop="data_sources"--> - <!-- sortable="custom"--> - <!-- width="110"--> - <!-- />--> - <el-table-column - label="鍒涘缓浜哄憳" - prop="lm_user" - sortable="custom" - width="110" - /> - <el-table-column - label="鍒涘缓鏃堕棿" - prop="lm_date" - sortable="custom" - width="160" - /> - - <el-table-column - label="鎿嶄綔" - width="120" - fixed="right" - > - <template slot-scope="{row}"> - <div class="operationClass"> - <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top"> - <i - class="el-icon-edit-outline" - :style="{color:$store.state.settings.theme}" - @click="edit('edit',row)" - /> - </el-tooltip> - <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> - <i - class="el-icon-delete" - :style="{color:$store.state.settings.theme}" - @click="del(row)" - /> - </el-tooltip> - </div> - </template> - </el-table-column> - </el-table> - </div> - - <!--鍒嗛〉--> - <pagination - :total="total" - :page.sync="form.page" - :limit.sync="form.rows" - align="right" - layout="total,prev, pager, next,sizes,jumper" - popper-class="select_bottom" - @pagination="getTMaterielData($refs.treeLeftRef.getCurrentNode())" - /> - - </div> - </div> - </div> - - <!-- 瀛樿揣绫诲埆鏂板淇敼--> - <el-dialog - v-el-drag-dialog - :title="operation==='add'?'鏂板':'缂栬緫'" - :visible.sync="dialogClassVisible" - width="800px" - :close-on-click-modal="false" - top="15vh" - @closed="handleClassClose" - @close="handleClassClose" - > - <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="80px"> - <el-form-item label="鍒嗙被缂栫爜" prop="inventoryclasscode"> - <el-input v-model="dialogClassForm.inventoryclasscode" :disabled="operation!=='add'" style="width: 200px" /> - </el-form-item> - <el-form-item label="鍒嗙被鍚嶇О" prop="inventoryclassname"> - <el-input v-model="dialogClassForm.inventoryclassname" style="width: 200px" /> - </el-form-item> - <el-form-item label="涓婄骇鍒嗙被"> - <el-select - v-model="dialogClassForm.parentcode" - style="width:200px" - placeholder="璇烽�夋嫨" - :popper-append-to-body="false" - clearable - > - <el-option - v-for="item in treeLeftArr" - :key="item.code" - :label="item.name" - :value="item.code" - /> - </el-select> - </el-form-item> - </el-form> - - <span slot="footer" class="dialog-footer"> - <div class="footerButton"> - <el-button v-waves @click="dialogVisibleClassCancel">鍙� 娑�</el-button> - <el-button - v-waves - type="primary" - :loading="$store.state.app.buttonIsDisabled" - :disabled="$store.state.app.buttonIsDisabled" - @click="dialogVisibleClassConfirm" - >纭� 瀹�</el-button> - </div> - </span> - </el-dialog> - - <!-- 瀛樿揣妗f鏂板淇敼--> - <el-dialog - v-el-drag-dialog - :title="operation==='add'?'鏂板':'缂栬緫'" - :visible.sync="dialogVisible" - width="1200px" - :close-on-click-modal="false" - top="15vh" - @closed="handleClose" - @close="handleClose" - > - - <el-form ref="dialogForm" class="" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px"> - <el-divider content-position="left">鍩烘湰淇℃伅</el-divider> - <el-form-item label="瀛樿揣缂栫爜" prop="partcode"> - <el-input v-model="dialogForm.partcode" :disabled="operation!=='add'" style="width: 200px" /> - </el-form-item> - <el-form-item label="瀛樿揣鍚嶇О" prop="partname"> - <el-input v-model="dialogForm.partname" style="width: 200px" /> - </el-form-item> - <el-form-item label="瑙勬牸鍨嬪彿"> - <el-input v-model="dialogForm.partspec" style="width: 200px" /> - </el-form-item> - <el-form-item label="鎵�灞炵被鍒�" prop="inventoryclasscode"> - <el-select - v-model="dialogForm.inventoryclasscode" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :popper-append-to-body="false" - > - <el-option - v-for="item in treeLeftArr" - :key="item.code" - :label="item.name" - :value="item.code" - /> - </el-select> - </el-form-item> - <el-form-item label="鎵�灞炰粨搴�" prop="idwarehouse"> - <el-select - v-model="dialogForm.idwarehouse" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :popper-append-to-body="false" - > - <el-option - v-for="item in idwarehouseArr" - :key="item.code" - :label="item.name" - :value="item.code" - /> - </el-select> - </el-form-item> - <el-form-item required label="瀛樿揣鐘舵��"> - <el-radio-group v-model="dialogForm.status"> - <el-radio label="0">姝e父</el-radio> - <el-radio label="1">鍋滅敤</el-radio> - </el-radio-group> - </el-form-item> - - <el-divider content-position="left">璁¢噺鍗曚綅</el-divider> - <el-form-item label="璁¢噺鏂瑰紡" required prop="unittypcode"> - <el-select - v-model="dialogForm.unittypcode" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :popper-append-to-body="false" - @change="unittypcodeChange" - > - <el-option - v-for="item in unittypcodeArr" - :key="item.code" - :label="item.name" - :value="item.code" - /> - </el-select> - </el-form-item> - <el-form-item :label="dialogForm.unittypcode==='1'? '璁¢噺鍗曚綅':'璁¢噺鍗曚綅缁�'" prop="unitcode"> - <el-select - v-if="dialogForm.unittypcode==='1'" - v-model="dialogForm.unitcode" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :popper-append-to-body="false" - @change="val=>unitcodeChange(val,'1')" - > - <el-option - v-for="item in unitcodeSingleArr" - :key="item.unitcode" - :label="item.unitname" - :value="item.unitcode" - /> - </el-select> - <el-select - v-if="dialogForm.unittypcode!=='1'" - v-model="dialogForm.unitcode" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :popper-append-to-body="false" - @change="val=>unitcodeChange(val,'0')" - > - <el-option - v-for="item in unitcodeGroupArr" - :key="item.unitcode" - :label="item.unitname" - :value="item.unitcode" - /> - </el-select> - </el-form-item> - <el-form-item label="鎶ヨ〃杈呭崟浣�"> - <el-select - v-model="dialogForm.idSubUnitByReport" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :disabled="dialogForm.unittypcode==='1'" - :popper-append-to-body="false" - > - <el-option - v-for="item in idSubUnitByReportArr" - :key="item.unitcode" - :label="item.unitname" - :value="item.unitcode" - /> - </el-select> - </el-form-item> - <el-form-item label="搴撳瓨甯哥敤鍗曚綅"> - <el-select - v-model="dialogForm.idUnitByStock" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :disabled="dialogForm.unittypcode==='1'" - :popper-append-to-body="false" - > - <el-option - v-for="item in idUnitBvStockArr" - :key="item.unitcode" - :label="item.unitname" - :value="item.unitcode" - /> - </el-select> - </el-form-item> - <el-form-item label="閲囪喘甯哥敤鍗曚綅"> - <el-select - v-model="dialogForm.idUnitByPurchase" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :disabled="dialogForm.unittypcode==='1'" - :popper-append-to-body="false" - > - <el-option - v-for="item in idUnitBvStockArr" - :key="item.unitcode" - :label="item.unitname" - :value="item.unitcode" - /> - </el-select> - </el-form-item> - <el-form-item label="閿�鍞父鐢ㄥ崟浣�"> - <el-select - v-model="dialogForm.idUnitBySale" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :disabled="dialogForm.unittypcode==='1'" - :popper-append-to-body="false" - > - <el-option - v-for="item in idUnitBvStockArr" - :key="item.unitcode" - :label="item.unitname" - :value="item.unitcode" - /> - </el-select> - </el-form-item> - <el-form-item label="鐢熶骇甯哥敤鍗曚綅"> - <el-select - v-model="dialogForm.idunitbymanufacture" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :disabled="dialogForm.unittypcode==='1'" - :popper-append-to-body="false" - > - <el-option - v-for="item in idUnitBvStockArr" - :key="item.unitcode" - :label="item.unitname" - :value="item.unitcode" - /> - </el-select> - </el-form-item> - <el-divider content-position="left">瀛樿揣灞炴��</el-divider> - <el-checkbox v-model="dialogForm.isPurchase" style="margin-left: 70px;">澶栬喘</el-checkbox> - <el-checkbox v-model="dialogForm.isSale">閿�鍞�</el-checkbox> - <el-checkbox v-model="dialogForm.isMadeSelf">鑷埗</el-checkbox> - <el-checkbox v-model="dialogForm.isMaterial">鐢熶骇娑堣��</el-checkbox> - <el-checkbox v-model="dialogForm.isMadeRequest">濮斿</el-checkbox> - <!-- <el-divider content-position="left">瀛樿揣鎻忚堪</el-divider>--> - <!-- <el-form-item label="瀛樿揣鎻忚堪">--> - <!-- <el-input--> - <!-- v-model="dialogForm.username"--> - <!-- type="textarea"--> - <!-- :autosize="{ minRows: 2, maxRows: 4}"--> - <!-- style="width: 490px;"--> - <!-- />--> - <!-- </el-form-item>--> - - </el-form> - - <span slot="footer" class="dialog-footer"> - <div class="footerButton"> - <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button> - <el-button - v-waves - type="primary" - :loading="$store.state.app.buttonIsDisabled" - :disabled="$store.state.app.buttonIsDisabled" - @click="dialogVisibleConfirm" - >纭� 瀹�</el-button> - </div> - </span> - </el-dialog> - - <!-- 宸ヨ壓璺嚎瀵硅瘽妗�--> - <el-dialog - v-el-drag-dialog - :close-on-click-modal="false" - title="鍏宠仈宸ヨ壓璺嚎" - :visible.sync="dialogVisibleRoute" - width="800px" - top="5vh" - class="dialogVisibleRoute" - @closed="handleCloseRoute" - @close="handleCloseRoute" - > - <div> - <i class="el-icon-s-comment" :style="{color:$store.state.settings.theme}" /> 浜у搧鍚嶇О锛歿{ - dialogFormRoute.projectName - }} - </div> - <el-divider /> - <div style="margin-bottom: 10px"> - <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 宸ヨ壓璺嚎闆嗗悎 - </div> - - <div class="myCheckboxGroup"> - <div - v-for="item in dialogFormRoute.routeOperationArr" - :key="item.code" - :style="{border:item.isSelected1?'1px solid '+$store.state.settings.theme:'1px solid #eee'}" - class="myCheckbox" - @click="myCheckboxClick(item)" - > - <!-- <input--> - <!-- class="myCheckboxInput"--> - <!-- type="checkbox"--> - <!-- :value="item.code"--> - <!-- :name="item.name"--> - <!-- :style="{color:item.isSelected2?'#42b983':'#fff'}"--> - <!-- @click="myCheckboxInputClick(item)"--> - <!-- >{{ item.name }}--> - <!-- 鐖跺瓙鐐瑰嚮浜嬩欢涓嶅奖鍝�--> - <!-- onClick="event.cancelBubble = true"--> - <el-checkbox - :key="item.code" - v-model="item.isSelected2" - class="myCheckboxInput" - :value="item.code" - :name="item.name" - :label="item.name" - :checked="item.isSelected2" - @change="myCheckboxInputClick(item)" - /> - <div class="myCheckboxInputLabel">{{ item.name }}</div> - - </div> - </div> - - <el-divider /> - <div> - <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 榛樿宸ヨ壓璺嚎 - </div> - <div style="margin-top: 20px"> - <el-select - v-model="defaultroute_code" - filterable - style="width: 200px;" - placeholder="璇烽�夋嫨" - class="defaultroute_code" - > - <el-option - v-for="item in defaultroute_codeArr" - :key="item.code" - :label="item.name" - :value="item.code" - /> - </el-select> - </div> - <el-divider /> - <div style="margin-bottom: 10px"> - <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 宸ュ簭鍒楄〃 - </div> - <div style="overflow-y: scroll"> - <el-table - ref="projectTableData" - :data="projectTableData" - border - height="280" - :row-class-name="tableRowClassName" - highlight-current-row - :header-cell-style="this.$headerCellStyle" - :cell-style="this.$cellStyle" - > - <el-table-column - prop="seq" - width="100" - label="宸ュ簭搴忓彿" - fixed - /> - <el-table-column - prop="stepcode" - show-tooltip-when-overflow - label="宸ュ簭缂栫爜" - /> - <el-table-column - prop="stepname" - label="宸ュ簭鍚嶇О" - show-tooltip-when-overflow - /> - <el-table-column - prop="enable" - label="鍚敤鐘舵��" - show-tooltip-when-overflow - fixed="right" - > - <template slot-scope="{row}"> - <div v-if="row.enable==='Y'"> - <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" /> - 鏄� - </div> - <div v-if="row.enable==='N'"> - <i class="el-icon-info" style="margin-right: 2px" /> - 鍚� - </div> - </template> - </el-table-column> - </el-table> - </div> - <span slot="footer" class="dialog-footer"> - <div class="footerButton"> - <el-button v-waves @click="routeDialogVisibleCancel">鍙� 娑�</el-button> - <el-button - v-waves - type="primary" - :loading="$store.state.app.buttonIsDisabled" - :disabled="$store.state.app.buttonIsDisabled" - @click="routeDialogVisibleConfirm" - >纭� 瀹�</el-button> - </div> - </span> - </el-dialog> - - <!-- 鎸夊伐鑹鸿蛋 宸ュ簭瀵硅瘽妗�--> - <el-dialog - v-el-drag-dialog - :close-on-click-modal="false" - title="鍏宠仈宸ュ簭" - :visible.sync="dialogVisibleStep" - width="800px" - top="15vh" - class="dialogVisibleStep" - @closed="handleCloseStep" - @close="handleCloseStep" - > - - <div style="display: flex;align-items: center"> - <div style="font-weight: bolder">宸ュ簭閫夋嫨锛�</div> - <el-drag-select - v-model="stepSelectedValue" - style="width:570px;" - multiple - placeholder="璇烽�夋嫨鐩稿搴斿伐搴�" - > - <!-- :disabled="!(dialogForm.mesorderstus==='NEW'||dialogForm.mesorderstus==='ALLO')"--> - <el-option - v-for="item in stepSelectArr" - :key="item.stepcode" - :label="item.stepname" - :value="item.stepcode" - /> - </el-drag-select> - </div> - - <el-table - ref="stepTableDataRef" - :data="stepTableData" - border - :row-class-name="tableRowClassName" - height="300" - style="width: 100%;margin-top: 15px;" - highlight-current-row - :header-cell-style="this.$headerCellStyle" - :cell-style="this.$cellStyle" - row-key="stepcode" - > - <el-table-column - type="index" - label="搴忓彿" - width="50" - /> - <el-table-column - prop="stepcode" - show-tooltip-when-overflow - label="宸ュ簭缂栫爜" - /> - <el-table-column - prop="stepname" - label="宸ュ簭鍚嶇О" - show-tooltip-when-overflow - /> - <!-- <el-table-column--> - <!-- prop="stepprice"--> - <!-- label="鐢熶骇鍗曚环"--> - <!-- show-tooltip-when-overflow--> - <!-- >--> - <!-- <template slot-scope="{row}">--> - <!-- <el-input--> - <!-- v-model="row.stepprice"--> - <!-- placeholder="璇疯緭鍏ュ伐搴忓崟浠�"--> - <!-- oninput="value=value.replace(/[^0-9.]/g,'')"--> - <!-- style="width: 100%"--> - <!-- @click.stop=""--> - <!-- />--> - <!-- </template>--> - <!-- </el-table-column>--> - <el-table-column - label="鎿嶄綔" - width="120" - > - <template slot-scope="{row}"> - <div class="operationClass"> - <!-- <el-tooltip class="item" effect="dark" content="绉诲姩" placement="top">--> - <i - class="el-icon-rank" - :style="{color:$store.state.settings.theme}" - style="cursor: move" - /> - <!-- </el-tooltip>--> - <!-- @click="edit('edit',row)"--> - - <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> - <i - class="el-icon-delete" - :style="{color:$store.state.settings.theme}" - style="margin-left: 15px;" - @click="stepDel(row)" - /> - </el-tooltip> - </div> - </template> - </el-table-column> - </el-table> - - <span slot="footer" class="dialog-footer"> - <div class="footerButton"> - <el-button v-waves @click="stepDialogVisibleCancel">鍙� 娑�</el-button> - <el-button - v-waves - type="primary" - :loading="$store.state.app.buttonIsDisabled" - :disabled="$store.state.app.buttonIsDisabled" - @click="stepDialogVisibleConfirm" - >纭� 瀹�</el-button> - </div> - </span> - </el-dialog> - </div> -</template> - -<script> -import waves from '@/directive/waves' -import Pagination from '@/components/Pagination' -import { validateCode } from '@/utils/global' -import elDragDialog from '@/directive/el-drag-dialog' -import { - SaveTMaterielFile, - TMaterielAddUpdate, - TMaterielClassTree, - TMaterielClassTreeAddUpdate, - TMaterielClassTreeDelete, - TMaterielData, TMaterielDelete, TMaterielFileAssociationRoute -} from '@/api/ProductModel' -import arrayToTree from 'array-to-tree' -import { StepData, UnitSerch, WareHouse } from '@/api/GeneralBasicData' -import { SaveSearchMateriel_Info } from '@/api/ErpSyncMes' -import $ from 'jquery' -import Sortable from 'sortablejs' -import ElDragSelect from '@/components/DragSelect' - -export default { - name: 'InventoryList', - directives: { waves, elDragDialog }, - components: { - Pagination, ElDragSelect - }, - data() { - return { - mouseHoverType: 'mouseout', - isExpandForm: false, - mainHeight: 0, - tableHeight: 0, - operation: '', - - treeLeft: [ - { - code: '-1', - name: '鍏ㄩ儴' - } - ], // 宸︿晶鏍� - treeLeftArr: [], - defaultPropsLeft: { - children: 'children', - label: 'name' - }, - - tableData: [], - form: { - inventoryclasscode: '', - partcode: '', - partname: '', - partspec: '', - page: 1, - rows: 20, - prop: 'lm_date', // 鎺掑簭瀛楁 - order: 'desc' // 鎺掑簭瀛楁 - }, - total: 0, - dialogClassVisible: false, - dialogClassForm: { - data_sources: '', // 鏁版嵁鏉ユ簮:ERP/MES - inventoryclasscode: '', // 瀛樿揣鍒嗙被缂栫爜 - inventoryclassname: '', // 瀛樿揣鍒嗙被鍚嶇О - parentcode: '', // 涓婄骇鍒嗙被缂栫爜 - OperType: ''// OperType - }, - classArr: [], - dialogClassFormRules: { - inventoryclasscode: [ - { required: true, validator: validateCode, trigger: ['blur', 'change'] } - ], - inventoryclassname: [ - { required: true, message: '璇疯緭瀛樿揣绫诲瀷鍚嶇О', trigger: ['blur', 'change'] } - ] - }, - - dialogVisible: false, - dialogForm: { - data_sources: 'MES', // 鏁版嵁鏉ユ簮锛汦RP/MES - partcode: '', // 瀛樿揣缂栫爜 - partname: '', // 瀛樿揣鍚嶇О - partspec: '', // 瑙勬牸鍨嬪彿 - inventoryclasscode: '', // 瀛樿揣绫诲瀷缂栫爜 - unittypcode: '1', // 璁¢噺鏂瑰紡(0:澶氳閲�,1:鍗曡閲�) - unitcode: '', // 璁¢噺鍗曚綅缂栫爜/璁¢噺鍗曚綅缁勭紪鐮� - unitsubcode: '', // 璁¢噺鍗曚綅缁勫瓙椤圭紪鐮侊紙瀵瑰簲鐨勬槸 涓昏閲忓崟浣嶇紪鐮侊級 - idSubUnitByReport: '', // 鎶ヨ〃杈呭崟浣嶇紪鐮� - idUnitByStock: '', // 搴撳瓨甯哥敤鍗曚綅缂栫爜 - idUnitByPurchase: '', // 閲囪喘甯哥敤鍗曚綅缂栫爜 - idUnitBySale: '', // 閿�鍞父鐢ㄥ崟浣嶇紪鐮� - idunitbymanufacture: '', // 鐢熶骇甯哥敤鍗曚綅 - isPurchase: false, // 鏄惁澶栬喘: 0(鍚�)1(鏄�) - isSale: false, // 鏄惁閿�鍞�:0(鍚�)1(鏄�) - isMadeSelf: false, // 鏄惁鑷埗: 0(鍚�)1(鏄�) - isMaterial: false, // 鏄惁鐢熶骇鑰楃敤: 0(鍚�)1(鏄�) - isMadeRequest: false, // 鏄惁濮斿锛�0(鍚�)1(鏄�) - idwarehouse: '', // 浠撳簱缂栫爜 - status: '0', // 浣跨敤鐘舵��: 姝e父(0)鍋滅敤(1) - OperType: '' // 鎿嶄綔绫诲瀷 - }, - dialogFormRules: { - partcode: [ - { required: true, validator: validateCode, trigger: ['blur', 'change'] } - ], - partname: [ - { required: true, message: '璇疯緭鍏ョ粍缁囧悕绉�', trigger: ['blur', 'change'] } - ], - unitcode: [ - { required: true, message: '璇烽�夋嫨璁¢噺鍗曚綅(缁�)', trigger: ['blur', 'change'] } - ], - inventoryclasscode: [ - { required: true, message: '璇烽�夋嫨鎵�灞炲崟浣�', trigger: ['blur', 'change'] } - ] - }, - unittypcodeArr: [ - { code: '1', name: '鍗曡閲�' }, - { code: '0', name: '澶氳閲�' } - ], - unitcodeSingleArr: [], - unitcodeGroupArr: [], - idSubUnitByReportArr: [], - idUnitBvStockArr: [], - idwarehouseArr: [], - - // 宸ヨ壓 - dialogVisibleRoute: false, - dialogFormRoute: { - projectName: '', // 浜у搧鍚嶇О - projectCode: '', // 浜у搧浠g爜 - routeOperationArr: [] // 宸ヨ壓璺嚎闆嗗悎 - // routeOperationSelectedArr: [] // 宸ヨ壓璺嚎閫変腑闆嗗悎鏁扮粍 - }, - defaultroute_code: '', // 榛樿宸ヨ壓璺嚎閫変腑鍊� - defaultroute_codeArr: '', // 榛樿宸ヨ壓璺嚎鏁扮粍 - projectTableData: [], // 宸ュ簭鍒楄〃 - mesSetting: JSON.parse(localStorage.getItem('mesSetting')), - - // 鎸夊伐搴忚蛋 - dialogVisibleStep: false, - stepTableData: [], - sortable: null, - stepSelectArr: [], // 宸ュ簭涓嬫媺鏁版嵁 - stepSelectedValue: [] // 宸ュ簭涓嬫媺閫変腑鍊� - } - }, - watch: { - 'stepSelectedValue': { - // deep: true, - handler: function(val) { - // do something with the new and old value of stepSelectedValue - console.log(val, 1) - const arr = JSON.parse(JSON.stringify(this.stepTableData)) - const arrStepcode = arr.map(i => i.stepcode) - this.stepTableData = [] - val.forEach(i => { - this.stepTableData.push( - { - stepcode: i, - stepname: this.stepSelectArr.find(j => j.stepcode === i).stepname - // stepprice: arrStepcode.includes(i) ? arr.find(j => j.stepcode === i).stepprice : 0 - } - ) - }) - } - } - }, - - activated() { window.addEventListener('resize', this.getHeight) this.getHeight() }, created() { - - }, - mounted() { - window.addEventListener('resize', this.getHeight) - this.getHeight() - - this.getTMaterielClassTree() - this.getSelectApi() - }, - methods: { - // 宸ヨ壓鐐瑰嚮 ,鎸夊伐搴忚蛋 - async routeClick2(row) { - this.dialogVisibleStep = true - this.dialogFormRoute.projectCode = row.partcode - - const res = await TMaterielFileAssociationRoute({ partcode: this.dialogFormRoute.projectCode }) - if (res.code === '200' && res.data.length > 0) { - this.stepSelectedValue = res.data.map(i => i.step_code) - } - - // 鎷栧姩琛ㄦ牸 - this.$nextTick(() => { - this.setSort() - }) - }, - - stepDialogVisibleCancel() { - this.dialogVisibleStep = false - }, - - async stepDialogVisibleConfirm() { - if (this.stepSelectedValue.length === 0) { - return this.$message.info('宸ュ簭鑷冲皯瑕佹湁涓�閬擄紒') - } - const children = [] - this.stepSelectedValue.forEach((item, index) => { - const t = this.stepSelectArr.find(i => i.stepcode === item) - children.push({ - 'code': t.stepcode, - 'name': t.stepname, - 'seq': index + 1, - 'isbott': index === 0 ? 'Y' : 'N', - 'isend': index === this.stepSelectedValue.length - 1 ? 'Y' : 'N' - }) - }) - const data = [ - { - 'partcode': this.dialogFormRoute.projectCode, - 'defaultroute_code': '', - 'children': children - } - ] - this.$store.state.app.buttonIsDisabled = true - const res = await SaveTMaterielFile(data) - if (res.code === '200') { - this.dialogVisibleStep = false - this.$message.success('淇濆瓨鎴愬姛锛�') - await this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) - this.$store.state.app.buttonIsDisabled = false - } - }, - // 宸ュ簭鍒犻櫎 - stepDel(row) { - const index = this.stepSelectedValue.findIndex(i => i === row.stepcode) - this.stepSelectedValue.splice(index, 1) - }, - handleCloseStep() { - this.stepTableData = [] - this.sortable = null - this.stepSelectedValue = [] - }, - - setSort() { - const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0] - this.sortable = Sortable.create(el, { - ghostClass: 'sortable-ghost', // Class name for the drop placeholder, - setData: function(dataTransfer) { - // to avoid Firefox bug - // Detail see : https://github.com/RubaXa/Sortable/issues/1012 - dataTransfer.setData('Text', '') - }, - onEnd: evt => { - const targetRow = this.stepTableData.splice(evt.oldIndex, 1)[0] - this.stepTableData.splice(evt.newIndex, 0, targetRow) - - this.stepSelectedValue = this.stepTableData.map(i => i.stepcode) - // for show the changes, you can delete in you code - // const tempIndex = this.newList.splice(evt.oldIndex, 1)[0] - // this.newList.splice(evt.newIndex, 0, tempIndex) - } - }) - }, - - tableRowClassName({ row, rowIndex }) { - return 'custom-row' - }, - - /* 鐐瑰嚮鍏宠仈宸ヨ壓璺嚎妯″潡*/ - // 宸ヨ壓璺嚎鐐瑰嚮 - routeClick(row) { - const loading = this.$loading({ - lock: true, - text: '姝e湪鍔犺浇鏁版嵁锛岃绋嶇瓑...', - spinner: 'el-icon-loading', - customClass: 'osloading', - background: 'rgba(0, 0, 0, 0.7)' - }) - - this.defaultroute_code = row.default_route - this.dialogFormRoute.projectCode = row.partcode - this.dialogFormRoute.projectName = row.partname - - TMaterielFileAssociationRoute({ partcode: this.dialogFormRoute.projectCode }).then(res => { - if (res.code === '200') { - setTimeout(() => { - loading.close() - this.dialogVisibleRoute = true - this.dialogFormRoute.routeOperationArr = res.data - // let waitFlag = false// 鍥炴樉绛夊緟鏄惁鏀捐 - - this.dialogFormRoute.routeOperationArr.forEach((item, index) => { - item.isSelected1 = false - item.isSelected2 = false - if (index === 0) { - item.isSelected1 = true - this.projectTableData = item.Data - } - if (item.flag === 'Y') { - item.isSelected2 = true - this.$nextTick(() => { - $('input:checkbox').eq(index).prop('checked', true) - }) - - // const interval = setInterval(() => { - // if ($('input:checkbox').length > 0) { - // waitFlag = true - // } - // if (waitFlag) { - // clearInterval(interval) - // this.$nextTick(() => { - // $('input:checkbox').eq(index).prop('checked', true) - // }) - // } - // }, 100) - } - }) - - this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.flag === 'Y') - }, 1000) - } else { - loading.close() - } - }) - }, - // 瀵硅瘽妗嗗叧闂� - handleCloseRoute() { - this.dialogFormRoute.routeOperationArr = [] - this.defaultroute_codeArr = [] - }, - // 鍙栨秷 - routeDialogVisibleCancel() { - this.dialogVisibleRoute = false - }, - // 纭畾 - async routeDialogVisibleConfirm() { - if (!this.defaultroute_code || this.defaultroute_code === 'null') { - return this.$message.info('榛樿宸ヨ壓璺嚎涓嶈兘涓虹┖锛�') - } - - // 鎻愪氦鏍煎紡 - const data = [] - this.dialogFormRoute.routeOperationArr.forEach(item => { - if (item.isSelected2) { - data.push({ code: item.code, name: item.name }) - } - }) - - const D = [{ - 'partcode': this.dialogFormRoute.projectCode, - 'defaultroute_code': this.defaultroute_code, - 'children': data - }] - - this.$store.state.app.buttonIsDisabled = true - const res = await SaveTMaterielFile(D) - if (res.code === '200') { - this.dialogVisibleRoute = false - this.$message.success('淇濆瓨鎴愬姛锛�') - await this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) - this.$store.state.app.buttonIsDisabled = false - } - }, - // 澶х洅瀛愮偣鍑讳簨浠� - myCheckboxClick(val) { - console.log(val, 1) - this.dialogFormRoute.routeOperationArr.forEach(item => { - item.isSelected1 = val.code === item.code - }) - - this.projectTableData = val.Data - }, - // 灏忕洅瀛愮偣鍑讳簨浠� - myCheckboxInputClick(val) { - // console.log(val, 2) - val.isSelected2 = !!val.isSelected2 - - this.dialogFormRoute.routeOperationArr.forEach((item, index) => { - if (val.code === item.code) { - item.flag = !item.flag - } - }) - if (val.code === this.defaultroute_code) { - this.defaultroute_code = '' - } - this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.isSelected2) - }, - - async getSelectApi() { - const { data: res } = await UnitSerch({ tunittype: 'M' }) - this.unitcodeGroupArr = res - - const { data: res2 } = await UnitSerch({ tunittype: 'S' }) - this.unitcodeSingleArr = res2 - - const { data: res3 } = await WareHouse() - this.idwarehouseArr = res3 - - // 鑾峰彇宸ュ簭 - const { data: res4 } = await StepData() - this.stepSelectArr = res4 - }, - - async getTMaterielClassTree() { - const res = await TMaterielClassTree() - res.data.forEach(i => { - i.idparent = i.idparent ? i.idparent : '-1' - }) - this.treeLeftArr = res.data - this.treeLeftArr.forEach(e => { - e.name = e.code + ' ' + e.name - }) - this.treeLeft = arrayToTree(this.treeLeft.concat(res.data), { - parentProperty: 'idparent', - customID: 'code', - childrenProperty: 'children' - }) - - this.$nextTick(() => { - this.$refs.treeLeftRef.setCurrentKey('-1') - this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) - }) - }, - async getTMaterielData(node) { - const result = this.getChildrenCodeMethod(node, []) - if (result.includes('-1')) { - result.shift() - } - this.form.inventoryclasscode = result.join(',') - const res = await TMaterielData(this.form) - - this.tableData = res.data - this.total = res.count - }, - - // 鑾峰彇椤甸潰楂樺害 - getHeight() { - this.$nextTick(() => { - this.mainHeight = window.innerHeight - 85 - this.tableHeight = this.mainHeight - 280 - this.$refs.tableDataRef.doLayout() - }) - }, - sortChange({ column, prop, order }) { - if (order === 'descending') { - order = 'desc' - } else if (order === 'ascending') { - order = 'asc' - } else { - order = 'desc' - } - this.form.order = order - this.form.prop = prop - this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) - }, - // 鏂板鎸夐挳 - add(operation) { - this.operation = operation - this.dialogVisible = true - this.dialogForm.OperType = 'Add' - }, - // 淇敼鎸夐挳 - async edit(operation, row) { - this.operation = operation - this.dialogVisible = true - this.dialogForm.OperType = 'Update' - - this.$nextTick(() => { - this.dialogForm.data_sources = row.data_sources - this.dialogForm.partcode = row.partcode - this.dialogForm.partname = row.partname - this.dialogForm.partspec = row.partspec - this.dialogForm.inventoryclasscode = row.idinventoryclasscode - this.dialogForm.unittypcode = row.isSingleUnit - // 璁¢噺鏂瑰紡(0:澶氳閲�,1:鍗曡閲�) - if (this.dialogForm.unittypcode === '1') { - this.dialogForm.unitcode = row.idunitcode - this.dialogForm.unitsubcode = '' - this.dialogForm.idSubUnitByReport = '' - const unitname = this.unitcodeSingleArr.find(i => i.unitcode === this.dialogForm.unitcode).unitname - - this.dialogForm.idUnitByStock = unitname - this.dialogForm.idUnitByPurchase = unitname - this.dialogForm.idUnitBySale = unitname - this.dialogForm.idunitbymanufacture = unitname - } - - if (this.dialogForm.unittypcode === '0') { - this.dialogForm.unitcode = row.idunitgroupcode - - const t = this.unitcodeGroupArr.find(i => i.unitcode === this.dialogForm.unitcode).children - - this.idSubUnitByReportArr = t.filter(i => i.isMainUnit !== '1') - this.idUnitBvStockArr = t - - const mainUnitCode = t.find(i => i.isMainUnit === '1').unitcode - this.dialogForm.unitsubcode = mainUnitCode - this.dialogForm.idSubUnitByReport = this.idSubUnitByReportArr[0].unitcode - - this.dialogForm.idUnitByStock = mainUnitCode - this.dialogForm.idUnitByPurchase = mainUnitCode - this.dialogForm.idUnitBySale = mainUnitCode - this.dialogForm.idunitbymanufacture = mainUnitCode - } - - this.dialogForm.isPurchase = row.isPurchase === '1' - this.dialogForm.isSale = row.isSale === '1' - this.dialogForm.isMadeSelf = row.isMadeSelf === '1' - this.dialogForm.isMaterial = row.isMaterial === '1' - this.dialogForm.isMadeRequest = row.isMadeRequest === '1' - - this.dialogForm.idwarehouse = row.idwarehousecode - this.dialogForm.status = row.status - }) - }, - del(row) { - this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(() => { - TMaterielDelete({ partcode: row.partcode, data_sources: row.data_sources }).then(res => { - if (res.code === '200') { - this.$notify.success('鍒犻櫎鎴愬姛!') - this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) - } - }) - }).catch(() => { - this.$notify.info('宸插彇娑堝垹闄�') - }) - }, - reset() { - this.form.inventoryclasscode = '' - this.form.partcode = '' - this.form.partname = '' - this.form.partspec = '' - this.$refs.treeLeftRef.setCurrentKey('-1') - this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) - }, - // 瀵硅瘽妗嗗叧闂簨浠� - handleClose() { - this.dialogForm.data_sources = 'MES' - this.dialogForm.partcode = '' - this.dialogForm.partname = '' - this.dialogForm.partspec = '' - this.dialogForm.inventoryclasscode = '' - this.dialogForm.unittypcode = '1' - this.dialogForm.unitcode = '' - this.dialogForm.unitsubcode = '' - this.dialogForm.idSubUnitByReport = '' - this.dialogForm.idUnitByStock = '' - this.dialogForm.idUnitByPurchase = '' - this.dialogForm.idUnitBySale = '' - this.dialogForm.idunitbymanufacture = '' - this.dialogForm.isPurchase = false - this.dialogForm.isSale = false - this.dialogForm.isMadeSelf = false - this.dialogForm.isMaterial = false - this.dialogForm.isMadeRequest = false - this.dialogForm.idwarehouse = '' - this.dialogForm.status = '0' - this.$refs.dialogForm.clearValidate() - }, - // 瀵硅瘽妗嗗彇娑� - dialogVisibleCancel() { - this.dialogVisible = false - }, - // 瀵硅瘽妗嗙‘璁� - dialogVisibleConfirm() { - this.$refs.dialogForm.validate(valid => { - if (valid) { - if (!(this.dialogForm.isPurchase || this.dialogForm.isSale || this.dialogForm.isMadeSelf || this.dialogForm.isMaterial || this.dialogForm.isMadeRequest)) { - return this.$message.info('瀛樿揣灞炴�т笉鑳戒负绌猴紒') - } - this.dialogForm.isPurchase = this.dialogForm.isPurchase ? '1' : '0' - this.dialogForm.isSale = this.dialogForm.isSale ? '1' : '0' - this.dialogForm.isMadeSelf = this.dialogForm.isMadeSelf ? '1' : '0' - this.dialogForm.isMaterial = this.dialogForm.isMaterial ? '1' : '0' - this.dialogForm.isMadeRequest = this.dialogForm.isMadeRequest ? '1' : '0' - // console.log(JSON.parse(JSON.stringify(this.dialogForm)), 1) - - if (this.dialogForm.unittypcode === '1') { - this.dialogForm.idUnitByStock = this.dialogForm.unitcode - this.dialogForm.idUnitByPurchase = this.dialogForm.unitcode - this.dialogForm.idUnitBySale = this.dialogForm.unitcode - this.dialogForm.idunitbymanufacture = this.dialogForm.unitcode - } - this.$store.state.app.buttonIsDisabled = true - TMaterielAddUpdate(this.dialogForm).then(res => { - if (res.code === '200') { - this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�') - this.dialogVisible = false - this.$store.state.app.buttonIsDisabled = false - this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) - } else { - this.$store.state.app.buttonIsDisabled = false - this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�') - } - }) - } - }) - }, - - // 閫掑綊鍙栧瓙闆嗙殑鎵�鏈塩ode - getChildrenCodeMethod(node, result) { - result.push(node.code) - if (node.children && node.children.length > 0) { - node.children.forEach(i => { - this.getChildrenCodeMethod(i, result) - }) - } - return result - }, - - treeEditClick(node, data, operation) { - this.dialogClassForm.data_sources = data.data_sources - this.dialogClassForm.inventoryclasscode = data.code - this.dialogClassForm.inventoryclassname = data.name.split(' ')[1] - this.dialogClassForm.parentcode = data.idparent === '-1' ? '' : data.idparent - this.dialogClassForm.OperType = 'Update' - this.operation = operation - this.dialogClassVisible = true - }, - treeDeleteClick(node, data) { - this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(() => { - const result = this.getChildrenCodeMethod(data, []) - TMaterielClassTreeDelete({ inventoryclasscode: result.join(',') }).then(res => { - if (res.code === '200') { - this.$notify.success('鍒犻櫎鎴愬姛!') - this.getTMaterielClassTree() - } - }) - }).catch(() => { - this.$notify.info('宸插彇娑堝垹闄�') - }) - }, - treeAddClick(operation) { - this.operation = operation - this.dialogClassVisible = true - this.dialogClassForm.OperType = 'Add' - this.dialogClassForm.data_sources = 'MES' - }, - - handleClassClose() { - this.dialogClassForm.data_sources = '' - this.dialogClassForm.inventoryclasscode = '' - this.dialogClassForm.inventoryclassname = '' - this.dialogClassForm.parentcode = '' - this.dialogClassForm.OperType = '' - this.$refs.dialogClassForm.clearValidate() - }, - dialogVisibleClassCancel() { - this.dialogClassVisible = false - }, - dialogVisibleClassConfirm() { - this.$refs.dialogClassForm.validate(valid => { - if (valid) { - TMaterielClassTreeAddUpdate(this.dialogClassForm).then(res => { - if (res.code === '200') { - this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�') - this.dialogClassVisible = false - this.$store.state.app.buttonIsDisabled = false - this.getTMaterielClassTree() - } else { - this.$store.state.app.buttonIsDisabled = false - this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�') - } - }) - } - }) - }, - unittypcodeChange(val) { - console.log(val) - - this.dialogForm.unitcode = '' - this.dialogForm.unitsubcode = '' - this.dialogForm.idSubUnitByReport = '' - this.dialogForm.idUnitByStock = '' - this.dialogForm.idUnitByPurchase = '' - this.dialogForm.idUnitBySale = '' - this.dialogForm.idunitbymanufacture = '' - // this.$refs.dialogForm.clearValidate() - // this.$forceUpdate() - }, - unitcodeChange(val, type) { - console.log(val) - - if (type === '1') { - // this.dialogForm.unitcode = val - this.dialogForm.unitsubcode = '' - this.dialogForm.idSubUnitByReport = '' - - const unitname = this.unitcodeSingleArr.find(i => i.unitcode === val).unitname - - this.dialogForm.idUnitByStock = unitname - this.dialogForm.idUnitByPurchase = unitname - this.dialogForm.idUnitBySale = unitname - this.dialogForm.idunitbymanufacture = unitname - } - - if (type === '0') { - const t = this.unitcodeGroupArr.find(i => i.unitcode === val).children - - this.idSubUnitByReportArr = t.filter(i => i.isMainUnit !== '1') - this.idUnitBvStockArr = t - - const mainUnitCode = t.find(i => i.isMainUnit === '1').unitcode - this.dialogForm.unitsubcode = mainUnitCode - this.dialogForm.idSubUnitByReport = this.idSubUnitByReportArr[0].unitcode - - this.dialogForm.idUnitByStock = mainUnitCode - this.dialogForm.idUnitByPurchase = mainUnitCode - this.dialogForm.idUnitBySale = mainUnitCode - this.dialogForm.idunitbymanufacture = mainUnitCode - } - }, - // 鍚屾ERP - syncERP() { - const loading = this.$loading({ - lock: true, - text: '姝e湪鍚屾ERP锛岃绋嶇瓑...', - spinner: 'el-icon-loading', - customClass: 'osloading', - background: 'rgba(0, 0, 0, 0.7)' - }) - - SaveSearchMateriel_Info().then(res => { - if (res.code === '200') { - setTimeout(() => { - this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) - this.getTMaterielClassTree() - loading.close() - this.$notify.success('鍚屾鎴愬姛锛�') - }, 2000) - } - // else if (res.code === '300') { - // setTimeout(() => { - // loading.close() - // this.$message.error('鍚屾澶辫触锛�') - // }, 10000) - // } - }).catch(e => { - loading.close() - }) - } - } -} -</script> - -<style scoped lang="scss"> -$main_color: #42b983; -.custom-tree-node { - flex: 1; - display: flex; - align-items: center; - justify-content: space-between; - font-size: 14px; - padding-right: 8px; -} - -//::v-deep .el-checkbox__label { -// width: 55px; -//} -// -.el-icon-plus:hover, .el-icon-edit:hover, .el-icon-delete:hover { - color: #000 !important; -} - -.dialogVisibleRoute { - .myCheckboxGroup { - display: flex; - flex-wrap: wrap; - - .myCheckbox { - //border: 1px solid $main_color; - border: 1px solid #eee; - display: flex; - min-width: 100px; - padding: 10px; - margin: 10px 30px 0 0; - border-radius: 5px; - cursor: default; - position: relative; - - .myCheckboxInput { - margin: 1px 5px 0 0; - cursor: pointer; - } - - .myCheckboxInputLabel { - position: absolute; - left: 29px; - padding: 5px; - top: 6px; - color: transparent; - } - - } - - //.myCheckbox{ - // border: 1px solid $main_color; - //} - - input[type=checkbox] { - cursor: pointer; - position: relative; - width: 14px; - height: 14px; - font-size: 14px; - } - - input[type=checkbox]::after { - position: absolute; - top: 0; - //color: rgb(130, 35, 35); - color: $main_color; - width: 14px; - height: 14px; - display: inline-block; - visibility: visible; - padding-left: 0px; - text-align: center; - content: ' '; - border-radius: 3px - } - - input[type=checkbox]:checked::after { - //content: "鉁�"; - content: "鈭�"; - color: #fff; - font-size: 12px; - font-weight: bold; - background-color: $main_color; - } - } -} - -.defaultroute_code ::v-deep .el-input__suffix-inner { - display: flex; - align-items: center; - justify-content: center; - margin-top: -3px; -} - -::v-deep .el-select__caret { - display: flex !important; - justify-content: center !important; - align-items: center !important; -} - -</style> +<template> + <div> + <div class="body" :style="{height:mainHeight+'px'}"> + + <div style="display: flex"> + <div style="width: 300px;margin: 10px 10px 0 0;background:#fff"> + + <div style="margin: 20px 10px 0 10px;display: flex;justify-content: space-between;"> + <div style="display: flex;"> + <div + style="width: 5px;height: 100%;border-radius: 5px;" + :style="{background:$store.state.settings.theme}" + /> + <div style="margin-left: 8px;">瀛樿揣妗f</div> + </div> + + <div style="margin-right:10px"> + <el-tooltip v-del-tab-index class="item" effect="dark" content="鏂板" placement="top"> + <i class="el-icon-plus" style="cursor: pointer;color: #999" @click="treeAddClick('add')" /> + </el-tooltip> + </div> + + </div> + + <el-tree + ref="treeLeftRef" + style="padding: 10px;overflow: auto" + :style="{height:(tableHeight+222)+'px'}" + :data="treeLeft" + node-key="code" + highlight-current + :props="defaultPropsLeft" + :default-expand-all="true" + :expand-on-click-node="false" + @node-click="getTMaterielData" + > + <span slot-scope="{ node, data }" class="custom-tree-node"> + <span v-if="!data.isEdit" class="ellipsis" style="width:150px;">{{ data.name }}</span> + <span v-if="!data.isEdit"> + <el-tooltip v-del-tab-index class="item" effect="dark" content="缂栬緫" placement="top"> + <i + v-if="data.code!=='-1'" + class="el-icon-edit" + style="margin-right:10px;color: #999" + @click.stop="treeEditClick(node,data,'edit')" + /> + </el-tooltip> + <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> + <i + v-if="data.code!=='-1'" + class="el-icon-delete" + style="margin-right: 4px;color: #999" + @click.stop="treeDeleteClick(node,data)" + /> + </el-tooltip> + </span> + </span> + </el-tree> + </div> + + <div + style=" width:calc(100% - 300px);" + > + <div class="bodyTopButtonGroup" style="justify-content: space-between"> + <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button> + <div style="display: flex"> + <el-button + v-waves + type="success" + icon="el-icon-download" + @click="$router.push('./../systemSetting/dataImport?fileCode=8')" + >瀵煎叆 + </el-button> + <el-button v-waves icon="el-icon-refresh-right" @click="syncERP">鍚屾瀛樿揣妗f</el-button> + </div> + </div> + + <div class="bodyTopFormGroup"> + <el-form + ref="form" + :model="form" + label-width="100px" + inline + style="display: flex;" + > + <div class="elForm"> + <el-form-item label="瀛樿揣缂栫爜" style=" display: flex;"> + <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" /> + </el-form-item> + <el-form-item label="瀛樿揣鍚嶇О" style=" display: flex;"> + <el-input v-model="form.partname" placeholder="璇疯緭鍏�" style="width: 200px" /> + </el-form-item> + <el-form-item label="瀛樿揣瑙勬牸" style=" display: flex;"> + <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" /> + </el-form-item> + <!-- <el-form-item label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> + <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> + <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> + <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> + <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">--> + <!-- <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + <!-- <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">--> + <!-- <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />--> + <!-- </el-form-item>--> + </div> + <div + class="bodySearchReset" + :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}" + > + <el-button + v-waves + type="primary" + icon="el-icon-search" + @click="getTMaterielData($refs.treeLeftRef.getCurrentNode())" + >鏌ヨ + </el-button> + <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button> + </div> + </el-form> + <div + class="bodyTopFormExpand" + style="height: 5px;" + > + <!-- <svg-icon--> + <!-- v-show="mouseHoverType==='mouseout'"--> + <!-- style="cursor: pointer"--> + <!-- :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"--> + <!-- @mouseenter="mouseHoverType=$event.type"--> + <!-- />--> + <!-- <svg-icon--> + <!-- v-show="mouseHoverType==='mouseenter'"--> + <!-- style="cursor: pointer"--> + <!-- :icon-class="!isExpandForm?'doubleDown':'doubleUp'"--> + <!-- @click="isExpandForm=!isExpandForm"--> + <!-- @mouseout="mouseHoverType=$event.type"--> + <!-- />--> + </div> + </div> + + <div class="elTableDiv"> + <el-table + ref="tableDataRef" + class="tableFixed" + :data="tableData" + :height="isExpandForm?tableHeight:(tableHeight+80)+'px'" + border + row-class-name="custom-row" + :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}" + highlight-current-row + :header-cell-style="this.$headerCellStyle" + :cell-style="this.$cellStyle" + @sort-change="sortChange" + > + <!-- prop="RowNum"--> + <el-table-column + prop="rowNum" + width="50" + fixed + label="搴忓彿" + /> + <el-table-column + prop="partcode" + label="瀛樿揣缂栫爜" + sortable="custom" + width="110" + /> + <el-table-column + prop="partname" + label="瀛樿揣鍚嶇О" + sortable="custom" + show-tooltip-when-overflow + min-width="200" + /> + <el-table-column + prop="partspec" + label="瑙勬牸鍨嬪彿" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + {{ row.partspec ? row.partspec : '/' }} + </template> + </el-table-column> + + <el-table-column + prop="priuserdefnvc1" + label="瀹㈡埛鍚嶇О" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + {{ row.priuserdefnvc1 ? row.priuserdefnvc1 : '/' }} + </template> + </el-table-column> + <el-table-column + prop="priuserdefnvc6" + label="瀹㈡埛缂栫爜" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + {{ row.priuserdefnvc6 ? row.priuserdefnvc6 : '/' }} + </template> + </el-table-column> + <el-table-column + prop="priuserdefnvc2" + label="瀵瑰唴鍚嶇О" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + {{ row.priuserdefnvc2 ? row.priuserdefnvc2 : '/' }} + </template> + </el-table-column> + <el-table-column + prop="priuserdefnvc3" + label="CTP鏃ユ湡" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + {{ row.priuserdefnvc3 ? row.priuserdefnvc3 : '/' }} + </template> + </el-table-column> + <el-table-column + prop="priuserdefnvc4" + label="閽㈠垁缂栧彿" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + {{ row.priuserdefnvc4 ? row.priuserdefnvc4 : '/' }} + </template> + </el-table-column> + <el-table-column + prop="priuserdefnvc5" + label="鐩掑瀷" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + {{ row.priuserdefnvc5 ? row.priuserdefnvc5 : '/' }} + </template> + </el-table-column> + + <el-table-column + prop="idinventoryclassname" + label="鎵�灞炵被鍒�" + sortable="custom" + width="110" + /> + <el-table-column + label="璁¢噺鍗曚綅" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + {{ row.isSingleUnit === '0' ? row.idunitgroupname : row.idunitname }} + </template> + </el-table-column> + <el-table-column + prop="status" + label="瀛樿揣鐘舵��" + width="110" + sortable="custom" + > + <template slot-scope="{row}"> + <el-tag v-if="row.status==='0'" size="small" type="success">姝e父</el-tag> + <el-tag v-if="row.status==='1'" size="small" type="danger">鍋滅敤</el-tag> + </template> + </el-table-column> + <el-table-column + label="瀛樿揣灞炴��" + sortable="custom" + min-width="220" + > + <template slot-scope="{row}"> + {{ row.isPurchase === '1' ? '澶栬喘' : '' }} + {{ row.isSale === '1' ? '閿�鍞�' : '' }} + {{ row.isMadeSelf === '1' ? '鑷埗' : '' }} + {{ row.isMaterial === '1' ? '鐢熶骇娑堣��' : '' }} + {{ row.isMadeRequest === '1' ? '濮斿' : '' }} + </template> + </el-table-column> + + <el-table-column + label="宸ヨ壓" + prop="" + + width="110" + > + <template slot-scope="{row}"> + + <!-- <i--> + <!-- v-if="row.is_retdproc==='Y'"--> + <!-- :style="{color:$store.state.settings.theme}"--> + <!-- class="el-icon-share"--> + <!-- style="cursor: pointer"--> + <!-- @click="routeClick(row)"--> + <!-- />--> + + <i + :style="{color:row.is_retdproc==='Y'?$store.state.settings.theme:`rgb(180 ,181, 185)`,cursor: 'pointer'}" + class="el-icon-share" + @click="mesSetting.route?routeClick(row):routeClick2(row)" + /> + </template> + </el-table-column> + + <!-- <el-table-column--> + <!-- label="鏁版嵁鏉ユ簮"--> + <!-- prop="data_sources"--> + <!-- sortable="custom"--> + <!-- width="110"--> + <!-- />--> + <el-table-column + label="鍒涘缓浜哄憳" + prop="lm_user" + sortable="custom" + width="110" + /> + <el-table-column + label="鍒涘缓鏃堕棿" + prop="lm_date" + sortable="custom" + width="160" + /> + + <el-table-column + label="鎿嶄綔" + width="120" + fixed="right" + > + <template slot-scope="{row}"> + <div class="operationClass"> + <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top"> + <i + class="el-icon-edit-outline" + :style="{color:$store.state.settings.theme}" + @click="edit('edit',row)" + /> + </el-tooltip> + <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> + <i + class="el-icon-delete" + :style="{color:$store.state.settings.theme}" + @click="del(row)" + /> + </el-tooltip> + </div> + </template> + </el-table-column> + </el-table> + </div> + + <!--鍒嗛〉--> + <pagination + :total="total" + :page.sync="form.page" + :limit.sync="form.rows" + align="right" + layout="total,prev, pager, next,sizes,jumper" + popper-class="select_bottom" + @pagination="getTMaterielData($refs.treeLeftRef.getCurrentNode())" + /> + + </div> + </div> + </div> + + <!-- 瀛樿揣绫诲埆鏂板淇敼--> + <el-dialog + v-el-drag-dialog + :title="operation==='add'?'鏂板':'缂栬緫'" + :visible.sync="dialogClassVisible" + width="800px" + :close-on-click-modal="false" + top="15vh" + @closed="handleClassClose" + @close="handleClassClose" + > + <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="80px"> + <el-form-item label="鍒嗙被缂栫爜" prop="inventoryclasscode"> + <el-input v-model="dialogClassForm.inventoryclasscode" :disabled="operation!=='add'" style="width: 200px" /> + </el-form-item> + <el-form-item label="鍒嗙被鍚嶇О" prop="inventoryclassname"> + <el-input v-model="dialogClassForm.inventoryclassname" style="width: 200px" /> + </el-form-item> + <el-form-item label="涓婄骇鍒嗙被"> + <el-select + v-model="dialogClassForm.parentcode" + style="width:200px" + placeholder="璇烽�夋嫨" + :popper-append-to-body="false" + clearable + > + <el-option + v-for="item in treeLeftArr" + :key="item.code" + :label="item.name" + :value="item.code" + /> + </el-select> + </el-form-item> + </el-form> + + <span slot="footer" class="dialog-footer"> + <div class="footerButton"> + <el-button v-waves @click="dialogVisibleClassCancel">鍙� 娑�</el-button> + <el-button + v-waves + type="primary" + :loading="$store.state.app.buttonIsDisabled" + :disabled="$store.state.app.buttonIsDisabled" + @click="dialogVisibleClassConfirm" + >纭� 瀹�</el-button> + </div> + </span> + </el-dialog> + + <!-- 瀛樿揣妗f鏂板淇敼--> + <el-dialog + v-el-drag-dialog + :title="operation==='add'?'鏂板':'缂栬緫'" + :visible.sync="dialogVisible" + width="1200px" + :close-on-click-modal="false" + top="15vh" + @closed="handleClose" + @close="handleClose" + > + + <el-form ref="dialogForm" class="" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px"> + <el-divider content-position="left">鍩烘湰淇℃伅</el-divider> + <el-form-item label="瀛樿揣缂栫爜" prop="partcode"> + <el-input v-model="dialogForm.partcode" :disabled="operation!=='add'" style="width: 200px" /> + </el-form-item> + <el-form-item label="瀛樿揣鍚嶇О" prop="partname"> + <el-input v-model="dialogForm.partname" style="width: 200px" /> + </el-form-item> + <el-form-item label="瑙勬牸鍨嬪彿"> + <el-input v-model="dialogForm.partspec" style="width: 200px" /> + </el-form-item> + <el-form-item label="鎵�灞炵被鍒�" prop="inventoryclasscode"> + <el-select + v-model="dialogForm.inventoryclasscode" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :popper-append-to-body="false" + > + <el-option + v-for="item in treeLeftArr" + :key="item.code" + :label="item.name" + :value="item.code" + /> + </el-select> + </el-form-item> + <el-form-item label="鎵�灞炰粨搴�" prop="idwarehouse"> + <el-select + v-model="dialogForm.idwarehouse" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :popper-append-to-body="false" + > + <el-option + v-for="item in idwarehouseArr" + :key="item.code" + :label="item.name" + :value="item.code" + /> + </el-select> + </el-form-item> + <el-form-item required label="瀛樿揣鐘舵��"> + <el-radio-group v-model="dialogForm.status"> + <el-radio label="0">姝e父</el-radio> + <el-radio label="1">鍋滅敤</el-radio> + </el-radio-group> + </el-form-item> + + <el-divider content-position="left">璁¢噺鍗曚綅</el-divider> + <el-form-item label="璁¢噺鏂瑰紡" required prop="unittypcode"> + <el-select + v-model="dialogForm.unittypcode" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :popper-append-to-body="false" + @change="unittypcodeChange" + > + <el-option + v-for="item in unittypcodeArr" + :key="item.code" + :label="item.name" + :value="item.code" + /> + </el-select> + </el-form-item> + <el-form-item :label="dialogForm.unittypcode==='1'? '璁¢噺鍗曚綅':'璁¢噺鍗曚綅缁�'" prop="unitcode"> + <el-select + v-if="dialogForm.unittypcode==='1'" + v-model="dialogForm.unitcode" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :popper-append-to-body="false" + @change="val=>unitcodeChange(val,'1')" + > + <el-option + v-for="item in unitcodeSingleArr" + :key="item.unitcode" + :label="item.unitname" + :value="item.unitcode" + /> + </el-select> + <el-select + v-if="dialogForm.unittypcode!=='1'" + v-model="dialogForm.unitcode" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :popper-append-to-body="false" + @change="val=>unitcodeChange(val,'0')" + > + <el-option + v-for="item in unitcodeGroupArr" + :key="item.unitcode" + :label="item.unitname" + :value="item.unitcode" + /> + </el-select> + </el-form-item> + <el-form-item label="鎶ヨ〃杈呭崟浣�"> + <el-select + v-model="dialogForm.idSubUnitByReport" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :disabled="dialogForm.unittypcode==='1'" + :popper-append-to-body="false" + > + <el-option + v-for="item in idSubUnitByReportArr" + :key="item.unitcode" + :label="item.unitname" + :value="item.unitcode" + /> + </el-select> + </el-form-item> + <el-form-item label="搴撳瓨甯哥敤鍗曚綅"> + <el-select + v-model="dialogForm.idUnitByStock" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :disabled="dialogForm.unittypcode==='1'" + :popper-append-to-body="false" + > + <el-option + v-for="item in idUnitBvStockArr" + :key="item.unitcode" + :label="item.unitname" + :value="item.unitcode" + /> + </el-select> + </el-form-item> + <el-form-item label="閲囪喘甯哥敤鍗曚綅"> + <el-select + v-model="dialogForm.idUnitByPurchase" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :disabled="dialogForm.unittypcode==='1'" + :popper-append-to-body="false" + > + <el-option + v-for="item in idUnitBvStockArr" + :key="item.unitcode" + :label="item.unitname" + :value="item.unitcode" + /> + </el-select> + </el-form-item> + <el-form-item label="閿�鍞父鐢ㄥ崟浣�"> + <el-select + v-model="dialogForm.idUnitBySale" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :disabled="dialogForm.unittypcode==='1'" + :popper-append-to-body="false" + > + <el-option + v-for="item in idUnitBvStockArr" + :key="item.unitcode" + :label="item.unitname" + :value="item.unitcode" + /> + </el-select> + </el-form-item> + <el-form-item label="鐢熶骇甯哥敤鍗曚綅"> + <el-select + v-model="dialogForm.idunitbymanufacture" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :disabled="dialogForm.unittypcode==='1'" + :popper-append-to-body="false" + > + <el-option + v-for="item in idUnitBvStockArr" + :key="item.unitcode" + :label="item.unitname" + :value="item.unitcode" + /> + </el-select> + </el-form-item> + <el-divider content-position="left">瀛樿揣灞炴��</el-divider> + <el-checkbox v-model="dialogForm.isPurchase" style="margin-left: 70px;">澶栬喘</el-checkbox> + <el-checkbox v-model="dialogForm.isSale">閿�鍞�</el-checkbox> + <el-checkbox v-model="dialogForm.isMadeSelf">鑷埗</el-checkbox> + <el-checkbox v-model="dialogForm.isMaterial">鐢熶骇娑堣��</el-checkbox> + <el-checkbox v-model="dialogForm.isMadeRequest">濮斿</el-checkbox> + <!-- <el-divider content-position="left">瀛樿揣鎻忚堪</el-divider>--> + <!-- <el-form-item label="瀛樿揣鎻忚堪">--> + <!-- <el-input--> + <!-- v-model="dialogForm.username"--> + <!-- type="textarea"--> + <!-- :autosize="{ minRows: 2, maxRows: 4}"--> + <!-- style="width: 490px;"--> + <!-- />--> + <!-- </el-form-item>--> + + </el-form> + + <span slot="footer" class="dialog-footer"> + <div class="footerButton"> + <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button> + <el-button + v-waves + type="primary" + :loading="$store.state.app.buttonIsDisabled" + :disabled="$store.state.app.buttonIsDisabled" + @click="dialogVisibleConfirm" + >纭� 瀹�</el-button> + </div> + </span> + </el-dialog> + + <!-- 宸ヨ壓璺嚎瀵硅瘽妗�--> + <el-dialog + v-el-drag-dialog + :close-on-click-modal="false" + title="鍏宠仈宸ヨ壓璺嚎" + :visible.sync="dialogVisibleRoute" + width="800px" + top="5vh" + class="dialogVisibleRoute" + @closed="handleCloseRoute" + @close="handleCloseRoute" + > + <div> + <i class="el-icon-s-comment" :style="{color:$store.state.settings.theme}" /> 浜у搧鍚嶇О锛歿{ + dialogFormRoute.projectName + }} + </div> + <el-divider /> + <div style="margin-bottom: 10px"> + <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 宸ヨ壓璺嚎闆嗗悎 + </div> + + <div class="myCheckboxGroup"> + <div + v-for="item in dialogFormRoute.routeOperationArr" + :key="item.code" + :style="{border:item.isSelected1?'1px solid '+$store.state.settings.theme:'1px solid #eee'}" + class="myCheckbox" + @click="myCheckboxClick(item)" + > + <!-- <input--> + <!-- class="myCheckboxInput"--> + <!-- type="checkbox"--> + <!-- :value="item.code"--> + <!-- :name="item.name"--> + <!-- :style="{color:item.isSelected2?'#42b983':'#fff'}"--> + <!-- @click="myCheckboxInputClick(item)"--> + <!-- >{{ item.name }}--> + <!-- 鐖跺瓙鐐瑰嚮浜嬩欢涓嶅奖鍝�--> + <!-- onClick="event.cancelBubble = true"--> + <el-checkbox + :key="item.code" + v-model="item.isSelected2" + class="myCheckboxInput" + :value="item.code" + :name="item.name" + :label="item.name" + :checked="item.isSelected2" + @change="myCheckboxInputClick(item)" + /> + <div class="myCheckboxInputLabel">{{ item.name }}</div> + + </div> + </div> + + <el-divider /> + <div> + <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 榛樿宸ヨ壓璺嚎 + </div> + <div style="margin-top: 20px"> + <el-select + v-model="defaultroute_code" + filterable + style="width: 200px;" + placeholder="璇烽�夋嫨" + class="defaultroute_code" + > + <el-option + v-for="item in defaultroute_codeArr" + :key="item.code" + :label="item.name" + :value="item.code" + /> + </el-select> + </div> + <el-divider /> + <div style="margin-bottom: 10px"> + <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 宸ュ簭鍒楄〃 + </div> + <div style="overflow-y: scroll"> + <el-table + ref="projectTableData" + :data="projectTableData" + border + height="280" + :row-class-name="tableRowClassName" + highlight-current-row + :header-cell-style="this.$headerCellStyle" + :cell-style="this.$cellStyle" + > + <el-table-column + prop="seq" + width="100" + label="宸ュ簭搴忓彿" + fixed + /> + <el-table-column + prop="stepcode" + show-tooltip-when-overflow + label="宸ュ簭缂栫爜" + /> + <el-table-column + prop="stepname" + label="宸ュ簭鍚嶇О" + show-tooltip-when-overflow + /> + <el-table-column + prop="enable" + label="鍚敤鐘舵��" + show-tooltip-when-overflow + fixed="right" + > + <template slot-scope="{row}"> + <div v-if="row.enable==='Y'"> + <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" /> + 鏄� + </div> + <div v-if="row.enable==='N'"> + <i class="el-icon-info" style="margin-right: 2px" /> + 鍚� + </div> + </template> + </el-table-column> + </el-table> + </div> + <span slot="footer" class="dialog-footer"> + <div class="footerButton"> + <el-button v-waves @click="routeDialogVisibleCancel">鍙� 娑�</el-button> + <el-button + v-waves + type="primary" + :loading="$store.state.app.buttonIsDisabled" + :disabled="$store.state.app.buttonIsDisabled" + @click="routeDialogVisibleConfirm" + >纭� 瀹�</el-button> + </div> + </span> + </el-dialog> + + <!-- 鎸夊伐鑹鸿蛋 宸ュ簭瀵硅瘽妗�--> + <el-dialog + v-el-drag-dialog + :close-on-click-modal="false" + title="鍏宠仈宸ュ簭" + :visible.sync="dialogVisibleStep" + width="800px" + top="15vh" + class="dialogVisibleStep" + @closed="handleCloseStep" + @close="handleCloseStep" + > + + <div style="display: flex;align-items: center"> + <div style="font-weight: bolder">宸ュ簭閫夋嫨锛�</div> + <el-drag-select + v-model="stepSelectedValue" + style="width:570px;" + multiple + placeholder="璇烽�夋嫨鐩稿搴斿伐搴�" + > + <!-- :disabled="!(dialogForm.mesorderstus==='NEW'||dialogForm.mesorderstus==='ALLO')"--> + <el-option + v-for="item in stepSelectArr" + :key="item.stepcode" + :label="item.stepname" + :value="item.stepcode" + /> + </el-drag-select> + </div> + + <el-table + ref="stepTableDataRef" + :data="stepTableData" + border + :row-class-name="tableRowClassName" + height="300" + style="width: 100%;margin-top: 15px;" + highlight-current-row + :header-cell-style="this.$headerCellStyle" + :cell-style="this.$cellStyle" + row-key="stepcode" + > + <el-table-column + type="index" + label="搴忓彿" + width="50" + /> + <el-table-column + prop="stepcode" + show-tooltip-when-overflow + label="宸ュ簭缂栫爜" + /> + <el-table-column + prop="stepname" + label="宸ュ簭鍚嶇О" + show-tooltip-when-overflow + /> + <!-- <el-table-column--> + <!-- prop="stepprice"--> + <!-- label="鐢熶骇鍗曚环"--> + <!-- show-tooltip-when-overflow--> + <!-- >--> + <!-- <template slot-scope="{row}">--> + <!-- <el-input--> + <!-- v-model="row.stepprice"--> + <!-- placeholder="璇疯緭鍏ュ伐搴忓崟浠�"--> + <!-- oninput="value=value.replace(/[^0-9.]/g,'')"--> + <!-- style="width: 100%"--> + <!-- @click.stop=""--> + <!-- />--> + <!-- </template>--> + <!-- </el-table-column>--> + <el-table-column + label="鎿嶄綔" + width="120" + > + <template slot-scope="{row}"> + <div class="operationClass"> + <!-- <el-tooltip class="item" effect="dark" content="绉诲姩" placement="top">--> + <i + class="el-icon-rank" + :style="{color:$store.state.settings.theme}" + style="cursor: move" + /> + <!-- </el-tooltip>--> + <!-- @click="edit('edit',row)"--> + + <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top"> + <i + class="el-icon-delete" + :style="{color:$store.state.settings.theme}" + style="margin-left: 15px;" + @click="stepDel(row)" + /> + </el-tooltip> + </div> + </template> + </el-table-column> + </el-table> + + <span slot="footer" class="dialog-footer"> + <div class="footerButton"> + <el-button v-waves @click="stepDialogVisibleCancel">鍙� 娑�</el-button> + <el-button + v-waves + type="primary" + :loading="$store.state.app.buttonIsDisabled" + :disabled="$store.state.app.buttonIsDisabled" + @click="stepDialogVisibleConfirm" + >纭� 瀹�</el-button> + </div> + </span> + </el-dialog> + </div> +</template> + +<script> +import waves from '@/directive/waves' +import Pagination from '@/components/Pagination' +import { validateCode } from '@/utils/global' +import elDragDialog from '@/directive/el-drag-dialog' +import { + SaveTMaterielFile, + TMaterielAddUpdate, + TMaterielClassTree, + TMaterielClassTreeAddUpdate, + TMaterielClassTreeDelete, + TMaterielData, TMaterielDelete, TMaterielFileAssociationRoute +} from '@/api/ProductModel' +import arrayToTree from 'array-to-tree' +import { StepData, UnitSerch, WareHouse } from '@/api/GeneralBasicData' +import { SaveSearchMateriel_Info } from '@/api/ErpSyncMes' +import $ from 'jquery' +import Sortable from 'sortablejs' +import ElDragSelect from '@/components/DragSelect' + +export default { + name: 'InventoryList', + directives: { waves, elDragDialog }, + components: { + Pagination, ElDragSelect + }, + data() { + return { + mouseHoverType: 'mouseout', + isExpandForm: false, + mainHeight: 0, + tableHeight: 0, + operation: '', + + treeLeft: [ + { + code: '-1', + name: '鍏ㄩ儴' + } + ], // 宸︿晶鏍� + treeLeftArr: [], + defaultPropsLeft: { + children: 'children', + label: 'name' + }, + + tableData: [], + form: { + inventoryclasscode: '', + partcode: '', + partname: '', + partspec: '', + page: 1, + rows: 20, + prop: 'lm_date', // 鎺掑簭瀛楁 + order: 'desc' // 鎺掑簭瀛楁 + }, + total: 0, + dialogClassVisible: false, + dialogClassForm: { + data_sources: '', // 鏁版嵁鏉ユ簮:ERP/MES + inventoryclasscode: '', // 瀛樿揣鍒嗙被缂栫爜 + inventoryclassname: '', // 瀛樿揣鍒嗙被鍚嶇О + parentcode: '', // 涓婄骇鍒嗙被缂栫爜 + OperType: ''// OperType + }, + classArr: [], + dialogClassFormRules: { + inventoryclasscode: [ + { required: true, validator: validateCode, trigger: ['blur', 'change'] } + ], + inventoryclassname: [ + { required: true, message: '璇疯緭瀛樿揣绫诲瀷鍚嶇О', trigger: ['blur', 'change'] } + ] + }, + + dialogVisible: false, + dialogForm: { + data_sources: 'MES', // 鏁版嵁鏉ユ簮锛汦RP/MES + partcode: '', // 瀛樿揣缂栫爜 + partname: '', // 瀛樿揣鍚嶇О + partspec: '', // 瑙勬牸鍨嬪彿 + inventoryclasscode: '', // 瀛樿揣绫诲瀷缂栫爜 + unittypcode: '1', // 璁¢噺鏂瑰紡(0:澶氳閲�,1:鍗曡閲�) + unitcode: '', // 璁¢噺鍗曚綅缂栫爜/璁¢噺鍗曚綅缁勭紪鐮� + unitsubcode: '', // 璁¢噺鍗曚綅缁勫瓙椤圭紪鐮侊紙瀵瑰簲鐨勬槸 涓昏閲忓崟浣嶇紪鐮侊級 + idSubUnitByReport: '', // 鎶ヨ〃杈呭崟浣嶇紪鐮� + idUnitByStock: '', // 搴撳瓨甯哥敤鍗曚綅缂栫爜 + idUnitByPurchase: '', // 閲囪喘甯哥敤鍗曚綅缂栫爜 + idUnitBySale: '', // 閿�鍞父鐢ㄥ崟浣嶇紪鐮� + idunitbymanufacture: '', // 鐢熶骇甯哥敤鍗曚綅 + isPurchase: false, // 鏄惁澶栬喘: 0(鍚�)1(鏄�) + isSale: false, // 鏄惁閿�鍞�:0(鍚�)1(鏄�) + isMadeSelf: false, // 鏄惁鑷埗: 0(鍚�)1(鏄�) + isMaterial: false, // 鏄惁鐢熶骇鑰楃敤: 0(鍚�)1(鏄�) + isMadeRequest: false, // 鏄惁濮斿锛�0(鍚�)1(鏄�) + idwarehouse: '', // 浠撳簱缂栫爜 + status: '0', // 浣跨敤鐘舵��: 姝e父(0)鍋滅敤(1) + OperType: '' // 鎿嶄綔绫诲瀷 + }, + dialogFormRules: { + partcode: [ + { required: true, validator: validateCode, trigger: ['blur', 'change'] } + ], + partname: [ + { required: true, message: '璇疯緭鍏ョ粍缁囧悕绉�', trigger: ['blur', 'change'] } + ], + unitcode: [ + { required: true, message: '璇烽�夋嫨璁¢噺鍗曚綅(缁�)', trigger: ['blur', 'change'] } + ], + inventoryclasscode: [ + { required: true, message: '璇烽�夋嫨鎵�灞炲崟浣�', trigger: ['blur', 'change'] } + ] + }, + unittypcodeArr: [ + { code: '1', name: '鍗曡閲�' }, + { code: '0', name: '澶氳閲�' } + ], + unitcodeSingleArr: [], + unitcodeGroupArr: [], + idSubUnitByReportArr: [], + idUnitBvStockArr: [], + idwarehouseArr: [], + + // 宸ヨ壓 + dialogVisibleRoute: false, + dialogFormRoute: { + projectName: '', // 浜у搧鍚嶇О + projectCode: '', // 浜у搧浠g爜 + routeOperationArr: [] // 宸ヨ壓璺嚎闆嗗悎 + // routeOperationSelectedArr: [] // 宸ヨ壓璺嚎閫変腑闆嗗悎鏁扮粍 + }, + defaultroute_code: '', // 榛樿宸ヨ壓璺嚎閫変腑鍊� + defaultroute_codeArr: '', // 榛樿宸ヨ壓璺嚎鏁扮粍 + projectTableData: [], // 宸ュ簭鍒楄〃 + mesSetting: JSON.parse(localStorage.getItem('mesSetting')), + + // 鎸夊伐搴忚蛋 + dialogVisibleStep: false, + stepTableData: [], + sortable: null, + stepSelectArr: [], // 宸ュ簭涓嬫媺鏁版嵁 + stepSelectedValue: [] // 宸ュ簭涓嬫媺閫変腑鍊� + } + }, + watch: { + 'stepSelectedValue': { + // deep: true, + handler: function(val) { + // do something with the new and old value of stepSelectedValue + console.log(val, 1) + const arr = JSON.parse(JSON.stringify(this.stepTableData)) + const arrStepcode = arr.map(i => i.stepcode) + this.stepTableData = [] + val.forEach(i => { + this.stepTableData.push( + { + stepcode: i, + stepname: this.stepSelectArr.find(j => j.stepcode === i).stepname + // stepprice: arrStepcode.includes(i) ? arr.find(j => j.stepcode === i).stepprice : 0 + } + ) + }) + } + } + }, + + activated() { + window.addEventListener('resize', this.getHeight) + this.getHeight() + this.getTMaterielClassTree() + this.getSelectApi() + }, + created() { + + }, + mounted() { + window.addEventListener('resize', this.getHeight) + this.getHeight() + + this.getTMaterielClassTree() + this.getSelectApi() + }, + methods: { + // 宸ヨ壓鐐瑰嚮 ,鎸夊伐搴忚蛋 + async routeClick2(row) { + this.dialogVisibleStep = true + this.dialogFormRoute.projectCode = row.partcode + + const res = await TMaterielFileAssociationRoute({ partcode: this.dialogFormRoute.projectCode }) + if (res.code === '200' && res.data.length > 0) { + this.stepSelectedValue = res.data.map(i => i.step_code) + } + + // 鎷栧姩琛ㄦ牸 + this.$nextTick(() => { + this.setSort() + }) + }, + + stepDialogVisibleCancel() { + this.dialogVisibleStep = false + }, + + async stepDialogVisibleConfirm() { + if (this.stepSelectedValue.length === 0) { + return this.$message.info('宸ュ簭鑷冲皯瑕佹湁涓�閬擄紒') + } + const children = [] + this.stepSelectedValue.forEach((item, index) => { + const t = this.stepSelectArr.find(i => i.stepcode === item) + children.push({ + 'code': t.stepcode, + 'name': t.stepname, + 'seq': index + 1, + 'isbott': index === 0 ? 'Y' : 'N', + 'isend': index === this.stepSelectedValue.length - 1 ? 'Y' : 'N' + }) + }) + const data = [ + { + 'partcode': this.dialogFormRoute.projectCode, + 'defaultroute_code': '', + 'children': children + } + ] + this.$store.state.app.buttonIsDisabled = true + const res = await SaveTMaterielFile(data) + if (res.code === '200') { + this.dialogVisibleStep = false + this.$message.success('淇濆瓨鎴愬姛锛�') + await this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) + this.$store.state.app.buttonIsDisabled = false + } + }, + // 宸ュ簭鍒犻櫎 + stepDel(row) { + const index = this.stepSelectedValue.findIndex(i => i === row.stepcode) + this.stepSelectedValue.splice(index, 1) + }, + handleCloseStep() { + this.stepTableData = [] + this.sortable = null + this.stepSelectedValue = [] + }, + + setSort() { + const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0] + this.sortable = Sortable.create(el, { + ghostClass: 'sortable-ghost', // Class name for the drop placeholder, + setData: function(dataTransfer) { + // to avoid Firefox bug + // Detail see : https://github.com/RubaXa/Sortable/issues/1012 + dataTransfer.setData('Text', '') + }, + onEnd: evt => { + const targetRow = this.stepTableData.splice(evt.oldIndex, 1)[0] + this.stepTableData.splice(evt.newIndex, 0, targetRow) + + this.stepSelectedValue = this.stepTableData.map(i => i.stepcode) + // for show the changes, you can delete in you code + // const tempIndex = this.newList.splice(evt.oldIndex, 1)[0] + // this.newList.splice(evt.newIndex, 0, tempIndex) + } + }) + }, + + tableRowClassName({ row, rowIndex }) { + return 'custom-row' + }, + + /* 鐐瑰嚮鍏宠仈宸ヨ壓璺嚎妯″潡*/ + // 宸ヨ壓璺嚎鐐瑰嚮 + routeClick(row) { + const loading = this.$loading({ + lock: true, + text: '姝e湪鍔犺浇鏁版嵁锛岃绋嶇瓑...', + spinner: 'el-icon-loading', + customClass: 'osloading', + background: 'rgba(0, 0, 0, 0.7)' + }) + + this.defaultroute_code = row.default_route + this.dialogFormRoute.projectCode = row.partcode + this.dialogFormRoute.projectName = row.partname + + TMaterielFileAssociationRoute({ partcode: this.dialogFormRoute.projectCode }).then(res => { + if (res.code === '200') { + setTimeout(() => { + loading.close() + this.dialogVisibleRoute = true + this.dialogFormRoute.routeOperationArr = res.data + // let waitFlag = false// 鍥炴樉绛夊緟鏄惁鏀捐 + + this.dialogFormRoute.routeOperationArr.forEach((item, index) => { + item.isSelected1 = false + item.isSelected2 = false + if (index === 0) { + item.isSelected1 = true + this.projectTableData = item.Data + } + if (item.flag === 'Y') { + item.isSelected2 = true + this.$nextTick(() => { + $('input:checkbox').eq(index).prop('checked', true) + }) + + // const interval = setInterval(() => { + // if ($('input:checkbox').length > 0) { + // waitFlag = true + // } + // if (waitFlag) { + // clearInterval(interval) + // this.$nextTick(() => { + // $('input:checkbox').eq(index).prop('checked', true) + // }) + // } + // }, 100) + } + }) + + this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.flag === 'Y') + }, 1000) + } else { + loading.close() + } + }) + }, + // 瀵硅瘽妗嗗叧闂� + handleCloseRoute() { + this.dialogFormRoute.routeOperationArr = [] + this.defaultroute_codeArr = [] + }, + // 鍙栨秷 + routeDialogVisibleCancel() { + this.dialogVisibleRoute = false + }, + // 纭畾 + async routeDialogVisibleConfirm() { + if (!this.defaultroute_code || this.defaultroute_code === 'null') { + return this.$message.info('榛樿宸ヨ壓璺嚎涓嶈兘涓虹┖锛�') + } + + // 鎻愪氦鏍煎紡 + const data = [] + this.dialogFormRoute.routeOperationArr.forEach(item => { + if (item.isSelected2) { + data.push({ code: item.code, name: item.name }) + } + }) + + const D = [{ + 'partcode': this.dialogFormRoute.projectCode, + 'defaultroute_code': this.defaultroute_code, + 'children': data + }] + + this.$store.state.app.buttonIsDisabled = true + const res = await SaveTMaterielFile(D) + if (res.code === '200') { + this.dialogVisibleRoute = false + this.$message.success('淇濆瓨鎴愬姛锛�') + await this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) + this.$store.state.app.buttonIsDisabled = false + } + }, + // 澶х洅瀛愮偣鍑讳簨浠� + myCheckboxClick(val) { + console.log(val, 1) + this.dialogFormRoute.routeOperationArr.forEach(item => { + item.isSelected1 = val.code === item.code + }) + + this.projectTableData = val.Data + }, + // 灏忕洅瀛愮偣鍑讳簨浠� + myCheckboxInputClick(val) { + // console.log(val, 2) + val.isSelected2 = !!val.isSelected2 + + this.dialogFormRoute.routeOperationArr.forEach((item, index) => { + if (val.code === item.code) { + item.flag = !item.flag + } + }) + if (val.code === this.defaultroute_code) { + this.defaultroute_code = '' + } + this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.isSelected2) + }, + + async getSelectApi() { + const { data: res } = await UnitSerch({ tunittype: 'M' }) + this.unitcodeGroupArr = res + + const { data: res2 } = await UnitSerch({ tunittype: 'S' }) + this.unitcodeSingleArr = res2 + + const { data: res3 } = await WareHouse() + this.idwarehouseArr = res3 + + // 鑾峰彇宸ュ簭 + const { data: res4 } = await StepData() + this.stepSelectArr = res4 + }, + + async getTMaterielClassTree() { + const res = await TMaterielClassTree() + res.data.forEach(i => { + i.idparent = i.idparent ? i.idparent : '-1' + }) + this.treeLeftArr = res.data + this.treeLeftArr.forEach(e => { + e.name = e.code + ' ' + e.name + }) + this.treeLeft = arrayToTree(this.treeLeft.concat(res.data), { + parentProperty: 'idparent', + customID: 'code', + childrenProperty: 'children' + }) + + this.$nextTick(() => { + this.$refs.treeLeftRef.setCurrentKey('-1') + this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) + }) + }, + async getTMaterielData(node) { + const result = this.getChildrenCodeMethod(node, []) + if (result.includes('-1')) { + result.shift() + } + this.form.inventoryclasscode = result.join(',') + const res = await TMaterielData(this.form) + + this.tableData = res.data + this.total = res.count + }, + + // 鑾峰彇椤甸潰楂樺害 + getHeight() { + this.$nextTick(() => { + this.mainHeight = window.innerHeight - 85 + this.tableHeight = this.mainHeight - 280 + this.$refs.tableDataRef.doLayout() + }) + }, + sortChange({ column, prop, order }) { + if (order === 'descending') { + order = 'desc' + } else if (order === 'ascending') { + order = 'asc' + } else { + order = 'desc' + } + this.form.order = order + this.form.prop = prop + this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) + }, + // 鏂板鎸夐挳 + add(operation) { + this.operation = operation + this.dialogVisible = true + this.dialogForm.OperType = 'Add' + }, + // 淇敼鎸夐挳 + async edit(operation, row) { + this.operation = operation + this.dialogVisible = true + this.dialogForm.OperType = 'Update' + + this.$nextTick(() => { + this.dialogForm.data_sources = row.data_sources + this.dialogForm.partcode = row.partcode + this.dialogForm.partname = row.partname + this.dialogForm.partspec = row.partspec + this.dialogForm.inventoryclasscode = row.idinventoryclasscode + this.dialogForm.unittypcode = row.isSingleUnit + // 璁¢噺鏂瑰紡(0:澶氳閲�,1:鍗曡閲�) + if (this.dialogForm.unittypcode === '1') { + this.dialogForm.unitcode = row.idunitcode + this.dialogForm.unitsubcode = '' + this.dialogForm.idSubUnitByReport = '' + const unitname = this.unitcodeSingleArr.find(i => i.unitcode === this.dialogForm.unitcode).unitname + + this.dialogForm.idUnitByStock = unitname + this.dialogForm.idUnitByPurchase = unitname + this.dialogForm.idUnitBySale = unitname + this.dialogForm.idunitbymanufacture = unitname + } + + if (this.dialogForm.unittypcode === '0') { + this.dialogForm.unitcode = row.idunitgroupcode + + const t = this.unitcodeGroupArr.find(i => i.unitcode === this.dialogForm.unitcode).children + + this.idSubUnitByReportArr = t.filter(i => i.isMainUnit !== '1') + this.idUnitBvStockArr = t + + const mainUnitCode = t.find(i => i.isMainUnit === '1').unitcode + this.dialogForm.unitsubcode = mainUnitCode + this.dialogForm.idSubUnitByReport = this.idSubUnitByReportArr[0].unitcode + + this.dialogForm.idUnitByStock = mainUnitCode + this.dialogForm.idUnitByPurchase = mainUnitCode + this.dialogForm.idUnitBySale = mainUnitCode + this.dialogForm.idunitbymanufacture = mainUnitCode + } + + this.dialogForm.isPurchase = row.isPurchase === '1' + this.dialogForm.isSale = row.isSale === '1' + this.dialogForm.isMadeSelf = row.isMadeSelf === '1' + this.dialogForm.isMaterial = row.isMaterial === '1' + this.dialogForm.isMadeRequest = row.isMadeRequest === '1' + + this.dialogForm.idwarehouse = row.idwarehousecode + this.dialogForm.status = row.status + }) + }, + del(row) { + this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + TMaterielDelete({ partcode: row.partcode, data_sources: row.data_sources }).then(res => { + if (res.code === '200') { + this.$notify.success('鍒犻櫎鎴愬姛!') + this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) + } + }) + }).catch(() => { + this.$notify.info('宸插彇娑堝垹闄�') + }) + }, + reset() { + this.form.inventoryclasscode = '' + this.form.partcode = '' + this.form.partname = '' + this.form.partspec = '' + this.$refs.treeLeftRef.setCurrentKey('-1') + this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) + }, + // 瀵硅瘽妗嗗叧闂簨浠� + handleClose() { + this.dialogForm.data_sources = 'MES' + this.dialogForm.partcode = '' + this.dialogForm.partname = '' + this.dialogForm.partspec = '' + this.dialogForm.inventoryclasscode = '' + this.dialogForm.unittypcode = '1' + this.dialogForm.unitcode = '' + this.dialogForm.unitsubcode = '' + this.dialogForm.idSubUnitByReport = '' + this.dialogForm.idUnitByStock = '' + this.dialogForm.idUnitByPurchase = '' + this.dialogForm.idUnitBySale = '' + this.dialogForm.idunitbymanufacture = '' + this.dialogForm.isPurchase = false + this.dialogForm.isSale = false + this.dialogForm.isMadeSelf = false + this.dialogForm.isMaterial = false + this.dialogForm.isMadeRequest = false + this.dialogForm.idwarehouse = '' + this.dialogForm.status = '0' + this.$refs.dialogForm.clearValidate() + }, + // 瀵硅瘽妗嗗彇娑� + dialogVisibleCancel() { + this.dialogVisible = false + }, + // 瀵硅瘽妗嗙‘璁� + dialogVisibleConfirm() { + this.$refs.dialogForm.validate(valid => { + if (valid) { + if (!(this.dialogForm.isPurchase || this.dialogForm.isSale || this.dialogForm.isMadeSelf || this.dialogForm.isMaterial || this.dialogForm.isMadeRequest)) { + return this.$message.info('瀛樿揣灞炴�т笉鑳戒负绌猴紒') + } + this.dialogForm.isPurchase = this.dialogForm.isPurchase ? '1' : '0' + this.dialogForm.isSale = this.dialogForm.isSale ? '1' : '0' + this.dialogForm.isMadeSelf = this.dialogForm.isMadeSelf ? '1' : '0' + this.dialogForm.isMaterial = this.dialogForm.isMaterial ? '1' : '0' + this.dialogForm.isMadeRequest = this.dialogForm.isMadeRequest ? '1' : '0' + // console.log(JSON.parse(JSON.stringify(this.dialogForm)), 1) + + if (this.dialogForm.unittypcode === '1') { + this.dialogForm.idUnitByStock = this.dialogForm.unitcode + this.dialogForm.idUnitByPurchase = this.dialogForm.unitcode + this.dialogForm.idUnitBySale = this.dialogForm.unitcode + this.dialogForm.idunitbymanufacture = this.dialogForm.unitcode + } + this.$store.state.app.buttonIsDisabled = true + TMaterielAddUpdate(this.dialogForm).then(res => { + if (res.code === '200') { + this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�') + this.dialogVisible = false + this.$store.state.app.buttonIsDisabled = false + this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) + } else { + this.$store.state.app.buttonIsDisabled = false + this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�') + } + }) + } + }) + }, + + // 閫掑綊鍙栧瓙闆嗙殑鎵�鏈塩ode + getChildrenCodeMethod(node, result) { + result.push(node.code) + if (node.children && node.children.length > 0) { + node.children.forEach(i => { + this.getChildrenCodeMethod(i, result) + }) + } + return result + }, + + treeEditClick(node, data, operation) { + this.dialogClassForm.data_sources = data.data_sources + this.dialogClassForm.inventoryclasscode = data.code + this.dialogClassForm.inventoryclassname = data.name.split(' ')[1] + this.dialogClassForm.parentcode = data.idparent === '-1' ? '' : data.idparent + this.dialogClassForm.OperType = 'Update' + this.operation = operation + this.dialogClassVisible = true + }, + treeDeleteClick(node, data) { + this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + const result = this.getChildrenCodeMethod(data, []) + TMaterielClassTreeDelete({ inventoryclasscode: result.join(',') }).then(res => { + if (res.code === '200') { + this.$notify.success('鍒犻櫎鎴愬姛!') + this.getTMaterielClassTree() + } + }) + }).catch(() => { + this.$notify.info('宸插彇娑堝垹闄�') + }) + }, + treeAddClick(operation) { + this.operation = operation + this.dialogClassVisible = true + this.dialogClassForm.OperType = 'Add' + this.dialogClassForm.data_sources = 'MES' + }, + + handleClassClose() { + this.dialogClassForm.data_sources = '' + this.dialogClassForm.inventoryclasscode = '' + this.dialogClassForm.inventoryclassname = '' + this.dialogClassForm.parentcode = '' + this.dialogClassForm.OperType = '' + this.$refs.dialogClassForm.clearValidate() + }, + dialogVisibleClassCancel() { + this.dialogClassVisible = false + }, + dialogVisibleClassConfirm() { + this.$refs.dialogClassForm.validate(valid => { + if (valid) { + TMaterielClassTreeAddUpdate(this.dialogClassForm).then(res => { + if (res.code === '200') { + this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�') + this.dialogClassVisible = false + this.$store.state.app.buttonIsDisabled = false + this.getTMaterielClassTree() + } else { + this.$store.state.app.buttonIsDisabled = false + this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�') + } + }) + } + }) + }, + unittypcodeChange(val) { + console.log(val) + + this.dialogForm.unitcode = '' + this.dialogForm.unitsubcode = '' + this.dialogForm.idSubUnitByReport = '' + this.dialogForm.idUnitByStock = '' + this.dialogForm.idUnitByPurchase = '' + this.dialogForm.idUnitBySale = '' + this.dialogForm.idunitbymanufacture = '' + // this.$refs.dialogForm.clearValidate() + // this.$forceUpdate() + }, + unitcodeChange(val, type) { + console.log(val) + + if (type === '1') { + // this.dialogForm.unitcode = val + this.dialogForm.unitsubcode = '' + this.dialogForm.idSubUnitByReport = '' + + const unitname = this.unitcodeSingleArr.find(i => i.unitcode === val).unitname + + this.dialogForm.idUnitByStock = unitname + this.dialogForm.idUnitByPurchase = unitname + this.dialogForm.idUnitBySale = unitname + this.dialogForm.idunitbymanufacture = unitname + } + + if (type === '0') { + const t = this.unitcodeGroupArr.find(i => i.unitcode === val).children + + this.idSubUnitByReportArr = t.filter(i => i.isMainUnit !== '1') + this.idUnitBvStockArr = t + + const mainUnitCode = t.find(i => i.isMainUnit === '1').unitcode + this.dialogForm.unitsubcode = mainUnitCode + this.dialogForm.idSubUnitByReport = this.idSubUnitByReportArr[0].unitcode + + this.dialogForm.idUnitByStock = mainUnitCode + this.dialogForm.idUnitByPurchase = mainUnitCode + this.dialogForm.idUnitBySale = mainUnitCode + this.dialogForm.idunitbymanufacture = mainUnitCode + } + }, + // 鍚屾ERP + syncERP() { + const loading = this.$loading({ + lock: true, + text: '姝e湪鍚屾ERP锛岃绋嶇瓑...', + spinner: 'el-icon-loading', + customClass: 'osloading', + background: 'rgba(0, 0, 0, 0.7)' + }) + + SaveSearchMateriel_Info().then(res => { + if (res.code === '200') { + setTimeout(() => { + this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode()) + this.getTMaterielClassTree() + loading.close() + this.$notify.success('鍚屾鎴愬姛锛�') + }, 2000) + } + // else if (res.code === '300') { + // setTimeout(() => { + // loading.close() + // this.$message.error('鍚屾澶辫触锛�') + // }, 10000) + // } + }).catch(e => { + loading.close() + }) + } + } +} +</script> + +<style scoped lang="scss"> +$main_color: #42b983; +.custom-tree-node { + flex: 1; + display: flex; + align-items: center; + justify-content: space-between; + font-size: 14px; + padding-right: 8px; +} + +//::v-deep .el-checkbox__label { +// width: 55px; +//} +// +.el-icon-plus:hover, .el-icon-edit:hover, .el-icon-delete:hover { + color: #000 !important; +} + +.dialogVisibleRoute { + .myCheckboxGroup { + display: flex; + flex-wrap: wrap; + + .myCheckbox { + //border: 1px solid $main_color; + border: 1px solid #eee; + display: flex; + min-width: 100px; + padding: 10px; + margin: 10px 30px 0 0; + border-radius: 5px; + cursor: default; + position: relative; + + .myCheckboxInput { + margin: 1px 5px 0 0; + cursor: pointer; + } + + .myCheckboxInputLabel { + position: absolute; + left: 29px; + padding: 5px; + top: 6px; + color: transparent; + } + + } + + //.myCheckbox{ + // border: 1px solid $main_color; + //} + + input[type=checkbox] { + cursor: pointer; + position: relative; + width: 14px; + height: 14px; + font-size: 14px; + } + + input[type=checkbox]::after { + position: absolute; + top: 0; + //color: rgb(130, 35, 35); + color: $main_color; + width: 14px; + height: 14px; + display: inline-block; + visibility: visible; + padding-left: 0px; + text-align: center; + content: ' '; + border-radius: 3px + } + + input[type=checkbox]:checked::after { + //content: "鉁�"; + content: "鈭�"; + color: #fff; + font-size: 12px; + font-weight: bold; + background-color: $main_color; + } + } +} + +.defaultroute_code ::v-deep .el-input__suffix-inner { + display: flex; + align-items: center; + justify-content: center; + margin-top: -3px; +} + +::v-deep .el-select__caret { + display: flex !important; + justify-content: center !important; + align-items: center !important; +} + +</style> -- Gitblit v1.9.3