| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453 |
- <template>
- <div class="mergePutMesh-container">
- <div class="title" style="margin-left: 0px">
- <div class="item">
- <span class="font subWorkNameBox">合并挂网</span>
- </div>
- <div class="item">
- <span class="font"
- >{{ riqi }} {{ days }} {{ shijian }}</span
- >
- </div>
- <div class="item">
- <img class="top-bar__img" :src="info.avatar" />
- <span class="font">
- {{ info.name }}
- </span>
- </div>
- <div class="item">
- <div class="back" @click="$router.back()">
- <i class="icon-mes-fanhui"></i>
- <!-- <span class="font">返回</span> -->
- </div>
- </div>
- </div>
- <basic-container
- v-loading="pageLoading"
- element-loading-text="数据加载中..."
- element-loading-spinner="el-icon-loading"
- >
- <!-- 板材计划未合并挂网详情列表 -->
- <div class="unMerge-list">
- <div class="table-header-row">
- <el-button
- size="small"
- icon="el-icon-search"
- type="primary"
- class="screen"
- @click="searchDialogVisible = true"
- >筛选</el-button
- >
- <span class="table-title">板材计划未合并挂网详情列表</span>
- </div>
- <el-table
- :data="unMergeTableData"
- style="max-height: 300px"
- border
- v-loading="unMergeTableLoading"
- :header-row-style="headerRowStyle"
- >
- <el-table-column
- label="计划编号"
- align="center"
- prop="code"
- width="170"
- ></el-table-column>
- <el-table-column label="等级" align="center" width="60">
- <template slot-scope="scope">
- <span>{{ scope.row.weight | weightFilter }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="规格型号"
- align="center"
- prop="specification"
- ></el-table-column>
- <el-table-column
- prop="productName"
- width="110"
- align="center"
- label="产品名称"
- ></el-table-column>
- <!-- <el-table-column
- label="是否开槽"
- align="center"
- prop="isSlotting"
- ></el-table-column> -->
- <el-table-column label="开槽类型" align="center" prop="slottingType">
- <template slot-scope="scope">
- <span>{{
- getDictValue('开槽类型', scope.row.slottingType + '')
- }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="未排程块数"
- align="center"
- prop="noWordCount"
- ></el-table-column>
- <el-table-column
- label="计划块数"
- align="center"
- prop="blockCount"
- ></el-table-column>
- <el-table-column label="计划日期" align="center" prop="startTime">
- <template slot-scope="scope">
- <span>{{ scope.row.planDeliveryTime | subTime }}</span>
- </template>
- </el-table-column>
- <el-table-column label="交货期" align="center" prop="deliveryDate">
- <template slot-scope="scope">
- <span>{{ scope.row.reqMoldTime | subTime }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="项目名称"
- align="center"
- prop="projectName"
- ></el-table-column>
- <el-table-column label="首次排程" align="center" prop="createTime">
- <template slot-scope="scope">
- <span>{{ scope.row.createTime | subTime }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="备注"
- align="center"
- prop="remark"
- ></el-table-column>
- <el-table-column label="操作" align="center">
- <template slot-scope="scope">
- <div>
- <el-tooltip
- class="item"
- effect="dark"
- content="挂网"
- placement="bottom"
- >
- <el-button
- type="text"
- size="small"
- class="handle-btn"
- icon="el-icon-guide"
- @click="handlePutMesh(scope.row)"
- ></el-button>
- </el-tooltip>
- <el-tooltip
- class="item"
- effect="dark"
- content="删除"
- placement="bottom"
- >
- <el-button
- type="text"
- size="small"
- class="handle-btn"
- icon="el-icon-delete"
- @click="handleDeleteSchedule(scope.row)"
- ></el-button>
- </el-tooltip>
- </div>
- </template>
- </el-table-column>
- </el-table>
- <!-- 筛选弹窗 -->
- <el-dialog
- :visible.sync="searchDialogVisible"
- width="600px"
- append-to-body
- :close-on-click-modal="false"
- :close-on-press-escape="false"
- >
- <span slot="title">查询条件</span>
- <el-form class="search-form" :model="searchForm" label-width="120px">
- <el-form-item label="项目名称:">
- <el-select v-model="searchForm.projectName" :clearable="true">
- <el-option
- v-for="(item, index) in projectNameList"
- :key="index"
- :value="item"
- :label="item"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="产品名称:">
- <el-select v-model="searchForm.productName" :clearable="true">
- <el-option
- v-for="(item, index) in materialNameList"
- :key="index"
- :value="item"
- :label="item"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="规格型号:">
- <el-input
- v-model="searchForm.specification"
- placeholder="请输入规格型号"
- style="width: 200px"
- >
- </el-input>
- </el-form-item>
- <el-form-item label="是否开槽:">
- <el-select v-model="searchForm.isSlotting" :clearable="true">
- <el-option value="1" label="是"></el-option>
- <el-option value="2" label="否"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="等级:">
- <el-select v-model="searchForm.weight" :clearable="true">
- <el-option :value="1" label="A"></el-option>
- <el-option :value="2" label="B"></el-option>
- <el-option :value="3" label="C"></el-option>
- </el-select>
- </el-form-item>
- </el-form>
- <div class="searchForm-btns">
- <el-button size="small" @click="reset">重置</el-button>
- <el-button size="small" type="success" @click="search"
- >查询</el-button
- >
- </div>
- </el-dialog>
- </div>
- <!-- 合并挂网(并模)图示 -->
- <div class="merge-pic-table-title">合并组网</div>
- <div class="merge-pic-table">
- <!-- 左边图示 -->
- <div class="merge-pic">
- <div
- v-for="(item, index) in editTableData"
- :key="index"
- class="pic-item"
- :style="{
- width: Number(item.specification.split('*')[0]) / 6 + '%'
- }"
- >
- <div>{{ item.specification }}</div>
- <div>{{ item.productName }}</div>
- <div>块数:{{ item.blockCount }}</div>
- </div>
- <div
- :style="{
- width: `${(surplusLength / 6.1).toFixed(2)}` + '%'
- }"
- >
- <span>剩余:</span>
- <span>{{ surplusLength }}</span>
- <div>{{ Number((surplusLength / 6.1).toFixed(2)) }}%</div>
- </div>
- </div>
- <div style="flex: 1; display: flex">
- <!-- 中间表格 -->
- <div class="merge-table">
- <el-table
- :data="editTableData"
- border
- :header-row-style="headerRowStyle"
- >
- <el-table-column
- label="规格"
- align="center"
- width="120"
- prop="specification"
- ></el-table-column>
- <el-table-column
- prop="productName"
- width="110"
- align="center"
- label="产品名称"
- ></el-table-column>
- <el-table-column
- label="块数"
- align="center"
- prop="blockCount"
- ></el-table-column>
- <el-table-column label="等级" align="center">
- <template slot-scope="scope">
- <span>{{ scope.row.weight | weightFilter }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="剩余模数"
- align="center"
- prop="surplusModulus"
- >
- <template slot-scope="scope">
- <span>{{ getSurplusModulus(scope.row.specification) }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="附加工艺"
- align="center"
- prop="slottingType"
- >
- <template slot-scope="scope">
- <span>{{
- getDictValue('开槽类型', scope.row.slottingType + '')
- }}</span>
- </template>
- </el-table-column>
- </el-table>
- <div class="merge-btns">
- <el-button size="small" type="primary" @click="updateMerge"
- >确定</el-button
- >
- <el-button size="small" type="primary" @click="resetEditTable"
- >重置</el-button
- >
- </div>
- </div>
- <!-- 右边统计表 -->
- <div class="info-message">
- <div class="info-item">
- <span :style="headerRowStyle">班组</span>
- <span>*模数</span>
- <span>合计模数</span>
- <span>允许模数</span>
- </div>
- <div class="info-item">
- <span :style="headerRowStyle">网A</span>
- <el-input
- v-model="modulusNum1"
- placeholder="输入模数"
- oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"
- @input="modulsNumInput"
- ></el-input>
- <span>{{ modulusSum }}</span>
- <span>{{ allowModulus }}</span>
- </div>
- <div class="info-item">
- <span :style="headerRowStyle">网B</span>
- <el-input
- v-model="modulusNum2"
- oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"
- placeholder="输入模数"
- @input="modulsNumInput"
- ></el-input>
- <span>*任务日期</span>
- <el-date-picker
- v-model="taskDate"
- type="date"
- value-format="yyyy-MM-dd"
- placeholder="选择日期"
- >
- </el-date-picker>
- </div>
- </div>
- </div>
- </div>
- <!-- 任务未下发列表操作 && 下发未报工列表 -->
- <div class="task-distribution">
- <!-- 任务未下发列表 -->
- <div class="task-dist">
- <div class="task-btns">
- <div>
- <el-button
- size="small"
- @click="seletAll(taskDistTableData, 'taskDistTableData')"
- >全选</el-button
- >
- <!-- <el-button size="small">排序</el-button> -->
- <!-- <el-button size="small">筛选</el-button> -->
- </div>
- <div class="task-dist-title">组网过渡表</div>
- <div>
- <el-button
- size="small"
- @click="handleDeleteWorkOrder('取消', '0')"
- :disabled="taskDistSelection.length == 0"
- >取消</el-button
- >
- <el-button
- size="small"
- :disabled="taskDistSelection.length == 0"
- @click="taskDistribute"
- >任务下发</el-button
- >
- </div>
- </div>
- <el-table
- ref="taskDistTableData"
- :data="taskDistTableData"
- v-loading="taskDistTableLoading"
- style="max-height: 300px"
- border
- @selection-change="taskDistTableSelectionChange"
- >
- <el-table-column type="selection" width="45" align="center">
- </el-table-column>
- <el-table-column
- label="等级"
- align="center"
- width="70"
- prop="weight"
- filterable
- :filters="[
- { text: 'A', value: 1 },
- { text: 'B', value: 2 },
- { text: 'C', value: 3 }
- ]"
- :filter-method="filterWeightMethod1"
- >
- <template slot-scope="scope">
- <span>{{ scope.row.weight | weightFilter }}</span>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- width="70"
- label="高度"
- prop="height"
- filterable
- :filters="heightFilterArr1"
- :filter-method="filterHeightMethod1"
- ></el-table-column>
- <el-table-column
- label="长1+长2+长3"
- align="center"
- width="120"
- prop="length"
- ></el-table-column>
- <el-table-column
- prop="productName"
- width="110"
- align="center"
- label="产品名称"
- ></el-table-column>
- <el-table-column
- label="模数"
- align="center"
- width="70"
- prop="moCount"
- ></el-table-column>
- <el-table-column
- label="片1+片2+片3"
- align="center"
- width="120"
- prop="blockCount"
- >
- </el-table-column>
- <!-- <el-table-column label="是否开槽" align="center"></el-table-column> -->
- <el-table-column
- align="center"
- width="115"
- prop="slottingType"
- filterable
- label="开槽类型"
- :filters="[
- { text: '开槽', value: '开槽' },
- { text: '不开槽', value: '不开槽' }
- ]"
- :filter-method="filterSlottingMethod1"
- >
- <template slot-scope="scope">
- <span>{{
- getDictValue('开槽类型', scope.row.slottingType + '')
- }}</span>
- </template>
- </el-table-column>
- <el-table-column label="日期" align="center" prop="taskTime">
- <template slot-scope="scope">
- <span>{{ scope.row.taskTime }}</span>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- width="85"
- prop="teamName"
- label="班组"
- filterable
- :filters="[
- { text: '班组A', value: '班组A' },
- { text: '班组B', value: '班组B' }
- ]"
- :filter-method="filterJobMethod1"
- ></el-table-column>
- </el-table>
- </div>
- <!-- 任务下发未报工列表 -->
- <div class="work-unreport">
- <div class="unreport-btns">
- <div>
- <el-button
- size="small"
- @click="
- seletAll(workUnreportTableData, 'workUnreportTableData')
- "
- >全选</el-button
- >
- <!-- <el-button size="small">排序</el-button> -->
- <!-- <el-button size="small">筛选</el-button> -->
- </div>
- <div class="work-unreport-title">组网任务表</div>
- <div>
- <el-button
- size="small"
- @click="handleDeleteWorkOrder('中止', '1')"
- :disabled="workUnreportSelection.length == 0"
- >人工中止</el-button
- >
- <el-button
- size="small"
- :disabled="workUnreportSelection.length == 0"
- @click="handleDeleteWorkOrder('撤回', '0')"
- >撤回</el-button
- >
- </div>
- </div>
- <el-table
- :data="workUnreportTableData"
- ref="workUnreportTableData"
- style="max-height: 300px"
- v-loading="workUnreportTableLoading"
- border
- @selection-change="workUnreportTableSelectionChange"
- >
- <el-table-column type="selection" width="45" align="center">
- </el-table-column>
- <el-table-column
- label="等级"
- align="center"
- width="70"
- prop="weight"
- filterable
- :filters="[
- { text: 'A', value: 1 },
- { text: 'B', value: 2 },
- { text: 'C', value: 3 }
- ]"
- :filter-method="filterWeightMethod1"
- >
- <template slot-scope="scope">
- <span>{{ scope.row.weight | weightFilter }}</span>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- width="70"
- label="高度"
- prop="height"
- filterable
- :filters="heightFilterArr2"
- :filter-method="filterHeightMethod1"
- ></el-table-column>
- <el-table-column
- label="长1+长2+长3"
- align="center"
- prop="length"
- width="120"
- ></el-table-column>
- <el-table-column
- prop="productName"
- width="110"
- align="center"
- label="产品名称"
- ></el-table-column>
- <el-table-column
- label="余量"
- align="center"
- width="70"
- prop="allowance"
- ></el-table-column>
- <el-table-column
- label="模数"
- align="center"
- prop="moCount"
- width="120"
- ></el-table-column>
- <el-table-column
- label="片1+片2+片3"
- align="center"
- prop="blockCount"
- width="120"
- >
- <template slot-scope="scope">
- <span>{{ scope.row.blockCount }}</span>
- </template>
- </el-table-column>
- <!-- <el-table-column label="是否开槽" align="center"></el-table-column> -->
- <el-table-column
- align="center"
- width="115"
- prop="slottingType"
- filterable
- label="开槽类型"
- :filters="[
- { text: '开槽', value: '开槽' },
- { text: '不开槽', value: '不开槽' }
- ]"
- :filter-method="filterSlottingMethod1"
- >
- <template slot-scope="scope">
- <span>{{
- getDictValue('开槽类型', scope.row.slottingType + '')
- }}</span>
- </template>
- </el-table-column>
- <el-table-column label="任务日期" prop="taskTime" align="center">
- <template slot-scope="scope">
- <span>{{ scope.row.taskTime }}</span>
- </template>
- </el-table-column>
- <el-table-column label="下发日期" align="center" prop="issuedTime">
- <template slot-scope="scope">
- <span>{{ scope.row.issuedTime }}</span>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- width="85"
- prop="teamName"
- label="班组"
- filterable
- :filters="[
- { text: '班组A', value: '班组A' },
- { text: '班组B', value: '班组B' }
- ]"
- :filter-method="filterJobMethod1"
- ></el-table-column>
- </el-table>
- </div>
- </div>
- </basic-container>
- </div>
- </template>
- <script>
- import basicContainer from '@/components/basic-container/main';
- import {
- getScheduleWorkOrderByPage,
- updateMergeV2,
- getPutMeshWorkOrderByPage,
- issuedPutMeshWorkOrder,
- deletePutMeshWorkOrder,
- deleteScheduleWorkOrder
- } from '@/api/mergePutMesh/mergePutMesh';
- import { mapState } from 'vuex';
- import dictMixins from '@/mixins/dictMixins';
- export default {
- components: {
- basicContainer
- },
- mixins: [dictMixins],
- data() {
- return {
- permission: {},
- pageLoading: false,
- unMergeTableData: [], // 未合并挂网详情列表
- editTableData: [], // 合并挂网任务编辑详情列表
- taskDistTableData: [], // 任务未下发列表
- workUnreportTableData: [], // 任务已下发未报工列表
- taskDistSelection: [],
- workUnreportSelection: [],
- unMergeTableLoading: false,
- taskDistTableLoading: false,
- workUnreportTableLoading: false,
- searchDialogVisible: false, // 筛选弹窗
- headerRowStyle: {
- backgroundColor: ' #d0e4d5'
- },
- // 筛选弹窗表单
- searchForm: {
- projectName: '', // 项目名称下拉
- productName: '', // 产品名称下拉
- specification: '', // 规格型号
- weight: '', // 等级
- isSlotting: ''
- },
- projectNameList: [],
- materialNameList: [],
- modulusNum1: 0,
- modulusNum2: 0,
- taskDate: '', // 任务日期
- modulusLength: '',
- surplusLength: 610, // 剩余长度
- allowModulus: 0, // 允许模数
- modulusSum: 0, // 合计模数
- heightFilterArr1: [], // 高度筛选1表格
- heightFilterArr2: [], // 高度筛选2表格
- riqi: '',
- days: '',
- shijian: ''
- };
- },
- computed: {
- ...mapState({
- info: (store) => store.user.info //用户数据
- })
- },
- filters: {
- weightFilter(value) {
- let weight = '';
- switch (value) {
- case 1:
- weight = 'A';
- break;
- case 2:
- weight = 'B';
- break;
- case 3:
- weight = 'C';
- break;
- }
- return weight;
- },
- subTime(value) {
- if (!value) return;
- let date = value.substr(0, value.indexOf(' '));
- return date;
- }
- },
- created() {
- this.requestDict('开槽类型');
- this.getScheduleWorkOrder({});
- this.getPutMeshWorkOrder();
- this.getWorkUnreport();
- },
- mounted() {
- this.gettime();
- this.newtime();
- },
- methods: {
- gettime() {
- var date = new Date();
- let year = date.getFullYear();
- let mou = date.getMonth() + 1;
- let day = date.getDate();
- let days = date.getDay();
- switch (days) {
- case 1:
- days = '星期一';
- break;
- case 2:
- days = '星期二';
- break;
- case 3:
- days = '星期三';
- break;
- case 4:
- days = '星期四';
- break;
- case 5:
- days = '星期五';
- break;
- case 6:
- days = '星期六';
- break;
- case 0:
- days = '星期日';
- break;
- }
- let hou = date.getHours(); //获取当前小时数(0-23)
- let min = date.getMinutes(); //获取当前分钟数(0-59)
- let sec = date.getSeconds(); //获取当前秒数(0-59)
- if (mou < 10) mou = '0' + mou;
- if (day < 10) day = '0' + day;
- if (hou < 10) hou = '0' + hou;
- if (min < 10) min = '0' + min;
- if (sec < 10) sec = '0' + sec;
- this.riqi = year + '/' + mou + '/' + day;
- this.days = days;
- this.shijian = hou + ':' + min + ':' + sec;
- },
- newtime() {
- setInterval(() => {
- this.gettime();
- }, 1000);
- },
- // 获取未合并挂网数据列表
- getScheduleWorkOrder(params) {
- this.unMergeTableLoading = true;
- this.projectNameList = [];
- this.materialNameList = [];
- let pages = {
- pageNum: 1,
- pageSize: 100
- };
- let query = Object.assign(pages, params, {
- status: ['3', '2', '4']
- });
- getScheduleWorkOrderByPage(query)
- .then((res) => {
- this.unMergeTableLoading = false;
- console.log('未合并挂网数据列表:', res.data.data.list);
- this.unMergeTableData = res.data.data.list.filter((item) =>
- item.productName.includes('板材')
- );
- console.log(this.unMergeTableData, 'unMergeTableData');
- this.unMergeTableData.map((item) => {
- if (
- !this.projectNameList.includes(item.projectName) &&
- item.projectName
- ) {
- this.projectNameList.push(item.projectName);
- }
- if (!this.materialNameList.includes(item.productName)) {
- this.materialNameList.push(item.productName);
- }
- });
- })
- .catch(() => {
- this.unMergeTableLoading = false;
- });
- },
- // 获取任务未下发数据列表
- async getPutMeshWorkOrder() {
- this.taskDistTableLoading = true;
- this.heightFilterArr1 = [];
- let pages = {
- // pageNum: 1,
- // pageSize: 100,
- listStatus: [0]
- // artisanStatus: '0'
- };
- const res = await getPutMeshWorkOrderByPage(pages);
- console.log('任务未下发数据列表:', res.list);
- this.taskDistTableLoading = false;
- this.taskDistTableData = res.list;
- let tempHeight = [];
- this.taskDistTableData.map((item) => {
- tempHeight.push(item.height);
- });
- tempHeight = [...new Set(tempHeight)];
- tempHeight.map((item) => {
- this.heightFilterArr1.push({
- value: item,
- text: item
- });
- });
- // console.log(this.heightFilterArr1);
- },
- // 获取已下发未报工列表数据
- async getWorkUnreport() {
- this.workUnreportTableLoading = true;
- this.heightFilterArr2 = [];
- let pages = {
- // pageNum: 1,
- // pageSize: 100,
- listStatus: [1]
- // artisanStatus: '0'
- };
- const res = await getPutMeshWorkOrderByPage(pages);
- console.log('任务已下发数据列表:', res.list);
- // this.taskDistTableLoading = false
- this.workUnreportTableData = res.list;
- this.workUnreportTableLoading = false;
- let tempHeight = [];
- this.workUnreportTableData.map((item) => {
- tempHeight.push(item.height);
- });
- tempHeight = [...new Set(tempHeight)];
- tempHeight.map((item) => {
- this.heightFilterArr2.push({
- value: item,
- text: item
- });
- });
- },
- // 重置筛选表单
- reset() {
- this.searchForm = {
- projectName: '',
- productName: '',
- specification: '',
- weight: '',
- isSlotting: ''
- };
- this.searchDialogVisible = false;
- this.getScheduleWorkOrder({});
- },
- // 按表单查询
- search() {
- this.searchDialogVisible = false;
- this.getScheduleWorkOrder(this.searchForm);
- },
- // 挂网报工按钮操作
- handlePutMesh(row) {
- // 挂网判断
- // 1,只允许添加相同高度的计划
- // 2,只允许添加相同宽度的计划
- // 3,只允许添加相同工艺的计划
- // 4,长度加起来不能大610
- // 5,最多只能添加3条
- let rowModelArr = row.specification.split('*');
- // 要添加的规格的高度
- let addWide = Number(rowModelArr[1]);
- let addHeight = Number(
- rowModelArr[2].substr(0, rowModelArr[2].indexOf('cm'))
- );
- let allowSlotting = ''; // 已添加计划的工艺
- let allowWide = 0; // 已添加计划的高度
- let allowHeight = 0; // 已添加计划的高度
- let allowLong = 0; // 已添加计划的长度
- let addLong = Number(rowModelArr[0]); // 要添加计划的长度
- if (this.editTableData.length > 0) {
- allowSlotting = this.editTableData[0].slottingType;
- let modelArr = this.editTableData[0].specification.split('*');
- allowWide = Number(modelArr[1]);
- allowHeight = Number(modelArr[2].substr(0, modelArr[2].indexOf('cm')));
- // 计算已添加的长度的总和是否大610
- this.editTableData.map((item) => {
- allowLong += Number(item.specification.split('*')[0]);
- });
- if (this.editTableData.length == 3) {
- return this.$alert('最多只能添加三条计划!');
- }
- if (allowLong + addLong > 610) {
- return this.$alert('挂网并模总长度不能大于610!');
- }
- if (row.slottingType != allowSlotting) {
- return this.$alert(
- `请添加${this.getDictValue(
- '开槽类型',
- allowSlotting + ''
- )}工艺的计划!`
- );
- }
- if (addHeight != allowHeight) {
- return this.$alert(`请添加高度为${allowHeight}cm的计划!`);
- }
- if (addWide != allowWide) {
- return this.$alert(`请添加宽度为${allowWide}的计划!`);
- }
- }
- this.editTableData.push(JSON.parse(JSON.stringify(row)));
- let equalIdObj = {};
- this.editTableData.map((item) => {
- if (equalIdObj[item.id]) {
- equalIdObj[item.id]++;
- } else {
- this.$set(equalIdObj, item.id, 1);
- }
- });
- let longSum = 0;
- let surplusModulusArr = []; // 允许模数
- this.editTableData.map((item) => {
- item.equalIdNum = equalIdObj[item.id];
- let modelArr = item.specification.split('*');
- let modelHeight = modelArr[2];
- modelHeight = Number(modelHeight.substr(0, modelHeight.indexOf('cm')));
- longSum += Number(modelArr[0]);
- // 块数
- item.blockCount = Number(Math.floor(120 / modelHeight));
- // 剩余模数
- item.surplusModulus = Number(
- Math.ceil(item.noWordCount / item.blockCount / item.equalIdNum)
- );
- surplusModulusArr.push(item.surplusModulus);
- });
- // console.log(this.editTableData,'editTableData')
- // 获取允许模数 allowModulus
- this.allowModulus = Math.min(...surplusModulusArr);
- this.surplusLength = 610 - longSum;
- // 计算模数长度
- this.modulusLength =
- (100 - (this.surplusLength / 6.1).toFixed(2)) /
- this.editTableData.length +
- '%';
- },
- getSurplusModulus(specification) {
- return Math.min(
- ...this.editTableData
- .filter((item) => item.specification == specification)
- .map((item) => item.surplusModulus)
- );
- },
- // 输入模数
- modulsNumInput() {
- this.modulusSum = Number(this.modulusNum1) + Number(this.modulusNum2);
- if (this.modulusSum > this.allowModulus) {
- this.$alert('合计模数不能大于允许模数!');
- this.modulusSum = 0;
- this.modulusNum1 = 0;
- this.modulusNum2 = 0;
- return false;
- }
- return true;
- },
- // 重置合并挂网
- resetEditTable() {
- this.editTableData = [];
- this.modulusSum = 0;
- this.modulusNum1 = 0;
- this.modulusNum2 = 0;
- this.allowModulus = 0;
- this.taskDate = '';
- this.surplusLength = 610;
- this.modulusLength = '';
- },
- // 确定添加挂网并模
- updateMerge() {
- if (this.editTableData.length == 0)
- return this.$alert('请选择要挂网的计划列表!');
- if (Number(this.modulusNum1) + Number(this.modulusNum2) == 0)
- return this.$alert('请输入班组模数!');
- if (!this.taskDate) return this.$alert('请选择任务日期!');
- if (!this.modulsNumInput()) return;
- this.pageLoading = true;
- let ids = [];
- let meshSpecs = [];
- let meshNumber = [];
- let meshSpecsTwo = [];
- let meshNumberTwo = [];
- let numbersArr = [];
- // for (let i = 0; i < this.editTableData.length; i++) {
- // ids.push(this.editTableData[i].id);
- // meshSpecs.push(this.editTableData[i].model);
- // meshNumber.push(this.editTableData[i].moCount);
- // meshSpecsTwo.push('+');
- // meshNumberTwo.push('+');
- // numbersArr.push('1');
- // }
- let data = {
- mergeIds: this.editTableData.map((item) => item.id).toString(),
- meshNumber: this.editTableData.map((item) => item.blockCount).join('+'),
- modulus:
- this.modulusNum1 && this.modulusNum2
- ? this.modulusNum1 + ',' + this.modulusNum2
- : this.modulusNum1 || this.modulusNum2,
- job: this.modulusNum1 && this.modulusNum2 ? 2 : 1,
- endTime: this.taskDate
- // mergeId: ids.join(','),
- // numbers: numbersArr.join(','),
- // moduls: String(this.modulusSum), // 合计模数
- // meshSpecs: meshSpecs.join(','), // 网片尺寸
- // meshNumber: meshNumber.join(','), // 网片数量
- // meshSpecsTwo: meshSpecsTwo.join(','), // 网片尺寸2
- // meshNumberTwo: meshNumberTwo.join(','), // 网片数量2
- // meshType: '单网', // 网片类型
- // joba: '班组A',
- // jobb: '班组B',
- // endTime: this.taskDate + ' 00:00:00', // 任务日期
- // jobaModulus: Number(this.modulusNum1), // 网A数量
- // jobbModulus: Number(this.modulusNum2) // 网B数量
- };
- updateMergeV2(data)
- .then((res) => {
- this.pageLoading = false;
- this.$message.success('任务添加成功!');
- this.resetEditTable();
- this.getScheduleWorkOrder({});
- this.getPutMeshWorkOrder();
- })
- .catch((err) => {
- this.pageLoading = false;
- this.$message.success('任务添加失败!');
- });
- },
- // 筛选等级1
- filterWeightMethod1(value, row, column) {
- const property = column['property'];
- return row[property] === value;
- },
- // 筛选高度1
- filterHeightMethod1(value, row, column) {
- const property = column['property'];
- return row[property] === value;
- },
- // 筛选班组1
- filterJobMethod1(value, row, column) {
- const property = column['property'];
- return row[property] === value;
- },
- // 筛选开槽1
- filterSlottingMethod1(value, row, column) {
- if (value == '开槽') {
- return row['isSlotting'] == '1';
- } else {
- return row['isSlotting'] == '2';
- }
- },
- // 任务未下发列表多选
- taskDistTableSelectionChange(val) {
- this.taskDistSelection = val;
- },
- // 任务下发按钮操作
- taskDistribute() {
- this.$confirm('确认下发选中的任务吗?', '提示', {
- confirmButtonText: '确定',
- cancleButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let ids = this.taskDistSelection.map((item) => item.id);
- const res = await issuedPutMeshWorkOrder({ id: ids, status: 1 });
- this.$message.success('任务下发成功!');
- this.getPutMeshWorkOrder();
- this.getWorkUnreport();
- })
- .catch(() => {});
- },
- // 任务下发未报工列表多选
- workUnreportTableSelectionChange(val) {
- this.workUnreportSelection = val;
- },
- // 按钮全选
- seletAll(data, tableName) {
- if (data) {
- data.forEach((row) => {
- this.$refs[tableName].toggleRowSelection(row, true);
- });
- }
- },
- // 批量删除挂网工单信息(取消、删除、撤回)
- handleDeleteWorkOrder(btnType, type) {
- this.$confirm(`确定${btnType}选中的任务吗?`, '提示', {
- confirmButtonText: '确定',
- cancleButtonText: '取消',
- type: 'warning'
- })
- .then(() => {
- this.pageLoading = true;
- let ids = '';
- if (btnType == '取消') {
- ids = this.taskDistSelection.map((item) => item.id);
- } else if (btnType == '撤回' || btnType == '中止') {
- ids = this.workUnreportSelection.map((item) => item.id);
- }
- // let params = { type, ids };
- deletePutMeshWorkOrder({ id: ids }, type)
- .then((res) => {
- this.pageLoading = false;
- this.$message.success(res.data.msg);
- this.getScheduleWorkOrder({});
- this.getPutMeshWorkOrder();
- this.getWorkUnreport();
- })
- .catch(() => {
- this.pageLoading = false;
- });
- })
- .catch(() => {});
- },
- // 未合并挂网列表删除
- handleDeleteSchedule(row) {
- this.$confirm('确定删除选中的任务吗?', '提示', {
- confirmButtonText: '确定',
- cancleButtonText: '取消',
- type: 'warning'
- })
- .then(() => {
- this.pageLoading = true;
- let ids = row.id;
- deleteScheduleWorkOrder({ ids })
- .then((res) => {
- this.pageLoading = false;
- this.$message.success(res.data.msg);
- this.getScheduleWorkOrder({});
- })
- .catch(() => {
- this.pageLoading = false;
- });
- })
- .catch(() => {});
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .avue-view {
- height: 100vh;
- }
- .title {
- display: flex;
- justify-content: flex-start;
- align-items: center;
- margin-left: 0;
- padding: 0 20px;
- box-sizing: border-box;
- // color: #000;
- height: 60px;
- width: 100%;
- background-color: #fff;
- font-size: 16px;
- .item:nth-child(1) {
- flex: 1;
- }
- .item:nth-child(2) {
- flex: 2;
- text-align: left;
- }
- .item:nth-child(3) {
- flex: 2;
- text-align: left;
- }
- .item:nth-child(4) {
- flex: 2;
- text-align: right;
- }
- .item:nth-child(5) {
- flex: 1;
- }
- .subWorkNameBox {
- font-size: 24px;
- }
- }
- :deep(.el-table) th.el-table__cell {
- background: none;
- }
- :deep(.el-card.is-always-shadow),
- :deep(.el-table__empty-block),
- .basic-container {
- // background-color: #fff;
- height: calc(100% - 66px);
- }
- :deep(.el-table--border) {
- overflow: auto;
- }
- :deep(.el-table::before) {
- display: none;
- }
- :deep(.el-table) thead,
- :deep(.el-table) tbody {
- // color: #000 !important;
- }
- :deep(.el-table) thead th,
- :deep(.el-table) tbody td {
- // background-color: #080848 !important;
- font-size: 16px;
- }
- // 全局修改滚动条样式
- :deep(::-webkit-scrollbar-thumb) {
- // background-color: #666aa1;
- }
- :deep(.el-button) {
- // background-color: #080848;
- // color: #fff;
- }
- // 最上面一行
- .unMerge-list {
- height: 50%;
- margin-bottom: 8px;
- // border: 1px solid #fff;
- .table-header-row {
- display: flex;
- .screen {
- padding: 9px 30px;
- margin: 5px 0 5px 5px;
- }
- .table-title {
- flex: 1;
- // color: #fff;
- text-align: center;
- font-size: 20px;
- padding-right: 10%;
- line-height: 43px;
- }
- }
- .handle-btn {
- font-size: 16px;
- }
- }
- // 筛选弹窗
- .search-form {
- :deep(.el-input__inner) {
- width: 300px;
- }
- }
- // 筛选弹窗
- .searchForm-btns {
- margin-top: 10px;
- text-align: center;
- padding-right: 30px;
- :deep(.el-button) {
- // background-color: #157a2c !important;
- padding: 9px 30px;
- }
- }
- // 第二行
- .merge-pic-table-title {
- color: #fff;
- font-size: 20px;
- text-align: center;
- line-height: 40px;
- // border: 1px solid #fff;
- border-bottom: 0;
- }
- .merge-pic-table {
- display: flex;
- height: 200px;
- .merge-pic {
- display: flex;
- width: 610px;
- height: 100%;
- margin-right: 8px;
- color: #fff;
- // border: 1px solid #fff;
- box-sizing: border-box;
- font-size: 14px;
- > div {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: space-around;
- padding: 15px 0;
- &:nth-child(1) {
- background-color: #409eff;
- }
- &:nth-child(2) {
- background-color: #e6a23c;
- }
- &:nth-child(3) {
- background-color: #67c23a;
- }
- &:last-child {
- background-color: #191a23;
- }
- }
- }
- .merge-table {
- flex: 0.6;
- height: 100%;
- border: 1px solid #fff;
- box-sizing: border-box;
- :deep(.el-table__header-wrapper) {
- background-color: #080848;
- }
- :deep(.el-table) {
- // border: 0;
- height: calc(100% - 45px);
- // background-color: #080848;
- }
- :deep(.el-button--primary) {
- padding: 9px 30px;
- // border-color: #fff;
- }
- .merge-btns {
- padding: 5px;
- text-align: right;
- }
- }
- .info-message {
- flex: 0.4;
- border-top: 1px solid #ededed;
- border-left: 1px solid #ededed;
- margin-left: 8px;
- display: flex;
- // color: #fff;
- .info-item {
- flex: 1;
- border-right: 1px solid #ededed;
- display: flex;
- flex-direction: column;
- font-size: 16px;
- > span,
- :deep(.el-input) {
- flex: 1;
- border-bottom: 1px solid #ededed;
- display: flex;
- justify-content: center;
- align-items: center;
- }
- :deep(.el-input__inner) {
- padding: 0;
- padding-left: 10px;
- // border: 0;
- border-radius: 0;
- margin: 0 5px;
- // background-color: #ccc;
- // color: #fff;
- }
- :deep(.el-date-editor) {
- width: 100%;
- }
- :deep(.el-input__icon) {
- display: none;
- }
- }
- }
- }
- // 第三行 任务未下发列表 和下发未报工列表
- .task-distribution {
- margin-top: 8px;
- display: flex;
- .task-dist {
- width: 45%;
- overflow: auto;
- margin-right: 8px;
- // border: 1px solid #fff;
- box-sizing: border-box;
- .task-btns {
- // border-bottom: 1px solid #fff;
- padding: 5px;
- box-sizing: border-box;
- display: flex;
- justify-content: space-between;
- .task-dist-title {
- font-size: 20px;
- // color: #fff;
- text-align: center;
- flex: 1;
- align-self: center;
- }
- }
- }
- .work-unreport {
- width: 55%;
- overflow: auto;
- // border: 1px solid #fff;
- box-sizing: border-box;
- .unreport-btns {
- padding: 5px;
- // border-bottom: 1px solid #fff;
- box-sizing: border-box;
- display: flex;
- justify-content: space-between;
- .work-unreport-title {
- flex: 1;
- font-size: 20px;
- // color: #fff;
- text-align: center;
- line-height: 33px;
- }
- }
- }
- }
- :deep(.el-dropdown-selfdefine) {
- font-size: 16px;
- // color: #fff;
- }
- :deep(.el-dropdown-menu) {
- padding: 4px;
- box-sizing: border-box;
- }
- :deep(.el-dropdown-menu__item) {
- font-size: 16px !important;
- }
- :deep(.el-table__column-filter-trigger) i {
- font-size: 14px;
- // color: #fff;
- }
- // /deep/ .el-table__header tr,
- // /deep/ .el-table__header th {
- // height: 42px;
- // }
- </style>
|