Преглед на файлове

采购需求单明细表自动和参照

黄梓星 преди 2 години
родител
ревизия
255a184cb8

+ 8 - 0
src/api/purchase/purchaseDemand.js

@@ -69,5 +69,13 @@ export function exportDemand(data) {
     url: `/pu/demand/export`,
     method: 'post',
     data: data,
+    responseType: 'blob'
+  })
+}
+// 通过物料ID查询采购员
+export function queryMan(id) {
+  return request({
+    url: `/material/division/queryBuyer?materialId=${id}`,
+    method: 'get',
   })
 }

+ 327 - 151
src/views/purchase/PurchaseDemandList/add.vue

@@ -8,8 +8,7 @@
               <el-input
                 v-model="basicForm.code"
                 size="small"
-                placeholder=""
-                clearable
+                disabled
                 style="width: 200px"
               />
             </el-form-item>
@@ -17,7 +16,7 @@
 
         <el-col :span="1.5">
             <el-form-item label="组织">
-              <el-select size="small" v-model="basicForm.org" :disabled="disable" @focus="chooseOrg" style="width: 200px">
+              <el-select size="small" v-model="basicForm.org" :disabled="disable" @focus="chooseOrg('ORG_PARAM', true, '选择组织')" style="width: 200px">
                 <el-option v-for="item in orgOptions" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
             </el-form-item>
@@ -25,7 +24,7 @@
 
          <el-col :span="1.5">
             <el-form-item label="需求处理方式">
-              <el-select v-model="basicForm.demandBusinessType" size="small" style="width: 200px">
+              <el-select disabled v-model="basicForm.demandBusinessType" size="small" style="width: 200px">
                 <el-option v-for="dict in dict.type.sys_processing_mode" :key="dict.value" :label="dict.label" :value="dict.value">
                 </el-option>
               </el-select>
@@ -34,7 +33,7 @@
 
          <el-col :span="1.5">
             <el-form-item label="单据状态">
-              <el-select v-model="basicForm.status" size="small" style="width: 200px" clearable placeholder="请选择">
+              <el-select disabled v-model="basicForm.status" size="small" style="width: 200px">
                 <el-option v-for="dict in dict.type.sys_status" :key="dict.value" :label="dict.label" :value="dict.value">
                 </el-option>
               </el-select>
@@ -43,7 +42,7 @@
 
          <el-col :span="1.5">
             <el-form-item label="需求客户">
-              <el-select size="small" v-model="basicForm.customer" :disabled="disable" @focus="chooseCustomer" style="width: 200px">
+              <el-select size="small" v-model="basicForm.customer" :disabled="disable" @focus="chooseOrg('CUSTOMER_PARAM', true, '选择客户')" style="width: 200px">
                 <el-option v-for="item in customerOptions" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
             </el-form-item>
@@ -51,19 +50,19 @@
 
          <el-col :span="1.5">
             <el-form-item label="需求客户名称">
-              <el-input v-model="basicForm.customerName" size="small" style="width: 200px"></el-input>
+              <el-input disabled v-model="basicForm.customerName" size="small" style="width: 200px"></el-input>
             </el-form-item>
           </el-col>
 
          <el-col :span="1.5">
             <el-form-item label="客户负责人">
-              <el-input v-model="basicForm.customerPrincipal" size="small" style="width: 200px"></el-input>
+              <el-input disabled v-model="basicForm.customerPrincipal" size="small" style="width: 200px"></el-input>
             </el-form-item>
           </el-col>
 
          <el-col :span="1.5">
             <el-form-item label="需求人员">
-                <el-select size="small" v-model="basicForm.demandPersonal" :disabled="disable" @focus="choosePerson" style="width: 200px">
+                <el-select size="small" v-model="basicForm.demandPersonal" :disabled="disable" @focus="chooseOrg('CONTACTS_PARAM', true, '需求人员')" style="width: 200px">
                   <el-option v-for="item in personOptions" :key="item.id" :label="item.name" :value="item.id" />
                 </el-select>
             </el-form-item>
@@ -71,12 +70,12 @@
 
          <el-col :span="1.5">
             <el-form-item label="需求部门">
-              <el-select v-model="basicForm.demandDept" size="small" style="width: 200px" clearable placeholder="请选择">
+              <el-select v-model="basicForm.demandDept" size="small" :disabled="disable" @focus="chooseOrg('DEPT_PARAM', true, '需求部门')" style="width: 200px">
                 <el-option
-                  v-for="item in options"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
+                  v-for="item in deptOptions"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id">
                 </el-option>
               </el-select>
             </el-form-item>
@@ -106,7 +105,7 @@
 
           <el-col :span="1.5">
             <el-form-item label="供应仓库">
-              <el-select size="small" v-model="basicForm.warehouse" :disabled="disable" @focus="chooseHouse" style="width: 200px">
+              <el-select size="small" v-model="basicForm.warehouse" :disabled="disable" @focus="chooseOrg('WAREHOUSE_PARAM', true, '供应仓库')" style="width: 200px">
                 <el-option v-for="item in houseOptions" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
             </el-form-item>
@@ -114,7 +113,7 @@
 
          <el-col :span="1.5">
             <el-form-item label="供应货位">
-              <el-select size="small" v-model="basicForm.goodsAllocation" :disabled="disable" @focus="chooseGoods" style="width: 200px">
+              <el-select size="small" v-model="basicForm.goodsAllocation" :disabled="disable" @focus="chooseOrg('ALLOCATION_PARAM', true, '供应货位')" style="width: 200px">
                 <el-option v-for="item in goodsOptions" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
             </el-form-item>
@@ -155,8 +154,7 @@
               <el-input
                 v-model="basicForm.isMonthleyCalculate"
                 size="small"
-                placeholder=""
-                clearable
+                disabled
                 style="width: 200px"
               />
             </el-form-item>
@@ -191,7 +189,7 @@
           @selection-change="handleSelectionChange"
         >
           <el-table-column type="selection"/>
-          <el-table-column label="序号" type="index" align="center"/>
+          <el-table-column label="序号" type="index" align="center" prop="index"/>
           <el-table-column label="行状态" align="center" prop="status" />
           <el-table-column label="行号" align="center" >
             <template slot-scope="scope">
@@ -200,49 +198,69 @@
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="一级品类" align="center" width="150">
+          <el-table-column label="业务部门名称" align="center" width="200px">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                <el-input v-model="scope.row.businessDeptName"/>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column label="业务部门" align="center" width="200px">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                <el-input v-model="scope.row.businessDept">
+                <!-- <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'DEPT_PARAM', true, '选择部门')"></el-button> -->
+                </el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column label="一级品类" align="center" >
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.materialClassifyOneName"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="二级品类" align="center" width="150" prop="materialClassifyTwoName">
+          <el-table-column label="二级品类" align="center"  prop="materialClassifyTwoName">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.materialClassifyTwoName"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="三级品类" align="center" width="150" prop="materialClassifyThreeName">
+          <el-table-column label="三级品类" align="center"  prop="materialClassifyThreeName">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.materialClassifyThreeName"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="四级品类" align="center" width="150" prop="materialClassifyFourName">
+          <el-table-column label="四级品类" align="center"  prop="materialClassifyFourName">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.materialClassifyFourName"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="预留比例" align="center" width="150" prop="reservedProportion">
+          <el-table-column label="预留比例" align="center"  prop="reservedProportion">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.reservedProportion"/>
+                <el-select v-model="scope.row.reservedProportion">
+                  <el-option v-for=" dict in dict.type.sys_reserve_ratio" :key="dict.value" :label="dict.label" :value="dict.value">
+                  </el-option>
+                </el-select>
+                <!-- <el-input v-model="scope.row.reservedProportion"/> -->
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="预留周期" align="center" width="150" prop="reservedPeriod">
+          <el-table-column label="预留周期" align="center"  prop="reservedPeriod">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.reservedPeriod"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="预留数量" align="center" width="150" prop="reservedQty">
+          <el-table-column label="预留数量" align="center"  prop="reservedQty">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.reservedQty"/>
@@ -250,187 +268,257 @@
             </template>
           </el-table-column>
           <el-table-column label="采购员名称" align="center" prop="buyerName" />
-          <el-table-column label="采购员" align="center" width="150" prop="buyer" />
+          <el-table-column label="采购员" align="center"  prop="buyer" />
           <el-table-column label="物料编码" align="center" width="120" prop="materialCode">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.materialCode"/>
+                <el-input v-model="scope.row.materialCode">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseMaterial(scope.$index)"></el-button>
+                </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="物料名称" align="center" width="150" prop="materialName" />
-          <el-table-column label="规格" align="center" width="150" prop="specification" />
-          <el-table-column label="型号" align="center" width="150" prop="model" />
-          <el-table-column label="单位" align="center" width="150" prop="unit	" />
-          <el-table-column label="生产厂家/代理人" align="center" width="150" prop="registrant" />
-          <el-table-column label="注册人" align="center" width="150" prop="registrant" />
-          <el-table-column label="采购周期" align="center" width="150" prop="puPeriod">
+          <el-table-column label="物料名称" align="center"  prop="materialName" />
+          <el-table-column label="规格" align="center"  prop="specification" />
+          <el-table-column label="型号" align="center"  prop="model" />
+          <el-table-column label="单位" align="center"  prop="unit" />
+          <el-table-column label="生产厂家/代理人" align="center"  prop="manufacturerName"/>
+          <el-table-column label="注册人" align="center"  prop="registrant" />
+          <el-table-column label="采购周期" align="center"  prop="puPeriod">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.puPeriod"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="有效期单位" align="center" width="150" prop="expiryUnit" />
-          <el-table-column label="有效期" align="center" width="150" prop="updateTime" />
-          <el-table-column label="最小包装" align="center" width="150" prop="minPackage" />
-          <el-table-column label="最小订货量" align="center" width="150" prop="minOrderQty" />
-          <el-table-column label="最小批量" align="center" width="150" prop="minBatch	" />
-          <el-table-column label="安全库存" align="center" width="150" prop="safeStock	">
+          <el-table-column label="有效期单位" align="center"  prop="expiryUnit" />
+          <el-table-column label="有效期" align="center"  prop="updateTime" />
+          <el-table-column label="最小包装" align="center"  prop="minPackage" />
+          <el-table-column label="最小订货量" align="center"  prop="minOrderQty"/>
+          <el-table-column label="最小批量" align="center"  prop="minBatch" />
+          <el-table-column label="安全库存" align="center"  prop="safeStock">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.safeStock"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="月均销量" align="center" width="150" prop="averageQtyMonth" />
-          <el-table-column label="实际(业务)需求量" align="center" width="150" prop="qty">
+          <el-table-column label="月均销量" align="center"  prop="averageQtyMonth" />
+          <el-table-column label="实际(业务)需求量" align="center"  prop="qty">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.qty"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="需求可用周期" align="center" width="150" prop="demandPeriod" />
-          <el-table-column label="集团预测分类" align="center" width="150" prop="forecastClassify" />
-          <el-table-column label="交货日期" align="center" width="150" prop="deliveryDate">
+          <el-table-column label="需求可用周期" align="center"  prop="demandPeriod" />
+          <el-table-column label="集团预测分类" align="center"  prop="forecastClassify" />
+          <el-table-column label="交货日期" align="center"  prop="deliveryDate" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.deliveryDate"/>
+                <el-date-picker
+                  v-model="scope.row.deliveryDate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期">
+                </el-date-picker>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="补单标识" align="center" width="150" prop="isReplenishment">
+          <el-table-column label="补单标识" align="center"  prop="isReplenishment" width="100px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.isReplenishment"/>
+                <el-switch
+                  v-model="scope.row.isReplenishment"
+                  active-value="Y"
+                  inactive-value="N"
+                  active-color="#13ce66"
+                  inactive-color="#ff4949"
+                  active-text="是"
+                  inactive-text="否">
+                </el-switch>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="批号锁定标识" align="center" width="150" prop="isBatchLock">
+          <el-table-column label="批号锁定标识" align="center" prop="isBatchLock" width="100px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.isBatchLock"/>
+                  <el-switch
+                    v-model="scope.row.isBatchLock"
+                    active-value="Y"
+                    inactive-value="N"
+                    active-color="#13ce66"
+                    inactive-color="#ff4949"
+                    active-text="是"
+                    inactive-text="否">
+                  </el-switch>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="业务备注" align="center" width="150" prop="remark">
+          <el-table-column label="业务备注" align="center"  prop="remark">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.remark"/>
               </el-form-item>
             </template>
           </el-table-column> 
-          <el-table-column label="采购备注" align="center" width="150" prop="puRemark" />
-          <!-- <el-table-column label="末级供应仓库存量" align="center" width="150" prop="lastWarehouseQty" /> -->
-          <!-- <el-table-column label="调拨占有量" align="center" width="150" prop="superiorAllotQty"></el-table-column> -->
-          <el-table-column label="最终净需求量" align="center" width="150" prop="resDemandQty">
+          <el-table-column label="采购备注" align="center"  prop="puRemark" />
+          <!-- <el-table-column label="末级供应仓库存量" align="center"  prop="lastWarehouseQty" /> -->
+          <!-- <el-table-column label="调拨占有量" align="center"  prop="superiorAllotQty"></el-table-column> -->
+          <el-table-column label="最终净需求量" align="center"  prop="resDemandQty">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.resDemandQty"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="末级供应仓库" align="center" width="150" prop="lastWarehouseName">
+          <el-table-column label="末级供应仓库" align="center"  prop="lastWarehouseName" width="200px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.lastWarehouseName"/>
+                <el-input v-model="scope.row.lastWarehouseName">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'WAREHOUSE_PARAM', true, '选择末级供应仓库')"></el-button>
+                </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="收货仓库" align="center" width="150" prop="deliveryWarehouseName">
+          <el-table-column label="收货仓库" align="center"  prop="deliveryWarehouseName" width="200px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.deliveryWarehouseName"/>
+                <el-input v-model="scope.row.deliveryWarehouseName">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'WAREHOUSE_PARAM', true, '选择收货仓库')"></el-button>
+                </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="末级供应货位" align="center" width="150" prop="lastAllocationName">
+          <el-table-column label="末级供应货位" align="center"  prop="lastAllocationName" width="200px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.lastAllocationName"/>
+                <el-input v-model="scope.row.lastAllocationName">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'ALLOCATION_PARAM', true, '选择末级供应货位')"></el-button>
+                </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="收货货位编码" align="center" width="150" prop="deliveryAllocation" />
-          <el-table-column label="收货货位" align="center" width="150" prop="deliveryAllocationName">
+          <el-table-column label="收货货位编码" align="center"  prop="deliveryAllocation"/>
+          <el-table-column label="收货货位" align="center"  prop="deliveryAllocationName" width="200px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.deliveryAllocationName"/>
+                <el-input v-model="scope.row.deliveryAllocationName">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'ALLOCATION_PARAM', true, '选择收货货位')"></el-button>
+                </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="紧急标识" align="center" width="150" prop="isUrgency">
+          <el-table-column label="紧急标识" align="center"  prop="isUrgency" width="100px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.isUrgency"/>
+                <el-switch
+                  v-model="scope.row.isUrgency"
+                  active-value="Y"
+                  inactive-value="N"
+                  active-color="#13ce66"
+                  inactive-color="#ff4949"
+                  active-text="是"
+                  inactive-text="否">
+                </el-switch>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="默认采购组织" align="center" width="150" prop="purOrgName" />
-          <el-table-column label="默认采购组织编码" align="center" width="150" prop="puOrg" />
-          <!-- <el-table-column label="末级供应调拨待入量" align="center" width="150" prop="lastStockQty">
+          <el-table-column label="默认采购组织" align="center"  prop="purOrgName" />
+          <el-table-column label="默认采购组织编码" align="center"  prop="puOrg" />
+          <el-table-column label="末级供应调拨待入量" align="center"  prop="lastStockQty">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.lastStockQty"/>
               </el-form-item>
             </template>
-          </el-table-column> -->
-          <el-table-column label="上级供应中心现存量" align="center" width="150" prop="superiorCenterQty" />
-          <el-table-column label="上级库存被调拨占用量" align="center" width="150" prop="superiorAllotQty" />
-          <el-table-column label="可用量" align="center" width="150" prop="availableQty" />
-          <el-table-column label="调拨状态" align="center" width="150" prop="statusAllot">
+          </el-table-column>
+          <el-table-column label="上级供应中心现存量" align="center"  prop="superiorCenterQty" />
+          <el-table-column label="上级库存被调拨占用量" align="center"  prop="superiorAllotQty" />
+          <el-table-column label="可用量" align="center"  prop="availableQty" />
+          <el-table-column label="调拨状态" align="center"  prop="statusAllot" width="100px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.statusAllot"/>
+                <el-switch
+                  v-model="scope.row.statusAllot"
+                  active-value="Y"
+                  inactive-value="N"
+                  active-color="#13ce66"
+                  inactive-color="#ff4949"
+                  active-text="是"
+                  inactive-text="否">
+                </el-switch>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="补单供应商编码" align="center" width="150" prop="additionalSupplier">
+          <el-table-column label="补单供应商编码" align="center"  prop="additionalSupplier" width="200px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.additionalSupplier"/>
+                <el-input v-model="scope.row.additionalSupplier">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'SUPPLIER_PARAM', true, '选择补单供应商')"></el-button>
+                </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="补单供应商名称" align="center" width="150" prop="additionalSupplierCode">
+          <el-table-column label="补单供应商名称" align="center"  prop="additionalSupplierCode" width="200px">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.additionalSupplierCode"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="周期单位" align="center" width="150" prop="periodUnit">
+          <el-table-column label="周期单位" align="center"  prop="periodUnit" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input v-model="scope.row.periodUnit"/>
+                <el-select v-model="scope.row.periodUnit">
+                  <el-option v-for=" dict in dict.type.sys_period_unit" :key="dict.value" :label="dict.label" :value="dict.value">
+                  </el-option>
+                </el-select>
+                <!-- <el-input v-model="scope.row.periodUnit"/> -->
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column label="需求客户" align="center" width="150" prop="customer">
+          <!-- <el-table-column label="需求客户" align="center"  prop="customer">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-input v-model="scope.row.customer"/>
               </el-form-item>
             </template>
+          </el-table-column> -->
+          <el-table-column label="末级供应库存组织" align="center" prop="superiorStockOrgName"></el-table-column>
+          <el-table-column label="中心仓可用量" align="center"  prop="updateTime"></el-table-column>
+          <el-table-column label="调拨单号" align="center"  prop="allotCode"></el-table-column>
+          <el-table-column label="收货地址" align="center"  prop="deliveryAddressName" width="200px">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                <el-input v-model="scope.row.deliveryAddressName">
+                  <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'ADDRESS_PARAM', true, '选择收货地址')"></el-button>
+                </el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column label="收货地址编码" align="center"  prop="deliveryAddress"></el-table-column>
+          <el-table-column label="联系人" align="center"  prop="contacts"/>
+          <el-table-column label="联系人电话" align="center"  prop="contactsPhone" />
+          <el-table-column label="详细地址" align="center"  prop="address" />
+          <el-table-column label="价格类型" align="center"  prop="priceType" width="150px">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                <el-select v-model="scope.row.priceType">
+                  <el-option v-for=" dict in dict.type.sys_price_type" :key="dict.value" :label="dict.label" :value="dict.value">
+                  </el-option>
+                </el-select>
+                <!-- <el-input v-model="scope.row.periodUnit"/> -->
+              </el-form-item>
+            </template>
           </el-table-column>
-          <!-- <el-table-column label="末级供应库存组织" align="center" width="150" prop="updateTime"></el-table-column> -->
-          <el-table-column label="中心仓可用量" align="center" width="150" prop="updateTime"></el-table-column>
-          <!-- <el-table-column label="调拨单号" align="center" width="150" prop="updateTime"></el-table-column> -->
-          <!-- <el-table-column label="收货地址" align="center" width="150" prop="updateTime"></el-table-column> -->
-          <!-- <el-table-column label="收货地址编码" align="center" width="150" prop="updateTime" /> -->
-          <el-table-column label="联系人" align="center" width="150" prop="contacts" />
-          <!-- <el-table-column label="联系人电话" align="center" width="150" prop="updateTime" /> -->
-          <!-- <el-table-column label="详细地址" align="center" width="150" prop="updateTime" /> -->
-          <!-- <el-table-column label="价格类型" align="center" width="150" prop="updateTime"></el-table-column> -->
           <el-table-column
-          fixed="right"
-          label="操作"
-          align="center"
-          width="150"
-          >
+            fixed="right"
+            label="操作"
+            align="center"
+            >
           <template slot-scope="scope">
-            <el-button type="text" size="small" @click="delLine(scope.row)">删除</el-button>
+            <el-button type="text" size="small" @click="delLine(scope.$index, scope.row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -454,6 +542,9 @@
       <Reserved v-if="dialog.config" :isVisible="dialog.config" :info="row" @updateReserved="updateReserved"/>
 
       <Refers ref="refer" @doSubmit="selectionsToInput" :single="true"/>
+
+      <popDialog ref="materialRefer" @doSubmit="selectMaterial" :single="true" />
+
     </div>
   </div>
 </template>
@@ -461,16 +552,19 @@
 <script>
 import Reserved from './reserved.vue'
 import Refers from './refers.vue'
-import {addDemand,getDemandDetail, getDemandSonDetail, editDemand, submitDemand } from '@/api/purchase/purchaseDemand.js'
+import {addDemand,getDemandDetail, getDemandSonDetail, editDemand, submitDemand, queryMan } from '@/api/purchase/purchaseDemand.js'
 // 用于回显参照框数据
 import {getRefer} from '@/api/purchase/basic.js'
+// 明细行选择物料参照
+import popDialog from '@/components/PopDialog/index.vue'
 export default {
   name: 'addDemandList',
   props: ['pageStu','row', 'disable'],
-  dicts: ['sys_processing_mode', 'sys_status', 'sys_bill_source', 'sys_business'],
+  dicts: ['sys_processing_mode', 'sys_status', 'sys_bill_source', 'sys_business','sys_reserve_ratio', 'sys_period_unit', 'sys_price_type'],
   components: {
     Reserved,
-    Refers
+    Refers,
+    popDialog
   },
   model: {
     prop: 'isList',
@@ -484,8 +578,8 @@ export default {
       basicForm: {
         code: '',
         org: '',
-        demandBusinessType: '',
-        status: '',
+        demandBusinessType: '1',
+        status: '0',
         customer: '',
         customerName: '',
         customerPrincipal: '',
@@ -511,12 +605,18 @@ export default {
       tableList: [],
       referCondition: {
         type: 'ORG_PARAM',
-        search: '',
         isPage: true,
         title: '选择组织'
       },
+      referConditionMx: {
+        type: 'DEPT_PARAM',
+        isPage: true,
+        title: '选择部门'
+      },
+      tableIndex: null,
       orgOptions: [],
       personOptions: [],
+      deptOptions: [],
       customerOptions: [],
       houseOptions: [],
       goodsOptions: []
@@ -587,6 +687,7 @@ export default {
         materialName: null,
         specification: null,
         unit: null,
+        manufacturerName: null,
         registrant: null,
         puPeriod: null,
         expiryUnit: null,
@@ -606,9 +707,9 @@ export default {
         demandPeriod: null,
         forecastClassify: null,
         deliveryDate: null,
-        isUrgency: null,
-        isReplenishment: null,
-        isBatchLock: null,
+        isUrgency: 'N',
+        isReplenishment: 'N',
+        isBatchLock: 'N',
         remark: null,
         puRemark: null,
         lastWarehouseQty: null,
@@ -628,7 +729,7 @@ export default {
         superiorCenterQty: null,
         superiorAllotQty: null,
         availableQty: null,
-        statusAllot: null,
+        statusAllot: 'N',
         additionalSupplier: null,
         additionalSupplierCode: null,
         periodUnit: null,
@@ -664,11 +765,12 @@ export default {
       }
       this.basicForm.puDemandItemList.push(newLine)
     },
-    delLine(row) {
-      console.log('删除行:', row)
-      this.basicForm.puDemandItemList = this.basicForm.puDemandItemList.filter(item => {
-        return item.id !== row.id
-      })
+    delLine(index) {
+      console.log('删除行:', index)
+      // this.basicForm.puDemandItemList = this.basicForm.puDemandItemList.filter(item => {
+      //   return item.id !== row.id
+      // })
+      this.basicForm.puDemandItemList.splice(index,1)
     },
     back() {
       this.$emit('jugislist', true)
@@ -690,7 +792,12 @@ export default {
               reciveForm.puDemandItemList = res.rows
               console.log('reciveForm',reciveForm)
               this.basicForm = reciveForm
-              this.reBackRefer({type: 'ORG_PARAM', search: this.basicForm.org, isPage: false})
+              if(this.basicForm.org) { this.reBackRefer('ORG_PARAM', this.basicForm.org) }
+              if(this.basicForm.customer) { this.reBackRefer('CUSTOMER_PARAM', this.basicForm.customer) }
+              if(this.basicForm.demandPersonal) { this.reBackRefer('CONTACTS_PARAM', this.basicForm.demandPersonal) }
+              if(this.basicForm.demandDept) { this.reBackRefer('DEPT_PARAM', this.basicForm.demandDept) }
+              if(this.basicForm.warehouse) { this.reBackRefer('WAREHOUSE_PARAM', this.basicForm.warehouse) }
+              if(this.basicForm.goodsAllocation) { this.reBackRefer('ALLOCATION_PARAM', this.basicForm.goodsAllocation) }
             }
           })
         }
@@ -706,56 +813,51 @@ export default {
       this.dialog.config = val
     },
     // 回显参照框
-    reBackRefer(val) {
-      getRefer(val).then(res => {
-        console.log("🚀 ~ file: add.vue:706 ~ getRefer ~ res:", res)
+    reBackRefer(type, id) {
+      getRefer({type: type, id: id}).then(res => {
+        if(type == 'ORG_PARAM') {
+          this.orgOptions = res.rows
+        }
+        if (type == 'CUSTOMER_PARAM') {
+          this.customerOptions = res.rows
+        }
+        if (type == 'CONTACTS_PARAM') {
+          this.personOptions = res.rows
+        }
+        if (type == 'DEPT_PARAM') {
+          this.deptOptions = res.rows
+        }
+        if (type == 'WAREHOUSE_PARAM') {
+          this.houseOptions = res.rows
+        }
+        if (type == 'ALLOCATION_PARAM') {
+          this.goodsOptions = res.rows
+        }
       })
     },
-    chooseOrg() {
-      this.referCondition.type = 'ORG_PARAM'
-      this.referCondition.search = ''
-      this.referCondition.isPage = true
-      this.referCondition.title = '选择组织'
-      this.$refs.refer.init(this.referCondition)
-    },
-    chooseCustomer () {
-      this.referCondition.type = 'CUSTOMER_PARAM'
-      this.referCondition.search = ''
-      this.referCondition.isPage = true
-      this.referCondition.title = '选择客户'
-      this.$refs.refer.init(this.referCondition)
-    },
-    choosePerson() {
-      this.referCondition.type = 'CONTACTS_PARAM'
-      this.referCondition.search = ''
-      this.referCondition.isPage = true
-      this.referCondition.title = '需求人员'
-      this.$refs.refer.init(this.referCondition)
-    },
-    chooseHouse() {
-      this.referCondition.type = 'WAREHOUSE_PARAM'
-      this.referCondition.search = ''
-      this.referCondition.isPage = true
-      this.referCondition.title = '供应仓库'
-      this.$refs.refer.init(this.referCondition)
-    },
-    chooseGoods() {
-      this.referCondition.type = 'ALLOCATION_PARAM'
-      this.referCondition.search = ''
-      this.referCondition.isPage = true
-      this.referCondition.title = '供应货位'
+    chooseOrg(type, isPage, title) {
+      this.referCondition.type = type
+      this.referCondition.isPage = isPage
+      this.referCondition.title = title
       this.$refs.refer.init(this.referCondition)
     },
     selectionsToInput(selection) {
-      console.log("🚀 ~ file: add.vue:732 ~ selectionsToInput ~ selection:", selection)
       if(this.referCondition.type == 'ORG_PARAM') {
         this.orgOptions = selection
         this.basicForm.org = selection[0].id
       }
+      if(this.referCondition.type == 'CUSTOMER_PARAM') {
+        this.customerOptions = selection
+        this.basicForm.customer = selection[0].id
+      }
       if(this.referCondition.type == 'CONTACTS_PARAM') {
         this.personOptions = selection
         this.basicForm.demandPersonal = selection[0].id
       }
+      if(this.referCondition.type == 'DEPT_PARAM') {
+        this.deptOptions = selection
+        this.basicForm.demandDept = selection[0].id
+      }
       if(this.referCondition.type == 'WAREHOUSE_PARAM') {
         this.houseOptions = selection
         this.basicForm.warehouse = selection[0].id
@@ -764,6 +866,80 @@ export default {
         this.goodsOptions = selection
         this.basicForm.goodsAllocation = selection[0].id
       }
+      // if(this.referConditionMx.type == 'DEPT_PARAM') {
+      //   this.basicForm.puDemandItemList[this.tableIndex].businessDept = selection[0].code
+      //   this.basicForm.puDemandItemList[this.tableIndex].businessDeptName = selection[0].name
+      // }
+      if(this.referConditionMx.title == '选择末级供应仓库') {
+        this.basicForm.puDemandItemList[this.tableIndex].lastWarehouseName = selection[0].name
+      }
+      if(this.referConditionMx.title == '选择收货仓库') {
+        this.basicForm.puDemandItemList[this.tableIndex].deliveryWarehouseName = selection[0].name
+      }
+      if(this.referConditionMx.title == '选择末级供应货位') {
+        this.basicForm.puDemandItemList[this.tableIndex].lastAllocationName = selection[0].name
+      }
+      if(this.referConditionMx.title == '选择收货货位') {
+        this.basicForm.puDemandItemList[this.tableIndex].deliveryAllocation = selection[0].code
+        this.basicForm.puDemandItemList[this.tableIndex].deliveryAllocationName = selection[0].name
+      }
+      if(this.referConditionMx.title == '选择补单供应商') {
+        this.basicForm.puDemandItemList[this.tableIndex].additionalSupplier = selection[0].code
+        this.basicForm.puDemandItemList[this.tableIndex].additionalSupplierCode = selection[0].name
+      }
+      if(this.referConditionMx.title == '选择收货地址') {
+        this.basicForm.puDemandItemList[this.tableIndex].deliveryAddressName = selection[0].name
+        this.basicForm.puDemandItemList[this.tableIndex].deliveryAddress = selection[0].code
+        this.basicForm.puDemandItemList[this.tableIndex].contacts = selection[0].contactsName
+        this.basicForm.puDemandItemList[this.tableIndex].contactsPhone = selection[0].contactsPhone
+        this.basicForm.puDemandItemList[this.tableIndex].address = selection[0].address
+      }
+    },
+    // 明细行选择物料编码带出数据
+    chooseMaterial(index) {
+      console.log("🚀 ~ file: add.vue:790 ~ chooseMaterial ~ index:", index)
+      this.tableIndex = index
+      this.$refs.materialRefer.init()
+    },
+    selectMaterial(selection) {
+      console.log('选中的物料', selection)
+      // 通过选择物料查询采购员
+      queryMan(selection[0].id).then(res => {
+        if(res.code === 200 && res.rows.length !== 0) {
+          this.basicForm.puDemandItemList[this.tableIndex].buyer = res.rows[0].buyer
+          this.basicForm.puDemandItemList[this.tableIndex].buyerName = res.rows[0].buyerName
+        }
+      })
+      this.basicForm.puDemandItemList[this.tableIndex].businessDept = selection[0].businessDepartment
+      this.basicForm.puDemandItemList[this.tableIndex].businessDeptName = selection[0].businessDepartmentName
+      this.basicForm.puDemandItemList[this.tableIndex].materialCode = selection[0].code
+      this.basicForm.puDemandItemList[this.tableIndex].materialName = selection[0].name
+      this.basicForm.puDemandItemList[this.tableIndex].materialClassifyOneName = selection[0].oneClass
+      this.basicForm.puDemandItemList[this.tableIndex].materialClassifyTwoName = selection[0].twoClass
+      this.basicForm.puDemandItemList[this.tableIndex].materialClassifyThreeName = selection[0].threeClass
+      this.basicForm.puDemandItemList[this.tableIndex].materialClassifyFourName = selection[0].fourClass
+      this.basicForm.puDemandItemList[this.tableIndex].specification = selection[0].specification
+      this.basicForm.puDemandItemList[this.tableIndex].model = selection[0].model
+      this.basicForm.puDemandItemList[this.tableIndex].unit = selection[0].unitIdName
+      this.basicForm.puDemandItemList[this.tableIndex].registrant = selection[0].registrant
+      this.basicForm.puDemandItemList[this.tableIndex].manufacturerName = selection[0].manufacturerIdName
+      this.basicForm.puDemandItemList[this.tableIndex].puPeriod = selection[0].deliveryPeriod
+      this.basicForm.puDemandItemList[this.tableIndex].expiryUnit = selection[0].expiryUnitIdName
+      // this.basicForm.puDemandItemList[this.tableIndex].minPackage = selection[0].usefulLife
+      this.basicForm.puDemandItemList[this.tableIndex].minPackage = selection[0].minPackQty
+      this.basicForm.puDemandItemList[this.tableIndex].minOrderQty = selection[0].minOrderQty
+      this.basicForm.puDemandItemList[this.tableIndex].minBatch = selection[0].minBatchQty
+      this.basicForm.puDemandItemList[this.tableIndex].safeStock = selection[0].safeStock
+      this.basicForm.puDemandItemList[this.tableIndex].purOrgName = selection[0].purchasingOrganizationName
+      this.basicForm.puDemandItemList[this.tableIndex].puOrg = selection[0].purchasingOrganization
+    },
+    // 明细行选择业务部门参照带出业务部门数据
+    chooseDept(index, type, isPage, title) {
+      this.tableIndex = index
+      this.referConditionMx.type = type
+      this.referConditionMx.isPage = isPage
+      this.referConditionMx.title = title
+      this.$refs.refer.init(this.referConditionMx)
     }
   }
 }

+ 28 - 2
src/views/purchase/PurchaseDemandList/index.vue

@@ -333,13 +333,39 @@ export default {
         } else {
           let param = {all: false, ids: this.ids}
           exportDemand(param).then(res => {
-
+            const blob = new Blob([res], {
+              type: "application/vnd.ms-excel;charset=UTF-8",
+            });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
+            const downloadElement = document.createElement("a"); //创建a标签
+            const href = window.URL.createObjectURL(blob); // 创建下载的链接
+            // var temp = res.headers["content-disposition"]; 
+            // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
+            // var name = fileName.split(";")[0]; //切割成文件名
+            downloadElement.href = href;  //下载地址
+            downloadElement.download = '选中导出'; // 下载后文件名
+            document.body.appendChild(downloadElement);
+            downloadElement.click(); // 点击下载
+            document.body.removeChild(downloadElement); // 下载完成移除元素
+            window.URL.revokeObjectURL(href); // 释放blob对象
           })
         }
       } else {
         let param2 = {all: true}
         exportDemand(param2).then(res => {
-
+          const blob = new Blob([res], {
+            type: "application/vnd.ms-excel;charset=UTF-8",
+          });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
+          const downloadElement = document.createElement("a"); //创建a标签
+          const href = window.URL.createObjectURL(blob); // 创建下载的链接
+          // var temp = res.headers["content-disposition"]; 
+          // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
+          // var name = fileName.split(";")[0]; //切割成文件名
+          downloadElement.href = href;  //下载地址
+          downloadElement.download = '全部导出'; // 下载后文件名
+          document.body.appendChild(downloadElement);
+          downloadElement.click(); // 点击下载
+          document.body.removeChild(downloadElement); // 下载完成移除元素
+          window.URL.revokeObjectURL(href); // 释放blob对象
         })
       }
     },

+ 2 - 2
src/views/purchase/PurchaseDemandList/refers.vue

@@ -8,7 +8,7 @@
             <el-form size="small" :inline="true" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()"
               @submit.native.prevent>
               <el-form-item prop="param" label="名称/编号">
-                <el-input size="small" v-model="searchForm.param" placeholder="输入名称/编号查询" clearable></el-input>
+                <el-input size="small" v-model="searchForm.search" placeholder="输入名称/编号查询" clearable></el-input>
               </el-form-item>
               <el-form-item>
                 <el-button type="primary" @click="refreshList()" size="small" icon="el-icon-search">查询</el-button>
@@ -48,7 +48,7 @@ export default {
   data() {
     return {
       searchForm: {
-        param: '',
+        search: '',
         pageNo: 1,
         pageSize: 10,
       },

+ 1 - 1
src/views/purchase/PurchaseDemandList/reserved.vue

@@ -83,7 +83,7 @@ export default {
   },
   methods: {
     getDetails(row) {
-      getResevedDetail(row.id).then(res => {
+      getResevedDetail(row.code).then(res => {
         if (res.code === 200) {
           // this.basicForm = res.data
         }