preinstall.vue 37.6 KB
Newer Older
huhaiiqng's avatar
huhaiiqng committed
1
<template>
huhaiqing's avatar
huhaiqing committed
2
  <div class="preinstall">
huhaiiqng's avatar
huhaiiqng committed
3
    <!-- 搜索工作栏 -->
4
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
5 6
      <el-form-item :label="$t('入仓时间')" prop="rucangtime">
        <el-date-picker v-model="queryParams.rucangtime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" range-separator="-" start-:placeholder="$t('开始日期')" end-:placeholder="$t('结束日期')" />
huhaiiqng's avatar
huhaiiqng committed
7
      </el-form-item>
8 9 10
      <el-form-item :label="$t('始发地')" prop="startWarehouseId">
        <el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')" clearable size="small">
          <el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
huhaiiqng's avatar
huhaiiqng committed
11 12
        </el-select>
      </el-form-item>
13 14 15
      <el-form-item :label="$t('目的地')" prop="destWarehouseIdList">
        <el-select v-model="queryParams.destWarehouseIdList" :placeholder="$t('请选择目的地')" multiple clearable>
          <el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
huhaiiqng's avatar
huhaiiqng committed
16 17
        </el-select>
      </el-form-item>
18 19
      <el-form-item :label="$t('状态')" prop="orderStatus">
        <el-select v-model="queryParams.orderStatus" :placeholder="$t('请选择状态')" clearable size="small">
huhaiqing's avatar
huhaiqing committed
20
          <el-option v-for="item in stateOps" :label="$l(item, 'label')" :value="item.value" :key="item.value"></el-option>
huhaiiqng's avatar
huhaiiqng committed
21 22
        </el-select>
      </el-form-item>
23 24
      <el-form-item :label="$t('备案')" prop="productRecord">
        <el-select v-model="queryParams.productRecord" :placeholder="$t('请选择备案')" clearable size="small">
huhaiqing's avatar
huhaiqing committed
25
          <el-option v-for="item in filingOps" :label="$l(item, 'label')" :value="item.value" :key="item.value"></el-option>
huhaiiqng's avatar
huhaiiqng committed
26 27
        </el-select>
      </el-form-item>
28 29
      <el-form-item :label="$t('报关方式')" prop="customsType">
        <el-select v-model="queryParams.customsType" :placeholder="$t('请选择报关方式')" clearable size="small">
huhaiqing's avatar
huhaiqing committed
30
          <el-option v-for="item in declarationMethodOps" :label="$l(item, 'label')" :value="item.value" :key="item.value"></el-option>
huhaiiqng's avatar
huhaiiqng committed
31 32
        </el-select>
      </el-form-item>
huhaiqing's avatar
huhaiqing committed
33 34
      <el-form-item :label="$t('待预装订单')" prop="toBePreOrderNo">
        <el-input v-model="queryParams.toBePreOrderNo" :placeholder="$t('请输入待预装订单')" clearable />
huhaiiqng's avatar
huhaiiqng committed
35
      </el-form-item>
36 37
      <el-form-item :label="$t('已预装单号')" prop="preOrderNo">
        <el-input v-model="queryParams.preOrderNo" :placeholder="$t('请输入已预装单号')" clearable />
huhaiiqng's avatar
huhaiiqng committed
38
      </el-form-item>
39 40
      <el-form-item :label="$t('品名')" prop="itemName">
        <el-input v-model="queryParams.itemName" :placeholder="$t('请输入品名')" clearable />
huhaiiqng's avatar
huhaiiqng committed
41
      </el-form-item>
42
      <el-form-item :label="$t('重货比')" prop="weightRatioMax">
huhaiqing's avatar
huhaiqing committed
43
        <el-input v-model="queryParams.weightRatioMax" :placeholder="$t('请输入 大')" clearable />
huhaiiqng's avatar
huhaiiqng committed
44
      </el-form-item>
45
      <el-form-item label="" prop="weightRatioMin">
huhaiqing's avatar
huhaiqing committed
46
        <el-input v-model="queryParams.weightRatioMin" :placeholder="$t('请输入 小')" clearable />
huhaiiqng's avatar
huhaiiqng committed
47 48 49
      </el-form-item>

      <el-form-item>
50 51 52
        <el-button type="primary" icon="el-icon-search" @click="handleQuery('pre')">{{$t('搜索已预装订单')}}</el-button>
        <el-button type="primary" icon="el-icon-search" @click="handleQuery('toBePre')">{{$t('搜索待预装订单')}}</el-button>
        <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
huhaiiqng's avatar
huhaiiqng committed
53 54 55 56 57
      </el-form-item>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10">
58
      <right-toolbar :showSearch.sync="showSearch" @queryTable="handleQuery('toBePre')"></right-toolbar>
huhaiiqng's avatar
huhaiiqng committed
59 60 61
    </el-row>

    <!-- 表格 -->
62
    <el-card style="margin-top: 15px" class="preinstall-card">
huhaiiqng's avatar
huhaiiqng committed
63 64
      <el-row class="preinstall-title">
        <div>
65
          <p>{{$t('自编号')}}</p>
huhaiqing's avatar
huhaiqing committed
66
          <p>{{shipmentObj.selfNo}}</p>
huhaiiqng's avatar
huhaiiqng committed
67 68
        </div>
        <div>
69
          <p>{{$t('柜号')}}</p>
huhaiqing's avatar
huhaiqing committed
70
          <p>{{shipmentObj.cubNo}}</p>
huhaiiqng's avatar
huhaiiqng committed
71 72
        </div>
        <div>
73
          <p>{{$t('容量')}}</p>
74
          <p>{{calcCapacity}}</p>
huhaiiqng's avatar
huhaiiqng committed
75 76
        </div>
        <div>
77
          <p>{{$t('始发地')}}</p>
huhaiqing's avatar
huhaiqing committed
78
          <p>{{importCityName(shipmentObj.startWarehouseId)}}</p>
huhaiiqng's avatar
huhaiiqng committed
79 80
        </div>
        <div>
81
          <p>{{$t('目的地')}}</p>
huhaiqing's avatar
huhaiqing committed
82
          <p>{{importCityName(shipmentObj.destWarehouseId)}}</p>
huhaiiqng's avatar
huhaiiqng committed
83 84 85 86 87 88
        </div>
      </el-row>
      <el-row class="preinstall-table">
        <!-- 已预装订单 -->
        <el-col :span="12">
          <el-row class="preinstall-title">
89
            <div class="table-label">{{$t('已预装订单')}}</div>
huhaiiqng's avatar
huhaiiqng committed
90
            <div>
91
              <p>{{$t('总计')}}</p>
92
              <p>{{getTotlContent(preList.loadStatistics)}}</p>
huhaiiqng's avatar
huhaiiqng committed
93 94
            </div>
            <div class="red-label">
95
              <p>{{$t('可预装方数')}}</p>
96
              <p>{{preList.remainVolume}}</p>
huhaiiqng's avatar
huhaiiqng committed
97 98
            </div>
            <div class="red-label">
99
              <p>{{$t('重量')}}</p>
100
              <p>{{preList.remainWeight}}kg</p>
huhaiiqng's avatar
huhaiiqng committed
101 102
            </div>
            <div class="table-button">
103
              <el-button type="success" size="small" @click="addPart" :disabled="isAudit">{{$t('增加')}}</el-button>
huhaiiqng's avatar
huhaiiqng committed
104 105
            </div>
          </el-row>
huhaiqing's avatar
huhaiqing committed
106
          <el-scrollbar style="height:calc(100% - 43px)">
107
            <el-row v-for="(part, index) in preList.sectionGoodList" :key="index" class="pre-part">
huhaiqing's avatar
huhaiqing committed
108 109
              <el-row class="preinstall-title">
                <div class="pre-part-info">
110
                  <p>{{$t('第{index}部分', {index: index+1})}}</p>
huhaiqing's avatar
huhaiqing committed
111
                  <p>{{getTotlContent(part.secStatistics)}}</p>
huhaiqing's avatar
huhaiqing committed
112 113
                </div>
                <div class="table-button">
114 115 116
                  <el-button type="danger" size="small" @click="deletePart(part)" :disabled="isAudit">{{$t('删除部分')}}</el-button>
                  <el-button type="danger" size="small" @click="deleteOrder('selected', part)" :disabled="isAudit">{{$t('删除订单')}}</el-button>
                  <el-button type="primary" size="small" @click="foldTable(index, part)">{{part.fold ? $t('展开') : $t('收起')}}</el-button>
huhaiqing's avatar
huhaiqing committed
117 118
                </div>
              </el-row>
huhaiqing's avatar
huhaiqing committed
119 120
              <el-collapse-transition>
                <div v-show="!part.fold">
121 122
                  <el-table v-loading="preLoading" border :data="part.sectionGoodsList" @select="(selection)=>checkboxSelect(selection, part)" @select-all="(selection)=>checkboxSelect(selection, part)">
                    <el-table-column type="selection" align="center" width="55" fixed="left" />
huhaiqing's avatar
huhaiqing committed
123
                    <el-table-column :label="$t('序号')" align="center" prop="tidanNum" width="50" />
124
                    <el-table-column :label="$t('订单号')" align="center" prop="orderNo" width="120">
huhaiqing's avatar
huhaiqing committed
125 126 127 128 129
                      <template slot-scope="scope">
                        <div>
                          {{scope.row.orderNo}}
                        </div>
                        <div style="color:blue;fontWeight:bold;">
130
                          {{ scope.row.isExternalWarehouse === 1 ? '(' +$t('外部仓')+')' : ''}}
huhaiqing's avatar
huhaiqing committed
131 132 133
                        </div>
                      </template>
                    </el-table-column>
134 135
                    <el-table-column :label="$t('目的地')" align="center" prop="destWarehouseName" width="120" />
                    <el-table-column :label="$t('入仓时间')" align="center" prop="rucangTime" width="120">
huhaiqing's avatar
huhaiqing committed
136 137 138 139
                      <template slot-scope="scope">
                        {{formatDate(scope.row.rucangTime)}}
                      </template>
                    </el-table-column>
huhaiqing's avatar
huhaiqing committed
140 141 142 143 144
                    <el-table-column :label="$t('品名')" align="center" prop="" width="120">
                      <template slot-scope="{row}">
                        {{$l(row,'prodTitle')}}
                      </template>
                    </el-table-column>
145
                    <el-table-column :label="$t('箱数')" align="center" prop="warehouseInInfoVO.cartonsNum" />
146
                    <el-table-column :label="$t('体积') + '/' + $t('重量') + '/' + $t('重货比')" align="center" width="140" prop="volumeWeight">
huhaiqing's avatar
huhaiqing committed
147
                      <template slot-scope="scope">
148 149 150
                        <p v-if="scope.row.warehouseInInfoVO.volume">{{getTotlContent(scope.row.warehouseInInfoVO,['volume'])}}</p>
                        <p v-if="scope.row.warehouseInInfoVO.weight">{{getTotlContent(scope.row.warehouseInInfoVO,['weight'])}}</p>
                        <p>{{getRatioMax(scope.row.warehouseInInfoVO)}}</p>
huhaiqing's avatar
huhaiqing committed
151 152
                      </template>
                    </el-table-column>
153
                    <el-table-column :label="$t('报关方式')" align="center" prop="customsType" width="120">
huhaiqing's avatar
huhaiqing committed
154
                      <template slot-scope="scope">
155 156 157
                        <div :class="scope.row.customsType !== 1 ? 'custom_type_red' : ''">
                          <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="scope.row.customsType" />
                        </div>
huhaiqing's avatar
huhaiqing committed
158 159
                      </template>
                    </el-table-column>
160 161 162 163 164
                    <el-table-column :label="$t('特性')" align="center" prop="attrNameList" width="120">
                      <template slot-scope="scope">
                        {{scope.row.warehouseInAttrNameList?scope.row.warehouseInAttrNameList.toString():""}}
                      </template>
                    </el-table-column>
165
                    <el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100">
huhaiqing's avatar
huhaiqing committed
166 167 168
                      <template slot-scope="{row}">
                        <template v-if="row.brandName">{{row.brandName}}</template>
                        <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" />
huhaiqing's avatar
huhaiqing committed
169 170
                      </template>
                    </el-table-column>
171
                    <el-table-column :label="$t('操作')" align="center" width="160" class-name="small-padding fixed-width" fixed="right">
huhaiqing's avatar
huhaiqing committed
172
                      <template slot-scope="scope">
173 174
                        <el-dropdown trigger="click" @command="(command)=>handleGoods('single',scope.row,command)" :disabled="isAudit">
                          <el-button type="primary" size="small" icon="el-icon-edit-outline" circle :disabled="isAudit"></el-button>
huhaiqing's avatar
huhaiqing committed
175
                          <el-dropdown-menu slot="dropdown">
176 177 178
                            <el-dropdown-item :command="bPart" v-for="(bPart, index) in preList.sectionGoodList" :key="bPart.id" v-show="bPart.id !== part.id">
                              {{$t('第{index}部分', {index: index+1})}}
                            </el-dropdown-item>
huhaiqing's avatar
huhaiqing committed
179 180
                          </el-dropdown-menu>
                        </el-dropdown>
181
                        <el-button type="danger" size="small" icon="el-icon-minus" circle style="margin-left:10px;" @click="deleteOrder('row',scope.row)" :disabled="isAudit"></el-button>
huhaiqing's avatar
huhaiqing committed
182 183 184 185 186
                      </template>
                    </el-table-column>
                  </el-table>
                </div>
              </el-collapse-transition>
huhaiqing's avatar
huhaiqing committed
187 188
            </el-row>
          </el-scrollbar>
huhaiiqng's avatar
huhaiiqng committed
189 190 191 192
        </el-col>
        <!-- 待预装订单 -->
        <el-col :span="12">
          <el-row class="preinstall-title">
193
            <div class="table-label red-label">{{$t('待预装订单')}}</div>
huhaiiqng's avatar
huhaiiqng committed
194 195
            <div class="preinstall-title preinstalled">
              <div class="red-label">
196
                <p>{{$t('筛选后待预装数量')}}</p>
huhaiqing's avatar
huhaiqing committed
197
                <p>{{getTotlContent(unloadStatistics,['num'])}}</p>
huhaiiqng's avatar
huhaiiqng committed
198 199
              </div>
              <div class="red-label">
200
                <p>{{$t('方数')}}</p>
huhaiqing's avatar
huhaiqing committed
201
                <p>{{getTotlContent(unloadStatistics,['volume'])}}</p>
huhaiiqng's avatar
huhaiiqng committed
202 203
              </div>
              <div class="red-label">
204
                <p>{{$t('重量')}}</p>
huhaiqing's avatar
huhaiqing committed
205
                <p>{{getTotlContent(unloadStatistics,['weight'])}}</p>
huhaiiqng's avatar
huhaiiqng committed
206 207 208
              </div>
            </div>
          </el-row>
huhaiqing's avatar
huhaiqing committed
209
          <el-pagination background layout="prev, pager, next" :current-page="pageParam.pageNo" :page-size="pageParam.pageSize" :total="total" @current-change="pageChange" v-show="total > 0"></el-pagination>
huhaiqing's avatar
huhaiqing committed
210
          <el-scrollbar style="height:calc(100% - 75px)">
211
            <el-row v-for="(item, index) in toBePreList" :key="index" class="tobePre-row">
huhaiqing's avatar
huhaiqing committed
212 213 214 215 216
              <el-row class="preinstall-title order-title">
                <div>
                  <p>{{item.orderNo}}</p>
                </div>
                <div>
217
                  <p>{{$t('发往')}}</p>
huhaiqing's avatar
huhaiqing committed
218 219 220
                  <p>{{item.destWarehouseName}}</p>
                </div>
                <div>
221
                  <p :class="item.customsType !== 1 ? 'custom_type_red' : ''">
222
                    <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" />
huhaiqing's avatar
huhaiqing committed
223
                  </p>
huhaiqing's avatar
huhaiqing committed
224 225
                </div>
                <div>
226
                  <p>{{$t('入仓时间')}}</p>
227
                  <p>{{formatDate(item.rucangTime)}}</p>
huhaiqing's avatar
huhaiqing committed
228 229
                </div>
                <div>
230
                  <p>{{$t('重货比')}}</p>
huhaiqing's avatar
huhaiqing committed
231 232
                  <p>{{item.weightRatio}}</p>
                </div>
233
                <div v-if="item.isExternalWarehouse === 1" style="color:blue;fontWeight:bold;">
234
                  <p>{{$t('外部仓')}}</p>
235
                </div>
huhaiqing's avatar
huhaiqing committed
236
                <div class="table-button">
237
                  <el-button v-if="item.relateOrderList" type="primary" size="small" style="margin-right: 20px;" @click="getRelationOrder(item)">{{$t('关联订单')}}</el-button>
238
                  <el-dropdown trigger="click" @command="(command)=>handleGoods('all',item,command)">
239
                    <el-button type="success" size="small" :disabled="isAudit">{{$t('预装全部')}}</el-button>
240
                    <el-dropdown-menu slot="dropdown" v-if="preList.sectionGoodList">
241 242 243
                      <el-dropdown-item :command="part" v-for="(part, index) in preList.sectionGoodList" :key="part.id">
                        {{$t('第{index}部分', {index: index+1})}}
                      </el-dropdown-item>
huhaiqing's avatar
huhaiqing committed
244 245 246 247
                    </el-dropdown-menu>
                  </el-dropdown>
                </div>
              </el-row>
248
              <el-table v-loading="toBePreLoading" :data="item.boxOrderItemList" border show-summary :summary-method="getSummaries">
huhaiqing's avatar
huhaiqing committed
249
                <el-table-column type="index" align="center" :label="$t('序号')" width="50" />
huhaiqing's avatar
huhaiqing committed
250 251 252 253 254
                <el-table-column :label="$t('品名')" align="center" prop="">
                  <template slot-scope="{row}">
                    {{$l(row,'prodTitle')}}
                  </template>
                </el-table-column>
huhaiqing's avatar
huhaiqing committed
255 256
                <el-table-column :label="$t('备案')" align="center" prop="feeType">
                  <template slot-scope="{row}">
257 258 259
                    <template>{{row.brandName}}</template>{{ $t('(') }}
                    <dict-tag :type="DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL" :value="row.feeType" />{{ $t('') }}
                  </template>
huhaiqing's avatar
huhaiqing committed
260
                </el-table-column>
261 262 263 264 265 266 267 268
                <el-table-column :label="$t('箱数')" align="center" prop="warehouseInInfoVO.cartonsNum">
                  <template slot-scope="scope">
                    <el-button v-if="scope.row.mixStatus == 1" type="text" @click="seeBox(scope.row.orderId,scope.row.orderItemId)">{{scope.row.warehouseInInfoVO.cartonsNum}}{{$t('(混箱)')}}</el-button>
                    <template v-else>
                      {{scope.row.warehouseInInfoVO.cartonsNum}}
                    </template>
                  </template>
                </el-table-column>
269
                <el-table-column :label="$t('体积') +'/' + $t('重量')" align="center" prop="volumeWeight">
huhaiqing's avatar
huhaiqing committed
270
                  <template slot-scope="scope">
271 272
                    <p v-if="scope.row.warehouseInInfoVO && scope.row.warehouseInInfoVO.volume">{{getTotlContent(scope.row.warehouseInInfoVO,['volume'])}}</p>
                    <p v-if="scope.row.warehouseInInfoVO && scope.row.warehouseInInfoVO.weight">{{getTotlContent(scope.row.warehouseInInfoVO,['weight'])}}</p>
huhaiqing's avatar
huhaiqing committed
273 274
                  </template>
                </el-table-column>
275
                <el-table-column :label="$t('报关方式')" align="center" prop="">
276 277 278
                  <div :class="item.customsType !== 1 ? 'custom_type_red' : ''">
                    <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" />
                  </div>
279
                </el-table-column>
280
                <el-table-column :label="$t('包装类型')" align="center" prop="">
281
                  <template slot-scope="scope">
282
                    <dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="scope.row.warehouseInInfoVO && scope.row.warehouseInInfoVO.unit" />
283 284
                  </template>
                </el-table-column>
Marcus's avatar
Marcus committed
285
                <el-table-column :label="$t('材质')" align="center" prop="material">{{ $t('') }}<template slot-scope="scope">
286
                    <dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="scope.row.material" />
huhaiqing's avatar
huhaiqing committed
287 288
                  </template>
                </el-table-column>
289 290 291 292 293
                <el-table-column :label="$t('特性')" align="center" prop="warehouseInAttrNameList" width="120">
                  <template slot-scope="scope">
                    {{scope.row.warehouseInAttrNameList?scope.row.warehouseInAttrNameList.toString():""}}
                  </template>
                </el-table-column>
294
                <!-- <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
huhaiqing's avatar
huhaiqing committed
295
                  <template slot-scope="scope">
296
                    <el-dropdown trigger="click" @command="(command)=>handleGoods('single',scope.row,command)">
297
                      <el-button type="primary" size="small">{{$t('预装')}}</el-button>
huhaiqing's avatar
huhaiqing committed
298 299 300 301 302
                      <el-dropdown-menu slot="dropdown">
                        <el-dropdown-item :command="part" v-for="(part, index) in preList" :key="part.id">{{index+1}}部分</el-dropdown-item>
                      </el-dropdown-menu>
                    </el-dropdown>
                  </template>
303
                </el-table-column> -->
huhaiqing's avatar
huhaiqing committed
304
              </el-table>
huhaiiqng's avatar
huhaiiqng committed
305
            </el-row>
huhaiqing's avatar
huhaiqing committed
306
          </el-scrollbar>
huhaiiqng's avatar
huhaiiqng committed
307 308 309 310 311
        </el-col>
      </el-row>
    </el-card>

    <!-- 操作员 -->
312
    <el-row style="margin-top: 15px" v-show="!isAudit">
huhaiiqng's avatar
huhaiiqng committed
313
      <el-row>
314
        <el-form ref="operatorForm" :model="operatorData" size="small" :inline="true" label-width="120px" :rules="rules">
315 316
          <el-form-item :label="$t('目的地操作员')" prop="noticeUser">
            <userSelect v-model="operatorData.noticeUser" :placeholder="$t('请选择目的地操作员')" :allUsers="this.$attrs.allUsers" size="small" />
huhaiiqng's avatar
huhaiiqng committed
317 318 319 320
          </el-form-item>
        </el-form>
      </el-row>
    </el-row>
huhaiqing's avatar
huhaiqing committed
321 322

    <!-- 审核流程 -->
huhaiqing's avatar
huhaiqing committed
323
    <el-row class="process-area">
huhaiqing's avatar
huhaiqing committed
324
      <div class="process">
325
        <div>{{$t('审批流程')}}</div>
326
        <work-flow xmlkey="shipment_preassemble" v-model="selectedUsers"></work-flow>
huhaiqing's avatar
huhaiqing committed
327
      </div>
huhaiqing's avatar
huhaiqing committed
328
      <div v-show="isAudit">
329 330 331
        <el-button type="primary" @click="jumpReviewDetail">{{$t('审核中')}}</el-button>
        <el-button plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button>
        <el-button plain type="primary" @click="closeDialog">{{$t('返回')}}</el-button>
huhaiqing's avatar
huhaiqing committed
332
      </div>
huhaiqing's avatar
huhaiqing committed
333
      <div v-show="!isAudit">
334
        <el-button type="primary" @click="onSubmit">{{$t('提交申请')}}</el-button>
huhaiqing's avatar
huhaiqing committed
335
      </div>
huhaiqing's avatar
huhaiqing committed
336
    </el-row>
337 338
    <!-- 关联订单弹窗 -->
    <el-dialog :title="relationOrderListDialog.title" :visible.sync="relationOrderListDialog.visible" width="30%" append-to-body>
339 340 341
      <el-card>
        <div v-html="relationOrderListDialog.data"></div>
      </el-card>
342 343 344 345
      <el-row style="margin-top: 10px;text-align: center;">
        <el-button type="primary" @click="relationOrderListDialog.visible = false">{{$t('关闭窗口')}}</el-button>
      </el-row>
    </el-dialog>
346 347 348 349 350 351 352 353 354 355
    <el-dialog :title="$t('箱明细')" :visible.sync="boxShow" :before-close="closeBox" :close-on-click-modal="false" append-to-body width="1024px">
      <el-form v-if="boxShow">
        <WarehouseRecordDetailItem
          v-for="(item, index) in boxData"
          :key="index" v-model="boxData[index]"
          :index="index" :attr-list="attrList"
          :readonly="true"
        />
      </el-form>
    </el-dialog>
huhaiiqng's avatar
huhaiiqng committed
356 357 358 359 360
  </div>
</template>

<script>
import { DICT_TYPE } from "@/utils/dict";
huhaiqing's avatar
huhaiqing committed
361 362 363 364 365 366 367
import {
  secGoodsList,
  preloadPage,
  createSection,
  deleteSection,
  createGoods,
  deleteGoods,
368
  changeSection,
huhaiqing's avatar
huhaiqing committed
369
  approvalCreate,
huhaiqing's avatar
huhaiqing committed
370
  approvalCancel,
371
  loadRelationOrder,
372
  getAllRelateOrderList
huhaiqing's avatar
huhaiqing committed
373
} from "@/api/ecw/boxSea";
huhaiqing's avatar
huhaiqing committed
374
import userSelect from "./common/userSelect.vue";
375 376 377 378 379 380 381
import {
  formatDate,
  getTotlContent,
  serviceMsg,
  getCapacity,
  toReviewDetail,
} from "../utils";
huhaiqing's avatar
huhaiqing committed
382
import dayjs from "dayjs";
huhaiqing's avatar
huhaiqing committed
383
import WorkFlow from "@/components/WorkFlow";
384
import Decimal from "decimal.js";
385 386 387
import {getProductAttrList} from '@/api/ecw/productAttr'
import { getOrderWarehouseIn } from '@/api/ecw/order'
import WarehouseRecordDetailItem from "@/views/ecw/order/warehousing/components/WarehouseRecordDetailItem.vue";
huhaiqing's avatar
huhaiqing committed
388 389 390
/**
 * 预装
 */
huhaiiqng's avatar
huhaiiqng committed
391 392
export default {
  name: "preinstall",
huhaiqing's avatar
huhaiqing committed
393
  inheritAttrs: false,
394
  components: { userSelect, WorkFlow, WarehouseRecordDetailItem },
huhaiiqng's avatar
huhaiiqng committed
395 396 397 398
  data() {
    return {
      // 状态
      stateOps: [
399 400
        { value: "1", label: this.$t("拆单") },
        { value: "2", label: this.$t("关联单") },
huhaiiqng's avatar
huhaiiqng committed
401 402
      ],
      // 备案
huhaiqing's avatar
huhaiqing committed
403
      filingOps: this.getDictDatas(DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL),
huhaiiqng's avatar
huhaiiqng committed
404 405
      // 报关方式
      declarationMethodOps: this.getDictDatas(DICT_TYPE.ECW_CUSTOMS_TYPE),
huhaiqing's avatar
huhaiqing committed
406 407 408 409
      // 查询标识
      type: "",
      // 已预装 遮罩层
      preLoading: false,
410 411 412 413 414
      preList: {
        sectionGoodList: [],
        remainWeight: 0,
        remainVolume: 0,
      },
huhaiqing's avatar
huhaiqing committed
415 416 417 418 419 420 421
      // 选中行
      selectedRows: {},

      // 待预装
      toBePreLoading: false,
      toBePreList: [],
      total: 0,
422
      unloadStatistics: {},
huhaiqing's avatar
huhaiqing committed
423

huhaiiqng's avatar
huhaiiqng committed
424 425
      // 显示搜索条件
      showSearch: true,
huhaiqing's avatar
huhaiqing committed
426

huhaiiqng's avatar
huhaiiqng committed
427
      // 查询参数
huhaiqing's avatar
huhaiqing committed
428
      queryParams: {},
huhaiqing's avatar
huhaiqing committed
429
      pageParam: { pageNo: 1, pageSize: 10 },
huhaiiqng's avatar
huhaiiqng committed
430
      // 目的地操作员
huhaiqing's avatar
huhaiqing committed
431
      operatorData: {},
huhaiqing's avatar
huhaiqing committed
432
      // 校验
huhaiiqng's avatar
huhaiiqng committed
433
      rules: {
434
        noticeUser: [
435 436 437 438 439
          {
            required: true,
            message: this.$t("目的地操作员必填"),
            trigger: "change",
          },
440
        ],
huhaiiqng's avatar
huhaiiqng committed
441
      },
huhaiqing's avatar
huhaiqing committed
442 443
      // 出货信息
      shipmentObj: this.$attrs.shipmentObj,
huhaiqing's avatar
huhaiqing committed
444
      // 抄送人数组
huhaiqing's avatar
huhaiqing committed
445
      selectedUsers: [],
huhaiqing's avatar
huhaiqing committed
446 447
      // 智慧预装
      smartInstall: 1,
448 449 450 451 452 453
      //关联订单
      relationOrderListDialog: {
        title: '',
        visible: false,
        data: []
      },
454 455 456 457
      // 特性列表
      attrList: [],
      boxShow:false,
      boxData: []
huhaiiqng's avatar
huhaiiqng committed
458 459 460
    };
  },
  computed: {
huhaiqing's avatar
huhaiqing committed
461
    /** 始发地 */
huhaiiqng's avatar
huhaiiqng committed
462
    exportWarehouseList() {
huhaiqing's avatar
huhaiqing committed
463
      return this.$attrs.warehouseList.filter(
huhaiiqng's avatar
huhaiiqng committed
464 465 466
        (item) => item.tradeType == "2" || item.type == "3"
      );
    },
huhaiqing's avatar
huhaiqing committed
467
    /** 目的地 */
huhaiiqng's avatar
huhaiiqng committed
468
    importWarehouseList() {
huhaiqing's avatar
huhaiqing committed
469
      return this.$attrs.warehouseList.filter(
huhaiiqng's avatar
huhaiiqng committed
470 471 472
        (item) => item.tradeType == "1" || item.type == "3"
      );
    },
huhaiqing's avatar
huhaiqing committed
473 474 475 476 477
    /* 是否审核中 */
    isAudit() {
      const { currNode, shipmentObj } = this.$attrs;
      return shipmentObj[currNode.keyName] === 23;
    },
478 479 480 481 482
    /* 容量 */
    calcCapacity() {
      const { cabinetRespVO } = this.$attrs.shipmentObj;
      return getCapacity(cabinetRespVO);
    },
huhaiiqng's avatar
huhaiiqng committed
483 484
  },
  created() {
huhaiqing's avatar
huhaiqing committed
485
    // 查询待预装
huhaiqing's avatar
huhaiqing committed
486
    this.handleQuery("toBePre");
487
    this.handleQuery("pre");
huhaiqing's avatar
huhaiqing committed
488
    this.smartInstall = 0;
huhaiiqng's avatar
huhaiiqng committed
489 490
  },
  methods: {
491
    formatDate,
huhaiqing's avatar
huhaiqing committed
492
    getTotlContent,
huhaiqing's avatar
huhaiqing committed
493 494
    /* 获取城市 */
    importCityName(id) {
huhaiqing's avatar
huhaiqing committed
495
      var arr = this.$attrs.warehouseList.filter((item) => item.id == id);
496
      return arr.length > 0 ? this.$l(arr[0], "title") : this.$t("");
huhaiqing's avatar
huhaiqing committed
497 498 499 500 501 502 503 504
    },
    /* 选中行 */
    checkboxSelect(selection, part) {
      this.selectedRows[part.id] = selection;
    },
    /* 查询已预装 */
    getSecGoods() {
      this.preLoading = true;
huhaiiqng's avatar
huhaiiqng committed
505
      // 处理查询参数
506
      let params = this.getParams();
huhaiqing's avatar
huhaiqing committed
507 508 509
      // 已预装单号
      params.orderNo = params.preOrderNo;
      params.shipmentId = this.shipmentObj.id;
huhaiqing's avatar
huhaiqing committed
510
      params.smartInstall = this.smartInstall;
huhaiqing's avatar
huhaiqing committed
511
      secGoodsList(params).then((res) => {
512 513 514 515 516 517 518 519 520 521 522 523 524
        if (res.data) {
          res.data.sectionGoodList.map((data) => {
            if (data.sectionGoodsList) {
              data.sectionGoodsList.map((data1) => {
                data1.warehouseInInfoVO = data1.warehouseInInfo
                  ? JSON.parse(data1.warehouseInInfo)
                  : {};
                return data1;
              });
            }
            return data;
          });
        }
huhaiqing's avatar
huhaiqing committed
525 526 527 528 529 530 531 532
        this.preList = res.data;
        this.preLoading = false;
      });
    },
    /* 查询待预装 */
    getPreLoad() {
      this.toBePreLoading = true;
      // 处理查询参数
533
      let params = this.getParams();
huhaiqing's avatar
huhaiqing committed
534 535
      // 订单号
      params.orderNo = params.toBePreOrderNo;
huhaiqing's avatar
huhaiqing committed
536
      params.transportType = this.shipmentObj.transportType;
huhaiqing's avatar
huhaiqing committed
537
      preloadPage({ ...params, ...this.pageParam }).then((res) => {
538 539 540 541
        const { data } = res;
        this.toBePreList = data.dataList?.list ?? [];
        this.total = data.dataList?.total ?? 0;
        this.unloadStatistics = data.unloadStatistics ?? {};
huhaiqing's avatar
huhaiqing committed
542
        this.toBePreLoading = false;
543 544 545 546
        if(this.toBePreList.length == 0&&this.total!=0){
          --this.pageParam.pageNo
          this.getPreLoad()
        }
huhaiiqng's avatar
huhaiiqng committed
547 548
      });
    },
549 550
    /**查看关联订单 */
    getRelationOrder(item) {
551 552 553
      getAllRelateOrderList({orderId:item.orderId,orderNo:item.orderNo}).then(res=>{
        this.relationOrderListDialog.title = item.orderNo+'关联订单'
        this.relationOrderListDialog.visible = true
554
        this.relationOrderListDialog.data = res.msg.replace(/\n/g,'<br>')
555 556
      })
      
557
    },
huhaiiqng's avatar
huhaiiqng committed
558
    /** 搜索按钮操作 */
huhaiqing's avatar
huhaiqing committed
559 560 561 562 563 564 565
    handleQuery(type) {
      this.pageParam.pageNo = 1;
      if (type === "pre") {
        this.getSecGoods();
      } else {
        this.getPreLoad();
      }
huhaiiqng's avatar
huhaiiqng committed
566 567 568
    },
    /** 重置按钮操作 */
    resetQuery() {
569 570
      this.queryParams = {};
      this.$refs["queryForm"].resetFields();
huhaiiqng's avatar
huhaiiqng committed
571
    },
572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590
    closeBox(){
      this.boxData = []
      this.boxShow = false
    },
    seeBox(orderId,orderItemId){
      getOrderWarehouseIn(orderId).then(async(res) => {
        let orderwarehouseList = res.data
        var warehouseItem = orderwarehouseList.find(item => item.orderItemId == orderItemId)
        warehouseItem.orderWarehouseInBackItemDoList.forEach(item=>{
          if(item.orderWarehouseInDetailsVOList){
            item.orderWarehouseInDetailsVOList.forEach(w=>{
              this.boxData.push(w)
            })
          }
        })
        this.attrList = (await getProductAttrList()).data
        this.boxShow = true
      })
    },
huhaiiqng's avatar
huhaiiqng committed
591 592
    /** 提交 */
    onSubmit() {
593 594 595
      this.$refs["operatorForm"].validate((valid, errors) => {
        if (!valid) {
          return this.$showFormValidateErrors(errors);
huhaiiqng's avatar
huhaiiqng committed
596
        }
597 598
        approvalCreate({
          ...this.operatorData,
599
          applyReason: this.$t("预装审核"),
600 601 602 603 604 605 606 607 608
          approvalStatus: 0,
          approvalType: 1, // 预装
          copyUserId: this.selectedUsers,
          shipmentId: this.$attrs.shipmentObj.id,
        }).then((res) => {
          serviceMsg(res, this).then(() => {
            this.$emit("closeDialog", "submit");
          });
        });
huhaiiqng's avatar
huhaiiqng committed
609 610
      });
    },
huhaiqing's avatar
huhaiqing committed
611 612 613 614 615
    /* 统计列 */
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
616
        if (column.property === "feeType") {
617
          sums[index] = this.$t("合计");
huhaiqing's avatar
huhaiqing committed
618 619
          return;
        }
620 621 622 623 624 625 626 627 628 629 630 631 632 633
        if (column.property === "warehouseInInfoVO.cartonsNum") {
          var num = 0
          let values = data?.map((item) => Number(item.warehouseInInfoVO.cartonsNum)) ?? [];
          if (!values.every((value) => isNaN(value))) {
            num = values.reduce((prev, curr) => {
              const value = Number(curr);
              if (!isNaN(value)) {
                return prev + curr;
              } else {
               return prev;
              }
            }, 0);
          }
          sums[index] = num
huhaiqing's avatar
huhaiqing committed
634 635
        }
        if (column.property === "volumeWeight") {
636 637 638 639
          let volume = this.calcSum("volume", data);
          let weight = this.calcSum("weight", data);
          volume = volume === 0 ? volume : new Decimal(volume).toFixed(2);
          weight = weight === 0 ? weight : new Decimal(weight).toFixed(2);
huhaiqing's avatar
huhaiqing committed
640 641 642 643
          sums[index] = getTotlContent({ volume, weight }, [
            "volume",
            "weight",
          ]);
644
          sums[index] = sums[index].replace(" ", "\n");
huhaiqing's avatar
huhaiqing committed
645 646 647 648 649 650
        }
      });
      return sums;
    },
    /* 计算总和 */
    calcSum(key, data) {
huhaiqing's avatar
huhaiqing committed
651
      const values = data?.map((item) => Number(item[key])) ?? [];
huhaiqing's avatar
huhaiqing committed
652 653 654 655
      if (!values.every((value) => isNaN(value))) {
        return values.reduce((prev, curr) => {
          const value = Number(curr);
          if (!isNaN(value)) {
656
            return prev + curr;
huhaiqing's avatar
huhaiqing committed
657 658 659 660 661
          } else {
            return prev;
          }
        }, 0);
      }
662
      return 0;
huhaiqing's avatar
huhaiqing committed
663 664 665
    },
    /* 待预装订单分页 */
    pageChange(page) {
huhaiqing's avatar
huhaiqing committed
666
      this.pageParam.pageNo = page;
huhaiqing's avatar
huhaiqing committed
667 668 669 670 671
      this.getPreLoad();
    },
    /* 折叠 */
    foldTable(index, part) {
      part.fold = !part.fold;
672
      this.$set(this.preList.sectionGoodList, index, part);
huhaiqing's avatar
huhaiqing committed
673 674 675
    },
    /* 增加部分 */
    addPart() {
huhaiqing's avatar
huhaiqing committed
676 677 678 679 680 681 682
      createSection({ shipmentId: this.shipmentObj.id, isCover: 0 }).then(
        (res) => {
          serviceMsg(res, this).then(() => {
            this.getSecGoods();
          });
        }
      );
huhaiqing's avatar
huhaiqing committed
683 684 685
    },
    /* 删除部分 */
    deletePart(part) {
686 687 688 689 690 691 692
      this.$confirm(
        this.$t("确认删除该部分及其已预装订单?"),
        this.$t("提示"),
        {
          type: "warning",
        }
      )
huhaiqing's avatar
huhaiqing committed
693
        .then((_) => {
694 695 696 697 698
          let params = {
            id: part.id,
            deleteType: 2
          };
          deleteSection(params).then((res) => {
huhaiqing's avatar
huhaiqing committed
699
            serviceMsg(res, this).then(() => {
700
              this.queryAllData();
huhaiqing's avatar
huhaiqing committed
701 702 703 704 705 706 707 708
            });
          });
        })
        .catch((_) => {});
    },
    /** 预装 */
    handleGoods(type, item, part) {
      if (type === "all") {
709 710 711 712 713 714 715
        let params = {
          secId: part.id,
          shipmentId: this.shipmentObj.id,
          orderId: item.orderId,
          orderItemIdList: item.boxOrderItemList.map(
            (data) => data.orderItemId
          ),
716
          isCover: 0
717 718
        };

719 720 721 722 723
        createGoods(params)
          .then((res) => {
            const { data } = res;
            if (data.relationMsg) {
              const msg = data.relationMsg.replaceAll(",", "");
724
              this.$confirm(msg, this.$t("提示"), {
725
                dangerouslyUseHTMLString: true,
726 727 728 729 730 731
                type: "warning",
              })
                .then((_) => {
                  loadRelationOrder(data).then((res) => {
                    serviceMsg(res, this).then(() => {
                      this.queryAllData();
732 733
                    });
                  });
734
                })
735 736 737
                .catch((_) => {
                  this.queryAllData();
                });
738 739 740 741 742 743 744 745 746
            } else {
              serviceMsg(res, this).then(() => {
                this.queryAllData();
              });
            }
          })
          .catch((res) => {
            if (res.code === 555) {
              const msg = res.msg && res.msg.replaceAll(",", "");
huhaiqing's avatar
huhaiqing committed
747
              this.$confirm(msg, this.$t("提示"), {
748
                dangerouslyUseHTMLString: true,
749 750 751
                type: "warning",
              })
                .then((_) => {
752
                  createGoods({ ...params, relationStatus: 1, singleLoad: true }).then((res) => {
753 754
                    serviceMsg(res, this).then(() => {
                      this.queryAllData();
755 756
                    });
                  });
757
                })
758 759
                .catch((_) => {
                  this.queryAllData();
760 761 762 763 764
                });
            }
            
            if (res.code === 566) {
              this.$confirm(res.msg+this.$t('是否需要一起预装?'), this.$t("提示"), {
765
                dangerouslyUseHTMLString: true,
766
                distinguishCancelAndClose: true,
767 768
                confirmButtonText: '预装关联单',
                cancelButtonText: '仅当前订单'
769 770
              })
                .then((_) => {
771
                  createGoods({ ...params, relationStatus: 2, singleLoad: false }).then((res) => {
772 773 774 775 776
                    serviceMsg(res, this).then(() => {
                      this.queryAllData();
                    });
                  });
                })
777
                .catch((action) => {
778 779 780 781 782
                  if(action =='cancel'){
                    createGoods({ ...params, relationStatus: 2, singleLoad: true }).then((res) => {
                      serviceMsg(res, this).then(() => {
                        this.queryAllData();
                      });
783
                    });
784
                  }
785
                });
786
            }
787
          });
huhaiqing's avatar
huhaiqing committed
788
      } else {
789 790 791 792 793 794 795 796
        let params = {
          secId: part.id,
          id: item.id,
        };
        changeSection(params).then((res) => {
          serviceMsg(res, this).then(() => {
            this.queryAllData();
          });
huhaiqing's avatar
huhaiqing committed
797
        });
798
      }
huhaiqing's avatar
huhaiqing committed
799 800 801 802 803
    },
    /* 删除订单 */
    deleteOrder(type, data) {
      let ids = [];
      if (type === "selected") {
804
        // 根据parid 构建的对象
huhaiqing's avatar
huhaiqing committed
805 806
        const rows = this.selectedRows[data.id] ?? [];
        if (!rows.length) {
807
          this.$message.error(this.$t("请选择订单"));
huhaiqing's avatar
huhaiqing committed
808 809
          return;
        }
810
        ids = rows.map((item) => item.id);
huhaiqing's avatar
huhaiqing committed
811 812 813
      }

      if (type === "row") {
814
        ids.push(data.id);
huhaiqing's avatar
huhaiqing committed
815
      }
816 817 818 819
      let param = {
        ids: ids.join(",")
      }
      deleteGoods(param).then((res) => {
huhaiqing's avatar
huhaiqing committed
820 821 822
        serviceMsg(res, this).then(() => {
          this.queryAllData();
        });
823 824
      }).catch((res) => {
        if (res.code === 666) {
825
              this.$confirm("<div style='max-height:500px;overflow:auto'>"+res.msg+this.$t('是否需要一起移出?')+"</div>", this.$t("提示"), {
zhoutong's avatar
zhoutong committed
826 827 828 829
                dangerouslyUseHTMLString: true,
                distinguishCancelAndClose: true,
                confirmButtonText: '确定移出',
                cancelButtonText: '仅移出当前订单'
830 831 832 833 834 835 836 837
              })
                .then((_) => {
                  deleteGoods({ ...param, deleteType: 2 }).then((res) => {
                    serviceMsg(res, this).then(() => {
                      this.queryAllData();
                    });
                  });
                })
zhoutong's avatar
zhoutong committed
838 839 840 841 842 843
                .catch(action  => {
                  if(action =='cancel'){
                    deleteGoods({ ...param, deleteType: 1 }).then((res) => {
                      serviceMsg(res, this).then(() => {
                        this.queryAllData();
                      });
844
                    });
zhoutong's avatar
zhoutong committed
845
                  }
846 847
                });
            }
huhaiqing's avatar
huhaiqing committed
848 849 850 851
      });
    },
    /* 查询所有数据 */
    queryAllData() {
huhaiqing's avatar
huhaiqing committed
852
      this.getSecGoods();
huhaiqing's avatar
huhaiqing committed
853
      this.getPreLoad();
huhaiqing's avatar
huhaiqing committed
854
    },
huhaiqing's avatar
huhaiqing committed
855
    /* 获取参数 */
856
    getParams() {
857
      let rucangtime = this.queryParams.rucangtime?this.queryParams.rucangtime:[]
858 859
      return {
        ...this.queryParams,
860
        ...this.$attrs.params,
huhaiqing's avatar
huhaiqing committed
861 862 863 864 865 866
        rucangTimeStart: rucangtime[0]
          ? dayjs(rucangtime[0]).format("YYYY-MM-DD 00:00:00")
          : rucangtime[0],
        rucangTimeEnd: rucangtime[1]
          ? dayjs(rucangtime[1]).format("YYYY-MM-DD 23:59:59")
          : rucangtime[1],
867 868
      };
    },
huhaiqing's avatar
huhaiqing committed
869 870 871 872 873 874 875 876 877
    /* 关闭弹框 */
    closeDialog() {
      this.$emit("closeDialog");
    },
    /* 取消审核 */
    canclAudit() {
      const { currNode, shipmentObj } = this.$attrs;
      const { voName } = currNode;
      approvalCancel({
878
        applyReason: this.$t("取消审核"),
huhaiqing's avatar
huhaiqing committed
879 880 881 882 883 884 885 886
        id: shipmentObj[voName].id,
        shipmentId: shipmentObj.id,
      }).then((res) => {
        serviceMsg(res, this).then(() => {
          this.$emit("closeDialog", "submit");
        });
      });
    },
887 888 889 890 891
    jumpReviewDetail() {
      const { currNode, shipmentObj } = this.$attrs;
      toReviewDetail.apply(this, [shipmentObj[currNode.voName].bpmProcessId]);
      this.$emit("closeDialog");
    },
892 893 894
    getRatioMax(row) {
      let volume = row.volume ?? 0;
      let weight = row.weight ?? 0;
huhaiqing's avatar
huhaiqing committed
895
      return Decimal.div(weight, volume).toFixed(2);
896
    },
huhaiqing's avatar
huhaiqing committed
897
  },
huhaiiqng's avatar
huhaiiqng committed
898 899 900
};
</script>

huhaiqing's avatar
huhaiqing committed
901
<style lang="scss">
huhaiiqng's avatar
huhaiiqng committed
902
.preinstall {
huhaiqing's avatar
huhaiqing committed
903 904 905
  display: flex;
  flex-direction: column;

huhaiiqng's avatar
huhaiiqng committed
906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935
  p {
    margin: 0;
  }
  .preinstall-title {
    display: flex;
    align-items: center;
    margin-bottom: 10px;
    padding: 0 10px;

    &.preinstalled {
      flex: 1;
      display: flex;
      justify-content: flex-end;
      > div {
        display: flex;
      }
    }

    &.order-title {
      margin-bottom: 0px;
      background-color: #e6ebf5;
      height: 45px;
    }

    > div {
      display: flex;
      margin-right: 10px;
    }

    .table-label {
huhaiqing's avatar
huhaiqing committed
936 937
      font-size: 16px;
      font-weight: bolder;
huhaiiqng's avatar
huhaiiqng committed
938 939 940 941 942 943 944 945 946 947 948 949 950
    }
    .red-label {
      color: red;
    }
    .table-button {
      flex: 1;
      margin: 0;
      display: flex;
      justify-content: flex-end;
    }
  }
  .preinstall-table {
    display: flex;
huhaiqing's avatar
huhaiqing committed
951
    height: calc(100% - 30px);
huhaiiqng's avatar
huhaiiqng committed
952 953 954 955 956 957 958 959
    > div {
      border: 1px solid #e6ebf5;
      padding: 10px 0px;
    }
    > div:first-child {
      margin-right: 10px;
    }
  }
huhaiqing's avatar
huhaiqing committed
960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978

  .pre-part {
    margin-bottom: 10px;
    margin-right: 10px;
    .pre-part-info {
      font-weight: bolder;
      > p:first-child {
        color: #13ce66;
        margin-right: 10px;
      }
      > p:last-child {
        > span {
          margin-right: 5px;
        }
      }
    }
  }

  .preinstall-card {
huhaiqing's avatar
huhaiqing committed
979
    min-height: 800px;
huhaiqing's avatar
huhaiqing committed
980 981 982 983 984
    .el-card__body {
      height: 100%;

      .tobePre-row {
        margin-top: 10px;
985 986 987 988 989
        .el-table {
          .cell {
            white-space: pre-line;
          }
        }
huhaiqing's avatar
huhaiqing committed
990 991 992
      }
    }
  }
huhaiqing's avatar
huhaiqing committed
993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006

  .process-area {
    margin-top: 15px;
    padding-bottom: 30px;
    .process {
      display: flex;
      flex-direction: column;
      > :first-child {
        color: #606266;
        font-weight: bolder;
        font-size: 16px;
      }
    }
  }
huhaiiqng's avatar
huhaiiqng committed
1007 1008
}
</style>