|
@@ -1,33 +1,38 @@
|
|
|
<template>
|
|
|
<el-dialog
|
|
|
- :title="!id ? '新增': display ? '查看' : '开始盘点'"
|
|
|
+ title="查看"
|
|
|
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="8">
|
|
|
- <el-form-item label="盘点编码" prop="inventoryCode">
|
|
|
- <el-input v-model="dataForm.inventoryCode" :disabled="true"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8" style="padding-left: 20px">
|
|
|
- <el-form-item label="盘点员" prop="checkerName">
|
|
|
- <el-input v-model="dataForm.checkerName" :disabled="true"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8" style="padding-left: 20px">
|
|
|
- <el-form-item label="复核员" prop="dcheckerName">
|
|
|
- <el-input v-model="dataForm.dcheckerName" :disabled="true"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row class="my-row">
|
|
|
- <el-form-item label="备注说明">
|
|
|
- <el-input v-model="dataForm.notes" :disabled="true"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
+ <div style="margin-left: 20px;margin-right: 20px">
|
|
|
+ <!-- 工作流 -->
|
|
|
+ <div v-show="dataForm.workFlowBusinessExt">
|
|
|
+ <el-steps :active="dataForm.workFlowBusinessExt?dataForm.workFlowBusinessExt.workFlowProcessStepList.length + 2:0" align-center style="margin-bottom: 20px">
|
|
|
+ <template v-for="(item, i) in stepList">
|
|
|
+ <el-step :icon="item.icon" :title="item.title" :description="item.description"></el-step>
|
|
|
+ </template>
|
|
|
+ </el-steps>
|
|
|
+ <el-collapse style="margin-bottom: 20px">
|
|
|
+ <el-collapse-item>
|
|
|
+ <template slot="title">
|
|
|
+ <span style="color: red">审批日志(展开查看更多):</span>
|
|
|
+ </template>
|
|
|
+ <template v-for="(item, i) in logList">
|
|
|
+ <div>{{++i}}:{{item.approverName}} {{item.createTime}} {{item.approvalValue}}</div>
|
|
|
+ </template>
|
|
|
+ </el-collapse-item>
|
|
|
+ </el-collapse>
|
|
|
+ </div>
|
|
|
+ <div v-show="isFlow">
|
|
|
+ <approve-component ref="approve" @approveFinished="approveFinished"/>
|
|
|
+ </div>
|
|
|
+ <e-desc title="基本信息" column="3">
|
|
|
+ <e-desc-item label="盘点编码">{{dataForm.inventoryCode}}</e-desc-item>
|
|
|
+ <e-desc-item label="盘点员">{{dataForm.checkerName}}</e-desc-item>
|
|
|
+ <e-desc-item label="复核员">{{dataForm.dcheckerName}}</e-desc-item>
|
|
|
+ <e-desc-item label="备注说明" span="3">{{dataForm.notes}}</e-desc-item>
|
|
|
+ </e-desc>
|
|
|
+ <el-row style="margin-top: 20px">
|
|
|
<el-form :inline="true" :model="dataForm1" @keyup.enter.native="queryData()">
|
|
|
<el-form-item label="仓库名称" prop="warehouseId">
|
|
|
<el-select
|
|
@@ -63,122 +68,119 @@
|
|
|
<el-button @click="queryData()">查询</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
+ <el-table
|
|
|
+ :data="dataList"
|
|
|
+ border
|
|
|
+ v-loading="dataListLoading"
|
|
|
+ @selection-change="selectionChangeHandle"
|
|
|
+ style="width: 100%;">
|
|
|
+ <el-table-column
|
|
|
+ label="序号"
|
|
|
+ type="index"
|
|
|
+ width="50"
|
|
|
+ align="center">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="warehouseName"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ label="仓库名称">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="materialName"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160"
|
|
|
+ label="物品名称">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="specifications"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160"
|
|
|
+ label="规格">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="unitName"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ label="单位">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="cnt"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ label="仓库库存数量">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="inventoryCnt"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ label="数量">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="inventoryState"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :formatter="formatState"
|
|
|
+ label="盘库状态">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="materialState"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :formatter="formatMs"
|
|
|
+ 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-row>
|
|
|
- <el-table
|
|
|
- :data="dataList"
|
|
|
- border
|
|
|
- v-loading="dataListLoading"
|
|
|
- @selection-change="selectionChangeHandle"
|
|
|
- style="width: 100%;">
|
|
|
- <el-table-column
|
|
|
- label="序号"
|
|
|
- type="index"
|
|
|
- width="50"
|
|
|
- align="center">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="warehouseName"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- label="仓库名称">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="materialName"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- min-width="160"
|
|
|
- label="物品名称">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="specifications"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- min-width="160"
|
|
|
- label="规格">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="unitName"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- label="单位">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="cnt"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- label="仓库库存数量">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="inventoryCnt"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- min-width="160"
|
|
|
- label="请选择数量">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input-number v-model="scope.row.inventoryCnt" :disabled="display" :step="1" :min="1" style="width: 140px;"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="inventoryState"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- :formatter="formatState"
|
|
|
- label="盘库状态">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="materialState"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- :formatter="formatMs"
|
|
|
- label="物品状态">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- fixed="right"
|
|
|
- header-align="center"
|
|
|
- align="center"
|
|
|
- width="150"
|
|
|
- label="操作"
|
|
|
- v-if="!display">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button v-if="isAuth('wh:inventory:complete')" type="text" size="small" @click="finish(scope.row)">完成</el-button>
|
|
|
- <el-button v-if="isAuth('wh:inventory:start')" type="text" size="small" @click="begin(scope.row)">开始盘点</el-button>
|
|
|
- </template>
|
|
|
- </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-form>
|
|
|
+ </div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="visible = false">返回</el-button>
|
|
|
+ </span>
|
|
|
</el-dialog>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import {getInventoryDetail, getWarehouseList, getShelveList, beginInventory, finishInventory} from '@/api/warehouse'
|
|
|
+ import EDesc from '../common/e-desc'
|
|
|
+ import EDescItem from '../common/e-desc-item'
|
|
|
+ import uploadComponent from '../common/upload-component'
|
|
|
+ import { dealStepData, dealStepLogs } from '@/api/util'
|
|
|
+ import ApproveComponent from '../common/approve-component'
|
|
|
+ import {getInventoryDetail, getWarehouseList, getShelveList} from '@/api/warehouse'
|
|
|
export default {
|
|
|
name: 'inventory-detail',
|
|
|
+ components: {
|
|
|
+ EDesc, EDescItem, uploadComponent, ApproveComponent
|
|
|
+ },
|
|
|
data () {
|
|
|
return {
|
|
|
visible: false,
|
|
|
- display: false,
|
|
|
+ isFlow: false,
|
|
|
+ id: 0,
|
|
|
+ dataForm: {},
|
|
|
+ dataForm1: {},
|
|
|
dataList: [],
|
|
|
optionsWh: [],
|
|
|
optionsShelve: [],
|
|
|
- id: 0,
|
|
|
+ fileList: [],
|
|
|
+ fileList1: [],
|
|
|
+ stepList: [],
|
|
|
+ logList: [],
|
|
|
pageIndex: 1,
|
|
|
pageSize: 10,
|
|
|
totalPage: 0,
|
|
|
dataListLoading: false,
|
|
|
dataListSelections: [],
|
|
|
- dataForm: {},
|
|
|
- dataForm1: {},
|
|
|
- dataRule: {
|
|
|
- },
|
|
|
optionsMs: [
|
|
|
{
|
|
|
code: '0',
|
|
@@ -206,12 +208,17 @@
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
- init (id, display) {
|
|
|
+ async init (id, businessType) {
|
|
|
this.visible = true
|
|
|
+ this.isFlow = !!(businessType && businessType !== '')
|
|
|
this.id = id || 0
|
|
|
- this.display = display
|
|
|
this.dataForm = {}
|
|
|
+ this.fileList = []
|
|
|
+ this.fileList1 = []
|
|
|
+ this.stepList = []
|
|
|
+ this.logList = []
|
|
|
this.dataForm1 = {}
|
|
|
+ this.getDetails(businessType)
|
|
|
// 获取详情
|
|
|
this.queryData()
|
|
|
},
|
|
@@ -263,53 +270,6 @@
|
|
|
selectionChangeHandle (val) {
|
|
|
this.dataListSelections = val
|
|
|
},
|
|
|
- // 表单提交
|
|
|
- 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}) => {
|
|
|
- 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 remoteWarehouse (query) {
|
|
|
let warehouseName = query || null
|
|
@@ -342,36 +302,39 @@
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- // 完成盘点
|
|
|
- async finish (row) {
|
|
|
- let params = {
|
|
|
- 'recordId': this.id,
|
|
|
- 'cnt': row.inventoryCnt,
|
|
|
- 'materialId': row.materialId,
|
|
|
- 'inventoryState': row.inventoryState
|
|
|
- }
|
|
|
- await finishInventory(params).then(({data}) => {
|
|
|
+ getDetails (businessType) {
|
|
|
+ getInventoryDetail(this.id).then(({data}) => {
|
|
|
if (data && data.code === '200') {
|
|
|
- this.$message.success('成功')
|
|
|
+ this.dataList = data.data.records
|
|
|
+ this.totalPage = Number(data.data.total)
|
|
|
+ if (this.dataList.length > 0) {
|
|
|
+ let item = this.dataList[0]
|
|
|
+ this.dataForm.inventoryCode = item.inventoryCode
|
|
|
+ this.dataForm.checkerName = item.checkerName
|
|
|
+ this.dataForm.dcheckerName = item.dcheckerName
|
|
|
+ this.dataForm.notes = item.notes
|
|
|
+ }
|
|
|
+ // 流程图展示
|
|
|
+ if (data.data.workFlowBusinessExt) {
|
|
|
+ dealStepData(data.data.workFlowBusinessExt.workFlowProcessStepList, this.stepList)
|
|
|
+ dealStepLogs(data.data.workFlowBusinessExt.processLogList, this.logList)
|
|
|
+ }
|
|
|
+ // 初始化审批Form
|
|
|
+ this.showApproveForm(businessType, this.id)
|
|
|
} else {
|
|
|
- this.$message.error(data.msg)
|
|
|
+ this.dataList = []
|
|
|
+ this.totalPage = 0
|
|
|
}
|
|
|
+ this.dataListLoading = false
|
|
|
})
|
|
|
},
|
|
|
- // 开始盘点
|
|
|
- async begin (row) {
|
|
|
- let params = {
|
|
|
- 'materialId': row.materialId,
|
|
|
- 'recordId': this.id
|
|
|
+ // 初始化审批Form
|
|
|
+ showApproveForm (businessType, businessId) {
|
|
|
+ if (this.isFlow) {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.approve.init(businessType, businessId)
|
|
|
+ })
|
|
|
}
|
|
|
- await beginInventory(params).then(({data}) => {
|
|
|
- if (data && data.code === '200') {
|
|
|
- this.getDataList()
|
|
|
- this.$message.success('成功')
|
|
|
- } else {
|
|
|
- this.$message.error(data.msg)
|
|
|
- }
|
|
|
- })
|
|
|
},
|
|
|
// 物品状态转换
|
|
|
formatMs (row) {
|
|
@@ -388,6 +351,11 @@
|
|
|
return this.optionsState[i].value
|
|
|
}
|
|
|
}
|
|
|
+ },
|
|
|
+ // 审批完成
|
|
|
+ approveFinished () {
|
|
|
+ this.visible = false
|
|
|
+ this.$emit('approveFinished')
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -398,4 +366,7 @@
|
|
|
border-bottom: 1px solid #c0c4cc;
|
|
|
margin-bottom: 10px;
|
|
|
}
|
|
|
+.title{
|
|
|
+ padding: 10px 0 ;
|
|
|
+}
|
|
|
</style>
|