123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- <template>
- <dialog-base class="dialog-body" ref="baseDialog" title="箱号">
- <view class="selectedProcess">
- <uni-section title="可根据工艺列表筛选箱号" type="square">
- <uni-data-select v-model="selectedProcess" :localdata="processList" :clear="true"
- @change="handleProcessChange"></uni-data-select>
- </uni-section>
- </view>
- <view class="carrierList-title uni-row">
- <view class="uni-row" style="width: 46%;justify-content: center;">批次号</view>
- <view class="uni-row" style="width: 18%;justify-content: center;">箱号</view>
- <view class="uni-row" style="width: 32%;justify-content: center;">位置</view>
- </view>
- <view class="carrierList uni-row">
- <view class="carrierItem uni-row" v-for="(item,index) in carrierList">
- <view style="width: 46%;text-align: left;">{{ item.lotCode }}</view>
- <view style="width: 27%;text-align: center;">{{ item.carrierCode }}</view>
- <view style="width: 27%;word-wrap: break-word;text-align: left;">{{ item.place }}</view>
- </view>
- </view>
- </dialog-base>
- </template>
- <script setup>
- import {
- ref,
- getCurrentInstance
- } from 'vue'
- import {
- store
- } from '../../store';
- import {
- getAvailableCarrierList,
- selectProcessList
- } from '@/api/business/dayWork.js'
- import {
- getProcessList
- } from '@/api/business/deptProcess.js'
- const baseDialog = ref(null)
- const selectedProcess = ref(null)
- const processList = ref([])
- const isNormalLot = ref(true)
- const curProcessId = ref('')
- const dayworkCarrierlist = ref([])
- const carrierList = ref([])
- function open(data) {
- // console.log(data)
- reset();
- // console.log(store.planDetails)
- isNormalLot.value = true
- if (!data) {
- isNormalLot.value = false
- } else {
- isNormalLot.value = true
- }
- // console.log(isNormalLot.value)
- Promise.all([getProcessList({
- deptId: store.curDeptDetails.deptId,
- planDetailId: store.planDetails.id
- }), getAvailableCarrierList({
- planDetailId: store.planDetails.id,
- deptId: store.curDeptDetails.deptId
- }), selectProcessList({
- productionPlanDetailId: store.planDetails.id,
- isNormalLot:isNormalLot.value,
- deptId: store.curDeptDetails.deptId
- })
- ])
- .then(([res, response, resp]) => {
- // console.log(res, response, resp)
- if (res.code == 200 && response.code === 200 && resp.code === 200) {
- dayworkCarrierlist.value = response.data
- //过滤出工序交集
- let filteredData = resp.data.filter((item1) =>
- res.data.some((item2) => item2.processCode === item1.processCode)
- );
- processList.value = []
- var processAliasList = [];
- for (let i = 0; i < filteredData.length; i++) {
- // console.log(filteredData[i].processAlias)
- // console.log(processAliasList)
- if(processAliasList.includes(filteredData[i].processAlias)) {
- continue;
- }else {
- processAliasList.push(filteredData[i].processAlias)
- processList.value.push({
- text: filteredData[i].processAlias,
- value: filteredData[i].processId,
- })
- }
- }
- console.log(processList.value)
- /* 处理结果格式 */
- carrierList.value = changeResultStructure(response.data)
- baseDialog.value.open();
- }
- else {
- // console.log(res, resp, response)
- uni.showToast({
- icon: "none",
- title: "没有周转到该工段批次",
- duration: 1000
- })
- }
- // console.log(selectedProcess.value)
- })
- }
- /**
- * 处理响应结果
- */
- function changeResultStructure(data) {
- console.log(data)
- // 用于存放处理后的结果
- const result = {};
- // 遍历原始数组的每个对象
- data.forEach(item => {
- const { lotCode, place,carrierCode } = item;
- // 如果lotCode不存在于结果中,则以该lotCode为键,创建一个新对象
- if (!result[lotCode]) {
- result[lotCode] = {
- lotCode: lotCode,
- place: place,
- carrierCode: carrierCode
- };
- // 如果lotCode已存在于结果中,则将place进行字符串拼接
- } else {
- if (result[lotCode].place !== place){
- result[lotCode].place += `, ${place}`;
- }
- result[lotCode].carrierCode += `, ${carrierCode}`;
- }
- });
- // console.log(result)
- // console.log(Object.values(result))
- return Object.values(result);
- }
- function close() {
- baseDialog.value.close()
- }
- function reset() {
- selectedProcess.value = 0;
- processList.value = [];
- curProcessId.value = '';
- carrierList.value = [];
- }
- function handleProcessChange(e) {
- // console.log('选择')
- // console.log(store)
- // console.log(e)
- if (e == '' || e == null) {
- // console.log(e)
- Promise.all([getProcessList({
- deptId: store.curDeptDetails.deptId,
- planDetailId: store.planDetails.id
- }), getAvailableCarrierList({
- planDetailId: store.planDetails.id,
- deptId: store.curDeptDetails.deptId
- }), selectProcessList({
- productionPlanDetailId: store.planDetails.id,
- isNormalLot: isNormalLot.value,
- deptId: store.curDeptDetails.deptId
- })]).then(([res, response, resp]) => {
- console.log(res, response, resp)
- if (res.code == 200) {
- // //过滤出工序交集
- // let filteredData = store.planDetails.processSequence.filter((item1) =>
- // res.data.some((item2) => item2.processCode === item1.processCode)
- // );
- // for (let i = 0; i < filteredData.length; i++) {
- // processList.value[i] = {
- // text: filteredData[i].processAlias,
- // value: filteredData[i].id
- // }
- // }
- // console.log(processList.value)
- var processAliasList = [];
- processList.value = []
- let filteredData = resp.data.filter((item1) =>
- res.data.some((item2) => item2.processCode === item1.processCode)
- );
- for (let i = 0; i < filteredData.length; i++) {
- if(processAliasList.includes(filteredData[i].processAlias)) {
- continue;
- }else {
- processAliasList.push(filteredData[i].processAlias)
- processList.value.push({
- text: filteredData[i].processAlias,
- value: filteredData[i].processId,
- })
- }
- }
- }
- /* 处理结果格式 */
- carrierList.value = changeResultStructure(response.data);
- baseDialog.value.open();
- })
- } else {
- // console.log(e)
- var tempList = []
- for(let i = 0;i<dayworkCarrierlist.value.length;i++) {
- var processIds = dayworkCarrierlist.value[i].processSequence.map(obj => obj.id);
- if(processIds.includes(selectedProcess.value)) {
- tempList.push(dayworkCarrierlist.value[i])
- }
- }
- carrierList.value = changeResultStructure(tempList);
- }
- }
- defineExpose({
- open
- })
- </script>
- <style lang="scss">
- $nav-height: 60rpx;
- .dialog-body {
- overflow: auto;
- .selectedProcess {
- width: 88%;
- margin: 20rpx auto 40rpx;
- }
- .carrierList-title {
- width: 100%;
- border-bottom: 1rpx solid #999999;
- padding-bottom: 16rpx;
- margin-bottom: 16rpx;
- }
- .carrierList {
- width: 100%;
- flex-wrap: wrap;
- justify-items: flex-start;
- align-content: flex-start;
- text-align: center;
- height: auto;
- max-height: 300rpx;
- overflow: auto;
- // padding-left: calc((100% - 54rpx - 6rpx - 84%) / 2);
- .carrierItem {
- width: 100%;
- height: auto;
- line-height: 64rpx;
- text-align: center;
- justify-content: flex-start;
- align-items: center;
- border-bottom: 1rpx solid #999999;
- }
- }
- }
- </style>
|