chris пре 3 година
родитељ
комит
7ada386a96
2 измењених фајлова са 190 додато и 17 уклоњено
  1. 161 0
      src/views/modules/sale/purchase-operate.vue
  2. 29 17
      src/views/modules/sale/purchase.vue

+ 161 - 0
src/views/modules/sale/purchase-operate.vue

@@ -0,0 +1,161 @@
+<!-- 采购操作 -->
+<template>
+  <div>
+      <div class="my-title">采购</div>
+      <!-- 表单 -->
+      <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
+        <el-row class="my-row">
+          <el-col :span="12">
+            <el-form-item ref="supplierCheckbox" label="供应商" prop="supplierId">
+              <supplier-component v-model="dataForm.supplierId" :supplier-id.sync="dataForm.supplierId"></supplier-component>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item ref="supplierInput" label="其他供应商" prop="supplierOther">
+              <el-input v-model="dataForm.supplierOther" placeholder="请输入其他供应商"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row class="my-row">
+          <el-col :span="12">
+            <el-form-item label="采购依据" prop="procurementBasis">
+              <el-select
+                v-model="dataForm.procurementBasis"
+                placeholder="请选择">
+                <el-option
+                  v-for="item in optionsPB"
+                  :key="item.code"
+                  :label="item.value"
+                  :value="item.code">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <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-col>
+        </el-row>
+        <el-row class="my-row">
+          <el-col :span="12">
+            <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-col>
+          <el-col :span="12">
+            <el-form-item label="含税总价" prop="procurementCode">
+              <span>{{ (dataForm.cnt * dataForm.price).toFixed(1) }}</span>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row class="my-row">
+          <el-col :span="12">
+            <el-form-item label="税率" prop="taxRate">
+              <el-input-number v-model="dataForm.taxRate" :step="1" :precision="1"/>&nbsp;%
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+      <el-button @click="onChose">取消</el-button>
+      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
+    </span>
+  </div>
+</template>
+
+<script>
+  import SupplierComponent from '../common/supplier-component'
+  import { getDictList } from '@/api/dict'
+  export default {
+    name: 'purchase-operate',
+    components: {
+      SupplierComponent
+    },
+    data () {
+      let validateSupplier = (rule, value, callback) => {
+        if (!this.dataForm.supplierId && !this.dataForm.supplierOther) {
+          callback(new Error('请至少填写一项供应商信息'))
+        } else {
+          // 任意值被填写,清除验证提示
+          if (!this.dataForm.supplierId || !this.dataForm.supplierOther) {
+            this.$refs.supplierCheckbox.clearValidate()
+            this.$refs.supplierInput.clearValidate()
+          }
+          callback()
+        }
+      }
+      return {
+        id: 0,
+        dataForm: {
+          cnt: 1
+        },
+        dataRule: {
+          supplierId: [{required: true, validator: validateSupplier, trigger: 'change'}],
+          supplierOther: [{required: true, validator: validateSupplier, trigger: 'blur'}],
+          procurementBasis: [{ required: true, message: '请选择采购依据', trigger: 'change' }],
+          price: [{ required: true, message: '请输入不含税单价', trigger: 'change' }],
+          taxPrice: [{ required: true, message: '请输入含税单价', trigger: 'change' }],
+          taxRate: [{ required: true, message: '请输入税率', trigger: 'change' }]
+        },
+        optionsPB: [] // 采购依据(字典)
+      }
+    },
+    methods: {
+      onChose () {
+        this.$emit('onChose')
+      },
+      // 获取采购依据字典
+      getPbList () {
+        getDictList({type: 'procurement_basis'}).then(({data}) => {
+          if (data) {
+            this.optionsPB = data
+          }
+        })
+      },
+      async init (row) {
+        if (!row) return
+        this.getPbList()
+        this.dataForm = row
+      },
+      validateField (type) {
+        this.$refs.dataForm.validateField(type)
+      },
+      // 表单提交
+      dataFormSubmit () {
+        this.$refs['dataForm'].validate((valid) => {
+          if (valid) {
+            // // 检查供应商
+            // if (!this.dataForm.supplierId && !this.dataForm.supplierOther) {
+            //   this.$message.error('请填写供应商')
+            //   return
+            // }
+            this.$http({
+              url: this.$http.adornUrl(`/biz-service/purchaseDetail/updatePurchaseDetail`),
+              method: 'post',
+              data: this.$http.adornData({...this.dataForm})
+            }).then(({data}) => {
+              if (data && data.code === '200') {
+                this.$message({
+                  message: '操作成功',
+                  type: 'success',
+                  duration: 1500,
+                  onClose: () => {
+                    this.onChose()
+                    this.$emit('refreshDataList')
+                  }
+                })
+              } else {
+                this.$message.error(data.msg)
+              }
+            })
+          }
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 29 - 17
src/views/modules/sale/purchase.vue

@@ -1,14 +1,8 @@
-<!-- 产品管理 -->
+<!-- 采购管理 -->
 <template>
   <div class="purchase">
-    <template v-if="!addOrUpdateVisible && !detailVisible">
+    <template v-if="!addOrUpdateVisible && !detailVisible && !operateVisible">
       <el-form :inline="true" :model="dataForm" @keyup.enter.native="search()">
-        <el-form-item label="采购编码">
-          <el-input v-model="dataForm.purchaseCode" placeholder="采购编码" clearable/>
-        </el-form-item>
-        <el-form-item label="说明">
-          <el-input v-model="dataForm.notes" placeholder="说明" clearable/>
-        </el-form-item>
         <el-form-item label="类别">
           <el-select
             v-model="dataForm.purchaseType"
@@ -22,11 +16,17 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="申请日期">
+        <el-form-item label="物品名称">
+          <el-input v-model="dataForm.materialName" placeholder="物品名称" clearable/>
+        </el-form-item>
+        <el-form-item label="申请时间">
           <el-date-picker
-            v-model="dataForm.applyDate"
-            value-format="yyyy-MM-dd"
-            type="date">
+            v-model="dataForm.date"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            type="datetimerange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="状态">
@@ -204,7 +204,7 @@
           <template slot-scope="scope">
             <el-button v-if="isAuth('purchase:detail:info')" type="text" size="small" @click="detailHandle(scope.row.procurementId)">查看</el-button>
             <el-button v-if="isAuth('purchase:detail:update') && (Number(scope.row.approvalState) <= 1)" type="text" size="small" @click="addOrUpdateHandle(scope.row.procurementId, false)">编辑</el-button>
-            <el-button v-if="isAuth('purchase:detail:updatePurchaseDetail') && (Number(scope.row.approvalState) === 3)" type="text" size="small" @click="revokeHandle(scope.row.procurementId)">采购</el-button>
+            <el-button v-if="isAuth('purchase:detail:updatePurchaseDetail') && (Number(scope.row.approvalState) === 3)" type="text" size="small" @click="operateHandle(scope.row)">采购</el-button>
             <el-button v-if="isAuth('purchase:detail:infoPutIn') && (Number(scope.row.approvalState) === 3)" type="text" size="small" @click="revokeHandle(scope.row.procurementId)">入库</el-button>
             <el-button v-if="isAuth('purchase:detail:infoPutInAgain') && (Number(scope.row.purchaseState) === 5)" type="text" size="small" @click="revokeHandle(scope.row.procurementId)">再次入库</el-button>
           </template>
@@ -223,23 +223,27 @@
     <!-- 弹窗, 新增 / 修改 -->
     <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList" @onChose="onChose"></add-or-update>
     <detail v-if="detailVisible" ref="detail" @onChose="onChose"/>
+    <!-- 采购操作 -->
+    <operate v-if="operateVisible" ref="operate" @onChose="onChose"/>
   </div>
 </template>
 
 <script>
   import AddOrUpdate from './purchase-add-or-update'
   import Detail from './purchase-detail'
+  import Operate from './purchase-operate'
   import { getDictList } from '@/api/dict'
   import { getPurchaseList, revokePurchase } from '@/api/sale'
   export default {
     name: 'purchase',
     components: {
-      AddOrUpdate, Detail
+      AddOrUpdate, Detail, Operate
     },
     data () {
       return {
         addOrUpdateVisible: false,
         detailVisible: false,
+        operateVisible: false,
         dataForm: {},
         dataList: [],
         pageIndex: 1,
@@ -270,6 +274,7 @@
       onChose () {
         this.addOrUpdateVisible = false
         this.detailVisible = false
+        this.operateVisible = false
       },
       // 获取采购类别字典
       getTypeList () {
@@ -291,11 +296,11 @@
         let params = {
           'current': this.pageIndex,
           'size': this.pageSize,
-          'applyDate': this.dataForm.applyDate ? this.dataForm.applyDate : null,
-          'notes': this.dataForm.notes ? this.dataForm.notes : null,
+          'materialName': this.dataForm.materialName ? this.dataForm.materialName : null,
           'purchaseState': this.dataForm.purchaseState ? this.dataForm.purchaseState : null,
           'purchaseType': this.dataForm.purchaseType ? this.dataForm.purchaseType : null,
-          'purchaseCode': this.dataForm.purchaseCode ? this.dataForm.purchaseCode : null
+          'beginTime': this.dataForm.date ? this.dataForm.date[0] : null,
+          'endTime': this.dataForm.date ? this.dataForm.date[1] : null
         }
         getPurchaseList(params).then(({data}) => {
           if (data && data.code === '200') {
@@ -379,6 +384,13 @@
         this.$nextTick(() => {
           this.$refs.detail.init(id)
         })
+      },
+      // 采购操作
+      operateHandle (row) {
+        this.operateVisible = true
+        this.$nextTick(() => {
+          this.$refs.operate.init(row)
+        })
       }
     }
   }