batchSingleApplication.vue 11.2 KB
Newer Older
1
<template>
2
  <el-dialog
dcy's avatar
dcy committed
3 4
    :visible.sync="dialogVisible"
    width="80%"
5 6 7 8
    :before-close="()=>{
      $emit('update:dialogVisible',false)
    }">
    <div class="batch-single-application">
dcy's avatar
dcy committed
9
      <h1 class="title">{{$t('调仓申请')}}</h1>
10
      <el-table :data="list">
dcy's avatar
dcy committed
11 12 13
        <el-table-column :label="$t('订单编号')" prop="orderNo"></el-table-column>
        <el-table-column :label="$t('唛头')" prop="marks"></el-table-column>
        <el-table-column :label="$t('已到箱数/总箱数')">
dcy's avatar
dcy committed
14
          <template v-slot={row}>
dcy's avatar
dcy committed
15
            {{ row.sumNum }}箱/{{ row.totalNum }}
16 17
          </template>
        </el-table-column>
dcy's avatar
dcy committed
18
        <el-table-column :label="$t('下单统计')">
19 20
          <template v-slot="{row}">
            <div v-if="row.costVO">
dcy's avatar
dcy committed
21
              {{$t('箱数')}}{{ row.costVO.totalNum }}
22 23 24 25 26 27
               <div>
                 体积:{{ row.costVO.totalVolume }}CBM
               </div>
                <div>
                  重量:{{ row.costVO.totalWeight }}kg
                </div>
28 29 30
            </div>
          </template>
        </el-table-column>
dcy's avatar
dcy committed
31
        <el-table-column :label="$t('入仓统计')" width="150">
32
          <template v-slot="{row}">
dcy's avatar
dcy committed
33 34 35
            <div>{{$t('总箱数')}}{{ row.sumNum || 0 }}</div>
            <div>{{$t('体积')}}{{ row.sumVolume || 0 }}CBM</div>
            <div>{{$t('重量')}}{{ row.sumWeight || 0 }}KG</div>
36 37
          </template>
        </el-table-column>
dcy's avatar
dcy committed
38
        <el-table-column :label="$t('入仓时间')" prop="rucangTime">
dcy's avatar
dcy committed
39 40 41
           <template v-slot="{row}">
             {{parseTime(row.rucangTime)}}
           </template>
42
        </el-table-column>
dcy's avatar
dcy committed
43
        <el-table-column :label="$t('运输方式')">
dcy's avatar
dcy committed
44
          <template v-slot={row}>
45 46 47
            <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId"></dict-tag>
          </template>
        </el-table-column>
dcy's avatar
dcy committed
48
        <el-table-column :label="$t('出货渠道')">
dcy's avatar
dcy committed
49 50
          <template v-slot="{row}">
           {{row.channelName || '/'}}</template>
51
        </el-table-column>
Marcus's avatar
Marcus committed
52
        <!--      <el-table-column :label="$t('始发仓')" prop="startWarehouseName"></el-table-column>-->
dcy's avatar
dcy committed
53 54
        <el-table-column :label="$t('目的地')" prop="objectiveName"></el-table-column>
        <el-table-column :label="$t('始发仓')" prop="startWarehouseName">
dcy's avatar
dcy committed
55
        </el-table-column>
dcy's avatar
dcy committed
56
        <el-table-column :label="$t('发货人')">
57 58 59 60
          <template v-slot="{row}">
            <div>
              <div>
                <p>
dcy's avatar
dcy committed
61
                  {{ row.consignorName }}
62 63
                </p>
                <p>
邓春圆's avatar
邓春圆 committed
64
                  +{{row.consignorCountryCode}}   {{row.consignorPhone}}
65 66 67 68 69
                </p>
              </div>
            </div>
          </template>
        </el-table-column>
dcy's avatar
dcy committed
70
        <el-table-column :label="$t('收货人')">
71 72 73
          <template v-slot="{row}">
            <div>
              <p>
dcy's avatar
dcy committed
74
                {{ row.consigneeName }}
75 76
              </p>
              <p>
邓春圆's avatar
邓春圆 committed
77
               +{{row.consigneeCountryCode}}   {{ row.consigneePhone}}
78 79 80 81 82
              </p>
            </div>
          </template>
        </el-table-column>
      </el-table>
dcy's avatar
dcy committed
83 84 85
      <el-row style="margin-top: 30px">
        <el-col :span="8">
          <div style="text-align: right;">
邓春圆's avatar
邓春圆 committed
86
            {{ list[0] && list[0].adjustToDestWarehouseName ? list[0].adjustToDestWarehouseName : list[0] ? [14,16,15].includes(this.list[0].status) ? list[0].dstWarehouseName : list[0].startWarehouseName : '' }}
dcy's avatar
dcy committed
87 88 89
          </div>
        </el-col>
        <el-col :span="3"><div style="text-align:center">
dcy's avatar
dcy committed
90
          {{$t('调至')}}
dcy's avatar
dcy committed
91
        </div></el-col>
92 93
        <el-col :span="8">
          <el-select clearable v-model="params.warehouseInId">
dcy's avatar
dcy committed
94
          <el-option  v-for="(item ,index) in availableWarehouse" v-if="item.status !== 1"  :value="item.id" :label="item.titleZh"
dcy's avatar
dcy committed
95 96 97
                     :key="index"></el-option>
        </el-select></el-col>
      </el-row>
dcy's avatar
dcy committed
98
      <el-divider contentPosition="left">{{$t('调仓明细')}}</el-divider>
dcy's avatar
dcy committed
99 100
      <el-card class="box-card">
          <el-table :data="warehouseList">
dcy's avatar
dcy committed
101 102 103 104 105
            <el-table-column :label="$t('调仓编号')" prop="id"></el-table-column>
            <el-table-column :label="$t('调出仓库')" prop="warehouseOutName" ></el-table-column>
            <el-table-column :label="$t('调入仓库')" prop="warehouseInName"></el-table-column>
            <el-table-column :label="$t('申请人')" prop="creatorName"></el-table-column>
            <el-table-column :label="$t('申请时间')">
dcy's avatar
dcy committed
106 107 108 109
              <template v-slot="{row}">
                {{parseTime(row.createTime)}}
              </template>
            </el-table-column>
dcy's avatar
dcy committed
110
            <el-table-column :label="$t('状态')">
dcy's avatar
dcy committed
111 112 113 114
              <template v-slot="{row}">
                {{STATUS[row.status]}}
              </template>
            </el-table-column>
115 116 117 118 119 120 121 122 123 124
            <el-table-column :label="$t('出仓影像')">
              <template v-slot="{row}">
                <warehouse-video-list :modal="false" :status="2" :item ="row"></warehouse-video-list>
              </template>
            </el-table-column>
            <el-table-column :label="$t('入仓影像')">
              <template v-slot="{row}">
                <warehouse-video-list :modal="false" :status="3" :item ="row"></warehouse-video-list>
              </template>
            </el-table-column>
邓春圆's avatar
邓春圆 committed
125
            <el-table-column :label="$t('调拨出仓备注')" prop="deliveryRemark">
126
            </el-table-column>
邓春圆's avatar
邓春圆 committed
127
            <el-table-column :label="$t('调拨到仓备注')" prop="arrivalRemark">
128
            </el-table-column>
dcy's avatar
dcy committed
129 130
          </el-table>
      </el-card>
dcy's avatar
dcy committed
131
      <el-divider contentPosition="left">{{$t('审批流程')}}</el-divider>
132
      <div style="padding: 20px">
dcy's avatar
dcy committed
133
        <work-flow xmlkey="warehouse_transfer" v-model="params.copyUserId"/>
134
      </div>
dcy's avatar
dcy committed
135
      <div style="text-align: center" v-if="!adjustmentBol">
dcy's avatar
dcy committed
136 137
        <el-button :disabled="!params.warehouseInId" style="margin-right: 50px" @click="submit">{{$t('提交申请')}}</el-button>
        <el-button @click="$emit('update:dialogVisible',false)">{{$t('取消')}}</el-button>
138
      </div>
dcy's avatar
dcy committed
139 140
      <div style="text-align: center" v-else>
        <el-button @click="()=>{
dragondean@qq.com's avatar
dragondean@qq.com committed
141
          $emit('update:dialogVisible',false)
dcy's avatar
dcy committed
142
          $router.push({path:'/bpm/process-instance/detail',query:{id:this.applyStatus.orderWarehouseApprovalBackVO.formId}})
dcy's avatar
dcy committed
143 144 145
        }">{{$t('审核中')}}</el-button>
        <el-button @click="cancellationOfOrder" >{{$t('取消审核')}}</el-button>
        <el-button @click="$emit('update:dialogVisible',false)" >{{$t('取消')}}</el-button>
dcy's avatar
dcy committed
146
      </div>
147
    </div>
148
  </el-dialog>
149 150 151
</template>

<script>
152 153
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import {
dcy's avatar
dcy committed
154
  adjustApplyStatus, adjustLastWithStatus, cancelAdjustApply,
155 156
  ecwOrderList,
  orderWarehouseInAdjustApply,
dcy's avatar
dcy committed
157
  warehouseAdjustmentList, warehouseApprovalCancel,
158
} from "@/api/ecw/batchSingleApplication";
159 160
import {getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition";
import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
dcy's avatar
dcy committed
161
import {getAdjustInfo, getOrderPage} from "@/api/ecw/order";
dcy's avatar
dcy committed
162
import workFlow from "@/components/WorkFlow";
163
import Template from "@/views/cms/template";
dcy's avatar
dcy committed
164 165
import {arrryToKeyedObjectBy} from "@/utils";
import {getChannelList} from "@/api/ecw/channel";
166
import WarehouseVideoList from "@/views/ecw/order/components/warehouse-video-list.vue";
dcy's avatar
dcy committed
167

168
export default {
169
  name: "batchSingleApplication",
dcy's avatar
dcy committed
170 171 172 173 174
  props: {
    orderList: [String, Number],
    dialogVisible: {
      type: Boolean,
      default: false,
175
    }
176
  },
dcy's avatar
dcy committed
177
  components: {
178
    WarehouseVideoList,
179
    Template,
dcy's avatar
dcy committed
180 181
    warehouseDetails,
    workFlow
182
  },
dcy's avatar
dcy committed
183 184
  created() {
    getChannelList().then(res => this.channelList = res.data)
dcy's avatar
dcy committed
185

dcy's avatar
dcy committed
186
    },
dcy's avatar
dcy committed
187

dcy's avatar
dcy committed
188 189 190 191
  watch: {
    dialogVisible(val) {
      if (val) {
        this.getOrderListFn()
dcy's avatar
dcy committed
192 193 194
        getAdjustInfo({orderId:this.orderList,lang:0}).then(r => {
          this.warehouseList = r.data
        })
dcy's avatar
dcy committed
195 196 197 198 199 200 201 202
      } else {
        this.params = {
          orderIds: undefined,
          warehouseInId: undefined,
          warehouseOutId: undefined,
          copyUserId: [],
        }
      }
203
    }
204
  },
dcy's avatar
dcy committed
205 206
  computed: {
    adjustmentBol() {
dcy's avatar
dcy committed
207
      return this.applyStatus?.orderWarehouseAdjustBackVO?.status === 1
dcy's avatar
dcy committed
208 209 210 211 212 213 214 215 216 217 218
    },
    getShipChannelName() {
      return shippingChannelId => {
        for (let index in this.channelList) {
          let channelItem = this.channelList[index];
          if (channelItem.channelId == shippingChannelId) {
            return channelItem.nameZh;
          }
        }
        return '/'
      }
219
    }
220
  },
dcy's avatar
dcy committed
221
  data() {
222
    return {
dcy's avatar
dcy committed
223
      STATUS : {1:this.$t('申请中'), 2:this.$t('通过'), 3:this.$t('不通过'), 4:this.$t('已取消'), 5:this.$t('已出仓'),6:this.$t('已到仓')},
dcy's avatar
dcy committed
224 225 226
      list: [],
      selectedUsers: [],
      availableWarehouse: [],
227
      DICT_TYPE,
dcy's avatar
dcy committed
228 229 230 231 232
      departureWarehouse: undefined,
      adjustment: undefined,
      params: {
        orderIds: undefined,
        warehouseInId: undefined,
dcy's avatar
dcy committed
233
        warehouseOutId: undefined,
dcy's avatar
dcy committed
234
        copyUserId: [],
235
      },
dcy's avatar
dcy committed
236
      applyStatus:{},//调仓-查看状态,
dcy's avatar
dcy committed
237 238
      channelList:[],
      warehouseList:[]
dcy's avatar
dcy committed
239

240 241
    }
  },
dcy's avatar
dcy committed
242 243 244 245
  methods: {
    getOrderListFn() {
      getOrderPage({orderIdList: this.orderList}).then(r => {
        this.list = r.data.list
邓春圆's avatar
邓春圆 committed
246
        warehouseAdjustmentList({id: this.list[0].adjustToDestWarehouseId  ? this.list[0].adjustToDestWarehouseId  :[14,16,15].includes(this.list[0].status) ? this.list[0].dstWarehouseId : this.list[0].startWarehouseId }).then(r => this.availableWarehouse = r.data)
dcy's avatar
dcy committed
247 248 249 250 251 252
        adjustLastWithStatus({orderId:this.list[0].orderId,lang:0}).then(r =>{
          this.applyStatus = r.data
          if(r.data?.orderWarehouseAdjustBackVO?.status === 1){
            this.params.warehouseInId = r.data.orderWarehouseAdjustBackVO?.warehouseInId
          }
        })
dcy's avatar
dcy committed
253 254 255
      })
    },
    submit() {
256 257
      let p = this.list.map(e => e.orderId).join(',');
      this.params.orderIds = p;
邓春圆's avatar
邓春圆 committed
258
      this.params.warehouseOutId = this.list[0].adjustToDestWarehouseId  ? this.list[0].adjustToDestWarehouseId  : [14,16,15].includes(this.list[0].status) ? this.list[0].dstWarehouseId : this.list[0].startWarehouseId;
259
      this.params.orderNo = this.list[0].orderNo
dcy's avatar
dcy committed
260 261 262
      orderWarehouseInAdjustApply(this.params).then(r => {
        if (r.code === 0) {
          this.$emit('update:dialogVisible', false)
dcy's avatar
dcy committed
263
          this.$message.success(this.$t('调仓申请提交成功,请耐心等待审核'));
264 265
        }
      })
dcy's avatar
dcy committed
266
    },
dcy's avatar
dcy committed
267
    cancellationOfOrder(){
dcy's avatar
dcy committed
268 269 270
      this.$prompt(this.$t('请输入审核调仓原因'), this.$t('提示'), {
        confirmButtonText: this.$t('确定'),
        cancelButtonText: this.$t('取消'),
dcy's avatar
dcy committed
271 272 273
      }).then(({ value }) => {
        warehouseApprovalCancel(this.applyStatus.orderWarehouseApprovalBackVO.id,value) .then(r => {
          if(r.data){
dcy's avatar
dcy committed
274
            this.$message.success(this.$t('取消调仓成功'))
dcy's avatar
dcy committed
275
            this.$emit('update:dialogVisible',false)
dcy's avatar
dcy committed
276

dcy's avatar
dcy committed
277 278 279 280 281
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
dcy's avatar
dcy committed
282
          message: this.$t('取消成功')
dcy's avatar
dcy committed
283
        });
dcy's avatar
dcy committed
284
      });
dcy's avatar
dcy committed
285 286
    },

287
  }
288 289 290 291
}
</script>

<style scoped lang="scss">
dcy's avatar
dcy committed
292
.batch-single-application {
293 294
  padding: 20px;
  box-sizing: border-box;
dcy's avatar
dcy committed
295 296 297 298 299

  .title {
    font-weight: 600;
    text-align: left;
  }
300
}
dcy's avatar
dcy committed
301

302 303 304 305 306 307 308 309
.my-process-designer {
  height: calc(100vh - 200px);
}

.box-card {
  width: 100%;
  margin-bottom: 20px;
}
310
</style>