Browse Source

采购合同:委外编辑

chris 2 years ago
parent
commit
e07b959021

+ 197 - 0
src/views/modules/purchase/outsource-chose.vue

@@ -0,0 +1,197 @@
+<template>
+  <div>
+    <el-dialog
+      title="选择委外物品"
+      width="70%"
+      :close-on-click-modal="false"
+      :visible.sync="visible">
+      <el-form :inline="true" :model="dataForm" @keyup.enter.native="search()">
+        <el-form-item label="物品名称">
+          <el-input v-model="dataForm.productName" placeholder="物品名称" clearable></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="search()">查询</el-button>
+          <el-button type="primary" @click="addItems()">添加</el-button>
+  <!--          <el-button @click="visible = false" type="primary">返回</el-button>-->
+        </el-form-item>
+      </el-form>
+      <el-table
+        :data="dataList"
+        border
+        v-loading="dataListLoading"
+        @selection-change="selectionChangeHandle"
+        style="width: 100%;">
+        <el-table-column
+          type="selection">
+        </el-table-column>
+        <el-table-column
+          label="序号"
+          type="index"
+          width="50"
+          align="center">
+        </el-table-column>
+        <el-table-column
+          prop="purchaseCode"
+          header-align="center"
+          align="center"
+          min-width="180"
+          :show-tooltip-when-overflow="true"
+          label="采购编码">
+        </el-table-column>
+        <el-table-column
+          prop="productName"
+          header-align="center"
+          align="center"
+          width="160"
+          :show-tooltip-when-overflow="true"
+          label="产品名称">
+        </el-table-column>
+        <el-table-column
+          prop="specificationExplian"
+          header-align="center"
+          align="center"
+          width="160"
+          :show-tooltip-when-overflow="true"
+          label="要求说明">
+        </el-table-column>
+        <el-table-column
+          prop="cnt"
+          header-align="center"
+          align="center"
+          label="数量">
+        </el-table-column>
+        <el-table-column
+          prop="unitName"
+          header-align="center"
+          align="center"
+          min-width="100"
+          :show-tooltip-when-overflow="true"
+          label="单位">
+        </el-table-column>
+        <el-table-column
+          prop="deadline"
+          header-align="center"
+          align="center"
+          min-width="160"
+          :show-tooltip-when-overflow="true"
+          label="委外期限">
+        </el-table-column>
+        <el-table-column
+          prop="arrivedTime"
+          header-align="center"
+          align="center"
+          min-width="160"
+          :show-tooltip-when-overflow="true"
+          label="到料时间">
+        </el-table-column>
+        <el-table-column
+          prop="batchNumber"
+          header-align="center"
+          align="center"
+          min-width="160"
+          :show-tooltip-when-overflow="true"
+          label="批次号/用途">
+        </el-table-column>
+        <el-table-column
+          prop="notes"
+          header-align="center"
+          align="center"
+          min-width="180"
+          :show-overflow-tooltip="true"
+          label="备注">
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        @size-change="sizeChangeHandle"
+        @current-change="currentChangeHandle"
+        :current-page="pageIndex"
+        :page-sizes="[10, 20, 50, 100]"
+        :page-size="pageSize"
+        :total="totalPage"
+        layout="total, sizes, prev, pager, next, jumper">
+      </el-pagination>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'outsource-chose',
+    data () {
+      return {
+        visible: false,
+        dataForm: {},
+        dataList: [],
+        pageIndex: 1,
+        pageSize: 10,
+        totalPage: 0,
+        dataListLoading: false,
+        dataListSelections: []
+      }
+    },
+    methods: {
+      init () {
+        this.visible = true
+        this.getDataList()
+      },
+      search () {
+        this.pageIndex = 1
+        this.getDataList()
+      },
+      // 获取数据列表
+      getDataList () {
+        this.dataListLoading = true
+        this.$http({
+          url: this.$http.adornUrl('/biz-service/purCommDetail/listDetail'),
+          method: 'get',
+          params: this.$http.adornParams({
+            'current': this.pageIndex,
+            'size': this.pageSize,
+            'productName': this.dataForm.productName ? this.dataForm.productName : null,
+            'purchaseState': 3
+          })
+        }).then(({data}) => {
+          if (data && data.code === '200') {
+            this.dataList = data.data.records
+            this.totalPage = Number(data.data.total)
+          } else {
+            this.dataList = []
+            this.totalPage = 0
+          }
+          this.dataListLoading = false
+        })
+      },
+      // 每页数
+      sizeChangeHandle (val) {
+        this.pageSize = val
+        this.pageIndex = 1
+        this.getDataList()
+      },
+      // 当前页
+      currentChangeHandle (val) {
+        this.pageIndex = val
+        this.getDataList()
+      },
+      // 多选
+      selectionChangeHandle (val) {
+        this.dataListSelections = val
+      },
+      // 添加
+      exportItem (item) {
+        this.$emit('addItem', item)
+      },
+      addItems () {
+        if (this.dataListSelections.length === 0) {
+          this.$message.warning('请选择物品')
+          return
+        }
+        this.visible = false
+        this.$emit('addItems', this.dataListSelections)
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 1
src/views/modules/purchase/purchase-chose.vue

@@ -153,7 +153,7 @@
           params: this.$http.adornParams({
             'current': this.pageIndex,
             'size': this.pageSize,
-            'materialName': this.dataForm.materialName ? this.dataForm.name : null,
+            'materialName': this.dataForm.materialName ? this.dataForm.materialName : null,
             'purchaseState': 3
           })
         }).then(({data}) => {

+ 30 - 13
src/views/modules/sale/contract-add-or-update.vue

@@ -15,6 +15,7 @@
                 <el-select
                   v-model="dataForm.type"
                   remote
+                  @change="typeChanged"
                   placeholder="请选择">
                   <el-option
                     v-for="item in optionsType"
@@ -155,7 +156,6 @@
                 width="100"
                 label="操作">
                 <template slot-scope="scope">
-                  <el-button type="text" size="small" @click="updateItemHandle(scope.row)">编辑</el-button>
                   <el-button style="color: red" type="text" size="small" @click="deleteItemHandle(scope.row.recordId)">删除</el-button>
                 </template>
               </el-table-column>
@@ -170,6 +170,7 @@
           <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
         </span>
       <add-purchase v-if="addPurchaseVisible" ref="addPurchase" @addItems="addMaterialItems"/>
+      <add-outsource v-if="addOutsourceVisible" ref="addOutsource" @addItems="addMaterialItems"/>
     </div>
 </template>
 
@@ -178,13 +179,15 @@
   import { getContractDetail } from '@/api/sale'
   import SupplierComponent from '../common/supplier-component'
   import AddPurchase from '../purchase/purchase-chose'
+  import AddOutsource from '../purchase/outsource-chose'
 
 export default {
     name: 'contract-add-or-update',
     components: {
       SupplierComponent,
       UploadComponent,
-      AddPurchase
+      AddPurchase,
+      AddOutsource
     },
     computed: {
       orgId: {
@@ -195,6 +198,7 @@ export default {
       return {
         id: 0,
         addPurchaseVisible: false,
+        addOutsourceVisible: false,
         dataForm: {},
         materialList: [],
         optionsPurchaseType: [],
@@ -239,6 +243,17 @@ export default {
                 })
               })
             }
+            // 采购物品明细
+            if (data.data.purchaseDetailList) {
+              data.data.purchaseDetailList.forEach((item) => {
+                if (!item.recordId) {
+                  item.recordId = Math.round(Math.random() * 1000000)
+                }
+                this.materialList.push({
+                  ...item
+                })
+              })
+            }
           }
         })
       },
@@ -306,16 +321,11 @@ export default {
           this.$nextTick(() => {
             this.$refs.addPurchase.init()
           })
-        }
-      },
-      // 编辑项目
-      updateItemHandle (row) {
-        if (Number(this.dataForm.type) === 1) {
-          this.productListVisible = true
-          this.$nextTick(() => {
-            this.$refs.addPurchase.init(row)
-          })
-        }
+        } else if (Number(this.dataForm.type) === 2) {}
+        this.addOutsourceVisible = true
+        this.$nextTick(() => {
+          this.$refs.addOutsource.init()
+        })
       },
       // 删除项目
       deleteItemHandle (recordId) {
@@ -341,8 +351,15 @@ export default {
       addMaterialItems (items) {
         this.materialList = []
         items.forEach((item) => {
-          this.addItem(item)
+          if (Number(this.dataForm.type) === 1) {
+            this.addItem(item)
+          } else if (Number(this.dataForm.type) === 2) {
+            this.addItem(item)
+          }
         })
+      },
+      typeChanged (type) {
+        this.materialList = []
       }
     }
   }