Browse Source

备品备件智能柜

ecss-tx
han\hanst 2 weeks ago
parent
commit
78870b52b6
  1. 2
      src/api/partspare/partSpareLocation.js
  2. 10
      src/api/partspare/smartCabinet.js
  3. 132
      src/views/modules/partspare/partSpareLocation.vue
  4. 86
      src/views/modules/partspare/repairtransdetail.vue
  5. 143
      src/views/modules/partspare/smartCabinetSyncLog.vue
  6. 99
      src/views/modules/partspare/spareBorrowRecord.vue
  7. 188
      src/views/modules/partspare/spareStocktake.vue
  8. 6
      src/views/modules/reportWorkOrder/reportDefectOrder.vue
  9. 6
      src/views/modules/reportWorkOrder/reportDefectOrder2.vue
  10. 6
      src/views/modules/reportWorkOrder/reportMaintenanceOrder.vue

2
src/api/partspare/partSpareLocation.js

@ -14,6 +14,8 @@ export const updatePartSpareLocation = data => createAPI(`/pms/partSpareLocation
// 删除货位 // 删除货位
export const deletePartSpareLocation = data => createAPI(`/pms/partSpareLocation/deletePartSpareLocation`, 'post', data) export const deletePartSpareLocation = data => createAPI(`/pms/partSpareLocation/deletePartSpareLocation`, 'post', data)
export const createSmartCabinet = data => createAPI(`/pms/partSpareLocation/createSmartCabinet`, 'post', data)
// 打印 // 打印
export function partSpareLocationTemp (dataList) { export function partSpareLocationTemp (dataList) {
const LODOP = getLodop() const LODOP = getLodop()

10
src/api/partspare/smartCabinet.js

@ -0,0 +1,10 @@
import { createAPI } from '@/utils/httpRequest.js'
export const searchStocktakeList = data => createAPI('/pms/smartcabinet/stocktake/list', 'POST', data)
export const getStocktakeInfo = data => createAPI('/pms/smartcabinet/stocktake/info', 'POST', data)
export const confirmStocktake = data => createAPI('/pms/smartcabinet/stocktake/confirm', 'POST', data)
export const cancelStocktake = data => createAPI('/pms/smartcabinet/stocktake/cancel', 'POST', data)
export const searchBorrowList = data => createAPI('/pms/smartcabinet/borrow/list', 'POST', data)
export const searchSyncLogList = data => createAPI('/pms/smartcabinet/syncLog/list', 'POST', data)
export const retrySyncLog = data => createAPI('/pms/smartcabinet/syncLog/retry', 'POST', data)
export const pickCreate = data => createAPI('/pms/smartcabinet/pick/create', 'POST', data)

132
src/views/modules/partspare/partSpareLocation.vue

@ -37,6 +37,7 @@
<el-form-item label=" "> <el-form-item label=" ">
<el-button type="primary" @click="getDataList()">查询</el-button> <el-button type="primary" @click="getDataList()">查询</el-button>
<el-button type="primary" @click="addModal()">新增</el-button> <el-button type="primary" @click="addModal()">新增</el-button>
<el-button type="primary" @click="openSmartCabinetModal()">新增智能柜</el-button>
<el-button type="primary" :disabled="this.dataListSelections.length === 0" @click="printList()">打印</el-button> <el-button type="primary" :disabled="this.dataListSelections.length === 0" @click="printList()">打印</el-button>
<download-excel <download-excel
:fields="fields()" :fields="fields()"
@ -159,7 +160,49 @@
</el-footer> </el-footer>
</el-dialog> </el-dialog>
<!--列表的组件-->
<!-- 新增智能柜只填编码名称和行列数后端生成仓库和全部货位 -->
<el-dialog title="新增智能柜" :close-on-click-modal="false" v-drag :visible.sync="smartCabinetFlag" width="495px">
<el-form :inline="true" label-position="top" :model="smartCabinetData" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="BU">
<el-select v-model="smartCabinetData.bu" placeholder="请选择" style="width: 221px">
<el-option
v-for="i in userBuList"
:key="i.buNo"
:label="i.sitename"
:value="i.buNo">
<span style="float: left;width: 100px">{{ i.sitename }}</span>
<span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
{{ i.buDesc }}
</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="智能柜编码">
<el-input v-model="smartCabinetData.cabinetCode" maxlength="20" style="width: 221px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="smartCabinetData" style="margin-left: 7px">
<el-form-item label="智能柜名称">
<el-input v-model="smartCabinetData.description" style="width: 454px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="smartCabinetData" style="margin-left: 7px">
<el-form-item label="横向库位数">
<el-input v-model="smartCabinetData.horizontal" :min="1" :max="50" :controls="true" style="width: 221px"></el-input>
</el-form-item>
<el-form-item label="纵向库位数">
<el-input v-model="smartCabinetData.vertical" :min="1" :max="50" :controls="true" style="width: 221px"></el-input>
</el-form-item>
</el-form>
<div style="margin: 0 7px 10px;color: #909399;font-size: 12px;">
将生成仓库备品备件仓 {{ smartCabinetTotal }} 个货位编码为
{{ smartCabinetPreview }}
</div>
<el-footer style="height:40px;margin-top: 10px;text-align:center">
<el-button type="primary" @click="saveSmartCabinet()">生成</el-button>
<el-button type="primary" @click="smartCabinetFlag = false">关闭</el-button>
</el-footer>
</el-dialog>
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
</div> </div>
@ -171,6 +214,7 @@ import {
savePartSpareLocation, // savePartSpareLocation, //
updatePartSpareLocation, // updatePartSpareLocation, //
deletePartSpareLocation, // deletePartSpareLocation, //
createSmartCabinet,
partSpareLocationTemp, // partSpareLocationTemp, //
} from '@/api/partspare/partSpareLocation.js' } from '@/api/partspare/partSpareLocation.js'
import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js" import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
@ -465,6 +509,33 @@ export default {
modalFlag: false, modalFlag: false,
modalDisableFlag: false, modalDisableFlag: false,
dataListLoading: false, dataListLoading: false,
smartCabinetFlag: false,
smartCabinetData: {
bu: '',
cabinetCode: '',
description: '',
horizontal: 1,
vertical: 1
},
}
},
computed: {
smartCabinetTotal () {
const horizontal = Number(this.smartCabinetData.horizontal) || 0
const vertical = Number(this.smartCabinetData.vertical) || 0
return horizontal > 0 && vertical > 0 ? horizontal * vertical : 0
},
smartCabinetPreview () {
const code = (this.smartCabinetData.cabinetCode || '编码').trim() || '编码'
const total = this.smartCabinetTotal
if (total <= 0) {
return code + '-1'
}
if (total === 1) {
return code + '-1'
}
return code + '-1 至 ' + code + '-' + total
} }
}, },
@ -570,6 +641,65 @@ export default {
this.modalFlag = true this.modalFlag = true
}, },
openSmartCabinetModal () {
this.smartCabinetData = {
bu: this.userBuList.length > 0 ? this.userBuList[0].buNo : '',
cabinetCode: '',
description: '',
horizontal: 1,
vertical: 1
}
this.smartCabinetFlag = true
},
saveSmartCabinet () {
if (this.smartCabinetData.bu === '' || this.smartCabinetData.bu == null) {
this.$message.warning('请选择BU!')
return
}
if (!this.smartCabinetData.cabinetCode || !this.smartCabinetData.cabinetCode.trim()) {
this.$message.warning('请输入智能柜编码!')
return
}
if (!this.smartCabinetData.description || !this.smartCabinetData.description.trim()) {
this.$message.warning('请输入智能柜名称!')
return
}
if (!this.smartCabinetData.horizontal || this.smartCabinetData.horizontal < 1) {
this.$message.warning('请输入横向库位数!')
return
}
if (!this.smartCabinetData.vertical || this.smartCabinetData.vertical < 1) {
this.$message.warning('请输入纵向库位数!')
return
}
const payload = {
bu: this.smartCabinetData.bu,
cabinetCode: this.smartCabinetData.cabinetCode.trim(),
description: this.smartCabinetData.description.trim(),
horizontal: this.smartCabinetData.horizontal,
vertical: this.smartCabinetData.vertical,
createBy: this.$store.state.user.name
}
createSmartCabinet(payload).then(({ data }) => {
if (data && data.code === 0) {
this.smartCabinetFlag = false
this.getWareHouseList()
this.getDataList()
this.$message({
message: data.msg || '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
},
// //
updateModal (row) { updateModal (row) {
this.modalData = { this.modalData = {

86
src/views/modules/partspare/repairtransdetail.vue

@ -26,6 +26,15 @@
<el-option value="+" label="入库"></el-option> <el-option value="+" label="入库"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="单据状态">
<el-select v-model="queryForm.status" clearable style="width: 110px">
<el-option value="已录入" label="已录入"></el-option>
<el-option value="待入库" label="待入库"></el-option>
<el-option value="已入库" label="已入库"></el-option>
<el-option value="待出库" label="待出库"></el-option>
<el-option value="已出库" label="已出库"></el-option>
</el-select>
</el-form-item>
<el-form-item label="货位编码"> <el-form-item label="货位编码">
<el-input v-model="queryForm.locationId" clearable style="width: 100px"></el-input> <el-input v-model="queryForm.locationId" clearable style="width: 100px"></el-input>
</el-form-item> </el-form-item>
@ -154,6 +163,7 @@ export default {
site: '', site: '',
buDesc: '', buDesc: '',
direction: '', direction: '',
status: '',
partNo: '', partNo: '',
partDescription: '', partDescription: '',
batchNo: '', batchNo: '',
@ -302,6 +312,40 @@ export default {
status: true, status: true,
fixed: '', fixed: '',
columnWidth: 140, columnWidth: 140,
}, {
userId: this.$store.state.user.name,
functionId:200101104,
serialNumber: '200101104TableStatus',
tableId: "200101104Table",
tableName: "出入库明细表",
columnProp: 'status',
headerAlign: "center",
align: "left",
columnLabel: '单据状态',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 90,
}, {
userId: this.$store.state.user.name,
functionId:200101104,
serialNumber: '200101104TableCabinetBillNo',
tableId: "200101104Table",
tableName: "出入库明细表",
columnProp: 'cabinetBillNo',
headerAlign: "center",
align: "left",
columnLabel: '柜侧单号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, { }, {
userId: this.$store.state.user.name, userId: this.$store.state.user.name,
functionId:200101104, functionId:200101104,
@ -687,6 +731,27 @@ export default {
case 1: case 1:
// //
const hasRemark3 = data.rows.some(item => item.columnProp === 'remark3') const hasRemark3 = data.rows.some(item => item.columnProp === 'remark3')
const hasStatus = data.rows.some(item => item.columnProp === 'status')
if (!hasStatus) {
data.rows.push({
userId: this.$store.state.user.name,
functionId: 200101104,
serialNumber: '200101104TableStatus',
tableId: "200101104Table",
tableName: "出入库明细表",
columnProp: 'status',
headerAlign: "center",
align: "left",
columnLabel: '单据状态',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 90
})
}
if (!hasRemark3) { if (!hasRemark3) {
// //
const remarkIndex = data.rows.findIndex(item => item.columnProp === 'remark') const remarkIndex = data.rows.findIndex(item => item.columnProp === 'remark')
@ -735,6 +800,27 @@ export default {
case 1: case 1:
// //
const hasRemark3 = data.rows.some(item => item.columnProp === 'remark3') const hasRemark3 = data.rows.some(item => item.columnProp === 'remark3')
const hasStatus = data.rows.some(item => item.columnProp === 'status')
if (!hasStatus) {
data.rows.push({
userId: this.$store.state.user.name,
functionId: 200101104,
serialNumber: '200101104TableStatus',
tableId: "200101104Table",
tableName: "出入库明细表",
columnProp: 'status',
headerAlign: "center",
align: "left",
columnLabel: '单据状态',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 90
})
}
if (!hasRemark3) { if (!hasRemark3) {
// //
const remarkIndex = data.rows.findIndex(item => item.columnProp === 'remark') const remarkIndex = data.rows.findIndex(item => item.columnProp === 'remark')

143
src/views/modules/partspare/smartCabinetSyncLog.vue

@ -0,0 +1,143 @@
<template>
<div class="mod-config">
<el-form :inline="true" label-position="top" :model="queryForm">
<el-form-item label="方向">
<el-select v-model="queryForm.direction" clearable style="width: 120px">
<el-option value="INBOX" label="收件箱"></el-option>
<el-option value="OUTBOX" label="发件箱"></el-option>
</el-select>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="queryForm.processStatus" clearable style="width: 120px">
<el-option value="NEW" label="NEW"></el-option>
<el-option value="PROCESSING" label="PROCESSING"></el-option>
<el-option value="SUCCESS" label="SUCCESS"></el-option>
<el-option value="RETRY" label="RETRY"></el-option>
<el-option value="DEAD" label="DEAD"></el-option>
<el-option value="REJECT" label="REJECT"></el-option>
</el-select>
</el-form-item>
<el-form-item label="业务类型">
<el-input v-model="queryForm.bizType" clearable style="width: 160px"></el-input>
</el-form-item>
<el-form-item label="MES单号">
<el-input v-model="queryForm.mesTransNo" clearable style="width: 140px"></el-input>
</el-form-item>
<el-form-item label="柜侧单号">
<el-input v-model="queryForm.cabinetBillNo" clearable style="width: 140px"></el-input>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="getDataList()">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="dataList" border v-loading="dataListLoading" style="width: 100%;">
<el-table-column type="expand">
<template slot-scope="scope">
<el-table :data="scope.row.attempts || []" border size="mini">
<el-table-column prop="attemptNo" label="次数" width="70"></el-table-column>
<el-table-column prop="direction" label="方向" width="90"></el-table-column>
<el-table-column prop="httpStatus" label="HTTP" width="80"></el-table-column>
<el-table-column prop="attemptStatus" label="结果" width="90"></el-table-column>
<el-table-column prop="costMs" label="耗时ms" width="80"></el-table-column>
<el-table-column prop="startTime" label="开始" min-width="150"></el-table-column>
<el-table-column prop="endTime" label="结束" min-width="150"></el-table-column>
<el-table-column prop="errorMsg" label="错误" min-width="160" show-overflow-tooltip></el-table-column>
<el-table-column prop="reqBody" label="请求原文" min-width="220" show-overflow-tooltip></el-table-column>
<el-table-column prop="respBody" label="响应原文" min-width="220" show-overflow-tooltip></el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column prop="id" label="ID" width="80"></el-table-column>
<el-table-column prop="direction" label="方向" width="90"></el-table-column>
<el-table-column prop="bizType" label="业务类型" min-width="140"></el-table-column>
<el-table-column prop="processStatus" label="状态" width="110"></el-table-column>
<el-table-column prop="mesTransNo" label="MES单号" min-width="140"></el-table-column>
<el-table-column prop="cabinetBillNo" label="柜侧单号" min-width="140"></el-table-column>
<el-table-column prop="retryCount" label="重试" width="70"></el-table-column>
<el-table-column prop="lastError" label="最近错误" min-width="180" show-overflow-tooltip></el-table-column>
<el-table-column prop="createDate" label="创建时间" min-width="160"></el-table-column>
<el-table-column label="操作" width="90" fixed="right">
<template slot-scope="scope">
<el-button
v-if="scope.row.processStatus === 'RETRY' || scope.row.processStatus === 'DEAD'"
type="text"
@click="retryRow(scope.row)">重试</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 100]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</template>
<script>
import { searchSyncLogList, retrySyncLog } from '@/api/partspare/smartCabinet.js'
export default {
data () {
return {
queryForm: {
direction: '',
processStatus: '',
bizType: '',
mesTransNo: '',
cabinetBillNo: '',
page: 1,
limit: 20
},
dataList: [],
dataListLoading: false,
pageIndex: 1,
pageSize: 20,
totalPage: 0
}
},
created () {
this.getDataList()
},
methods: {
getDataList () {
this.dataListLoading = true
this.queryForm.page = this.pageIndex
this.queryForm.limit = this.pageSize
searchSyncLogList(this.queryForm).then(({ data }) => {
if (data && data.code === 0) {
this.dataList = data.page.list
this.totalPage = data.page.totalCount
} else {
this.$message.error(data.msg || '查询失败')
}
this.dataListLoading = false
}).catch(() => {
this.dataListLoading = false
})
},
retryRow (row) {
retrySyncLog({ id: row.id }).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('已触发重试')
this.getDataList()
} else {
this.$message.error(data.msg || '重试失败')
}
})
},
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
}
}
}
</script>

99
src/views/modules/partspare/spareBorrowRecord.vue

@ -0,0 +1,99 @@
<template>
<div class="mod-config">
<el-form :inline="true" label-position="top" :model="queryForm">
<el-form-item label="类型">
<el-select v-model="queryForm.actionType" clearable style="width: 120px">
<el-option value="BORROW" label="借用"></el-option>
<el-option value="RETURN" label="归还"></el-option>
</el-select>
</el-form-item>
<el-form-item label="备件编码">
<el-input v-model="queryForm.partNo" clearable style="width: 140px"></el-input>
</el-form-item>
<el-form-item label="柜侧单号">
<el-input v-model="queryForm.cabinetBillNo" clearable style="width: 160px"></el-input>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="getDataList()">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="dataList" border v-loading="dataListLoading" style="width: 100%;">
<el-table-column prop="recordNo" label="流水号" min-width="160"></el-table-column>
<el-table-column prop="actionType" label="类型" min-width="80">
<template slot-scope="scope">
{{ scope.row.actionType === 'BORROW' ? '借用' : '归还' }}
</template>
</el-table-column>
<el-table-column prop="partNo" label="备件编码" min-width="120"></el-table-column>
<el-table-column prop="partDescription" label="名称" min-width="140"></el-table-column>
<el-table-column prop="batchNo" label="批次" min-width="100"></el-table-column>
<el-table-column prop="qty" label="数量" min-width="80"></el-table-column>
<el-table-column prop="operatorName" label="操作人" min-width="100"></el-table-column>
<el-table-column prop="relatedRecordNo" label="关联借用号" min-width="160"></el-table-column>
<el-table-column prop="cabinetBillNo" label="柜侧单号" min-width="140"></el-table-column>
<el-table-column prop="operateTime" label="操作时间" min-width="160"></el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 100]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</template>
<script>
import { searchBorrowList } from '@/api/partspare/smartCabinet.js'
export default {
data () {
return {
queryForm: {
actionType: '',
partNo: '',
cabinetBillNo: '',
page: 1,
limit: 20
},
dataList: [],
dataListLoading: false,
pageIndex: 1,
pageSize: 20,
totalPage: 0
}
},
created () {
this.getDataList()
},
methods: {
getDataList () {
this.dataListLoading = true
this.queryForm.page = this.pageIndex
this.queryForm.limit = this.pageSize
searchBorrowList(this.queryForm).then(({ data }) => {
if (data && data.code === 0) {
this.dataList = data.page.list
this.totalPage = data.page.totalCount
} else {
this.$message.error(data.msg || '查询失败')
}
this.dataListLoading = false
}).catch(() => {
this.dataListLoading = false
})
},
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
}
}
}
</script>

188
src/views/modules/partspare/spareStocktake.vue

@ -0,0 +1,188 @@
<template>
<div class="mod-config">
<el-form :inline="true" label-position="top" :model="queryForm">
<el-form-item label="盘点单号">
<el-input v-model="queryForm.stocktakeNo" clearable style="width: 160px"></el-input>
</el-form-item>
<el-form-item label="柜侧单号">
<el-input v-model="queryForm.cabinetBillNo" clearable style="width: 160px"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="queryForm.status" clearable style="width: 120px">
<el-option value="待确认" label="待确认"></el-option>
<el-option value="已确认" label="已确认"></el-option>
<el-option value="已作废" label="已作废"></el-option>
</el-select>
</el-form-item>
<el-form-item label="仓库">
<el-select v-model="queryForm.warehouseId" clearable style="width: 150px">
<el-option
v-for="item in wareHouseList"
:key="item.warehouseId"
:value="item.warehouseId"
:label="item.warehouseName">
</el-option>
</el-select>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="getDataList()">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="dataList" border v-loading="dataListLoading" style="width: 100%;">
<el-table-column prop="stocktakeNo" label="盘点单号" min-width="160"></el-table-column>
<el-table-column prop="cabinetBillNo" label="柜侧单号" min-width="140"></el-table-column>
<el-table-column prop="buDesc" label="BU" min-width="80"></el-table-column>
<el-table-column prop="warehouseId" label="仓库" min-width="100"></el-table-column>
<el-table-column prop="status" label="状态" min-width="90"></el-table-column>
<el-table-column prop="createDate" label="创建时间" min-width="160"></el-table-column>
<el-table-column prop="confirmBy" label="确认人" min-width="100"></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="showInfo(scope.row)">明细</el-button>
<el-button v-if="scope.row.status === '待确认'" type="text" @click="confirmRow(scope.row)">确认</el-button>
<el-button v-if="scope.row.status === '待确认'" type="text" @click="cancelRow(scope.row)">作废</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 100]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<el-dialog title="盘点差异明细" :visible.sync="infoVisible" width="80%">
<div style="margin-bottom: 10px;">差异合计{{ diffSum }}</div>
<el-table :data="detailList" border>
<el-table-column prop="partNo" label="备件编码"></el-table-column>
<el-table-column prop="partDescription" label="名称"></el-table-column>
<el-table-column prop="batchNo" label="批次"></el-table-column>
<el-table-column prop="mesQty" label="MES数量"></el-table-column>
<el-table-column prop="cabinetQty" label="柜数量"></el-table-column>
<el-table-column prop="diffQty" label="差异"></el-table-column>
<el-table-column prop="adjustTransNo" label="调整单号"></el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
import { searchStocktakeList, getStocktakeInfo, confirmStocktake, cancelStocktake } from '@/api/partspare/smartCabinet.js'
import { getWareHouseList } from '@/api/partspare/wareHouseEntity.js'
export default {
data () {
return {
queryForm: {
stocktakeNo: '',
cabinetBillNo: '',
status: '',
warehouseId: '',
page: 1,
limit: 20
},
wareHouseList: [],
dataList: [],
dataListLoading: false,
pageIndex: 1,
pageSize: 20,
totalPage: 0,
infoVisible: false,
detailList: [],
diffSum: 0,
currentStocktakeNo: ''
}
},
created () {
this.getWareHouseList()
this.getDataList()
},
methods: {
getWareHouseList () {
getWareHouseList({
username: this.$store.state.user.name,
warehousetype: '备品备件仓'
}).then(({ data }) => {
if (data && data.code === 0) {
this.wareHouseList = data.data
}
})
},
getDataList () {
this.dataListLoading = true
this.queryForm.page = this.pageIndex
this.queryForm.limit = this.pageSize
searchStocktakeList(this.queryForm).then(({ data }) => {
if (data && data.code === 0) {
this.dataList = data.page.list
this.totalPage = data.page.totalCount
} else {
this.$message.error(data.msg || '查询失败')
}
this.dataListLoading = false
}).catch(() => {
this.dataListLoading = false
})
},
showInfo (row) {
this.currentStocktakeNo = row.stocktakeNo
getStocktakeInfo({ stocktakeNo: row.stocktakeNo }).then(({ data }) => {
if (data && data.code === 0) {
this.detailList = data.data.details || []
this.diffSum = this.detailList.reduce((sum, item) => sum + Number(item.diffQty || 0), 0)
this.infoVisible = true
} else {
this.$message.error(data.msg || '查询明细失败')
}
})
},
confirmRow (row) {
getStocktakeInfo({ stocktakeNo: row.stocktakeNo }).then(({ data }) => {
if (!(data && data.code === 0)) {
this.$message.error(data.msg || '查询明细失败')
return
}
const details = data.data.details || []
const diffSum = details.reduce((sum, item) => sum + Number(item.diffQty || 0), 0)
this.$confirm('确认后将按差异调整库存并生成PDTZ,差异合计:' + diffSum + ',是否继续?', '确认盘点', {
type: 'warning'
}).then(() => {
confirmStocktake({ stocktakeNo: row.stocktakeNo }).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('确认成功')
this.getDataList()
} else {
this.$message.error(data.msg || '确认失败')
}
})
}).catch(() => {})
})
},
cancelRow (row) {
this.$confirm('作废后不调整库存,确认作废该盘点单?', '作废', { type: 'warning' }).then(() => {
cancelStocktake({ stocktakeNo: row.stocktakeNo }).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('已作废')
this.getDataList()
} else {
this.$message.error(data.msg || '作废失败')
}
})
}).catch(() => {})
},
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
}
}
}
</script>

6
src/views/modules/reportWorkOrder/reportDefectOrder.vue

@ -728,12 +728,12 @@
getFeedBackImages, // getFeedBackImages, //
deleteObjectFile, deleteObjectFile,
getInventoryStockList, // getInventoryStockList, //
saveTrans, //
saveCoreComponent, saveCoreComponent,
getSparPartImages, // getSparPartImages, //
deleteCoreComponents,// deleteCoreComponents,//
reportExchangeWorkOrderExcel// reportExchangeWorkOrderExcel//
} from "@/api/eam/eam.js" } from "@/api/eam/eam.js"
import { pickCreate } from '@/api/partspare/smartCabinet.js'
import { import {
downLoadObjectFile, downLoadObjectFile,
getDeviceCorePartListAll, getDeviceCorePartListAll,
@ -1863,10 +1863,10 @@
orderNo: this.saveData.orderNo, orderNo: this.saveData.orderNo,
outType: '维修出库' outType: '维修出库'
} }
saveTrans(jsonData).then(({data}) => {
pickCreate(jsonData).then(({data}) => {
if (data.code === 0) { if (data.code === 0) {
this.$message({ this.$message({
message: '操作成功',
message: data.msg || '已下发智能柜,待领料完成回写',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => {} onClose: () => {}

6
src/views/modules/reportWorkOrder/reportDefectOrder2.vue

@ -828,13 +828,13 @@ import {
getFeedBackImages, // getFeedBackImages, //
deleteObjectFile, deleteObjectFile,
getInventoryStockList, // getInventoryStockList, //
saveTrans, //
saveCoreComponent, saveCoreComponent,
getCoreSerialLatestAction, getCoreSerialLatestAction,
getSparPartImages, // getSparPartImages, //
deleteCoreComponents,// deleteCoreComponents,//
reportExchangeWorkOrderExcel// reportExchangeWorkOrderExcel//
} from "@/api/eam/eam.js" } from "@/api/eam/eam.js"
import { pickCreate } from '@/api/partspare/smartCabinet.js'
import { import {
downLoadObjectFile, downLoadObjectFile,
getDeviceCorePartList, getDeviceCorePartList,
@ -2085,10 +2085,10 @@ export default {
orderNo: this.saveData.orderNo, orderNo: this.saveData.orderNo,
outType: '维修出库' outType: '维修出库'
} }
saveTrans(jsonData).then(({data}) => {
pickCreate(jsonData).then(({data}) => {
if (data.code === 0) { if (data.code === 0) {
this.$message({ this.$message({
message: '操作成功',
message: data.msg || '已下发智能柜,待领料完成回写',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => {} onClose: () => {}

6
src/views/modules/reportWorkOrder/reportMaintenanceOrder.vue

@ -549,8 +549,8 @@
getSiteAndBuByUserName, getSiteAndBuByUserName,
getUserRoleList, // getUserRoleList, //
getInventoryStockList, // getInventoryStockList, //
saveTrans, //
} from "@/api/eam/eam.js" } from "@/api/eam/eam.js"
import { pickCreate } from '@/api/partspare/smartCabinet.js'
import { import {
getTableDefaultListLanguage, getTableDefaultListLanguage,
getTableUserListLanguage, getTableUserListLanguage,
@ -1562,10 +1562,10 @@
orderNo: this.saveData.orderNo, orderNo: this.saveData.orderNo,
outType: '维保出库' outType: '维保出库'
} }
saveTrans(jsonData).then(({data}) => {
pickCreate(jsonData).then(({data}) => {
if (data.code === 0) { if (data.code === 0) {
this.$message({ this.$message({
message: '操作成功',
message: data.msg || '已下发智能柜,待领料完成回写',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => {} onClose: () => {}

Loading…
Cancel
Save