| 
					
				 | 
			
			
				@@ -0,0 +1,645 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div class="allocateBillEdit-wrap"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- <a-spin :spinning="spinning" tip="Loading..."> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="ant-spin-nested-loading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <a-page-header :ghost="false" :backIcon="false" class="allocateBillEdit-back" > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- 自定义的二级文字标题 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template slot="subTitle"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <a id="allocateBillEdit-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- 操作区,位于 title 行的行尾 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template slot="extra"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <a-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            key="3" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="button-warning" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-if="$hasPermissions('B_transferOut_detail_export')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id="allocateBillEdit-export-btn" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :disabled="localDataSource.length==0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @click="handleExcel">导出Excel</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <a-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            key="2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="button-error" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-if="$hasPermissions('B_transferOut_print')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id="allocateBillEdit-db-print-btn" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :disabled="localDataSource.length==0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @click="handlePrint('dbPrint')">调拨打印</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <a-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            key="1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="button-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-if="$hasPermissions('B_transferOut_print')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id="allocateBillEdit-dbfl-print-btn" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :disabled="localDataSource.length==0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @click="handlePrint('dbflPrint')">调拨分类打印</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </a-page-header> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <a-card size="small" :bordered="false" v-if="basicInfoData" class="allocateBillEdit-cont"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <a-collapse :activeKey="['0']"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <a-collapse-panel key="0" header="基础信息"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <a-descriptions :column="3"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-descriptions-item label="调往对象">{{ (basicInfoData&&basicInfoData.targetName) || '--' }}</a-descriptions-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-descriptions-item label="调拨单号">{{ (basicInfoData&&basicInfoData.allocateNo) || '--' }}</a-descriptions-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-descriptions-item label="调拨类型"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <AllocateType id="allocateEdit-allocateTypeSn" style="width: 200px;" @change="changeAllocateType" v-model="basicInfoData.allocateTypeSn"></AllocateType> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </a-descriptions-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-descriptions-item label="业务状态">{{ (basicInfoData&&basicInfoData.stateDictValue) || '--' }}</a-descriptions-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-descriptions-item label="起止时间"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span v-if="basicInfoData&&(basicInfoData.promoStartDate || basicInfoData.promoEndDate)">{{ (basicInfoData&&basicInfoData.promoStartDate) || '--' }} ~ {{ (basicInfoData&&basicInfoData.promoEndDate) || '--' }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span v-else>--</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </a-descriptions-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-descriptions-item label="备注">{{ (basicInfoData&&basicInfoData.remark) || '--' }}</a-descriptions-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </a-descriptions> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </a-collapse-panel> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </a-collapse> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </a-card> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <!-- 选择产品 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <a-card size="small" :bordered="false" class="allocateBillEdit-cont"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <a-collapse :activeKey="['1']"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <a-collapse-panel key="1" :forceRender="true" header="选择产品"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 筛选条件 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="table-page-search-wrapper"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <a-row :gutter="15"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <a-col :md="6" :sm="24"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-form-item label="产品编码" prop="productCode"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <a-input id="allocateBillEdit-productCode" v-model.trim="queryParam.productCode" placeholder="请输入产品编码" allowClear /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </a-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <a-col :md="6" :sm="24"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-form-item label="产品名称" prop="productName"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <a-input id="allocateBillEdit-productName" v-model.trim="queryParam.productName" placeholder="请输入产品名称" allowClear /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </a-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <a-col :md="6" :sm="24"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-form-item label="原厂编码" prop="productOrigCode"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <a-input id="allocateBillEdit-productOrigCode" v-model.trim="queryParam.productOrigCode" placeholder="请输入原厂编码" allowClear /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </a-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <a-col :md="6" :sm="24" style="margin-bottom: 10px;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="storeTransferOutList-refresh">查询</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="storeTransferOutList-reset">重置</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </a-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </a-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 列表 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <s-table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="sTable" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ref="table" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              index="0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              tableId="table1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :rowKey="(record) => record.stockSn" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :columns="columns" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :customRow="handleClickRow" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :data="loadData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :scroll="{ y: 300 }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :defaultLoadData="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              bordered> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <!-- 操作 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <template slot="action1" slot-scope="text, record"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <a-button size="small" type="primary" class="button-primary" @click="handleAdd(record)" id="allocateBillEdit-add-btn">添加</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </s-table> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </a-collapse-panel> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </a-collapse> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </a-card> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <!-- 已选产品 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <a-card size="small" :bordered="false" class="allocateBillEdit-cont"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <a-collapse :activeKey="['2']"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <a-collapse-panel key="2" :forceRender="true" header="已选产品"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 总计 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <a-alert type="info" style="margin-bottom:10px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div slot="message"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                总数量:<strong>{{ (productTotal&&(productTotal.totalQty || productTotal.totalQty==0)) ? productTotal.totalQty : '--' }}</strong> , 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span v-if="$hasPermissions('B_isShowCost')">总成本(¥):<strong>{{ (productTotal&&(productTotal.totalCost || productTotal.totalCost==0)) ? productTotal.totalCost : '--' }}</strong> ,</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span v-if="$hasPermissions('B_isShowPrice')">总售价(¥):<strong>{{ (productTotal&&(productTotal.totalPrice || productTotal.totalPrice==0)) ? productTotal.totalPrice : '--' }}</strong></span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </a-alert> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 筛选条件 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <a-row :gutter="15"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-col :span="17"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class="table-page-search-wrapper"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <a-form layout="inline" @keyup.enter.native="$refs.chooseTable.refresh(true)"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-row :gutter="15"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <a-col :md="9" :sm="24"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <a-form-item label="产品编码" prop="productCode"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <a-input id="allocateBillEdit-productCode" v-model.trim="chooseQueryParam.productCode" placeholder="请输入产品编码" allowClear /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </a-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <a-col :md="9" :sm="24"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <a-form-item label="产品名称" prop="productName"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <a-input id="allocateBillEdit-productName" v-model.trim="chooseQueryParam.productName" placeholder="请输入产品名称" allowClear /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </a-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <a-col :md="6" :sm="24" style="margin-bottom: 10px;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <a-button type="primary" @click="$refs.chooseTable.refresh(true)" :disabled="chooseDisabled" id="storeTransferOutList-refresh">查询</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <a-button style="margin-left: 8px" @click="chooseResetSearchForm" :disabled="chooseDisabled" id="storeTransferOutList-reset">重置</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </a-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </a-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-col :span="7" style="text-align: right;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <a-button size="small" id="allocateBillEdit-import-btn" @click="openGuideModal=true">导入产品</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <a-button size="small" type="danger" style="margin-left: 5px" @click.stop="handleDel('', 'all')" id="chainTransferOutEdit-del-all-btn">整单删除</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </a-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 列表 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <s-table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="sTable" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ref="chooseTable" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              index="1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              tableId="table2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :rowKey="(record) => record.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :columns="chooseColumns" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :data="chooseLoadData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :scroll="{ y: 300 }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :defaultLoadData="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              bordered> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <!-- 售价 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <template slot="price" slot-scope="text, record, index"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <!-- 调往对象为经销商时不可编辑售价,为员工或其他时可编辑售价 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div v-if="$route.params.dealerLevel == 'OTHER'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <a-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    id="allocateBillEdit-price" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    option-label-prop="label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    v-model="record.price" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    placeholder="请选择" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    @change="e => priceChange(e, record)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    @focus="e => priceFocus(record, index)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    style="width: 100%;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-select-option v-if="record.cost" :value="record.cost" :key="'cb-'+record.cost" :label="record.cost">成本 {{ record.cost }}</a-select-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-select-option v-if="loadDataSource&&loadDataSource[index]&&loadDataSource[index].provincePrice" :value="loadDataSource[index].provincePrice" :key="'A-'+loadDataSource[index].productSn" :label="loadDataSource[index].provincePrice">A价 {{ loadDataSource[index].provincePrice }}</a-select-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-select-option v-if="loadDataSource&&loadDataSource[index]&&loadDataSource[index].cityPrice" :value="loadDataSource[index].cityPrice" :key="'B-'+loadDataSource[index].productSn" :label="loadDataSource[index].cityPrice">B价 {{ loadDataSource[index].cityPrice }}</a-select-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <a-select-option v-if="loadDataSource&&loadDataSource[index]&&loadDataSource[index].specialPrice" :value="loadDataSource[index].specialPrice" :key="'C-'+loadDataSource[index].productSn" :label="loadDataSource[index].specialPrice">C价 {{ loadDataSource[index].specialPrice }}</a-select-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </a-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span v-else>{{ record.price }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <!-- 调出数量 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <template slot="qty" slot-scope="text, record"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <a-input-number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  id="allocateBillEdit-qty" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-model="record.qty" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :precision="0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :min="1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :max="999999" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  placeholder="请输入" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  @blur="e => qtyBlur(e.target.value, record)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  style="width: 100%;" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <!-- 操作 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <template slot="action" slot-scope="text, record"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <a-button size="small" type="primary" class="button-error" @click="handleDel(record)" id="allocateBillEdit-del-btn">删除</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </s-table> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </a-collapse-panel> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </a-collapse> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </a-card> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- </a-spin> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="affix-cont"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <a-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id="allocateBillEdit-submit" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        size="large" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :disabled="spinning" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        class="button-primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @click="handleSubmit" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        style="padding: 0 60px;">提交</a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 导入产品 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <importGuideModal :openModal="openGuideModal" :params="{allocateSn: $route.params.sn}" @close="openGuideModal=false" @ok="handleGuideOk" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 打印导出 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <print-modal :openModal="openModal" :itemData="basicInfoData" :nowType="nowType" @ok="handleOk" @close="openModal=false" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 打印 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div id="print"></div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { STable, VSelect } from '@/components' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ImportGuideModal from './importGuideModal.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import printModal from './printModal.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { hdExportExcel } from '@/libs/exportExcel' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { queryStockProductPage } from '@/api/stock' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { productPriceInfo } from '@/api/product' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import AllocateType from '@/views/common/allocateType.js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { allocateBillSave, allocateBillDetailList, allocateBillDetailCount, allocateBillDetail, allocateBillDetailSave, allocateBillSubmit, allocateBillDetailDel, allocateBillDetailDelAll, allocateBillDetailPrint, allocateBillBatchInsert, allocateBillDetailExcel } from '@/api/allocateBill' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  components: { STable, VSelect, ImportGuideModal, AllocateType, printModal }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      spinning: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      queryParam: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productCode: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productName: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productOrigCode: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      chooseQueryParam: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productCode: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productName: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      disabled: false, //  查询、重置按钮是否可操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      chooseDisabled: false, //  查询、重置按钮是否可操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      advanced: false, // 高级搜索 展开/关闭 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      productBrandList: [], //  产品品牌  下拉数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      productTypeList: [], //  产品分类  下拉数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      productType: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      warehouseList: [], //  仓库  下拉数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 加载数据方法 必须为 Promise 对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loadData: parameter => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.disabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const dealerLevel = this.$route.params.dealerLevel == 'OTHER' ? undefined : this.$route.params.dealerLevel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return queryStockProductPage(Object.assign(parameter, this.queryParam, { zeroQtyFlag: '0', dealerLevel: dealerLevel })).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const data = res.data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const no = (data.pageNo - 1) * data.pageSize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          for (var i = 0; i < data.list.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data.list[i].no = no + i + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.loadDataSource = data.list || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.disabled = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loadDataSource: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      localDataSource: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 加载数据方法 必须为 Promise 对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      chooseLoadData: parameter => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.chooseDisabled = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const params = Object.assign(parameter, this.chooseQueryParam, { allocateSn: this.$route.params.sn }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return allocateBillDetailList(params).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.getDetailCount() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const data = res.data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const no = (data.pageNo - 1) * data.pageSize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          for (var i = 0; i < data.list.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data.list[i].no = no + i + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data.list[i].qtyBackups = data.list[i].qty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data.list[i].priceBackups = data.list[i].price 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.localDataSource = data.list || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.chooseDisabled = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      productTotal: null, //  合计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      basicInfoData: null, // 基本信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      openGuideModal: false, //  导入产品引导 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      openModal: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      nowType: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  computed: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    columns () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const arr = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '序号', dataIndex: 'no', width: '4%', align: 'center' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '产品编码', dataIndex: 'productCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '产品名称', dataIndex: 'productName', align: 'center', width: '29%', customRender: function (text) { return text || '--' }, ellipsis: true }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '原厂编码', dataIndex: 'productOrigCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // { title: '成本价', dataIndex: 'lastStockCost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // { title: '售价', dataIndex: 'productPrice', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '库存数量', dataIndex: 'currentStockQty', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '单位', dataIndex: 'productUnit', width: '7%', align: 'center', customRender: function (text) { return text || '--' } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '操作', scopedSlots: { customRender: 'action1' }, width: '10%', align: 'center' } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.$hasPermissions('B_isShowCost')) { //  成本价权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        arr.splice(4, 0, { title: '成本价', dataIndex: 'lastStockCost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.$hasPermissions('B_isShowPrice')) { //  售价权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const ind = this.$hasPermissions('B_isShowCost') ? 5 : 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        arr.splice(ind, 0, { title: '售价', dataIndex: 'productPrice', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return arr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    chooseColumns () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const arr = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '序号', dataIndex: 'no', width: '4%', align: 'center' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '产品编码', dataIndex: 'productEntity.code', width: '10%', align: 'center', customRender: function (text) { return text || '--' } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '产品名称', dataIndex: 'productEntity.name', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '原厂编码', dataIndex: 'productEntity.origCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // { title: '成本价', dataIndex: 'cost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // { title: '售价', scopedSlots: { customRender: 'price' }, width: '10%', align: 'center' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '库存数量', dataIndex: 'currentStockQty', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '调出数量', scopedSlots: { customRender: 'qty' }, width: '10%', align: 'center' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '单位', dataIndex: 'productEntity.unit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '6%', align: 'center' } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.$hasPermissions('B_isShowCost')) { //  成本价权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        arr.splice(4, 0, { title: '成本价', dataIndex: 'cost', width: '10%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.$hasPermissions('B_isShowPrice')) { //  售价权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const ind = this.$hasPermissions('B_isShowCost') ? 5 : 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        arr.splice(ind, 0, { title: '售价', scopedSlots: { customRender: 'price' }, width: '10%', align: 'center' }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return arr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 修改调拨类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    changeAllocateType (val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const _this = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$confirm({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        title: '提示', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: '确定要更改调拨类型吗?', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        centered: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        onOk () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const params = _this.basicInfoData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          allocateBillSave({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            allocateSn: params.allocateSn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            targetType: params.targetType, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            targetSn: params.targetSn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            targetName: params.targetName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            allocateTypeSn: params.allocateTypeSn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            remark: params.remark 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (res.status == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              _this.$message.success(res.message) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              _this.getDetail() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              _this.spinning = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //  重置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    resetSearchForm () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.queryParam.productCode = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.queryParam.productName = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.queryParam.productOrigCode = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.table.refresh(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 双击快速添加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleClickRow (record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        on: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          dblclick: (event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.handleAdd(record) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 导入产品 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleGuideOk (obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      allocateBillBatchInsert(obj).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res.status == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$refs.chooseTable.refresh(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 已选产品  重置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    chooseResetSearchForm () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.chooseQueryParam.productCode = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.chooseQueryParam.productName = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.chooseTable.refresh(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //  添加/编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleAdd (row, isEdit, isRefresh) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const params = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: isEdit ? row.id : undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        allocateSn: this.$route.params.sn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cost: isEdit ? row.cost : row.lastStockCost, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        price: isEdit ? row.price : row.productPrice, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        qty: isEdit ? row.qty : 1, //  添加时调出数量默认为1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productSn: row.productSn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (isEdit) { // 编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 清空数量时,值应保持未清空前的值,因数量不可为空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!row.qty) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          row.qty = row.qtyBackups 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!row.price) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          row.price = row.priceBackups 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.spinning = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      allocateBillDetailSave(params).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res.status == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$message.success(res.message) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (isRefresh != 'noRefresh') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$refs.table.refresh() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$refs.chooseTable.refresh() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.spinning = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.spinning = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //  删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleDel (row, isAll) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const _this = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const content = isAll ? '删除后不可恢复,确定要进行整单删除吗?' : '删除后不可恢复,确定要进行删除吗?' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$confirm({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        title: '提示', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        centered: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        onOk () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (isAll) { //  整单删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            allocateBillDetailDelAll({ sn: _this.$route.params.sn }).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (res.status == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _this.$message.success(res.message) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _this.refashPage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { //  单个删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            allocateBillDetailDel({ id: row.id }).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (res.status == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _this.$message.success(res.message) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _this.refashPage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //  提交 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleSubmit () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const _this = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      _this.spinning = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      allocateBillSubmit({ sn: this.$route.params.sn }).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res.status == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$message.success(res.message) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _this.handleBack() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _this.spinning = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 1000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          _this.spinning = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 基本信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getDetail () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.spinning = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      allocateBillDetail({ sn: this.$route.params.sn }).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res.status == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.basicInfoData = res.data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.basicInfoData = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.spinning = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 合计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getDetailCount () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      allocateBillDetailCount({ allocateSn: this.$route.params.sn }).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res.status == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.productTotal = res.data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.productTotal = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //  返回列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleBack () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$router.push({ path: '/allocationManagement/transferOut/list', query: { closeLastOldTab: true } }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 已选产品 调出数量  blur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    qtyBlur (val, record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //  光标移出,值发生改变再调用编辑接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (val != record.qtyBackups) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.handleAdd(record, 'edit') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 已选产品 售价  change 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    priceChange (val, record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //  光标移出,值发生改变再调用编辑接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (val != record.priceBackups) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.handleAdd(record, 'edit', 'noRefresh') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获取价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    priceFocus (row, index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (row.productSn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productPriceInfo({ sn: row.productSn }).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (res.status == 200 && res.data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.loadDataSource[index].provincePrice = res.data.provincePrice || undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.loadDataSource[index].cityPrice = res.data.cityPrice || undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.loadDataSource[index].specialPrice = res.data.specialPrice || undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 导出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleExcel () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const _this = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.spinning = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      hdExportExcel(allocateBillDetailExcel, { allocateSn: this.$route.params.sn }, '调拨明细', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _this.spinning = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 打印预览/快捷打印 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handlePrint (type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.nowType = type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.openModal = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleOk (objs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const _this = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const params = JSON.parse(JSON.stringify(objs)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      delete params.type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      _this.spinning = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      allocateBillDetailPrint(params).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _this.spinning = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res.type == 'application/json') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var reader = new FileReader() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          reader.addEventListener('loadend', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const obj = JSON.parse(reader.result) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _this.$notification.error({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              message: '提示', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              description: obj.message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          reader.readAsText(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.print(res, objs.isPreview) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print (data, type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const url = window.URL.createObjectURL(new Blob([data], { type: 'application/pdf' })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      document.getElementById('print').innerHTML = '<iframe id="printftoe" name="printftoe" src="' + url + '" hidden></iframe>' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (type == '1') { //  预览 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        window.open(url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else if (type == '0') { //  打印 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        window.frames['printftoe'].focus() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        window.frames['printftoe'].print() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 刷新当前页面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    refashPage () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.table.refresh() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.chooseTable.refresh() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pageInit () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.getDetail() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.resetSearchForm() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.chooseResetSearchForm() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  mounted () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.pageInit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  activated () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 如果是新页签打开或者进入新的子页(例:存在列表第2条数据编辑页页签时再打开第4条数据的编辑页),则重置当前页面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.$store.state.app.isNewTab || !this.$store.state.app.isNewSubTab) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.pageInit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  beforeRouteEnter (to, from, next) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    next(vm => {}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="less"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .allocateBillEdit-wrap{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    >.ant-spin-nested-loading{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      overflow-y: scroll; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      padding-bottom: 51px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .allocateBillEdit-back{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      margin-bottom: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .allocateBillEdit-cont{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      margin-bottom: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .sub-title{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        color: #808695; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        margin-left: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .tag-txt{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        color: #ed1c24; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .edit-circle-btn{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        margin-left: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        i{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          vertical-align: text-bottom; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .import-btn{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        margin-left: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |