<template>
  <view>
    <view class="listItemTitle">
      <view>
        <view class="item">物料编号：{{ item.sapItemCode }}</view>
        <view class="item">物料描述：{{ item.itemName }}</view>
      </view>
      <view class="right">
        <text class="blue">{{ totalVistaNum }}</text>
        <text class="line">/</text>
        <text class="">{{ totalNum }}</text>
      </view>
    </view>
    <view class="listBottom">
      <view class="bottomTitle" @click="show = !show">
        <view class="desc">卷条码明细</view>
        <view class="topIcons">
          <view v-if="show">
            <u-icon name="arrow-down" color="#aaa" size="32"></u-icon>
            展开
          </view>
          <view v-else>
            <u-icon name="arrow-up" color="#aaa" size="32"></u-icon>
            收起
          </view>
        </view>
      </view>
      <view v-if="!show" class="bottomBox">
        <view
          class="bottomItem"
          v-for="(ele, idx) in details"
          :key="ele.workorderCode"
        >
          <view class="proItem">
            <view class="items">生产单号：{{ ele.workorderCode }}</view>
            <view class="progress">
              <progress :percent="handleVista(ele)" show-info />
            </view>
          </view>
          <view class="items inputItem">
            数量：
            {{ handleUseVista(ele) }}
            /
            {{ ele.applyNum }}
          </view>
          <template v-for="item in ele.details">
            <view class="items">PL：{{ item.PLNR }}</view>
            <view class="items">库位：{{ item.LGORT }} - {{ item.LGOBE }}</view>
            <view class="items">仓位：{{ item.NLPLA }}</view>
          </template>
        </view>
      </view>
    </view>
  </view>
</template>

<script>
import StickyNavBar from "@/components/StickyNavBar/index.vue";
import ContentLoadingMore from "@/components/ContentLoadingMore/index.vue";
import BottomBtn from "@/components/BottomBtn/index.vue";
export default {
  components: {
    StickyNavBar,
    ContentLoadingMore,
    BottomBtn,
  },
  props: {
    item: {
      type: Object,
      default: function () {
        return {};
      },
    },
    list: {
      type: Array,
      default: function () {
        return [];
      },
    },
  },
  computed: {
    details() {
      return this.list.reduce((acc, cur) => {
        const item = acc.find((v) => v.workorderCode === cur.workorderCode);
        if (item) {
          item.details.push({ ...cur });
        } else {
          acc.push({ ...cur, details: [{...cur}] });
        }
        return acc;
      }, []);
    },
    totalNum() {
      const workCodes = [];
      return this.list.reduce((acc, cur) => {
        if (workCodes.includes(cur.workorderCode)) {
          return acc;
        } else {
          workCodes.push(cur.workorderCode);
          return acc + cur.applyNum;
        }
      }, 0).toFixed(3);
    },
    totalVistaNum() {
      return this.list.reduce((acc, cur) => {
        return acc + cur.vista;
      }, 0).toFixed(3);
    },
  },
  watch: {
    details: {
      handler: function (val, oldVal) {
        console.log(val, "00-------", this.list);
      },
      immediate: true,
      deep: true,
    },
  },
  data() {
    return {
      number: 0,
      nlpla: "",
      wxparams: "",
      btnArr: [
        {
          style: "",
          type: "warning",
          text: "返回",
          way: "goBack",
        },
        {
          style: "",
          type: "primary",
          text: "提交",
          way: "goSubmit",
        },
      ],
      isFocus: false,
      show: true,
      num1: 0,
    };
  },
  created() {},
  methods: {
	handleUseVista(items) {
		return items.details.reduce((acc, cur) => cur.vista + acc, 0)
	},
    handleVista(items) {
      let num = 0;
      this.list.forEach((ele) => {
        if (ele.workorderCode === items.workorderCode) {
          console.log(`output->`, ele.vista, items.workorderCode);
          num += (ele.vista ? ele.vista : 0) - 0;
        }
      });
      console.log(`output->num`, num);
      return (num / items.applyNum).toFixed(2) * 100 - 0 > 100
        ? 100
        : (num / items.applyNum).toFixed(2) * 100 || 0;
    },
  },
};
</script>

<style lang="scss" scoped>
page {
  background: #f8f8f8;
}
.headerTitle {
  padding: 20rpx;
  font-weight: 600;
  .items {
    line-height: 40rpx;
  }
}
.btn {
  padding: 20rpx;
  background: #fff;
  .topSearch {
    margin-bottom: 20rpx;
  }
}
.bottomBtn {
  position: sticky;
  padding: 20rpx;
  display: flex;
  justify-content: space-between;
  background: #fff;
  bottom: 0rpx;
  margin-top: 20rpx;
  .u-btn {
    width: 300rpx;
  }
}
.blue {
  color: #3f9dcc;
}
.total {
  background: #fff;
  color: #000;
  padding: 0rpx 40rpx;
  display: flex;
  justify-content: space-between;
  font-size: 32rpx;
  .line {
    margin: 0px 10rpx;
  }
}
.listItemTitle {
  display: flex;
  justify-content: space-between;
  padding: 20rpx;
  border-bottom: 2px solid #f8f8f8;
  .u-btn {
    width: 150rpx;
    margin: 0px;
    margin-top: 10rpx;
  }
  .item {
    line-height: 50rpx;
    color: #333;
    font-size: 28rpx;
    font-weight: 500;
    word-break: break-all;
    font-weight: 600;
  }
}
.listBottom {
  .bottomTitle {
    height: 80rpx;
    position: relative;
    .desc {
      color: #bbb;
      font-size: 24rpx;
      line-height: 80rpx;
      padding-left: 20rpx;
    }
    .topIcons {
      position: absolute;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      color: #aaa;
    }
  }
  .bottomBox {
    padding: 20rpx;
    .bottomItem {
      background: #f8f8f8;
      padding: 20rpx;
      margin-bottom: 20rpx;
      .items {
        color: #333;
        font-size: 24rpx;
        line-height: 40rpx;
        word-break: break-all;
        /deep/ .uni-easyinput {
          width: 200rpx;
        }
      }
      .inputItem {
        display: inline-flex;
        // line-height: 76rpx;
      }
    }
  }
}
/deep/ .u-sticky {
  top: 0 !important;
  background: #fff;
}
.progress {
  width: 45%;
  margin-left: 20rpx;
  /deep/ .uni-progress-info {
    font-size: 24rpx;
  }
}
/deep/ .uni-progress {
  line-height: 40rpx;
}
.proItem {
  display: flex;
}
</style>
