Release.vue 8.01 KB
Newer Older
dragondean@qq.com's avatar
dragondean@qq.com committed
1
<template>
2 3
    <el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="1000px">
      <el-form v-if="agreement"  ref="form" :model="formData" :rules="rules" size="small" label-width="100px" >
dragondean@qq.com's avatar
dragondean@qq.com committed
4 5
        <el-row>
          <el-col :span="6">
6
            <el-form-item :label="$t('订单号')">
7
              {{detail.orderNo}}
dragondean@qq.com's avatar
dragondean@qq.com committed
8 9 10
            </el-form-item>
          </el-col>
          <el-col :span="6">
11
            <el-form-item :label="$t('总箱数')">
dragondean@qq.com's avatar
dragondean@qq.com committed
12
              {{detail.sumNum}}
dragondean@qq.com's avatar
dragondean@qq.com committed
13 14 15
            </el-form-item>
          </el-col>
          <el-col :span="6">
16
            <el-form-item :label="$t('体积')">
dragondean@qq.com's avatar
dragondean@qq.com committed
17
              {{detail.sumVolume}}
dragondean@qq.com's avatar
dragondean@qq.com committed
18 19 20
            </el-form-item>
          </el-col>
          <el-col :span="6">
21
            <el-form-item :label="$t('重量')">
dragondean@qq.com's avatar
dragondean@qq.com committed
22
              {{detail.sumWeight}}kg
dragondean@qq.com's avatar
dragondean@qq.com committed
23 24 25
            </el-form-item>
          </el-col>
          <el-col :span="6">
26
            <el-form-item :label="$t('总控货箱数')">
27
              {{detail.sumNum}}
dragondean@qq.com's avatar
dragondean@qq.com committed
28 29 30
            </el-form-item>
          </el-col>
          <el-col :span="6">
31
            <el-form-item :label="$t('剩余放货箱数')">
32
              {{detail.sumNum - detail.releaseNum	}}
dragondean@qq.com's avatar
dragondean@qq.com committed
33 34 35
            </el-form-item>
          </el-col>
        </el-row>
36
        <div class="title">{{$t('请填写放货信息')}}</div>
37
        <div class="flex">
38 39
          <el-form-item :label="$t('收货人')" prop="consigneeName">
            <el-input v-model="formData.consigneeName" :placeholder="$t('请输入收货人')" clearable class="w-150" ></el-input>
dragondean@qq.com's avatar
dragondean@qq.com committed
40
          </el-form-item>
41
          <el-form-item :label="$t('收货人电话')" prop="consigneePhone">
Marcus's avatar
Marcus committed
42
            <!-- <el-input v-model="formData.field109" :placeholder="$t('区号')" clearable class="w-150"></el-input> -->
43
            <area-code-selector v-model="formData.consigneeCountryCode" class="w-150" />
44
            <el-input v-model="formData.consigneePhone" :placeholder="$t('请输入收货人电话')" clearable class="w-150 ml-10"></el-input>
dragondean@qq.com's avatar
dragondean@qq.com committed
45
          </el-form-item>
46 47
          <el-form-item :label="$t('收货人邮箱')" prop="consigneeEmail">
            <el-input v-model="formData.consigneeEmail" :placeholder="$t('请输入收货人邮箱')" clearable class="w-150" ></el-input>
dragondean@qq.com's avatar
dragondean@qq.com committed
48
          </el-form-item>
49
        </div>
dragondean@qq.com's avatar
dragondean@qq.com committed
50
        <el-table :data="[formData]" border class="release-table">
51
          <el-table-column :label="$t('控货箱数')">
dragondean@qq.com's avatar
dragondean@qq.com committed
52
              {{detail.sumNum - detail.releaseNum	}}
53
          </el-table-column>
54
          <el-table-column :label="$t('放货箱数')">
55
            <template slot-scope="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
56 57 58
              <el-form-item prop="pickNum" label-width="0" class="mb-0">
                <el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
              </el-form-item>
59 60
            </template>
          </el-table-column>
61
          <el-table-column :label="$t('体积') + '(m³)'">
62 63 64 65
            <template slot-scope="{row}">
              <el-input type="number" v-model.number="row.pickVolume" placeholder="" clearable></el-input>
            </template>
          </el-table-column>
66
          <el-table-column :label="$t('重量') + '(kg)'">
67 68 69 70
            <template slot-scope="{row}">
              <el-input type="number" v-model.number="row.pickWeight" placeholder="" clearable></el-input>
            </template>
          </el-table-column>
71
          <el-table-column :label="$t('备注')">
72 73 74 75 76
            <template slot-scope="{row}">
              <el-input v-model="row.remarks" placeholder="" clearable></el-input>
            </template>
          </el-table-column>
        </el-table>
77
        <el-form-item :label="$t('控货手机号')" prop="field117" style="margin-top:20px">
dragondean@qq.com's avatar
dragondean@qq.com committed
78
          <el-input :value="'+' + detail.dialCode + detail.phone" readonly :placeholder="$t('请输入控货手机号')" >
79 80
          </el-input>
        </el-form-item>
81 82
        <el-form-item :label="$t('手机验证码')" prop="code">
          <el-input v-model="formData.code" :placeholder="$t('请输入手机验证码')" clearable class="w-150 mr-10"></el-input>
Marcus's avatar
Marcus committed
83
          <!-- <el-button type="success">{{ $t('获取验证码') }}</el-button> -->
84 85 86
          <send-sms-code :order-id="detail.orderId" scene="5" />
        </el-form-item>
        <el-form-item label="" style="margin-top:20px">
87 88
          <el-button type="success" @click="submit">{{$t('确认放货')}}</el-button>
          <el-button type="default" @click="closeDialog">{{$t('关闭')}}</el-button>
89
        </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
90 91 92
      </el-form>

      <div v-else>
dragondean@qq.com's avatar
dragondean@qq.com committed
93 94
          <!-- <release-agreement /> -->
          <need-know ref="needKnow" keyname="control" />
dragondean@qq.com's avatar
dragondean@qq.com committed
95
          <div style="margin-top:30px">
96
              <el-button type="primary" @click="agreement=true">{{$t('我同意')}}</el-button>
Marcus's avatar
Marcus committed
97
              <!-- <el-button type="primary" @click="$refs.needKnow.download()">{{ $t('保存协议') }}</el-button> -->
98
              <el-button @click="closeDialog">{{$t('关闭')}}</el-button>
dragondean@qq.com's avatar
dragondean@qq.com committed
99 100 101 102 103
          </div>
      </div>
    </el-dialog>
</template>
<script>
dragondean@qq.com's avatar
dragondean@qq.com committed
104
import {getOrder} from '@/api/ecw/order'
dragondean@qq.com's avatar
dragondean@qq.com committed
105
import {createPick, getReleaseInfo} from '@/api/ecw/orderCargoControl'
106 107
import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
dragondean@qq.com's avatar
dragondean@qq.com committed
108
import NeedKnow from '@/components/NeedKnow'
dragondean@qq.com's avatar
dragondean@qq.com committed
109
import Decimal from 'decimal.js'
dragondean@qq.com's avatar
dragondean@qq.com committed
110 111 112 113
export default {
    props:{
        orderId: [String, Number]
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
114
    components: {AreaCodeSelector, SendSmsCode, NeedKnow},
dragondean@qq.com's avatar
dragondean@qq.com committed
115 116 117 118
    data(){
        return {
            show: false,
            detail: null,
119 120 121 122 123 124 125
            formData:{
              "pickNum": 0,
              "pickQuantity": 0,
              "pickVolume": 0,
              "pickWeight": 0,
              "remarks": "",
            },
dragondean@qq.com's avatar
dragondean@qq.com committed
126 127 128
            agreement: false, // 是否同意协议
        }
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
129 130 131 132 133 134
    watch:{
      'formData.pickNum'(pickNum){
        this.$set(this.formData, 'pickVolume', Decimal(this.detail.sumVolume).mul(pickNum).div(this.detail.sumNum).toFixed(2))
        this.$set(this.formData, 'pickWeight', Decimal(this.detail.sumWeight).mul(pickNum).div(this.detail.sumNum).toFixed(2))
      }
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
135
    computed:{
dragondean@qq.com's avatar
dragondean@qq.com committed
136 137 138
        rules(){
          return {
            consigneeName: {required: true, message: this.$t('请填写收货人')},
Marcus's avatar
Marcus committed
139
            code: {required: true, message: this.$t('请填写验证码')},
dragondean@qq.com's avatar
dragondean@qq.com committed
140 141 142
            pickNum: {
              type: 'number',
              max: this.detail.sumNum - this.detail.releaseNum,
Marcus's avatar
Marcus committed
143
              message: this.$t("不能超过剩余箱数"),
dragondean@qq.com's avatar
dragondean@qq.com committed
144 145 146 147
              trigger: 'change'
            }
          }
        },
dragondean@qq.com's avatar
dragondean@qq.com committed
148
        title(){
149
            let t = this.$t('放货')
dragondean@qq.com's avatar
dragondean@qq.com committed
150 151 152 153 154 155 156 157 158 159 160 161
            if(this.detail){
                t += '-' + this.detail.orderNo
            }
            return t
        }
    },
    created(){
        this.show = true
        this.loadData()
    },
    methods:{
        loadData(){
dragondean@qq.com's avatar
dragondean@qq.com committed
162
            getReleaseInfo(this.orderId).then(res => {
163 164 165 166 167 168
              this.detail = res.data
              this.$set(this.formData, 'consigneeName', res.data.consigneeName)
              this.$set(this.formData, 'consigneeCountryCode', '+' + res.data.consigneeCountryCode)
              this.$set(this.formData, 'consigneePhone', res.data.consigneePhone)
              this.$set(this.formData, 'consigneeEmail', res.data.consigneeEmail)
            })
dragondean@qq.com's avatar
dragondean@qq.com committed
169 170
        },
        closeDialog(){
dragondean@qq.com's avatar
dragondean@qq.com committed
171 172
          this.show = false
          this.$emit('close')
dragondean@qq.com's avatar
dragondean@qq.com committed
173
        },
174 175 176 177 178
        submit(){
          this.$refs.form.validate(valid => {
            if(!valid){
              return false
            }
179
            createPick(Object.assign({orderId: this.orderId}, this.formData)).then(res => {
180
              this.$message.success(res.msg || this.$t('操作成功'))
dragondean@qq.com's avatar
dragondean@qq.com committed
181 182
              this.show = false
              this.$emit('success')
183 184 185 186 187
            })
          })
          

        }
dragondean@qq.com's avatar
dragondean@qq.com committed
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204
    }
}
</script>
<style lang="scss" scoped>
.title{
  font-size:16px;
  margin:20px 0;
  display:flex;
  align-items:center;
  &:before{
    content: '';
    width:5px;
    height: 15px;
    background:#666;
    margin-right:10px;
  }
}
dragondean@qq.com's avatar
dragondean@qq.com committed
205 206 207
::v-deep .release-table .el-form-item__error{
    position: static;
}
dragondean@qq.com's avatar
dragondean@qq.com committed
208
</style>