Ver Fonte

批量页面

damon227 há 11 meses atrás
pai
commit
4ec6666773

+ 51 - 17
src/views/modules/production/scheduling-commission.vue

@@ -4,9 +4,32 @@
         <div class="my-title">委外</div>
         <!-- 表单 -->
         <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
+          <div class="form-item" v-for="(item, index) in dataForm.list" :key="item.purchaseDetailId">
+            <el-row>
+            <el-col :span="6">
+              <el-form-item label="物料名称">
+                <span>{{item.productName}}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="物料规格">
+                <span>{{item.productSpec}}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="数量">
+                <span>{{item.cnt}}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="图号">
+                <span>{{item.batchNumber}}</span>
+              </el-form-item>
+            </el-col>
+          </el-row>
           <el-row class="my-row">
-            <el-col :span="8">
-              <el-form-item label="类别" prop="commissionType">
+            <el-col :span="6">
+              <el-form-item label="类别" :prop="'list.' + index + '.commissionType'" :rules="dataRule.commissionType">
                 <el-select
                   v-model="dataForm.commissionType"
                   remote
@@ -20,31 +43,30 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="16">
-              <el-form-item label="要求说明" prop="specificationExplian">
-                <el-input v-model="dataForm.specificationExplian" placeholder="要求说明"></el-input>
+            <el-col :span="6">
+              <el-form-item label="要求说明" :prop="'list.' + index + '.specificationExplian'" :rules="dataRule.specificationExplian">
+                <el-input v-model="item.specificationExplian" placeholder="要求说明"></el-input>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row class="my-row">
-            <el-col :span="8">
-              <el-form-item label="委外数量" prop="cnt">
-                <el-input-number v-model="dataForm.cnt" :step="1" :min="0"></el-input-number>
+            <el-col :span="6">
+              <el-form-item label="委外数量" :prop="'list.' + index + '.cnt'" :rules="dataRule.cnt">
+                <el-input-number v-model="item.cnt" :step="1" :min="0"></el-input-number>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="单位" prop="unitName">
-                <el-input v-model="dataForm.unitName" placeholder="单位单位"></el-input>
+            <el-col :span="6">
+              <el-form-item label="单位" :prop="'list.' + index + '.unitName'" :rules="dataRule.unitName">
+                <el-input v-model="item.unitName" placeholder="单位单位"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row class="my-row">
-            <el-col :span="16">
+            <el-col :span="12">
               <el-form-item label="备注" prop="notes">
-                <el-input type="textarea" v-model="dataForm.notes"></el-input>
+                <el-input type="textarea" v-model="item.notes"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
+          </div>
         </el-form>
         <span slot="footer" class="dialog-footer">
           <el-button @click="onChose">取消</el-button>
@@ -66,7 +88,9 @@ export default {
   data () {
     return {
       id: 0,
-      dataForm: {},
+      dataForm: {
+        list:[]
+      },
       optionsType: [], // 类别
       dataRule: {
         cnt: [{ required: true, message: '请输入数量', trigger: 'change' }],
@@ -85,6 +109,11 @@ export default {
     },
     async init (row) {
       this.dataForm.id = row.id
+      if(row instanceof Array){
+        this.dataForm.list = row
+      } else {
+        this.dataForm.list = [row]
+      }
     },
     validateField (type) {
       this.$refs.dataForm.validateField(type)
@@ -124,5 +153,10 @@ export default {
 </script>
 
 <style scoped>
-
+.form-item {
+  margin: 5px 0;
+  padding:25px 0 5px;
+  background-color: #f1f9f9;
+  border-radius: 10px;
+}
 </style>

+ 53 - 16
src/views/modules/production/scheduling-purchase.vue

@@ -1,28 +1,50 @@
 <!-- 采购 -->
 <template>
     <div>
-        <div class="my-title">采购</div>
+        <div class="my-title">{{subTitle}}</div>
         <!-- 表单 -->
         <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
-          <el-row class="my-row">
-            <el-col :span="8">
-              <el-form-item label="采购数量" prop="cnt">
-                <el-input-number v-model="dataForm.cnt" :step="1" :min="0"></el-input-number>
+          <div class="form-item" v-for="(item, index) in dataForm.list" :key="item.purchaseDetailId">
+            <el-row>
+            <el-col :span="6">
+              <el-form-item label="物品名称">
+                <span>{{item.materialName}}</span>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="单位" prop="unitName">
-                <el-input v-model="dataForm.unitName" placeholder="单位单位"></el-input>
+            <el-col :span="6">
+              <el-form-item label="规格/型号">
+                <span>{{item.specification}}</span>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row class="my-row">
-            <el-col :span="16">
-              <el-form-item label="备注" prop="notes">
-                <el-input type="textarea" v-model="dataForm.notes"></el-input>
+            <el-col :span="6">
+              <el-form-item label="数量">
+                <span>{{item.cnt}}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="用途">
+                <span>{{item.batchNumber}}</span>
               </el-form-item>
             </el-col>
           </el-row>
+            <el-row class="my-row">
+              <el-col :span="6">
+                <el-form-item label="采购数量" :prop="'list.' + index + '.cnt'" :rules="dataRule.cnt">
+                  <el-input-number v-model="item.cnt" :step="1" :min="0"></el-input-number>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="单位" :prop="'list.' + index + '.unitName'" :rules="dataRule.unitName">
+                  <el-input v-model="item.unitName" placeholder="单位单位"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="备注" :prop="'list.' + index + '.notes'" :rules="dataRule.notes">
+                  <el-input type="textarea" v-model="item.notes"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
         </el-form>
         <span slot="footer" class="dialog-footer">
           <el-button @click="onChose">取消</el-button>
@@ -43,11 +65,14 @@ export default {
   data () {
     return {
       id: 0,
-      dataForm: {},
+      dataForm: {
+        list:[]
+      },
       dataRule: {
         cnt: [{ required: true, message: '请输入数量', trigger: 'change' }],
         unitName: [{ required: true, message: '请输入单位', trigger: 'blur' }]
-      }
+      },
+      subTitle:''
     }
   },
   methods: {
@@ -56,6 +81,13 @@ export default {
     },
     async init (row) {
       this.dataForm.id = row.id
+      if(row instanceof Array){
+        this.subTitle = '批量采购'
+        this.dataForm.list = row
+      } else {
+        this.subTitle = '采购'
+        this.dataForm.list = [row]
+      }
     },
     validateField (type) {
       this.$refs.dataForm.validateField(type)
@@ -87,5 +119,10 @@ export default {
 </script>
 
 <style scoped>
-
+.form-item {
+  margin: 5px 0;
+  padding:25px 0 5px;
+  background-color: #f1f9f9;
+  border-radius: 10px;
+}
 </style>

+ 31 - 1
src/views/modules/production/scheduling.vue

@@ -3,7 +3,14 @@
   <div class="production">
     <template v-if="!detailsVisible && !outsourceVisible && !checkVisible && !preCheckVisible && !purchaseVisible && !printLabelVisible">
       <el-header style="font-size: large;text-align: center">任务处理中心</el-header>
+      <el-form>
+        <el-form-item>
+          <el-button type="primary" @click="batchBuyHandle()">批量转采购</el-button>
+          <el-button type="primary" @click="batchOutsourceHandle()">批量转委外</el-button>
+        </el-form-item>
+      </el-form>
       <el-table
+        @selection-change="handleSelectionChange"
         :data="dataList"
         row-key="id"
         border
@@ -12,6 +19,10 @@
         :load="loadingData"
         v-loading="dataListLoading"
         style="width: 100%;">
+        <el-table-column
+          type="selection"
+          width="55">
+        </el-table-column>
         <el-table-column
           label="序号"
           type="index"
@@ -289,7 +300,8 @@ export default {
             value: '生产'
           }
         ],
-        multipleSelection: []
+        multipleSelection: [],
+        selectedRows:[]
       }
     },
     created () {
@@ -451,6 +463,24 @@ export default {
             item.printCnt += 1
           }
         })
+      },
+      //监听批量选择的行
+      handleSelectionChange(rows){
+        this.selectedRows = rows
+      },
+      //批量转采购
+      batchBuyHandle(){
+        this.purchaseVisible = true
+        this.$nextTick(() => {
+          this.$refs.purchase.init(this.selectedRows)
+        })
+      },
+      //批量转委外
+      batchOutsourceHandle(){
+        this.outsourceVisible = true
+        this.$nextTick(() => {
+          this.$refs.outsource.init(this.selectedRows)
+        })
       }
     }
   }

+ 95 - 24
src/views/modules/sale/outsource-pop.vue

@@ -1,25 +1,64 @@
 <!-- 委外 -->
 <template>
     <div>
-        <div class="my-title">委外</div>
+        <div class="my-title">{{subTitle}}</div>
         <!-- 表单 -->
-        <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
-          <el-form-item label="供应商" prop="supplierId">
-            <supplier-component v-model="dataForm.supplierId" :supplier-id.sync="dataForm.supplierId"></supplier-component>
-          </el-form-item>
-          <el-form-item label="不含税单价" prop="price">
-            <el-input-number v-model="dataForm.price" :step="1" :min="0" :precision="1"></el-input-number>
-          </el-form-item>
-          <el-form-item label="含税单价" prop="taxPrice">
-            <el-input-number v-model="dataForm.taxPrice" :step="1" :min="0" :precision="1"></el-input-number>
-          </el-form-item>
-          <el-form-item label="含税总价" prop="taxAmount">
-            <span>{{dataForm.cnt * dataForm.taxPrice}}</span>
-          </el-form-item>
-          <el-form-item label="税率" prop="taxRate">
-            <el-input-number style="width: 160px" v-model="dataForm.taxRate" :step="1" :precision="1"/>&nbsp;%
-          </el-form-item>
-        </el-form>
+              <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
+        <div class="form-item" v-for="(item, index) in dataForm.list" :key="item.purchaseDetailId">
+          <el-row>
+            <el-col :span="6">
+              <el-form-item label="物料名称">
+                <span>{{item.productName}}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="物料规格">
+                <span>{{item.productSpec}}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="数量">
+                <span>{{item.cnt}}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="图号">
+                <span>{{item.batchNumber}}</span>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="6">
+              <el-form-item ref="supplierCheckbox" label="供应商" :prop="'list.' + index + '.supplierId'" :rules="dataRule.supplierId">
+                <supplier-component v-model="item.supplierId" :supplier-id.sync="item.supplierId"></supplier-component>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="不含税单价" :prop="'list.' + index + '.price'" :rules="dataRule.price">
+                <el-input-number v-model="item.price" :step="1" :min="0" :precision="1"></el-input-number>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="含税单价" :prop="'list.' + index + '.taxPrice'" :rules="dataRule.taxPrice">
+                <el-input-number v-model="item.taxPrice" :step="1" :min="0" :precision="1"></el-input-number>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="含税总价">
+                <span>{{ item.cnt * item.taxPrice }}</span>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="6">
+              <el-form-item label="税率" :prop="'list.' + index + '.taxRate'" :rules="dataRule.taxRate">
+                <el-input-number v-model="item.taxRate" :step="1" :precision="1"/>&nbsp;%
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </div>
+       
+      </el-form>
         <span slot="footer" class="dialog-footer">
           <el-button @click="onChose">取消</el-button>
           <el-button type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
@@ -48,23 +87,50 @@ export default {
           price: 1,
           taxPrice: 1,
           taxRate: 1,
-          cnt: 1
+          cnt: 1,
+          list:[]
         },
         dataRule: {
           supplierId: [{ required: true, message: '请选择供应商', trigger: 'change' }],
           price: [{ required: true, message: '不含税单价不能为空', trigger: 'change' }],
           taxPrice: [{ required: true, message: '含税单价不能为空', trigger: 'change' }],
           taxRate: [{ required: true, message: '税率不能为空', trigger: 'change' }]
-        }
+        },
+        subTitle:''//副标题
       }
     },
     methods: {
       onChose () {
         this.$emit('onChose')
       },
-      async init (id, cnt) {
-        this.dataForm.purComDetailId = id
-        this.dataForm.cnt = cnt
+      async init (rows) {
+        if(rows instanceof Array){
+          this.subTitle = '批量委外'
+          this.dataForm.list = []
+          let list = rows.map(item => {
+            return {
+              purComDetailId:item.purComDetailId, 
+              cnt:item.cnt,
+              price:1,
+              taxPrice:1,
+              taxRate:1
+            }
+          })
+          this.dataForm.list = list
+        }
+        else{
+          this.subTitle = '委外'
+          this.dataForm.list = [
+            {
+              purComDetailId:rows.id, 
+              cnt:rows.cnt,
+              price:1,
+              taxPrice:1,
+              taxRate:1
+            }
+            ]
+        }
+        console.log('dataForm',this.dataForm)
       },
       validateField (type) {
         this.$refs.dataForm.validateField(type)
@@ -96,5 +162,10 @@ export default {
 </script>
 
 <style scoped>
-
+.form-item {
+  margin: 5px 0;
+  padding:25px 0 5px;
+  background-color: #f1f9f9;
+  border-radius: 10px;
+}
 </style>

+ 20 - 2
src/views/modules/sale/outsource.vue

@@ -47,14 +47,20 @@
           <el-button v-if="isAuth('pur:commDetail:save')" type="primary" @click="addOrUpdateHandle()">新增委外</el-button>
           <el-button v-if="isAuth('pur:commDetail:noteChangeConfig')" type="primary" @click="setNoticeChangeHandel()">工作提示通知设置</el-button>
           <el-button v-if="isAuth('pur:commDetail:priceConfig')" type="primary" @click="setAmountMaskHandel()">委外金额屏蔽设置</el-button>
+          <el-button v-if="isAuth('pur:commDetail:save')" type="primary" @click="batchHandle()">批量委外</el-button>
         </el-form-item>
       </el-form>
       <el-table
+        @selection-change="handleSelectionChange"
         :data="dataList"
         :row-class-name="tableRowClassName"
         border
         v-loading="dataListLoading"
         style="width: 100%;">
+        <el-table-column
+          type="selection"
+          width="55">
+        </el-table-column>
         <el-table-column
           label="序号"
           type="index"
@@ -310,7 +316,8 @@ export default {
         {code: '5', value: '入库异常'}
       ],
       // 审批状态
-      optionsState: []
+      optionsState: [],
+      selectedRows:[]
     }
   },
   created () {
@@ -497,7 +504,7 @@ export default {
     outsourceHandle (row) {
       this.outsourceVisible = true
       this.$nextTick(() => {
-        this.$refs.refOutsource.init(row.purComDetailId, row.cnt)
+        this.$refs.refOutsource.init(row)
       })
     },
     // 变更通知人设置
@@ -513,6 +520,17 @@ export default {
       this.$nextTick(() => {
         this.$refs.amountMaskSetting.init()
       })
+    },
+    //监听批量选择的行
+    handleSelectionChange(rows){
+      this.selectedRows = rows
+    },
+    //批量委外
+    batchHandle(){
+      this.outsourceVisible = true
+      this.$nextTick(() => {
+        this.$refs.refOutsource.init(this.selectedRows)
+      })
     }
   }
 }

+ 1 - 2
src/views/modules/sale/purchase-operate.vue

@@ -1,7 +1,7 @@
 <!-- 采购操作 -->
 <template>
   <div>
-      <div class="my-title">采购</div>
+      <div class="my-title">{{subTitle}}</div>
 
       <!-- 表单 -->
       <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
@@ -193,7 +193,6 @@
 
 <style scoped>
 .form-item {
-  /* border-bottom: 1px solid #000; */
   margin: 5px 0;
   padding:25px 0 5px;
   background-color: #f1f9f9;

+ 3 - 4
src/views/modules/sale/purchase.vue

@@ -47,8 +47,8 @@
           <el-button v-if="isAuth('purchase:detail:save')" type="primary" @click="addOrUpdateHandle(0)">新建采购申请</el-button>
           <el-button v-if="isAuth('purchase:detail:noteChangeConfig')" type="primary" @click="setNoticeChangeHandel()">工作提示通知设置</el-button>
           <el-button v-if="isAuth('purchase:detail:priceConfig')" type="primary" @click="setAmountMaskHandel()">采购金额屏蔽设置</el-button>
-          <el-button type="primary" @click="batchBuyHandel()">批量采购</el-button>
-          <el-button type="primary" @click="batchIncomeHandel()">批量入库</el-button>
+          <el-button v-if="isAuth('purchase:detail:updatePurchaseDetail')" type="primary" @click="batchBuyHandel()">批量采购</el-button>
+          <el-button v-if="isAuth('purchase:detail:infoPutIn')" type="primary" @click="batchIncomeHandel()">批量入库</el-button>
         </el-form-item>
       </el-form>
       <el-table
@@ -463,13 +463,12 @@
         let url = this.$http.adornUrl('/biz-service/purchaseDetail/exportExcel/' + procurementId)
         window.open(url + '?_token=' + Vue.cookie.get('token'), '_blank')
       },
+      //监听批量选择的行
       handleSelectionChange(rows){
         this.selectedRows = rows
       },
       //批量采购
       batchBuyHandel(){
-        console.log(this.selectedRows)
-        
         this.operateVisible = true
         this.$nextTick(() => {
           this.$refs.operate.init(this.selectedRows)