batchSingleApplication.vue 7.4 KB
Newer Older
1
<template>
2
  <el-dialog
dcy's avatar
dcy committed
3 4
    :visible.sync="dialogVisible"
    width="80%"
5 6 7 8 9 10 11 12 13
    :before-close="()=>{
      $emit('update:dialogVisible',false)
    }">
    <div class="batch-single-application">
      <h1 class="title">调仓申请</h1>
      <el-table :data="list">
        <el-table-column label="订单编号" prop="orderNo"></el-table-column>
        <el-table-column label="唛头" prop="marks"></el-table-column>
        <el-table-column label="已到箱数/总箱数">
dcy's avatar
dcy committed
14 15
          <template v-slot={row}>
            {{ row.sumQuantity || 0 }}/{{ row.totalNum }}
16 17 18 19 20
          </template>
        </el-table-column>
        <el-table-column label="下单统计">
          <template v-slot="{row}">
            <div v-if="row.costVO">
dcy's avatar
dcy committed
21 22 23
              箱数:{{ row.costVO.totalNum }}
              {{ row.costVO.totalVolume }}
              {{ row.costVO.totalWeight }}kg
24 25 26 27 28
            </div>
          </template>
        </el-table-column>
        <el-table-column label="入仓统计" width="150">
          <template v-slot="{row}">
dcy's avatar
dcy committed
29 30 31
            <div>总箱数:{{ row.sumNum || 0 }}</div>
            <div>体积:{{ row.sumVolume || 0 }}CBM</div>
            <div>重量:{{ row.sumWeight || 0 }}KG</div>
32 33 34
          </template>
        </el-table-column>
        <el-table-column label="入仓时间">
35

36 37
        </el-table-column>
        <el-table-column label="运输方式">
dcy's avatar
dcy committed
38
          <template v-slot={row}>
39 40 41 42
            <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId"></dict-tag>
          </template>
        </el-table-column>
        <el-table-column label="出货渠道">
43

44 45 46 47 48 49 50 51
        </el-table-column>
        <!--      <el-table-column label="始发仓" prop="startWarehouseName"></el-table-column>-->
        <el-table-column label="目的地" prop="objectiveName"></el-table-column>
        <el-table-column label="发货人">
          <template v-slot="{row}">
            <div>
              <div>
                <p>
dcy's avatar
dcy committed
52
                  {{ row.consignorName }}
53 54 55 56 57 58 59 60 61 62 63
                </p>
                <p>
                </p>
              </div>
            </div>
          </template>
        </el-table-column>
        <el-table-column label="收货人">
          <template v-slot="{row}">
            <div>
              <p>
dcy's avatar
dcy committed
64
                {{ row.consigneeName }}
65 66
              </p>
              <p>
dcy's avatar
dcy committed
67
                {{ row.consigneePhone }}
68 69 70 71 72 73
              </p>
            </div>
          </template>
        </el-table-column>
        <el-table-column>
          <template v-slot="{row}">
dcy's avatar
dcy committed
74
            <el-button @click="canceLtiaoCang(row)" type="text" v-if="row.inWarehouseState === 10">
dcy's avatar
dcy committed
75
              取消调仓
76 77 78 79 80 81
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <div style="display: flex;justify-content:center; margin-top: 20px">
        <div style="width: 200px; margin: 0 10px">
dcy's avatar
dcy committed
82
          {{ list[0] && list[0].startWarehouseName ? list[0].startWarehouseName : '' }}
83 84 85
        </div>
        <div style="width: 200px;">
          <el-select v-model="params.warehouseInId">
dcy's avatar
dcy committed
86 87
            <el-option v-for="(item ,index) in availableWarehouse" :value="item.id" :label="item.titleZh"
                       :key="index"></el-option>
88 89
          </el-select>
        </div>
90
      </div>
91 92 93 94 95
      <el-divider></el-divider>
      <h1 class="title">
        审批流程
      </h1>
      <div style="padding: 20px">
dcy's avatar
dcy committed
96
        <work-flow xmlkey="warehouse_transfer" v-model="params.copyUserId"/>
97
      </div>
98
      <div style="text-align: center">
dcy's avatar
dcy committed
99 100
        <el-button style="margin-right: 50px" v-if="adjustmentBol">审核中</el-button>
        <el-button v-else style="margin-right: 50px" @click="submit" :disabled="isSubmit">提交申请</el-button>
101 102 103
        <el-button @click="$emit('update:dialogVisible',false)">取消</el-button>
      </div>
      <!--    <warehouseDetails></warehouseDetails>-->
104
    </div>
105
  </el-dialog>
106 107 108
</template>

<script>
109 110
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import {
dcy's avatar
dcy committed
111
  adjustApplyStatus, cancelAdjustApply,
112 113 114 115
  ecwOrderList,
  orderWarehouseInAdjustApply,
  warehouseAdjustmentList,
} from "@/api/ecw/batchSingleApplication";
116 117
import {getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition";
import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
dcy's avatar
dcy committed
118
import {getOrderPage} from "@/api/ecw/order";
dcy's avatar
dcy committed
119
import workFlow from "@/components/WorkFlow";
120
import Template from "@/views/cms/template";
dcy's avatar
dcy committed
121

122
export default {
123
  name: "batchSingleApplication",
dcy's avatar
dcy committed
124 125 126 127 128
  props: {
    orderList: [String, Number],
    dialogVisible: {
      type: Boolean,
      default: false,
129
    }
130
  },
dcy's avatar
dcy committed
131
  components: {
132
    Template,
dcy's avatar
dcy committed
133 134
    warehouseDetails,
    workFlow
135
  },
dcy's avatar
dcy committed
136 137 138 139 140 141 142 143 144 145 146 147
  watch: {
    dialogVisible(val) {
      if (val) {
        this.getOrderListFn()
      } else {
        this.params = {
          orderIds: undefined,
          warehouseInId: undefined,
          warehouseOutId: undefined,
          copyUserId: [],
        }
      }
148
    }
149
  },
dcy's avatar
dcy committed
150 151
  computed: {
    isSubmit() {
152
      let flag = true;
dcy's avatar
dcy committed
153
      if (this.list.length === 1 && this.list[0].status === 5) {
154
        flag = false
dcy's avatar
dcy committed
155 156 157 158 159
      } else {
        let l = this.list.map(e => e.startWarehouseId)
        if (this.list.every(e => e.status === 5) && [...new Set(l)].length === 1) flag = false
      }
      return flag;
dcy's avatar
dcy committed
160
    },
dcy's avatar
dcy committed
161
    adjustmentBol() {
dcy's avatar
dcy committed
162
      return this.list.some(e => e.inWarehouseState === 10)
163
    }
164
  },
dcy's avatar
dcy committed
165
  data() {
166
    return {
dcy's avatar
dcy committed
167 168 169
      list: [],
      selectedUsers: [],
      availableWarehouse: [],
170
      DICT_TYPE,
dcy's avatar
dcy committed
171 172 173 174 175
      departureWarehouse: undefined,
      adjustment: undefined,
      params: {
        orderIds: undefined,
        warehouseInId: undefined,
dcy's avatar
dcy committed
176
        warehouseOutId: undefined,
dcy's avatar
dcy committed
177
        copyUserId: [],
178
      },
179 180
    }
  },
dcy's avatar
dcy committed
181 182 183 184 185 186 187 188
  methods: {
    getOrderListFn() {
      getOrderPage({orderIdList: this.orderList}).then(r => {
        this.list = r.data.list
        warehouseAdjustmentList({id: this.list[0].startWarehouseId}).then(r => this.availableWarehouse = r.data)
      })
    },
    submit() {
189 190 191 192
      let p = this.list.map(e => e.orderId).join(',');
      this.params.orderIds = p;
      this.params.warehouseOutId = this.list[0].startWarehouseId;
      this.params.orderNo = this.list[0].orderNo
dcy's avatar
dcy committed
193 194 195
      orderWarehouseInAdjustApply(this.params).then(r => {
        if (r.code === 0) {
          this.$emit('update:dialogVisible', false)
196 197 198
          this.$message.success('调仓成功');
        }
      })
dcy's avatar
dcy committed
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
    },
    async canceLtiaoCang(row) {
      let res = await adjustApplyStatus({orderId: row.orderId})
      if (res.data.isBatch) {
        this.$message.warning('批量提提交请耐心等待')
      } else {
        this.$prompt('请问您是否要取消调仓?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning',
        }).then((val) => {
          cancelAdjustApply({orderId: row.orderId, reason: val.value}).then(r => {
            if (r.code === 0) {
              this.$message({
                type: 'success',
                message: '取消调仓成功!'
              });
              this.getOrderListFn()
            }
          })

        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消'
          });
        });
      }
    },
228
  }
229 230 231 232
}
</script>

<style scoped lang="scss">
dcy's avatar
dcy committed
233
.batch-single-application {
234 235
  padding: 20px;
  box-sizing: border-box;
dcy's avatar
dcy committed
236 237 238 239 240

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

243 244 245 246 247 248 249 250
.my-process-designer {
  height: calc(100vh - 200px);
}

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