瀏覽代碼

模板出库

chris 3 年之前
父節點
當前提交
11e0c603fd

+ 15 - 0
src/api/warehouse.js

@@ -146,3 +146,18 @@ export function getRecordList (params) {
     params
   })
 }
+// 模板出库详情
+export function getDeliveryDetail (id) {
+  return request({
+    url: request.adornUrl(`/biz-service/template-outbound-ctl/info/${id}`),
+    method: 'get'
+  })
+}
+// 模板出库
+export function templateOut (data) {
+  return request({
+    url: request.adornUrl(`/biz-service/template-outbound-ctl/templateOut`),
+    method: 'post',
+    data
+  })
+}

+ 1 - 1
src/views/modules/production/equipment.vue

@@ -281,7 +281,7 @@
           return item1 ? item1.value : ''
         }
       },
-      // 转换属性“是否组合产品
+      // 转换属性“状态
       formatState (row) {
         if (!row.purchaseState) return ''
         const item1 = this.optionsState.find((item) => item.code === row.purchaseState.toString())

+ 1 - 1
src/views/modules/warehouse/out-record.vue

@@ -116,7 +116,7 @@
 
 <script>
   export default {
-    name: 'stock-order',
+    name: 'out-record',
     data () {
       return {
         inboundVisible: false,

+ 73 - 69
src/views/modules/warehouse/template-delivery-add.vue → src/views/modules/warehouse/template-delivery-detail.vue

@@ -1,28 +1,34 @@
 <template>
   <el-dialog
-    title="查看模板出库"
+    :title="!id ? '新增': display ? '查看' : '出库'"
     width="70%"
     :close-on-click-modal="false"
     :visible.sync="visible">
     <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
       <el-row class="my-row">
-        <el-col :span="12">
-          <el-form-item label="编码">
-            <el-input v-model="dataForm.code"  placeholder="编码"></el-input>
+        <el-col :span="8">
+          <el-form-item label="模板出库编码" prop="recordCode">
+            <el-input v-model="dataForm.recordCode" :disabled="true" placeholder="模板出库编码"></el-input>
           </el-form-item>
         </el-col>
-        <el-col :span="12" style="padding-left: 20px">
-          <el-form-item label="模板">
-            <el-input v-model="dataForm.code"  placeholder="模板"></el-input>
+        <el-col :span="8" style="padding-left: 20px">
+          <el-form-item label="产品编号" prop="recordNumber">
+            <el-input v-model="dataForm.recordNumber" :disabled="true" placeholder="产品编号"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" style="padding-left: 20px">
+          <el-form-item label="模板名称" prop="templateName">
+            <el-input v-model="dataForm.templateName" :disabled="true" placeholder="模板名称"></el-input>
           </el-form-item>
         </el-col>
       </el-row>
       <el-row class="my-row">
-        <el-form-item label="备注">
-            <el-input v-model="dataForm.code"  placeholder="备注"></el-input>
+        <el-form-item label="备注说明" prop="notes">
+            <el-input v-model="dataForm.notes" :disabled="true" placeholder="备注说明"></el-input>
           </el-form-item>
       </el-row>
       <el-row>
+        <div class="title"><span style="color: red">*</span> 模板对应的零件</div>
         <el-table
           :data="dataList"
           border
@@ -34,49 +40,69 @@
             align="center">
           </el-table-column>
           <el-table-column
-            prop="-"
+            prop="materialName"
             header-align="center"
             align="center"
             label="物品名称">
           </el-table-column>
           <el-table-column
-            prop="recordType"
+            prop="specifications"
             header-align="center"
             align="center"
             label="规格">
           </el-table-column>
           <el-table-column
-            prop="state"
+            prop="planCnt"
             header-align="center"
             align="center"
-            label="数量">
+            label="计划数量">
           </el-table-column>
           <el-table-column
-            prop="approver"
+            prop="unitName"
             header-align="center"
             align="center"
             label="单位">
           </el-table-column>
           <el-table-column
-            prop="-"
+            prop="cnt"
             header-align="center"
             align="center"
             label="仓库库存数量">
           </el-table-column>
           <el-table-column
-            prop="-"
+            v-if="display"
+            prop="deliveredCnt"
+            header-align="center"
+            align="center"
+            label="已出库">
+          </el-table-column>
+          <el-table-column
+            v-if="!display"
+            :key="display"
+            prop="planCntUser"
             header-align="center"
             align="center"
             label="请选择数量">
+            <template slot-scope="scope">
+              <el-input-number v-model="scope.row.planCntUser" :min="1" style="width: 140px;"/>
+            </template>
           </el-table-column>
           <el-table-column
-            prop="-"
+            v-if="!display"
+            prop="undeliveredCnt"
             header-align="center"
             align="center"
             label="未出库数量">
           </el-table-column>
           <el-table-column
-            prop="-"
+            v-if="display"
+            prop="batchName"
+            header-align="center"
+            align="center"
+            label="选择零件的批次和数量">
+          </el-table-column>
+          <el-table-column
+            prop="notes"
             header-align="center"
             align="center"
             label="备注">
@@ -85,65 +111,56 @@
       </el-row>
     </el-form>
     <span slot="footer" class="dialog-footer">
-      <el-button @click="visible = false">取消</el-button>
-      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
+      <el-button v-if="!display" @click="visible = false">取消</el-button>
+      <el-button v-if="!display" type="primary" @click="dataFormSubmit()">确定</el-button>
     </span>
   </el-dialog>
 </template>
 
 <script>
-  import UserComponent from '../common/user-component'
-  import DictSelect from '../sys/dict-select'
-  import {getUUID} from '../../../utils'
+  import {getDeliveryDetail, templateOut} from '@/api/warehouse'
   export default {
-    name: 'stock-order-inbound',
-    components: {DictSelect, UserComponent},
+    name: 'template-delivery-detail',
     data () {
       return {
         visible: false,
-        dictType: 'material_type',
+        display: false,
         dataList: [],
-        dataForm: {
-          id: '',
-          amount: 0,
-          applicant: ''
-        },
+        id: 0,
+        dataForm: { },
         dataRule: {
         }
       }
     },
     methods: {
-      init () {
+      async init (id, display) {
         this.visible = true
-        this.dataForm.code = getUUID()
+        this.id = id || 0
+        this.display = display
+        this.dataForm = {}
+        this.dataList = []
+        if (!id) return
+        // 获取详情
+        await getDeliveryDetail(this.id).then(({data}) => {
+          if (data && data.code === '200') {
+            this.dataForm = data.data
+            if (data.data.whTemplateItemPlanList) {
+              data.data.whTemplateItemPlanList.forEach((item) => {
+                this.dataList.push(item)
+              })
+            }
+          }
+        })
       },
       // 表单提交
       dataFormSubmit () {
         this.$refs['dataForm'].validate((valid) => {
           if (valid) {
-            this.$http({
-              url: this.$http.adornUrl(`/biz-service/in-out-bound-ctl/inbound`),
-              method: 'post',
-              data: this.$http.adornData({
-                'amount': this.dataForm.amount,
-                'applicant': this.dataForm.applicant,
-                'approver': this.dataForm.approver,
-                'batchNumber': this.dataForm.batchNumber,
-                'cnt': this.dataForm.cnt,
-                'materialId': this.dataForm.materialId,
-                'materialName': this.dataForm.materialName,
-                'notes': this.dataForm.notes,
-                'price': this.dataForm.price,
-                'orgId': this.dataForm.orgId,
-                'recordType': this.dataForm.recordType,
-                'source': this.dataForm.source,
-                'state': this.dataForm.state,
-                'templateItemPlanId': this.dataForm.templateItemPlanId,
-                'usage': this.dataForm.usage,
-                'userId': this.dataForm.userId,
-                'creatorId': this.$store.state.user.id
-              })
-            }).then(({data}) => {
+            let params = {
+              'recordId': this.id,
+              'whTemplateItemPlanList': this.dataList
+            }
+            templateOut(params).then(({data}) => {
               if (data && data.code === '200') {
                 this.$message({
                   message: '操作成功',
@@ -163,19 +180,6 @@
       },
       validateField (type) {
         this.$refs.dataForm.validateField(type)
-      },
-      userChanged (userId) {
-        this.$http({
-          url: this.$http.adornUrl('/user-service/user/info/' + userId),
-          method: 'get'
-        }).then(({data}) => {
-          if (data && data.code === '200') {
-            this.dataForm.orgId = data.data.orgId
-            this.dataForm.orgName = data.data.orgName
-          } else {
-            this.$message.error(data.msg)
-          }
-        })
       }
     }
   }

+ 60 - 49
src/views/modules/warehouse/template-delivery.vue

@@ -1,9 +1,9 @@
 <!-- 模板出库管理 -->
 <template>
   <div class="stock-order">
-    <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
+    <el-form :inline="true" :model="dataForm" @keyup.enter.native="queryData()">
       <el-form-item label="模板名称">
-        <el-input v-model="dataForm.name" placeholder="模板名称" clearable></el-input>
+        <el-input v-model="dataForm.templateName" placeholder="模板名称" clearable></el-input>
       </el-form-item>
       <el-form-item label="创建时间">
         <el-date-picker
@@ -16,8 +16,8 @@
         </el-date-picker>
       </el-form-item>
       <el-form-item>
-        <el-button @click="getDataList()">查询</el-button>
-        <el-button type="primary" @click="outBound()">模板出库</el-button>
+        <el-button @click="queryData()">查询</el-button>
+        <el-button type="primary" @click="outboundHandle()">模板出库</el-button>
       </el-form-item>
     </el-form>
     <el-table
@@ -33,13 +33,13 @@
         align="center">
       </el-table-column>
       <el-table-column
-        prop="-"
+        prop="recordCode"
         header-align="center"
         align="center"
         label="编码">
       </el-table-column>
       <el-table-column
-        prop="recordType"
+        prop="templateName"
         header-align="center"
         align="center"
         label="模板名称">
@@ -48,22 +48,17 @@
         prop="state"
         header-align="center"
         align="center"
+        :formatter="formatState"
         label="当前状态">
       </el-table-column>
       <el-table-column
-        prop="approver"
-        header-align="center"
-        align="center"
-        label="原因">
-      </el-table-column>
-      <el-table-column
-        prop="-"
+        prop="createTime"
         header-align="center"
         align="center"
         label="创建时间">
       </el-table-column>
       <el-table-column
-        prop="-"
+        prop="notes"
         header-align="center"
         align="center"
         label="备注">
@@ -75,8 +70,8 @@
         width="150"
         label="操作">
         <template slot-scope="scope">
-          <el-button v-if="isAuth('wh:inbound-record-ctl:info')" type="text" size="small" @click="details(scope.row.id)">查看</el-button>
-          <el-button type="text" size="small" @click="exportItem(scope.row.id)">出库</el-button>
+          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.recordId, true)">查看</el-button>
+          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.recordId, false)">出库</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -89,63 +84,66 @@
       :total="totalPage"
       layout="total, sizes, prev, pager, next, jumper">
     </el-pagination>
-    <!--    入库-->
-    <template-delivery-add v-if="inboundVisible" ref="inbound" @refreshDataList="getDataList"></template-delivery-add>
-    <!-- <stock-order-outbound v-if="outboundVisible" ref="outbound" @refreshDataList="getDataList"></stock-order-outbound> -->
+    <!-- 出库组件 -->
+    <template-delivery-detail v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></template-delivery-detail>
+    <!-- 出库申请 -->
+    <template-outbound v-if="outboundVisible" ref="outbound" @refreshDataList="getDataList"></template-outbound>
   </div>
 </template>
 
 <script>
-  import templateDeliveryAdd from './template-delivery-add'
+  import templateDeliveryDetail from './template-delivery-detail'
+  import templateOutbound from './template-outbound'
   import { getTemplateOutList } from '@/api/warehouse'
   export default {
-    name: 'stock-order',
-    components: {templateDeliveryAdd},
+    name: 'template-delivery',
+    components: {templateDeliveryDetail, templateOutbound},
     data () {
       return {
-        inboundVisible: false,
+        addOrUpdateVisible: false,
         outboundVisible: false,
-        dataForm: {
-          name: '',
-          date: ''
-        },
-        recordTypeOptions: [
-          {
-            value: null,
-            label: '请选择'
-          },
-          {
-            value: '0',
-            label: '入库'
-          },
-          {
-            value: '1',
-            label: '出库'
-          }
-        ],
+        dataForm: {},
         dataList: [],
         pageIndex: 1,
         pageSize: 10,
         totalPage: 0,
         dataListLoading: false,
-        dataListSelections: []
+        dataListSelections: [],
+        // 审批状态:0 待提交 1 待审批 2 审批中 3 审批完成 4 审批不通过
+        optionsState: [
+          {
+            code: '0',
+            value: '正在进行中'
+          },
+          {
+            code: '1',
+            value: '完成'
+          }
+        ]
       }
     },
+    created () {
+      this.getDataList()
+    },
     methods: {
+      // 查询
+      queryData () {
+        this.pageIndex = 1
+        this.getDataList()
+      },
       // 获取数据列表
       getDataList () {
         this.dataListLoading = true
         let params = {
           'current': this.pageIndex,
           'size': this.pageSize,
-          'templateName': this.dataForm.name,
-          'beginTime': this.dataForm.date[0],
-          'endTime': this.dataForm.date[1]
+          'templateName': this.dataForm.templateName,
+          'beginTime': this.dataForm.date ? this.dataForm.date[0] : null,
+          'endTime': this.dataForm.date ? this.dataForm.date[1] : null
         }
         getTemplateOutList(params).then(({data}) => {
           if (data && data.code === '200') {
             this.dataList = data.data.records
-            console.log('dataList = ' + JSON.stringify(this.dataList))
             this.totalPage = Number(data.data.total)
           } else {
             this.dataList = []
@@ -170,11 +168,24 @@
         this.dataListSelections = val
       },
       // 模板出库
-      outBound () {
-        this.inboundVisible = true
+      addOrUpdateHandle (id, disable) {
+        this.addOrUpdateVisible = true
         this.$nextTick(() => {
-          this.$refs.inbound.init()
+          this.$refs.addOrUpdate.init(id, disable)
         })
+      },
+      // 模板出库申请
+      outboundHandle () {
+        this.outboundVisible = true
+        this.$nextTick(() => {
+          this.$refs.outbound.init()
+        })
+      },
+      // 转换属性“状态”
+      formatState (row) {
+        if (!row.state) return ''
+        const item1 = this.optionsState.find((item) => item.code === row.state.toString())
+        return item1 ? item1.value : ''
       }
     }
   }

+ 125 - 0
src/views/modules/warehouse/template-outbound.vue

@@ -0,0 +1,125 @@
+<template>
+  <el-dialog
+    title="出库申请"
+    width="50%"
+    :close-on-click-modal="false"
+    :visible.sync="visible">
+    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
+      <el-row class="my-row">
+        <el-col :span="12">
+          <el-form-item label="产品编号:(手动录入)" prop="recordNumber">
+            <el-input v-model="dataForm.recordNumber"  placeholder="请输入产品编号"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="模板" prop="templateId">
+            <el-select
+              v-model="dataForm.templateId"
+              remote
+              filterable
+              :remote-method="remoteTemplate"
+              placeholder="请选择">
+              <el-option
+                v-for="item in optionsTemplate"
+                :key="item.code"
+                :label="item.value"
+                :value="item.code">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row class="my-row">
+        <el-form-item label="备注说明" prop="notes">
+            <el-input v-model="dataForm.notes"  placeholder="备注"></el-input>
+          </el-form-item>
+      </el-row>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="visible = false">取消</el-button>
+      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  import {getTemplateList} from '@/api/warehouse'
+  export default {
+    name: 'template-outbound',
+    data () {
+      return {
+        visible: false,
+        dataForm: { },
+        optionsTemplate: [],
+        dataRule: {
+          recordNumber: [{ required: true, message: '产品编号不能为空', trigger: 'blur' }],
+          templateId: [{ required: true, message: '模板不能为空', trigger: 'change' }]
+        }
+      }
+    },
+    methods: {
+      init () {
+        this.visible = true
+        this.dataForm = {}
+      },
+      // 表单提交
+      dataFormSubmit () {
+        this.$refs['dataForm'].validate((valid) => {
+          if (valid) {
+            this.$http({
+              url: this.$http.adornUrl(`/biz-service/template-outbound-ctl/templateOutbound`),
+              method: 'post',
+              data: this.$http.adornData({
+                'templateId': this.dataForm.templateId,
+                'recordNumber': this.dataForm.recordNumber,
+                'notes': this.dataForm.notes
+              })
+            }).then(({data}) => {
+              if (data && data.code === '200') {
+                this.$message({
+                  message: '操作成功',
+                  type: 'success',
+                  duration: 1500,
+                  onClose: () => {
+                    this.visible = false
+                    this.$emit('refreshDataList')
+                  }
+                })
+              } else {
+                this.$message.error(data.msg)
+              }
+            })
+          }
+        })
+      },
+      validateField (type) {
+        this.$refs.dataForm.validateField(type)
+      },
+      // 远程方法:获取模板
+      async remoteTemplate (query) {
+        if (!query) return
+        const params = {
+          templateName: query.trimStart()
+        }
+        await getTemplateList(params).then(({data}) => {
+          if (data && data.code === '200') {
+            this.optionsTemplate = []
+            data.data.records.forEach((item) => {
+              this.optionsTemplate.push({
+                code: item.templateId,
+                value: item.templateName
+              })
+            })
+          }
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped>
+.my-line{
+  border-bottom: 1px solid #c0c4cc;
+  margin-bottom: 10px;
+}
+</style>