bug
jiangping
2023-11-07 64b432916af9c9218ab3f3eca614e26c542142ae
minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,459 @@
<template>
   <view class="zk">
      <view class="zk_list">
         <view class="zk_list_item" @click="open('d')">
            <text>单据类型</text>
            <view class="zk_list_item_n">
               <text :style="data.typeName ? 'color: black;' : ''">{{data.typeName ? data.typeName : '请选择'}}</text>
               <u-icon name="arrow-right" color="#999999" size="20"></u-icon>
            </view>
         </view>
         <view class="zk_list_item" @click="open('c')">
            <text>出库仓库</text>
            <view class="zk_list_item_n">
               <text :style="data.exWarehouse ? 'color: black;' : ''">{{data.exWarehouse ? data.exWarehouse : '请选择'}}</text>
               <u-icon name="arrow-right" color="#999999" size="20"></u-icon>
            </view>
         </view>
         <view class="zk_list_item" @click="open('r')">
            <text>入库仓库</text>
            <view class="zk_list_item_n">
               <text :style="data.warehousingWarehouseName ? 'color: black;' : ''">{{data.warehousingWarehouseName ? data.warehousingWarehouseName : '请选择'}}</text>
               <u-icon name="arrow-right" color="#999999" size="20"></u-icon>
            </view>
         </view>
      </view>
      <view class="zk_title">
         <view class="zk_title_i"></view>
         <text>转出物料列表</text>
      </view>
      <view class="zk_wl">
         <template v-if="view.MaterialList.length > 0">
            <view class="zk_wl_item" v-for="(item, i) in view.MaterialList" :key="i">
               <image class="shanchu" src="@/static/chuku_ic_delete@2x.png" mode="widthFix" @click="dele(i)"></image>
               <text>{{item.materialName}}|{{item.materialCode}}</text>
               <text>
                  <text class="green" v-if="item.qualityType === '0'">合格&nbsp;|</text>
                  <text class="yellow" v-if="item.qualityType === '1'">不良&nbsp;|</text>
                  <text class="red" v-if="item.qualityType === '2'">报废&nbsp;|</text>
                  <text>{{item.procedureName ? item.procedureName : '-'}}&nbsp;|&nbsp;</text>
                  <text>{{item.batch ? item.batch : '-'}}</text>
               </text>
               <view class="zk_wl_item_num">
                  <text>货位:{{item.locationName}}</text>
                  <view class="zk_wl_item_input">
                     <text>数量:</text>
                     <input type="number" v-model="item.total" placeholder="0" />
                     <text>{{item.unitName}}</text>
                  </view>
               </view>
            </view>
         </template>
         <view class="zk_wl_w" v-else>
            <text>暂无数据</text>
         </view>
      </view>
      <view class="zk_z"></view>
      <view class="zk_footer">
         <view class="zk_footer_wl" @click="open('w')">选择物料</view>
         <view style="width: 20rpx"></view>
         <view class="zk_footer_submit" @click="submit">提交</view>
      </view>
      <!-- é€‰æ‹©ä»“库 -->
      <Warehouse :show="view.Warehouse" @close="view.Warehouse = false" @value="getValue" />
      <!-- é€‰æ‹©ç‰©æ–™ -->
      <multipleMaterial
      :warehouseId="data.exWarehouseId.toString()"
      :warehouseQualityType="view.warehouseQualityType"
      :selected="view.MaterialList.map(item => item.id)"
      @value="getValueWL"
      ref="multipleMaterial" />
      <!--  å•据类型  -->
      <u-picker :show="view.type" :columns="view.documentTypeDate" keyName="name" @cancel="onCancel" @confirm="onConfirm"></u-picker>
   </view>
</template>
<script>
   import { setTime } from '@/util/utils.js'
   import { documentType } from '@/util/constData.js'
   import multipleMaterial from '../../components/multipleMaterial.vue'
   import Warehouse from '../../components/Warehouse.vue'
   import { createZK } from '@/util/api/agencyAPI'
   export default {
      components: {
         multipleMaterial,
         Warehouse
      },
      data() {
         return {
            data: {
               type: '',
               outUserId: '',
               inUserId: '',
               typeName: '',
               exWarehouse: '',
               exWarehouseId: '',
               warehousingWarehouse: '',
               warehousingWarehouseName: ''
            },
            view: {
               type: false,
               Warehouse: false,
               Material: false,
               status: '',
               MaterialList: [],
               documentTypeDate: [
                  [
                      { name: '车间领料', id: 1 },
                      { name: '车间转库', id: 5 },
                      { name: '外协领料转库', id: 6 },
                      { name: '外协完工转库', id: 7 },
                      { name: '产品入库', id: 8 },
                      { name: '产品转库', id: 9 },
                      { name: '让步放行入库', id: 10 },
                      { name: '让步放行转库', id: 11 },
                      { name: '客返返修领料', id: 12 },
                      { name: '客返返修入库', id: 13 },
                      { name: '跨组织转库', id: 14 },
                      { name: '客退返修领料', id: 16 },
                      { name: '客退返修入库', id: 17 },
                      { name: '废品入库', id: 30 }
                  ]
               ],
               warehouseQualityType: ''
            }
         };
      },
      methods: {
         // åˆ é™¤ç‰©æ–™
         dele(i) {
            this.view.MaterialList.splice(i, 1)
         },
         // ä»“库回调
         getValue(val) {
            if (this.view.status === 'c') {
               if (this.data.exWarehouseId !== val.id) {
                  this.view.MaterialList = []
               }
               this.data.exWarehouse = val.name
               this.data.exWarehouseId = val.id
               this.data.outUserId = val.managerId
            } else if (this.view.status === 'r') {
               this.data.warehousingWarehouseName = val.name
               this.data.warehousingWarehouse = val.id
               this.data.inUserId = val.managerId
               this.view.warehouseQualityType = val.tmodel.label
            }
            this.view.Warehouse = false
         },
         // ç‰©æ–™å›žè°ƒ
         getValueWL(val) {
            val.forEach(element => {
               element.total = element.num
            })
            this.view.MaterialList.push(...val)
            this.view.Material = false
         },
         // ç¡®è®¤å•据类型
         onConfirm(val) {
            this.data.type = val.value[0].id
            this.data.typeName = val.value[0].name
            this.view.type = false
         },
         onCancel() {
            this.view.type = false
         },
         // åˆ›å»ºè½¬åº“单
         submit() {
            if (!this.data.type) return uni.showToast({ title: '单据类型不能为空', icon: 'none', duration: 2000 });
            if (!this.data.exWarehouse) return uni.showToast({ title: '出库仓库不能为空', icon: 'none', duration: 2000 });
            if (!this.data.warehousingWarehouse) return uni.showToast({ title: '入库仓库不能为空', icon: 'none', duration: 2000 });
            if (this.view.MaterialList.length === 0) return uni.showToast({ title: '转出物料不能为空', icon: 'none', duration: 2000 });
            for (let i = 0; i < this.view.MaterialList.length; i++) {
               if (!this.view.MaterialList[i].total || this.view.MaterialList[i].total <= 0) {
                  uni.showToast({ title: '转出数量必须大于0', icon: 'none', duration: 2000 });
                  return
               }
               if (Number(this.view.MaterialList[i].total) > Number(this.view.MaterialList[i].num)) {
                  uni.showToast({ title: '转库的物料数量不能大于库存量!', icon: 'none', duration: 2000 });
                  return
               }
            }
            let time = setTime(new Date(), '-')
            let wtransferDetailBeanList = []
            this.view.MaterialList.forEach((element) => {
               wtransferDetailBeanList.push({
                  batch: element.batch,
                  materialId: element.materialId,
                  procedureId: element.procedureId,
                  procedureName: element.procedureName,
                  qualityType: element.qualityType,
                  unitId: element.unitId,
                  outPlanNum: element.total,
                  proceduresId: element.procedureId,
                  inLocationId: null,
                  outLocationId: element.locationId,
                  inWarehouseId: this.data.exWarehouseId,
                  outWarehouseId: this.data.warehousingWarehouse
               })
            })
            createZK({
               type: this.data.type,
               outPlandate: time,
               inPlandate: time,
               origin: 0,
               outUserId: this.data.outUserId,
               inUserId: this.data.inUserId,
               inWarehouseId: this.data.warehousingWarehouse,
               outWarehouseId: this.data.exWarehouseId,
               wtransferDetailBeanList
            }).then(res => {
               if (res.code === 200) {
                  uni.showToast({ title: '创建成功!', icon: 'success', duration: 2000 });
                  setTimeout(() => {
                     uni.navigateBack({ delta: 1 });
                  }, 2000)
               }
            })
         },
         // æ‰“开选择弹框
         open(type) {
            if (type === 'd') {
               this.view.type = true
            } else if (type === 'c') {
               this.view.status = 'c'
               this.view.Warehouse = true
            } else if (type === 'r') {
               this.view.status = 'r'
               this.view.Warehouse = true
            } else if (type === 'w') {
               if (this.data.exWarehouseId) {
                  if (this.data.warehousingWarehouseName) {
                     // let arr = []
                     // this.view.MaterialList.forEach(element => {
                     //    arr.push(element.id)
                     // })
                     // const { selected } = Material.value
                     // Material.value.selected = arr
                     // view.Material = true
                     this.$refs.multipleMaterial.open()
                  } else {
                     uni.showToast({ title: '请先选择入库仓库', icon: 'none', duration: 2000 });
                  }
               } else {
                  uni.showToast({ title: '请先选择出库仓库', icon: 'none', duration: 2000 });
               }
            }
         }
      }
   }
</script>
<style lang="scss" scoped>
   .zk {
      position: absolute;
      width: 100%;
      .zk_list {
         padding: 0 30rpx;
         background: white;
         margin-top: 20rpx;
         .zk_list_item {
            height: 98rpx;
            display: flex;
            align-items: center;
            justify-content: space-between;
            border-bottom: 1rpx solid #E5E5E5;
            &:last-child {
               border: none !important;
            }
            text {
               font-size: 30rpx;
               font-weight: 400;
               color: #222222;
            }
            .zk_list_item_n {
               display: flex;
               align-items: center;
               text {
                  font-size: 28rpx;
                  font-weight: 400;
                  color: #999999;
                  margin-right: 10rpx;
               }
            }
         }
      }
      .zk_title {
         padding: 40rpx 30rpx 30rpx 30rpx;
         display: flex;
         align-items: center;
         .zk_title_i {
            width: 8rpx;
            height: 30rpx;
            background: #4275FC;
            border-radius: 2rpx;
            margin-right: 12rpx;
         }
         text {
            font-size: 32rpx;
            font-weight: 500;
            color: #222222;
         }
      }
      .zk_wl {
         background: white;
         .zk_wl_w {
            width: 100%;
            height: 200rpx;
            background: white;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 26rpx;
            color: black;
         }
         .zk_wl_item {
            display: flex;
            flex-direction: column;
            padding: 30rpx;
            border-bottom: 1rpx solid #e2e2e2;
            position: relative;
            .shanchu {
               width: 48rpx;
               height: 48rpx;
               position: absolute;
               top: 0;
               right: 0;
            }
            .zk_wl_item_num {
               display: flex;
               align-items: center;
               justify-content: space-between;
               margin-top: 30rpx;
               .zk_wl_item_input {
                  display: flex;
                  align-items: center;
                  text {
                     font-size: 26rpx;
                     font-family: PingFangSC-Regular, PingFang SC;
                     font-weight: 400;
                     color: #666666;
                  }
               }
               text {
                  font-size: 26rpx;
                  font-family: PingFangSC-Regular, PingFang SC;
                  font-weight: 400;
                  color: #333333;
                  margin: 0 !important;
               }
               input {
                  width: 140rpx;
                  height: 60rpx;
                  background: #FFFFFF;
                  border-radius: 8rpx;
                  border: 1rpx solid #CCCCCC;
                  padding: 0 30rpx;
                  font-size: 28rpx;
               }
               input::-webkit-input-placeholder {
                  font-size: 28rpx;
                  font-weight: 400;
                  color: #999999;
               }
            }
            text {
               &:nth-child(1) {
                  font-size: 30rpx;
                  font-weight: 500;
                  color: #222222;
                  margin-bottom: 24rpx;
               }
               &:nth-child(2) {
                  font-size: 24rpx;
                  font-weight: 400;
                  color: #666666;
                  margin-bottom: 30rpx;
                  text {
                     font-size: 24rpx;
                  }
               }
               &:nth-child(3) {
                  font-size: 28rpx;
                  font-weight: 400;
                  color: #333333;
               }
            }
         }
      }
      .zk_z {
         height: 168rpx;
      }
      .zk_footer {
         width: 100%;
         box-sizing: border-box;
         padding: 0 30rpx;
         position: fixed;
         bottom: 0;
         left: 0;
         z-index: 999;
         padding-bottom: 68rpx;
         display: flex;
         align-items: center;
         justify-content: space-between;
         .zk_footer_wl {
            flex: 1;
            height: 88rpx;
            background: #FFFFFF;
            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
            border-radius: 8rpx;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 30rpx;
            font-weight: 500;
            color: $nav-color;
         }
         .zk_footer_submit {
            flex: 1;
            height: 88rpx;
            background: $nav-color;
            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
            border-radius: 8rpx;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 30rpx;
            font-weight: 500;
            color: #FFFFFF;
         }
      }
   }
</style>