| | |
| | | <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 |
| | | 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">同步存货档案</el-button> |
| | | </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="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> |
| | |
| | | > |
| | | <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 |
| | | v-if="row.is_retdproc==='Y'" |
| | | :style="{color:$store.state.settings.theme}" |
| | | :style="{color:row.is_retdproc==='Y'?$store.state.settings.theme:`rgb(180 ,181, 185)`,cursor: 'pointer'}" |
| | | class="el-icon-share" |
| | | style="cursor: pointer" |
| | | @click="routeClick(row)" |
| | | /> |
| | | <i |
| | | v-if="row.is_retdproc==='N'" |
| | | style="color:rgb(180 ,181, 185);cursor: pointer" |
| | | class="el-icon-share" |
| | | @click="routeClick(row)" |
| | | @click="mesSetting.route?routeClick(row):routeClick2(row)" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | :visible.sync="dialogVisibleRoute" |
| | | width="800px" |
| | | top="5vh" |
| | | |
| | | class="dialogVisibleRoute" |
| | | @closed="handleCloseRoute" |
| | | @close="handleCloseRoute" |
| | |
| | | </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> |
| | | |
| | |
| | | TMaterielData, TMaterielDelete, TMaterielFileAssociationRoute |
| | | } from '@/api/ProductModel' |
| | | import arrayToTree from 'array-to-tree' |
| | | import { UnitSerch, WareHouse } from '@/api/GeneralBasicData' |
| | | 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: 'RoleList', |
| | | directives: { waves, elDragDialog }, |
| | | components: { |
| | | Pagination |
| | | Pagination, ElDragSelect |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | }, |
| | | defaultroute_code: '', // 默认工艺路线选中值 |
| | | defaultroute_codeArr: '', // 默认工艺路线数组 |
| | | projectTableData: [] // 设备列表 |
| | | 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 |
| | | } |
| | | ) |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | |
| | |
| | | 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 { data: res3 } = await WareHouse() |
| | | this.idwarehouseArr = res3 |
| | | |
| | | // 获取工序 |
| | | const { data: res4 } = await StepData() |
| | | this.stepSelectArr = res4 |
| | | }, |
| | | |
| | | async getTMaterielClassTree() { |
| | |
| | | margin-top: -3px; |
| | | } |
| | | |
| | | ::v-deep .el-select__caret { |
| | | display: flex !important; |
| | | justify-content: center !important; |
| | | align-items: center !important; |
| | | } |
| | | |
| | | </style> |