领料退料

This commit is contained in:
bb_pan 2025-05-13 18:05:46 +08:00
parent 304038a788
commit 31253243f0
14 changed files with 6510 additions and 2497 deletions

View File

@ -0,0 +1,304 @@
<template>
<div class="app-container" id="">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
clearable
:maxlength="20"
style="width: 240px"
/>
</el-form-item>
<!-- 日期范围 -->
<el-form-item label="退料日期" prop="timeRange">
<el-date-picker
v-model="queryParams.timeRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
clearable
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出数据</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="tableList" :span-method="objectSpanMethod">
<el-table-column label="序号" align="center" width="80" type="index">
<template scope="scope">
<span v-if="scope.$index == 0">合计</span>
<span v-else>{{ (queryParams.pageNum - 1) * 10 + scope.$index }}</span>
</template>
</el-table-column>
<el-table-column label="工器具名称" align="center" prop="constructionType" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="center" prop="typeModelName" :show-overflow-tooltip="true" />
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true" />
<el-table-column label="退料数量" align="center" prop="storeNum" :show-overflow-tooltip="true">
<template slot-scope="scope">
<!-- manageType '编码' 使用可点击的 span -->
<span class="clickText" v-if="scope.row.manageType == '编码'" @click="openRecords(scope.row)">
{{ scope.row.storeNum }}
</span>
<!-- 否则直接显示数字 -->
<span v-else>
{{ scope.row.storeNum }}
</span>
</template>
</el-table-column>
<el-table-column label="退料日期" align="center" prop="leaseTime" :show-overflow-tooltip="true" />
<el-table-column label="退料班组" align="center" prop="leasePer" :show-overflow-tooltip="true" />
<el-table-column label="退料工程" align="center" prop="leasePro" :show-overflow-tooltip="true" />
<el-table-column label="退料人" align="center" prop="leasePeo" :show-overflow-tooltip="true" />
<el-table-column label="操作人" align="center" prop="out" :show-overflow-tooltip="true" />
<el-table-column label="退料单号" align="center" prop="code" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
:page-sizes="[5, 10, 15, 20, 30]"
@pagination="getList"
/>
<!-- 在库编码设备弹窗-->
<el-dialog :title="title" :visible.sync="openRecord" width="1200px" append-to-body>
<el-form :model="dialogQuery" ref="dialogQuery" size="small" :inline="true" label-width="80px">
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="dialogQuery.keyWord"
placeholder="请输入关键字"
clearable
:maxlength="30"
style="width: 240px"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleDialogQuery">查询</el-button>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-download" size="mini" @click="handleDialogStoreExport">导出</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dialogList">
<el-table-column
label="序号"
align="center"
width="80"
type="index"
:index="indexContinuation(dialogQuery.pageNum, dialogQuery.pageSize)"
></el-table-column>
<el-table-column label="机具名称" align="center" prop="typeName" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="center" prop="typeModelName" :show-overflow-tooltip="true" />
<el-table-column label="入库数量" align="center" prop="storeNum" :show-overflow-tooltip="true" />
<el-table-column label="原值(元)" align="center" prop="buyPrice" :show-overflow-tooltip="true" />
<el-table-column label="设备编码" align="center" prop="maCode" :show-overflow-tooltip="true" />
<el-table-column label="库管员" align="center" prop="maKeeper" :show-overflow-tooltip="true" />
<el-table-column label="操作人" align="center" prop="inputUser" :show-overflow-tooltip="true" />
<el-table-column label="入库时间" align="center" prop="inputTime" :show-overflow-tooltip="true" />
<el-table-column label="入库方式" align="center" prop="inputType" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="dialogTotal > 0"
:total="dialogTotal"
:page.sync="dialogQuery.pageNum"
:limit.sync="dialogQuery.pageSize"
@pagination="getStoreCodeList"
/>
</el-dialog>
</div>
</template>
<script>
import {
getRetainedEquipmentListApi,
getRetainedEquipmentListNoPageApi,
getStorageInfoListApi
} from '@/api/stquery/stquery'
export default {
name: '',
dicts: [],
data() {
return {
//
loading: false,
//
ids: [],
//
title: '查看',
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
tableList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
keyWord: null,
timeRange: null
},
//
openRecord: false,
dialogList: [], //
dialogQuery: {
pageNum: 1,
pageSize: 10,
keyWord: undefined
},
dialogTotal: 0,
}
},
created() {
this.getList()
},
methods: {
//
async getList() {
this.loading = true
const params = {
keyWord: this.queryParams.keyWord,
typeName: this.queryParams.typeName,
typeModelName: this.queryParams.typeModelName,
pageSize: this.queryParams.pageSize,
pageNum: this.queryParams.pageNum
}
const res = await getRetainedEquipmentListApi(params)
if (res.data.rows.length > 0) {
this.tableList = res.data.rows
} else {
this.tableList = []
}
this.total = res.data.total
console.log(this.tableList)
let param = {
keyWord: this.queryParams.keyWord,
typeName: this.queryParams.typeName,
typeModelName: this.queryParams.typeModelName
}
const response = await getRetainedEquipmentListNoPageApi(param)
let obj = {
// storeNum manageType usNum repairNum inputNum repairInputNum allNum
storeNum: response.data.storeNum || 0,
usNum: response.data.usNum || 0,
repairNum: response.data.repairNum || 0,
inputNum: response.data.inputNum || 0,
repairInputNum: response.data.repairInputNum || 0,
pendingScrapNum: response.data.pendingScrapNum || 0,
scrapNum: response.data.scrapNum || 0,
allNum: response.data.allNum || 0,
totalPrice: response.data.totalPrice || 0,
fiveReplacementRate: response.data.fiveReplacementRate || 0,
tenReplacementRate: response.data.tenReplacementRate || 0,
tenPlusReplacementRate: response.data.tenPlusReplacementRate || 0,
manageType: response.data.manageType || ''
}
this.tableList.unshift(obj)
console.log(this.tableList)
this.loading = false
},
indexContinuationForTable(num, size) {
let number = (num - 1) * size
console.log(number)
if (number == 0) {
return '合计'
} else {
return number
}
},
// rowIndex= columnIndex=
// table +
// 0
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (rowIndex === 0 && columnIndex == 0) {
let rowspan = 1
let colspan = 7
return { rowspan, colspan }
}
//
// else if
// 使
else if (rowIndex === 0 && columnIndex < 7) {
return {
rowspan: 0,
colspan: 0
}
}
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
/** 导出按钮操作 */
handleExport() {
this.download(
'material/complex_query/exportRetainedEquipmentList',
{
...this.queryParams
},
`综合查询_保有设备总量_${new Date().getTime()}.xlsx`
)
},
//
openRecords(row) {
this.openRecord = true
this.dialogQuery.keyWord = ''
this.dialogQuery.typeId = row.typeId
this.getStoreCodeList()
},
/** 查询在库编码列表 */
getStoreCodeList() {
getStorageInfoListApi(this.dialogQuery).then(response => {
this.dialogList = response.data.rows
this.dialogTotal = response.data.total
})
},
/** 搜索在库按钮操作 */
handleDialogQuery() {
this.dialogQuery.pageNum = 1
this.getStoreCodeList()
},
handleDialogStoreExport() {
this.download(
'material/complex_query/exportStorageInfoList',
{ ...this.dialogQuery },
`综合查询_在库设备_${new Date().getTime()}.xlsx`
)
}
}
}
</script>
<style lang="scss" scoped>
::v-deep.el-table .fixed-width .el-button--mini {
width: 60px !important;
margin-bottom: 10px;
}
.clickText {
color: #02a7f0;
cursor: pointer;
}
</style>

View File

@ -97,6 +97,22 @@
/>
</el-form-item>
<el-form-item label="标准配置" prop="standardConfig">
<treeselect
v-model="maForm.standardConfig"
:options="standardConfigList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择标准配置"
@select="standardConfigChange"
/>
</el-form-item>
<el-form-item label="类型规格" prop="deviceType">
<el-row :gutter="10">
<el-col :span="15">
@ -228,6 +244,11 @@
"
></el-input>
</template>
</el-table-column>
<el-table-column label="管理模式" prop="manageType" align="center">
<template v-slot="{ row }">
<span>{{ row.manageType == '0' ? '编码管理' : '数量管理' }}</span>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" align="center" label-width="500px">
<template v-slot="scope">
@ -268,6 +289,7 @@ import {
getApplyInfo,
getAgreement
} from '@/api/lease/apply'
import { getListsByConfigId, getStandardConfigList } from '@/api/business/index'
import { getToken } from '@/utils/auth'
import { uploadPurchaseFile, getPurchaseFileList } from '@/api/purchase/goodsAccept'
import { downloadFile, downloadFileData } from '@/utils/download'
@ -349,8 +371,10 @@ export default {
purchaser: '',
remark: '',
purchaseNumber: '',
standardConfig: undefined,
bmFileInfos: []
},
standardConfigList: [],
//
form: {},
defaultProps: {
@ -466,12 +490,12 @@ export default {
mounted() {
this.projectInfoList() //
this.equipmentType() //
this.getStandardConfigListApi() //
if (this.isEdit) {
console.log('isEdit', this.isEdit)
this.taskId = this.editTaskId
this.id = this.editId
this.getTaskInfo()
this.equipmentType()
}
// this.projectInfoList();
// this.equipmentType();
@ -588,7 +612,8 @@ export default {
specificationType: node.typeName,
unitName: node.unitName,
unitValue: node.unitValue,
maxSortPriority: node.maxSortPriority
maxSortPriority: node.maxSortPriority,
manageType: node.manageType,
})
}
@ -634,9 +659,6 @@ export default {
type: 'warning'
})
this.tempDeviceType = this.tempDeviceType.filter(id => id !== lastSelected)
} else if (typeData.storageNum <= 0) {
this.$message.error('所选物资规格类型暂时无库存,无法申请!')
this.tempDeviceType = this.tempDeviceType.filter(id => id !== lastSelected)
} else {
//
this.equipmentList.unshift({
@ -666,7 +688,7 @@ export default {
this.maForm.projectId = response.data.leaseApplyInfo.leaseProjectId
this.unitId = this.treeParentsById(this.uniteList, this.maForm.unitId)
this.projectId = this.treeParentsById(this.projectList, this.maForm.projectId)
this.equipmentList = response.data.leaseApplyDetailsList
this.equipmentList = response.data.leaseApplyDetailsList || []
// bmFileInfos
if (this.maForm.bmFileInfos.length > 0) {
this.isFileFbs = true
@ -706,6 +728,42 @@ export default {
this.single = selection.length != 1
this.multiple = !selection.length
},
//
async getStandardConfigListApi() {
try {
const res = await getStandardConfigList()
console.log('🚀 ~ getStandardConfigList ~ res:', res)
this.standardConfigList = res.data
} catch (error) {
console.log('🚀 ~ error:', error)
}
},
async standardConfigChange(val) {
console.log('🚀 ~ standardConfigChange ~ val:', val)
const loading = this.$loading()
try {
const params = {
configId: val.id
}
const res = await getListsByConfigId(params)
console.log('🚀 ~ standardConfigChange ~ res:', res)
// this.equipmentList.unshift(...res.data)
res.data.forEach(newItem => {
const existingItem = this.equipmentList.find(item => item.typeId === newItem.typeId)
if (existingItem) {
existingItem.preNum += newItem.preNum
} else {
this.equipmentList.unshift(newItem)
}
})
loading.close()
} catch (error) {
console.log('🚀 ~ error:', error)
loading.close()
}
},
/** 保存按钮操作 */
handleSave() {
// console.log(this.equipmentList)

View File

@ -443,6 +443,7 @@ export default {
this.typeList = response.data.rows;
this.total = response.data.total;
this.loading = false;
this.typeList = [{ id: 1}]
});
},
/** 搜索按钮操作 */

View File

@ -0,0 +1,305 @@
<template>
<div class="app-container" id="">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
clearable
:maxlength="20"
style="width: 240px"
/>
</el-form-item>
<!-- 日期范围 -->
<el-form-item label="领料日期" prop="timeRange">
<el-date-picker
v-model="queryParams.timeRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
clearable
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出数据</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="tableList" :span-method="objectSpanMethod">
<el-table-column label="序号" align="center" width="80" type="index">
<template scope="scope">
<span v-if="scope.$index == 0">合计</span>
<span v-else>{{ (queryParams.pageNum - 1) * 10 + scope.$index }}</span>
</template>
</el-table-column>
<el-table-column label="工器具名称" align="center" prop="constructionType" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="center" prop="typeModelName" :show-overflow-tooltip="true" />
<el-table-column label="领料数量" align="center" prop="leaseNum" :show-overflow-tooltip="true" />
<el-table-column label="出库数量" align="center" prop="storeNum" :show-overflow-tooltip="true">
<template slot-scope="scope">
<!-- manageType '编码' 使用可点击的 span -->
<span class="clickText" v-if="scope.row.manageType == '编码'" @click="openRecords(scope.row)">
{{ scope.row.storeNum }}
</span>
<!-- 否则直接显示数字 -->
<span v-else>
{{ scope.row.storeNum }}
</span>
</template>
</el-table-column>
<el-table-column label="待出库数量" align="center" prop="usNum" :show-overflow-tooltip="true" />
<el-table-column label="领料日期" align="center" prop="leaseTime" :show-overflow-tooltip="true" />
<el-table-column label="领料班组" align="center" prop="leasePer" :show-overflow-tooltip="true" />
<el-table-column label="领料工程" align="center" prop="leasePro" :show-overflow-tooltip="true" />
<el-table-column label="领料人" align="center" prop="leasePeo" :show-overflow-tooltip="true" />
<el-table-column label="出库人" align="center" prop="out" :show-overflow-tooltip="true" />
<el-table-column label="领料单号" align="center" prop="code" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
:page-sizes="[5, 10, 15, 20, 30]"
@pagination="getList"
/>
<!-- 在库编码设备弹窗-->
<el-dialog :title="title" :visible.sync="openRecord" width="1200px" append-to-body>
<el-form :model="dialogQuery" ref="dialogQuery" size="small" :inline="true" label-width="80px">
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="dialogQuery.keyWord"
placeholder="请输入关键字"
clearable
:maxlength="30"
style="width: 240px"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleDialogQuery">查询</el-button>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-download" size="mini" @click="handleDialogStoreExport">导出</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dialogList">
<el-table-column
label="序号"
align="center"
width="80"
type="index"
:index="indexContinuation(dialogQuery.pageNum, dialogQuery.pageSize)"
></el-table-column>
<el-table-column label="机具名称" align="center" prop="typeName" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="center" prop="typeModelName" :show-overflow-tooltip="true" />
<el-table-column label="入库数量" align="center" prop="storeNum" :show-overflow-tooltip="true" />
<el-table-column label="原值(元)" align="center" prop="buyPrice" :show-overflow-tooltip="true" />
<el-table-column label="设备编码" align="center" prop="maCode" :show-overflow-tooltip="true" />
<el-table-column label="库管员" align="center" prop="maKeeper" :show-overflow-tooltip="true" />
<el-table-column label="操作人" align="center" prop="inputUser" :show-overflow-tooltip="true" />
<el-table-column label="入库时间" align="center" prop="inputTime" :show-overflow-tooltip="true" />
<el-table-column label="入库方式" align="center" prop="inputType" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="dialogTotal > 0"
:total="dialogTotal"
:page.sync="dialogQuery.pageNum"
:limit.sync="dialogQuery.pageSize"
@pagination="getStoreCodeList"
/>
</el-dialog>
</div>
</template>
<script>
import {
getRetainedEquipmentListApi,
getRetainedEquipmentListNoPageApi,
getStorageInfoListApi
} from '@/api/stquery/stquery'
export default {
name: '',
dicts: [],
data() {
return {
//
loading: false,
//
ids: [],
//
title: '查看',
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
tableList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
keyWord: null,
timeRange: null
},
//
openRecord: false,
dialogList: [], //
dialogQuery: {
pageNum: 1,
pageSize: 10,
keyWord: undefined
},
dialogTotal: 0,
}
},
created() {
this.getList()
},
methods: {
//
async getList() {
this.loading = true
const params = {
keyWord: this.queryParams.keyWord,
typeName: this.queryParams.typeName,
typeModelName: this.queryParams.typeModelName,
pageSize: this.queryParams.pageSize,
pageNum: this.queryParams.pageNum
}
const res = await getRetainedEquipmentListApi(params)
if (res.data.rows.length > 0) {
this.tableList = res.data.rows
} else {
this.tableList = []
}
this.total = res.data.total
console.log(this.tableList)
let param = {
keyWord: this.queryParams.keyWord,
typeName: this.queryParams.typeName,
typeModelName: this.queryParams.typeModelName
}
const response = await getRetainedEquipmentListNoPageApi(param)
let obj = {
// storeNum manageType usNum repairNum inputNum repairInputNum allNum
storeNum: response.data.storeNum || 0,
usNum: response.data.usNum || 0,
repairNum: response.data.repairNum || 0,
inputNum: response.data.inputNum || 0,
repairInputNum: response.data.repairInputNum || 0,
pendingScrapNum: response.data.pendingScrapNum || 0,
scrapNum: response.data.scrapNum || 0,
allNum: response.data.allNum || 0,
totalPrice: response.data.totalPrice || 0,
fiveReplacementRate: response.data.fiveReplacementRate || 0,
tenReplacementRate: response.data.tenReplacementRate || 0,
tenPlusReplacementRate: response.data.tenPlusReplacementRate || 0,
manageType: response.data.manageType || ''
}
this.tableList.unshift(obj)
console.log(this.tableList)
this.loading = false
},
indexContinuationForTable(num, size) {
let number = (num - 1) * size
console.log(number)
if (number == 0) {
return '合计'
} else {
return number
}
},
// rowIndex= columnIndex=
// table +
// 0
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (rowIndex === 0 && columnIndex == 0) {
let rowspan = 1
let colspan = 7
return { rowspan, colspan }
}
//
// else if
// 使
else if (rowIndex === 0 && columnIndex < 7) {
return {
rowspan: 0,
colspan: 0
}
}
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
/** 导出按钮操作 */
handleExport() {
this.download(
'material/complex_query/exportRetainedEquipmentList',
{
...this.queryParams
},
`综合查询_保有设备总量_${new Date().getTime()}.xlsx`
)
},
//
openRecords(row) {
this.openRecord = true
this.dialogQuery.keyWord = ''
this.dialogQuery.typeId = row.typeId
this.getStoreCodeList()
},
/** 查询在库编码列表 */
getStoreCodeList() {
getStorageInfoListApi(this.dialogQuery).then(response => {
this.dialogList = response.data.rows
this.dialogTotal = response.data.total
})
},
/** 搜索在库按钮操作 */
handleDialogQuery() {
this.dialogQuery.pageNum = 1
this.getStoreCodeList()
},
handleDialogStoreExport() {
this.download(
'material/complex_query/exportStorageInfoList',
{ ...this.dialogQuery },
`综合查询_在库设备_${new Date().getTime()}.xlsx`
)
}
}
}
</script>
<style lang="scss" scoped>
::v-deep.el-table .fixed-width .el-button--mini {
width: 60px !important;
margin-bottom: 10px;
}
.clickText {
color: #02a7f0;
cursor: pointer;
}
</style>

View File

@ -0,0 +1,127 @@
<template>
<div>
<!-- 编码出库 -->
<el-dialog title="编码出库" :visible.sync="openCode" width="1200px" append-to-body>
<span style="margin-left: 32px">待出库数量{{ outNum }}</span>
<el-form :model="outQuery" ref="outQuery" size="small" :inline="true" label-width="100px">
<el-form-item label="设备编码" prop="maCode">
<el-input v-model="outQuery.maCode" maxlength="20" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleOutQuery">查询</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetOutQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" size="mini" @click="saveCodeOut">出库</el-button>
</el-col>
</el-row>
<el-table ref="multipleTable" :data="outCodeList" height="500" @select="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" width="80" type="index"></el-table-column>
<el-table-column label="类型名称" align="center" prop="materialName" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="center" prop="materialModel" :show-overflow-tooltip="true" />
<el-table-column label="设备编码" align="center" prop="maCode" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="outTotal > 0"
:total="outTotal"
:page.sync="outQuery.pageNum"
:limit.sync="outQuery.pageSize"
@pagination="getCodeList"
/>
</el-dialog>
</div>
</template>
<script>
import { getDetailsByTypeId } from '@/api/lease/out'
export default {
data() {
return {
openCode: false,
rowData: {},
outNum: 0,
parentIdTemp: undefined,
outQuery: {
pageNum: 1,
pageSize: 10,
maCode: '',
typeId: '',
maStatus: 1
},
outTotal: 0,
outCodeList: [],
selectedCodeList: []
}
},
created() {},
methods: {
handleOpenCode(row) {
console.log('🚀 ~ handleOpenCode ~ row:', row)
this.rowData = row
this.openCode = true
this.parentIdTemp = row.parentId
this.outNum = row.outNum
this.outQuery.typeId = row.typeId
this.outQuery.maCode = ''
this.handleOutQuery()
},
handleSelectionChange(val) {
console.log('🚀 ~ handleSelectionChange ~ val:', val)
this.selectedCodeList = val
},
handleOutQuery() {
this.outQuery.pageNum = 1
this.getCodeList()
},
resetOutQuery() {
this.outQuery.maCode = ''
this.handleOutQuery()
},
getCodeList() {
getDetailsByTypeId(this.outQuery).then(res => {
this.outCodeList = res.rows
this.outCodeList = [
{
id: 1,
materialName: '设备名称',
materialModel: '规格型号',
maCode: '设备编码'
},
{
id: 2,
materialName: '设备名称',
materialModel: '规格型号',
maCode: '设备编码'
}
]
if (res.total) {
this.outTotal = res.total
}
if (this.rowData.outCodeList && this.rowData.outCodeList.length > 0) {
this.$nextTick(() => {
this.outCodeList.forEach(row => {
const isSelected = this.rowData.outCodeList.some(item => item.id === row.id)
if (isSelected) {
this.$refs.multipleTable.toggleRowSelection(row, true)
}
})
})
}
})
},
saveCodeOut() {
console.log('Selected codes:', this.outCodeList)
this.$emit('selectOutCode', this.selectedCodeList)
this.openCode = false
}
}
}
</script>
<style lang="scss" scoped></style>

File diff suppressed because it is too large Load Diff

View File

@ -1,712 +0,0 @@
<template>
<!-- 新增工机具 -->
<div>
<el-form
:model="maForm"
ref="maForm"
size="small"
:rules="rules"
:inline="true"
label-width="120px"
>
<el-form-item label="租赁单位" prop="arrivalTime">
<el-select
v-model="maForm.supplierId"
placeholder="租赁单位"
clearable
filterable
style="width: 240px"
disabled
>
<el-option
v-for="item in supplierList"
:key="item.supplierId"
:label="item.supplier"
:value="item.supplierId"
/>
</el-select>
</el-form-item>
<el-form-item label="租赁工程" prop="supplierId">
<el-select
v-model="maForm.supplierId"
placeholder="租赁工程"
clearable
filterable
style="width: 240px"
disabled
>
<el-option
v-for="item in supplierList"
:key="item.supplierId"
:label="item.supplier"
:value="item.supplierId"
/>
</el-select>
</el-form-item>
<el-form-item label="领料人" prop="leasePerson">
<el-input
v-model="maForm.leasePerson"
placeholder="请输入领料人"
clearable
maxlength="50"
style="width: 240px"
@keyup.enter.native="handleQuery"
disabled
/>
</el-form-item>
<el-form-item label="联系电话" prop="phone">
<el-input
v-model="maForm.phone"
placeholder="请输入联系电话"
clearable
maxlength="50"
style="width: 240px"
@keyup.enter.native="handleQuery"
disabled
/>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleSave"
>保存</el-button
>
</el-col>
<!-- <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-if="isEdit">导出</el-button>
</el-col> -->
</el-row>
<el-table v-loading="loading" :data="equipmentList">
<el-table-column align="center" label="序号" type="index" width="55" />
<el-table-column
align="center"
label="类型名称"
prop="maTypeName"
show-overflow-tooltip
></el-table-column>
<el-table-column
align="center"
label="规格型号"
prop="typeName"
show-overflow-tooltip
/>
<el-table-column align="center" label="计量单位" prop="unitName" />
<el-table-column align="center" label="当前库存" prop="storageNum" />
<el-table-column label="预领数量" prop="purchaseNum" align="center">
</el-table-column>
<el-table-column align="center" label="已领数量" prop="unitName" />
<el-table-column align="center" label="管理模式" prop="unitName" />
<el-table-column align="center" label="出库数量" prop="unitName">
<template slot-scope="scope">
<div
v-if="scope.row.unitName != null && scope.row.unitName != ''"
@click="codeBind(scope.row)"
style="color: #02a7f0; cursor: pointer"
>
{{ scope.row.unitName }}
</div>
<el-input-number
v-else
v-model="scope.row.preNum"
controls-position="right"
style="width: 100%"
></el-input-number>
</template>
<!-- <template slot-scope="scope">
<el-input-number
v-if="scope.row.unitName != null && scope.row.unitName != ''"
v-model="scope.row.preNum"
controls-position="right"
style="width: 100%"
></el-input-number>
</template> -->
</el-table-column>
<el-table-column label="备注" prop="remark" align="center">
<template v-slot="scope">
<el-input
v-model="scope.row.remark"
controls-position="right"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope" v-if="scope.row.roleId !== 1">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
style="color: red"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 绑定弹框-->
<el-dialog
width="70%"
append-to-body
title="编码绑定"
:visible.sync="bindCodeVisible"
@close="closeCancel"
>
<el-form
size="small"
:inline="true"
ref="queryFormBindRef"
:model="queryBindForm"
:rules="queryBindFormRules"
>
<el-form-item label="前缀" prop="codePrefix">
<el-input
clearable
maxlength="20"
placeholder="请输入前缀"
v-model="queryBindForm.codePrefix"
/>
</el-form-item>
<el-form-item label="后缀范围" prop="codeSuffixStart">
<el-input
clearable
placeholder="开始数值"
v-model="queryBindForm.codeSuffixStart"
/>
</el-form-item>
<el-form-item prop="codeSuffixEnd">
<el-input
clearable
placeholder="结束数值"
v-model="queryBindForm.codeSuffixEnd"
/>
</el-form-item>
<el-form-item label="编码" prop="code">
<el-input
clearable
maxlength="20"
placeholder="请输入编码"
v-model="queryBindForm.code"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" size="mini" @click="handleAdd"
>填充</el-button
>
<el-button type="primary" size="mini" @click="handleCodeBinding"
>绑定</el-button
>
</el-form-item>
</el-form>
<el-table border max-height="600px" :data="codeTableList">
<el-table-column align="center" label="序号" type="index" />
<el-table-column align="center" label="设备名称" prop="materialName" />
<el-table-column align="center" label="规格型号" prop="materialModel" />
<el-table-column align="center" label="设备编码">
<template slot-scope="{ row }">
<el-input clearable v-model="row.maCode" placeholder="请填写编码" />
</template>
</el-table-column>
<el-table-column align="center" label="状态"> </el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="danger"
icon="el-icon-remove"
@click="handleRemove(scope.$index)"
>
移除
</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
import {
getPurchaseCheckInfo,
equipmentTypeTree,
addApplyInfo,
updatePurchaseCheckInfo,
} from "@/api/purchase/goodsArrived";
import { getListFacturer } from "@/api/ma/supplier";
import { getToken } from "@/utils/auth";
import {
uploadPurchaseFile,
getPurchaseFileList,
} from "@/api/purchase/goodsAccept";
// import Treeselect from '@riophae/vue-treeselect'
// import '@riophae/vue-treeselect/dist/vue-treeselect.css'
// import HoldingpoleDialog from '@/components/HoldingpoleDialog/index.vue'
export default {
name: "AddTools",
dicts: ["purchase_task_status"],
// components: { Treeselect, HoldingpoleDialog },
props: {
isEdit: {
type: Boolean,
default: () => {
return false;
},
},
editTaskId: {
type: [String, Number],
default: () => {
return "";
},
},
editId: {
type: [String, Number],
default: () => {
return "";
},
},
},
data() {
return {
taskId: "",
// isEdit: false,
//
loading: false,
loadingTwo: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
bindCodeVisible: false, //
//
total: 0,
//
supplierList: [],
//
equipmentTypeList: [],
//
codeTableList: [],
//
equipmentList: [{ unitName: 4 }, { unitName: null }],
//
title: "",
//
open: false,
rowData: {},
//
queryParams: {
equipmentId: undefined,
productionTime: "",
},
maForm: {
taxRate: 13,
arrivalTime: "",
purchaser: "",
remark: "",
purchaseNumber: "",
},
//
form: {},
defaultProps: {
children: "children",
label: "label",
},
//
queryBindForm: {
typeId: "", // typeId
typeName: "", //
codePrefix: "", //
maTypeName: "", //
codeSuffixEnd: "", //
codeSuffixStart: "", //
code: "", //
},
//
rules: {
// deviceType: [
// {
// required: true,
// message: '',
// trigger: 'blur',
// },
// ],
deviceType: [
{
required: true,
message: "请选择规格型号",
trigger: "blur",
},
],
},
//
queryBindFormRules: {
codePrefix: [
{ required: true, message: "请输入前缀", trigger: "blur" },
],
codeSuffixStart: [
{
required: true,
trigger: "blur",
message: "请输入前缀",
},
{
pattern: /^[1-9][0-9]*$/,
message: "请输入大于0且不能以0开头的正整数",
},
],
codeSuffixEnd: [
{
required: true,
trigger: "blur",
message: "请输入后缀",
},
{
pattern: /^[1-9][0-9]*$/,
message: "请输入大于0且不能以0开头的正整数",
},
],
},
deviceTypeTreeProps: {
children: "children",
label: "typeName",
// multiple: false,
value: "typeId",
multiple: true,
},
deviceType: [],
propsKey: 1000,
waitBindNum: 0, //
// taxRate:0,
};
},
computed: {
pickerOptions() {
return {
disabledDate(time) {
const currentDate = new Date();
currentDate.setHours(0, 0, 0, 0);
return time.getTime() < currentDate.getTime();
},
};
},
},
watch: {},
mounted() {
if (this.isEdit) {
console.log("isEdit", this.isEdit);
this.taskId = this.editTaskId;
this.id = this.editId;
// this.getTaskInfo();
}
this.supplierInfoList();
this.equipmentType();
},
methods: {
//
closeCancel() {
this.bindCodeVisible = false;
this.resetForm("queryFormBindRef");
},
codeBind(row) {
this.bindCodeVisible = true;
this.waitBindNum = row.unitName;
},
handleAdd() {
if (this.queryBindForm.code != "") {
console.log("this.queryBindForm.code", this.queryBindForm.code);
} else {
// 1.
this.$refs.queryFormBindRef.validate((valid) => {
if (valid) {
// 1.1
const {
typeName,
codePrefix,
maTypeName,
codeSuffixEnd,
codeSuffixStart,
} = this.queryBindForm;
if (parseInt(codeSuffixEnd) < parseInt(codeSuffixStart)) {
this.$modal.msgError("结束值不可小于开始值");
return;
}
// 1.2
let waitCodeNum = this.waitBindNum; //
//
let passCodeNUm =
codeSuffixEnd - codeSuffixStart > waitCodeNum
? waitCodeNum
: codeSuffixEnd - codeSuffixStart;
this.codeTableList = [];
// 1.3
for (let i = 0; i < passCodeNUm; i++) {
const codeItem = {
typeName,
maTypeName,
outFacCode: "",
productDate: "",
maCode: `${codePrefix}${parseInt(codeSuffixStart) + i}`,
};
this.codeTableList.push(codeItem);
}
}
});
}
},
handleCodeBinding() {},
/** 物资厂家-下拉选 */
supplierInfoList() {
let param = {
pageNum: 1,
pageSize: 100,
keyWord: undefined,
};
getListFacturer(param).then((response) => {
this.supplierList = response.rows;
});
},
//
// changeSupplier(supplierId) {
// this.equipmentList.forEach((item) => {
// this.$set(item, 'supplierId', supplierId)
// })
// },
/** 机具类型 */
equipmentType() {
equipmentTypeTree().then((response) => {
this.equipmentTypeList = response.data;
this.equipmentTypeList.forEach((item, index) => {
if (item.children && item.children.length > 0) {
item.children.forEach((item2, index2) => {
if (item2.children && item2.children.length > 0) {
item2.children.forEach((item3) => {
if (item3.children && item3.children.length > 0) {
item3.children.forEach((item4) => {
item4.maTypeName = item3.typeName;
item4.specificationType = item4.typeName;
this.$set(item4, "purchaseTaxPrice", 0);
this.$set(item4, "purchasePrice", 0);
});
}
});
}
});
}
});
//
let selectList = [];
this.equipmentList.forEach((e) => {
selectList.push(
this.getParentsById(this.equipmentTypeList, e.typeId)
);
});
this.deviceType = selectList;
});
},
//
deviceTypeChange(val) {
const deviceTypeList = this.$refs.deviceTypeCascader.getCheckedNodes();
let tempList = [];
if (val.length > 0) {
const items = val.map((e) => {
return e[3];
});
for (let i of items) {
for (let z of deviceTypeList) {
if (z.data.typeId === i) {
const obj = JSON.parse(JSON.stringify(z.data));
// obj.supplierId = ''
obj.createTime = null;
obj.productionTime = "";
obj.purchaseTaxPrice = 0;
obj.purchaseTaxPrice = 0;
obj.purchaseNum = 1;
obj.fixCode = "0";
obj.bmFileInfos = [];
tempList.push(obj);
break;
}
}
}
const newDataListNew = [...this.equipmentList, ...tempList];
const map = new Map();
for (let item of newDataListNew) {
if (!map.has(item.typeId)) {
map.set(item.typeId, item);
}
}
const newArray = [...map.values()];
let newArray_array = [];
items.forEach((e) => {
newArray.forEach((j) => {
if (e == j.typeId) {
newArray_array.push(j);
}
});
});
this.equipmentList = newArray_array;
} else {
this.equipmentList = [];
}
},
//---
getTaskInfo() {
// this.loading = true;
getPurchaseCheckInfo({
taskId: this.taskId,
id: this.id,
taskStatus: 1,
}).then((response) => {
this.maForm = response.data.purchaseCheckInfo;
this.maForm.id = response.data.purchaseCheckInfo.id;
this.maForm.taskId = response.data.purchaseCheckInfo.taskId;
this.maForm.arrivalTime = response.data.purchaseCheckInfo.arrivalTime;
this.maForm.supplierId = response.data.purchaseCheckInfo.supplierId;
this.maForm.remark = response.data.purchaseCheckInfo.remark;
this.maForm.taxRate = response.data.purchaseCheckInfo.taxRate;
// this.maForm.purchaseNumber = response.data.purchaseNumber
// this.maForm.productionTime = response.data.purchaseCheckInfo.productionTime
this.equipmentList = response.data.purchaseCheckDetailsList;
console.log(this.equipmentList);
// this.loading = false;
});
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.roleId);
this.single = selection.length != 1;
this.multiple = !selection.length;
},
/** 保存按钮操作 */
handleSave() {
// console.log(this.equipmentList)
if (this.equipmentList.length > 0) {
this.$refs["maForm"].validate((valid) => {
if (valid) {
this.maForm.taskId = this.taskId;
// this.maForm.checkDetailsList = this.equipmentList
this.$modal
.confirm("是否确认保存当前页面")
.then(function () {})
.then(() => {
if (this.isEdit) {
console.log("编辑");
this.loading = true;
updatePurchaseCheckInfo({
purchaseCheckDetailsList: this.equipmentList,
purchaseCheckInfo: this.maForm,
}).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess("编辑成功");
// this.$tab.closeOpenPage({
// path: '/store/newBuy/newDevicesList',
// })
this.$emit("addToolsSuccess");
}
this.loading = false;
});
} else if (!this.isEdit) {
console.log("新增");
// console.log(this.equipmentList)
this.loading = true;
addApplyInfo({
leaseApplyDetailsList: this.equipmentList,
leaseApplyInfo: this.maForm,
}).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess("新增成功");
// this.$tab.closeOpenPage({
// path: '/store/newBuy/newDevicesList',
// })
this.$emit("addToolsSuccess");
}
this.loading = false;
});
}
})
.catch(() => {});
}
});
} else {
this.$modal.msgError("请先添加机具类型");
}
},
//
getParentsById(list, id) {
for (let i in list) {
if (list[i].typeId == id) {
//value
return [list[i].typeId];
}
if (list[i].children) {
let node = this.getParentsById(list[i].children, id);
if (node !== undefined) {
//
node.unshift(list[i].typeId);
return node;
}
}
}
},
/** 删除按钮操作 */
handleDelete(row) {
// console.log(row.id)
this.$modal
.confirm("是否确认删除所选择的数据项?")
.then(() => {
this.deviceType.forEach((e, index) => {
if (e[3] === row.typeId) {
this.deviceType.splice(index, 1);
this.propsKey++;
}
});
this.equipmentList.forEach((item, index) => {
if (item.id == row.id) {
this.equipmentList.splice(index, 1);
}
});
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"/material/purchase_check_info/exportDetails",
{ taskId: this.taskId },
`新购到货详情_${new Date().getTime()}.xlsx`
);
},
},
};
</script>
<style lang="scss">
.popper-select {
.el-cascader-panel .el-scrollbar .el-checkbox {
display: none;
}
.el-cascader-panel .el-scrollbar:nth-child(4) .el-checkbox {
display: block !important;
}
}
</style>

View File

@ -0,0 +1,746 @@
<template>
<div>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item>
<el-date-picker
v-model="queryParams.time"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 240px"
>
</el-date-picker>
</el-form-item>
<el-form-item prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
clearable
maxlength="50"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item prop="taskStatus">
<el-select
v-model="queryParams.taskStatus"
placeholder="请选择状态"
clearable
filterable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.lease_task_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置
</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
</el-button>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="typeList" row-key="id" @selection-change="handleSelectionChange" border>
<el-table-column type="selection" width="55" align="center" :selectable="selectable"/>
<el-table-column width="60" align="center" label="序号" type="index" >
<template slot-scope="scope">
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column label="申请时间" align="center" prop="createTime" width="160" :show-overflow-tooltip="true"/>
<el-table-column label="申请人" align="center" prop="createBy" width="100" :show-overflow-tooltip="true"/>
<el-table-column label="领料班组" align="center" prop="departName" width="100" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="实施单位" align="center" prop="impUnitName" width="120px" :show-overflow-tooltip="true"/>
<el-table-column label="合同主体" align="center" prop="contractPart" width="120px" :show-overflow-tooltip="true"/>
<el-table-column label="租赁单位" align="center" prop="leaseUnit" width="150px" :show-overflow-tooltip="true"/> -->
<el-table-column label="租赁工程" align="center" prop="leaseProject" width="150px" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="领料物资类型" align="center" prop="maTypeNames" width="110px" :show-overflow-tooltip="true"/> -->
<!-- <el-table-column label="协议号" align="center" prop="agreementCode" width="140" :show-overflow-tooltip="true"/> -->
<!-- <el-table-column label="租赁申请单号" align="center" prop="code" width="140px" :show-overflow-tooltip="true"></el-table-column> -->
<el-table-column label="领料工器具类型" align="center" prop="leaseType" width="140px" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="领料人" align="center" prop="leasePerson" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="领料人电话" align="center" prop="phone" width="120px" :show-overflow-tooltip="true"/> -->
<el-table-column label="状态" align="center" prop="taskStatus" :show-overflow-tooltip="true" width="150">
<template slot-scope="scope">
<dict-tag :options="dict.type.lease_task_status" :value="scope.row.taskStatus"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" width="100" prop="remark" :show-overflow-tooltip="true"/>
<el-table-column label="操作" align="center" width="300" fixed="right">
<template slot-scope="scope">
<el-button size="mini" style="margin-bottom: 10px" type="normal"
@click="handleView(scope.row)"
>查看</el-button>
<el-button size="mini" style="margin-bottom: 10px" type="primary"
@click="handleUpdate(scope.row)" v-if="scope.row.taskStatus != 4" v-hasPermi="['purchase:info:edit']"
>出库</el-button>
<el-button size="mini" type="warning"
v-if="scope.row.taskStatus != 1" @click="handleLld(scope.row)"
>领料单</el-button>
<el-button size="mini" type="warning"
@click="handlePrint(scope.row)" v-if="scope.row.taskStatus == 4"
>出库检验单</el-button>
<el-button size="mini" type="danger"
@click="handleDeletePurchase(scope.row)" v-if="scope.row.taskStatus == 1" v-hasPermi="['purchase:info:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 出库检验单弹窗 -->
<el-dialog :title="title" :visible.sync="openPrint" width="1090px" append-to-body>
<div style="height: 600px; overflow-y: scroll;padding: 0 20px">
<!-- <vue-easy-print tableShow ref="remarksPrintRefCheck" class="print" :printable="'checkId'"> -->
<div id="checkId">
<div class="title" style="text-align: center; font-weight: 600; font-size: 16px">
施工机具设备出库检验记录表
</div>
<div class="info" style="margin-top: 10px; display: flex; align-items: center;">
<div class="item"
style="width: 60%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>领用工程</span>
{{ checkDataInfo.leaseProject }}
</div>
<div class="item" style="width: 40%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>使用单位</span>
{{ checkDataInfo.leaseUnit }}
</div>
</div>
<el-table :data="printTableData" class="table" style="margin-top: 20px;width: 100%;" border>
<el-table-column label="机具名称" align="center" prop="typeName"/>
<el-table-column label="规格型号" align="center" prop="typeModelName" />
<el-table-column label="单位" align="center" prop="unit" width="40px"/>
<el-table-column label="数量" align="center" prop="num" width="40px"/>
<el-table-column label="设备编码" align="center" prop="maCode"/>
<el-table-column label="额定载荷KN" align="center" prop="ratedLoad" width="80px"/>
<el-table-column label="试验载荷KN" align="center" prop="testLoad" width="80px"/>
<el-table-column label="持荷时间min" align="center" prop="holdingTime" width="80px"/>
<el-table-column label="试验日期" align="center" prop="testTime" width="120px"/>
<el-table-column label="下次试验日期" align="center" prop="nextTestTime" width="120px"/>
<el-table-column label="检验结论" align="center" prop="checkResult" />
<el-table-column label="备注" align="center" prop="remark"/>
</el-table>
<div class="fillIn" style="margin-top: 20px;display: flex;align-items: center;justify-content: right;">
<div class="item" style="width: 30%; align-items: center;position: relative;">
<div>
<span>检验单位</span>
</div>
<div>
<canvas id="canvas" width="165" height="165" style="position: absolute; top: 50%; left: 90%; transform: translate(-100%, -50%); z-index: 9999;"></canvas>
</div>
</div>
</div>
</div>
<!-- </vue-easy-print> -->
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="handleExportCheck">导出</el-button>
<el-button type="primary" @click="printCheck"> </el-button>
<el-button @click="closeDialogAndRefresh"> </el-button>
</div>
</el-dialog>
<!-- 领料单弹窗 -->
<el-dialog :visible.sync="open" width="800px" :title="title" append-to-body>
<div style="height: 500px; overflow-y: scroll; padding: 0 20px">
<!-- <vue-easy-print tableShow ref="remarksPrintRef" > -->
<div id="checkIdTwo">
<div class="title" style="text-align: center; font-weight: 600; font-size: 16px">
领料单
</div>
<div class="info" style="margin-top: 10px; display: flex; flex-wrap: wrap" >
<div class="item" style="width: 60%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>领料单位</span>
{{ leaseApplyData.leaseUnit }}
</div>
<div class="item" style="width: 40%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>工程名称</span>
{{ leaseApplyData.leaseProject }}
</div>
<div class="item" style="width: 40%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>发料单位</span>
{{ leaseApplyData.sendUnit }}
</div>
<div class="item" style="width: 30%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>时间</span>
<span v-if="leaseApplyData.createTime">{{ leaseApplyData.createTime.split(" ")[0] }}</span>
</div>
<div class="item" style="width: 30%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>编号</span>
{{ leaseApplyData.code }}
</div>
</div>
<el-table :data="leaseApplyDetails" class="table" border style="width: 100%;">
<el-table-column label="序号" align="center" type="index" width="60px"/>
<el-table-column label="类型名称" align="center" prop="typeName" />
<el-table-column label="规格型号" align="center" prop="typeName" />
<el-table-column label="计量单位" align="center" prop="unitName" />
<el-table-column label="预领数量" align="center" prop="preNum" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="出库方式" align="center" prop="manageType">
<template slot-scope="scope">
<span v-if="scope.row.manageType == 0" style="color: blue;" @click="codeInfo(scope.row)">编码出库</span>
<span v-if="scope.row.manageType == 1">数量出库</span>
</template>
</el-table-column>
</el-table>
<div class="fillIn" style="margin-top: 30px;display: flex;justify-content: space-between;">
<div class="item" style="width: 24%;display: flex;align-items: center;flex-wrap: wrap;">
<div style="width: 30%;">审核</div>
<div style="width: 70%;display: flex;align-items: center;flex-wrap: wrap;" v-if="leaseApplyData.directAuditSignUrl">
<div style="width: 80%;margin-left: 20px;">
<img :src="leaseApplyData.directAuditSignUrl" style="width: 40px;height: 100px;transform: rotate(-90deg);max-width: 100%;" alt="">
</div>
</div>
<!-- <img :src="leaseApplyData.directAuditSignUrl" style="width: 40px;height: 100px;transform: rotate(-90deg);max-width: 100%;" alt=""> -->
</div>
<div class="item" style="width: 24%;display: flex;align-items: center;flex-wrap: wrap;">
<span>领料</span>
</div>
<div class="item" style="width: 24%;display: flex;align-items: center;flex-wrap: wrap;">
<span>制单</span>
</div>
<div class="item" style="width: 28%;display: flex;align-items: center;">
<div style="width: 25%;">库管</div>
<div style="width: 75%;display: flex;align-items: center;flex-wrap: wrap;">
<img src="../../../../../assets/signTemp.png" style="width: 45%;height: 30px;" alt="">
<img src="../../../../../assets/signTemp.png" style="width: 45%;height: 30px;" alt="">
<img src="../../../../../assets/signTemp.png" style="width: 45%;height: 30px;" alt="">
<img src="../../../../../assets/signTemp.png" style="width: 45%;height: 30px;" alt="">
</div>
</div>
</div>
</div>
<!-- </vue-easy-print> -->
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="print"> </el-button>
<el-button @click="open = false"> </el-button>
</div>
</el-dialog>
<!-- 编码管理查看弹窗 -->
<el-dialog :title="titleView" :visible.sync="showView" width="800px" append-to-body>
<div style="overflow-y: scroll">
<vue-easy-print tableShow ref="remarksPrintRefView" class="print">
<div class="title" style="text-align: center; font-weight: 600; font-size: 16px; margin-bottom:20px">
领料单编号明细
</div>
<el-table :data="getListViewInfo" style="padding: 1px;">
<el-table-column align="center" label="序号" type="index" width="55" />
<el-table-column label="类型名称" align="center" prop="materialName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="设备编码" align="center" prop="maCode" :show-overflow-tooltip="true"/>
</el-table>
</vue-easy-print>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="printView"> </el-button>
<el-button @click="showView = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getListLeaseApply,
getPurchaseCheckInfo,
getAcceptanceForm,
purchaseCheckInfoRemove,
queryStatusDataApi,
getApplyInfo,
applyRemove,
applySend,
applySendAll,
getCheckInfo
} from "@/api/lease/apply";
import vueEasyPrint from "vue-easy-print";
import printJS from 'print-js';
export default {
name: "Home",
dicts: ["lease_task_status", "ma_type_manage_type"],
components: { vueEasyPrint },
data() {
return {
//
loading: true,
loadingTwo: true,
updateTime: "",
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
showPeople: false,
peopleOpen: false,
//
total: 0,
totalTwo: 0,
//
typesList: [],
modelList: [],
//
typeList: [],
getListPeople: [],
configUserList: [],
phoneNumbers: [],
//
chosenUserList: [],
userList: [],
//
title: "",
//
dateRange: [],
statusDataRange: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
time: null, //
keyWord: "",
taskStatus: null, //
},
form: {
remark: "",
},
//
rules: {
remark: [
{ required: true, message: "通知内容不能为空", trigger: "blur" },
],
},
openPrint: false,
open: false,
printData: {},
printTableData: [],
checkDataInfo: {},
//
supplierStr: "",
//
leaseApplyDetails: [],
//
leaseApplyData: {},
sendTemp: [],
//
showView: false,
titleView: "",
getListViewInfo: [],
};
},
created() {
// this.getStatusList();
this.getList();
// this.getTypeList()
},
methods: {
// getTypeList() {
// getTypeList({ level: '3' }).then((response) => {
// this.typesList = response.data
// })
// getTypeList({ level: '4' }).then((response) => {
// this.modelList = response.data
// })
// },
//
handleSelectionChange(selection) {
this.sendTemp = [];
this.ids = selection.map((item) => item.id);
selection.forEach((item) => {
this.sendTemp.push({ id: item.id, taskId: item.taskId });
});
this.single = selection.length != 1;
this.multiple = !selection.length;
},
//
selectable(row) {
if (row.taskStatus == 1) {
return true;
} else {
return false;
}
},
getList() {
this.loading = true;
const params = {
keyWord: this.queryParams.keyWord,
taskStatus: this.queryParams.taskStatus,
startTime: this.queryParams.time && this.queryParams.time[0],
endTime: this.queryParams.time && this.queryParams.time[1],
pageSize: this.queryParams.pageSize,
pageNum: this.queryParams.pageNum,
statusList: this.queryParams.taskStatus ? [this.queryParams.taskStatus]:[1,2,3,4]
};
getListLeaseApply(params).then((response) => {
this.typeList = response.data.rows;
this.total = response.data.total;
this.loading = false;
this.typeList = [{ id: 1}]
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.time = [];
this.resetForm("queryForm");
this.queryParams.keyWord = "";
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.$emit("addTools");
},
/** 查看按钮操作 */
handleView(row) {
this.$emit("queryTools", row.taskId, row.id);
},
/** 修改按钮操作 */
handleUpdate(row) {
this.$emit("editTools", row.taskId, row.id);
},
//----
getNowTime() {
var today = new Date();
var year = today.getFullYear(); //
var month = today.getMonth() + 1; //
var day = today.getDate(); //
return year + "-" + month + "-" + day;
},
//
reset() {
this.form = {
taskId: "",
remark: "",
};
this.resetForm("form");
},
//
getPrintTable(taskId) {
getAcceptanceForm({ taskId: taskId }).then((response) => {
this.printData = response.data;
this.printTableData = response.data.checkDetailsList;
let supplierList = [];
this.printTableData.forEach((e) => {
if (e.supplier) {
supplierList.push(e.supplier);
}
});
supplierList = [...new Set(supplierList)];
this.supplierStr = supplierList.join(",");
});
},
//
async handlePrint(row) {
const res = await getCheckInfo({id:row.id});
this.idTemp = row.id;
this.checkDataInfo = res.data.leaseApplyInfo;
this.printTableData = res.data.leaseOutVoList;
setTimeout(() => {
this.chapter('机具检验专用章', '安徽送边电工程有限公司机具(物流)分公司')
}, 500);
this.openPrint = true;
this.title = "出库检验单";
},
/** 导出按钮操作 */
handleExportCheck() {
this.download(
"/material/lease_apply_info/exportInfo",
{ id:this.idTemp },
`出库检验单_${new Date().getTime()}.xlsx`
);
},
//
async handleLld(row) {
this.title = "领料单";
this.open = true;
var ids = row.id;
const res = await getApplyInfo(ids);
this.leaseApplyDetails = res.data.leaseApplyDetailsList;
this.leaseApplyData = res.data.leaseApplyInfo;
},
//
printCheck() {
printJS({
printable: 'checkId',
type: 'html',
targetStyles: ['*'],
maxWidth:'1400'
//
});
},
//
closeDialogAndRefresh() {
this.openPrint = false;
},
codeInfo(row) {
this.showView = true;
this.titleView = "查看";
this.getListViewInfo = row.maCodeVoList;
},
//
printView() {
this.$refs.remarksPrintRefView.print();
},
//
print() {
// this.$refs.remarksPrintRef.print();
printJS({
printable: 'checkIdTwo',
type: 'html',
targetStyles: ['*'],
maxWidth:'1400'
//
});
},
/** 删除按钮操作 */
handleDeletePurchase(row) {
// console.log(row)
let ids = [];
ids.push(row.id);
console.log("ids", ids);
this.$modal
.confirm("是否确认删除所选择的数据项?")
.then(function () {
return applyRemove(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
const params = {
keyWord: this.queryParams.keyWord,
taskStatus: this.queryParams.taskStatus,
startTime: this.queryParams.time && this.queryParams.time[0],
endTime: this.queryParams.time && this.queryParams.time[1],
pageSize: this.queryParams.pageSize,
pageNum: this.queryParams.pageNum,
statusList: this.queryParams.taskStatus ? [this.queryParams.taskStatus]:[1,2,3,4]
};
this.download(
"/material/lease_apply_info/export",
{ ...params },
`领料申请_${new Date().getTime()}.xlsx`
);
},
//
handleSend(row) {
const param = { id: row.id, taskId: row.taskId };
this.$modal
.confirm("是否确认发布所选择的数据项?")
.then(function () {
return applySend(param);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("发布成功");
})
.catch(() => {});
},
handleSendAll() {
if (this.ids.length == 0) {
this.$alert("请至少勾选一个领料申请", "提示", {
type: "warning",
confirmButtonText: "确定",
});
return;
} else {
applySendAll(this.sendTemp).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess("发布成功");
}
this.getList();
});
}
},
chapter(text, companyName) {
let canvas = document.getElementById("canvas");
let context = canvas.getContext("2d");
canvas.width = canvas.width;
context.height = canvas.height;
// //
// context.clearRect(0, 0, canvas.width, canvas.height);
//let text = "XXX";
//let companyName = "XXX";
//
let width = canvas.width / 2;
let height = canvas.height / 2;
context.lineWidth = 3;
context.strokeStyle = "#f00";
context.beginPath();
context.arc(width, height, 80, 0, Math.PI * 2); //
context.stroke();
//
this.create5star(context, width, height, 20, "#f00", 0);
//
context.font = "100 13px 宋体";
context.textBaseline = "middle"; //
context.textAlign = "center"; //
context.lineWidth = 0.7;
context.strokeStyle = "#ff2323";
context.strokeText(text, width, height + 50);
//
context.translate(width, height); // ,
context.font = "100 13px 宋体";
let count = companyName.length; //
let angle = (4 * Math.PI) / (3 * (count - 1)); //
let chars = companyName.split("");
let c;
for (let i = 0; i < count; i++) {
c = chars[i]; //
if (i == 0) {
context.rotate((5 * Math.PI) / 6);
} else {
context.rotate(angle);
}
context.save();
context.translate(65, 0); // ,x
context.rotate(Math.PI / 2); // 90,x
context.strokeStyle = "#ff2323"; //
context.strokeText(c, 0, 0); //
context.restore();
}
},
//
create5star(context, sx, sy, radius, color, rotato) {
context.save();
context.fillStyle = color;
context.translate(sx, sy); //
context.rotate(Math.PI + rotato); //
context.beginPath(); //
// let x = Math.sin(0);
// let y = Math.cos(0);
let dig = (Math.PI / 5) * 4;
for (let i = 0; i < 5; i++) {
//
let x = Math.sin(i * dig);
let y = Math.cos(i * dig);
context.lineTo(x * radius, y * radius);
}
context.closePath();
context.stroke();
context.fill();
context.restore();
}
},
watch: {
$route: {
handler(to) {
if (to.query.keyWord) {
this.queryParams.keyWord = to.query.keyWord;
}
},
deep: true,
immediate: true,
},
},
};
</script>
<style lang="scss" scoped>
// ::v-deep.el-table .fixed-width .el-button--mini {
// width: 70px !important;
// margin-bottom: 10px;
// }
.image-type {
/* 旋转图片 */
transform: rotate(-90deg);
/* 确保旋转后的图片不会超出容器 */
max-width: 100%;
/* 保持图片的宽高比 */
width: 40px;
height: 100px;
}
.sign-type{
width: 100px;
height: 40px;
}
</style>

View File

@ -1,650 +0,0 @@
<template>
<div>
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item>
<el-date-picker
v-model="queryParams.time"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 240px"
>
</el-date-picker>
</el-form-item>
<el-form-item prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
clearable
maxlength="50"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item prop="taskStatus">
<el-select
v-model="queryParams.taskStatus"
placeholder="请选择状态"
clearable
filterable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.lease_out_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="typeList"
row-key="id"
@selection-change="handleSelectionChange"
border
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column width="60" align="center" label="序号" type="index" />
<el-table-column
align="center"
width="160"
label="申请时间"
prop="createTime"
:show-overflow-tooltip="true"
/>
<el-table-column
label="申请人"
width="150"
align="center"
prop="createBy"
:show-overflow-tooltip="true"
/>
<el-table-column
label="实施单位"
align="center"
prop="impUnitName"
width="150px"
:show-overflow-tooltip="true"
/>
<el-table-column
label="合同主体"
align="center"
prop="contractPart"
width="150px"
:show-overflow-tooltip="true"
/>
<el-table-column
label="租赁单位"
align="center"
prop="leaseUnit"
:show-overflow-tooltip="true"
/>
<el-table-column
label="租赁工程"
align="center"
prop="leaseProject"
:show-overflow-tooltip="true"
/>
<!-- <el-table-column
label="领料物资类型"
align="center"
prop="leaseType"
width="110px"
:show-overflow-tooltip="true"
/> -->
<el-table-column
label="协议号"
align="center"
prop="agreementCode"
:show-overflow-tooltip="true"
/>
<el-table-column
label="租赁申请单号"
align="center"
prop="code"
width="110px"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
label="领料人"
align="center"
prop="leasePerson"
:show-overflow-tooltip="true"
/>
<!-- <el-table-column
label="领料人电话"
align="center"
prop="phone"
width="120px"
:show-overflow-tooltip="true"
/> -->
<el-table-column
label="操作时间"
align="center"
width="160"
prop="updateTime"
:show-overflow-tooltip="true"
/>
<el-table-column
label="状态"
align="center"
prop="status"
:show-overflow-tooltip="true"
>
<template slot-scope="scope">
<dict-tag
:options="dict.type.lease_out_status"
:value="scope.row.status"
/>
</template>
</el-table-column>
<el-table-column
label="备注"
align="center"
width="100"
prop="remark"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center" width="300">
<template slot-scope="scope">
<el-button
size="mini"
style="margin-bottom: 10px"
type="normal"
@click="handleView(scope.row)"
v-if="scope.row.status != '2'"
>查看</el-button
>
<el-button
size="mini"
style="margin-bottom: 10px"
type="primary"
@click="handleUpdate(scope.row)"
v-if="scope.row.status != '2'"
>出库</el-button
>
<el-button
size="mini"
type="warning"
@click="handlePrint(scope.row)"
>领料单</el-button
>
<el-button
size="mini"
type="warning"
@click="handlePrint(scope.row)"
v-if="scope.row.status == '2'"
>出库检验单</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 验收单弹窗 -->
<el-dialog
:title="title"
:visible.sync="openPrint"
width="1100px"
append-to-body
>
<div style="height: 500px; overflow-y: scroll">
<vue-easy-print tableShow ref="remarksPrintRef" class="print">
<div
class="title"
style="text-align: center; font-weight: 600; font-size: 16px"
>
机具设备到货验收单
</div>
<div
class="info"
style="margin-top: 10px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>单据编号</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>生产厂家供应商</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>到货日期</span>
</div>
</div>
<el-table
:data="printTableData"
class="table"
style="margin-top: 20px; width: 1000px; padding-bottom: 1px"
border
>
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="序号" align="center" type="index" row="2" />
<el-table-column
label="物资名称"
align="center"
prop="machineTypeName"
/>
<el-table-column
label="规格型号"
align="center"
prop="specificationType"
/>
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="配送信息" align="center">
<el-table-column
label="到货数量"
align="center"
prop="purchaseNum"
/>
<el-table-column
label="验收结论"
align="center"
prop="purchaseNum"
/>
<el-table-column label="质保质量" align="center">
<el-table-column
label="实收份数"
align="center"
prop="purchaseNum"
/>
<el-table-column
label="符合要求"
align="center"
prop="purchaseNum"
/>
</el-table-column>
</el-table-column>
<el-table-column label="备注" align="center" prop="unitName" />
<!-- <el-table-column-->
<!-- label="合格证及技术资料"-->
<!-- align="center"-->
<!-- prop=""-->
<!-- />-->
<!-- <el-table-column label="包装" align="center" prop="" />-->
</el-table>
<div
class="fillIn"
style="
margin-top: 20px;
display: flex;
justify-content: space-between;
"
>
<div class="item" style="width: 33%">
<div>
<span>供应科</span>
</div>
</div>
<div class="item" style="width: 33%">
<div>
<span>生产技术科</span>
</div>
</div>
<div class="item" style="width: 33%">
<div>
<span>库管班</span>
</div>
</div>
</div>
</vue-easy-print>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="print"> </el-button>
<el-button @click="openPrint = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getListLeaseApply,
getPurchaseCheckInfo,
getAcceptanceForm,
purchaseCheckInfoRemove,
queryStatusDataApi,
} from "@/api/lease/apply";
export default {
name: "Home",
dicts: ["lease_out_status"],
// components: { vueEasyPrint },
data() {
return {
//
loading: true,
loadingTwo: true,
updateTime: "",
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
showPeople: false,
peopleOpen: false,
//
total: 0,
totalTwo: 0,
//
typesList: [],
modelList: [],
//
typeList: [],
getListPeople: [],
configUserList: [],
phoneNumbers: [],
//
chosenUserList: [],
userList: [],
//
title: "",
//
dateRange: [],
statusDataRange: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
time: null, //
taskStatus: "",
keyWord: "",
},
form: {
remark: "",
},
//
rules: {
remark: [
{ required: true, message: "通知内容不能为空", trigger: "blur" },
],
},
openPrint: false,
printData: {},
printTableData: [],
//
supplierStr: "",
};
},
created() {
// this.getStatusList();
this.getList();
// this.getTypeList()
},
methods: {
// getTypeList() {
// getTypeList({ level: '3' }).then((response) => {
// this.typesList = response.data
// })
// getTypeList({ level: '4' }).then((response) => {
// this.modelList = response.data
// })
// },
// /** */
// getStatusList(data) {
// let statusdataRes = queryStatusDataApi({
// // typeId:data.keeperData
// });
// this.statusDataRange = statusdataRes.data.map((item) => {
// return {
// label: item.dictLabel,
// value: item.dictValue,
// };
// });
// this.queryForm.statusDataRange = this.statusDataRange.value;
// },
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length != 1;
this.multiple = !selection.length;
},
getList() {
this.loading = true;
const params = {
keyWord: this.queryParams.keyWord,
startTime: this.queryParams.time && this.queryParams.time[0],
endTime: this.queryParams.time && this.queryParams.time[1],
taskStatus: this.queryParams.taskStatus,
// statusList:[this.queryParams.taskStatus],
pageSize: this.queryParams.pageSize,
pageNum: this.queryParams.pageNum,
};
getListLeaseApply(params).then((response) => {
this.typeList = response.data.rows;
this.total = response.data.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.time = [];
this.resetForm("queryForm");
this.queryParams.keyWord = "";
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.$emit("addTools");
},
/** 查看按钮操作 */
handleView(row) {
this.$emit("queryTools", row.taskId, row.id);
},
/** 修改按钮操作 */
handleUpdate(row) {
this.$emit("editTools", row.taskId, row.id);
},
//----
getNowTime() {
var today = new Date();
var year = today.getFullYear(); //
var month = today.getMonth() + 1; //
var day = today.getDate(); //
return year + "-" + month + "-" + day;
},
//
reset() {
this.form = {
taskId: "",
remark: "",
};
this.resetForm("form");
},
// //
// handleSelectionChange(selection) {
// this.ids = selection.map((item) => item.taskId)
// this.single = selection.length != 1
// this.multiple = !selection.length
// },
/** 验收按钮 */
handleAccept(row) {
// let query = { taskId: row.taskId }
// this.$tab.closeOpenPage({
// path: '/store/newBuy/newDevicesAccept',
// query,
// })
this.$emit("acceptToolsApply", row.taskId);
},
//
handleCode(row) {
// let query = { taskId: row.taskId }
// this.$tab
// .closeOpenPage({
// path: '/store/newBuy/newDevicesCode',
// query,
// })
// .then(() => {
// this.$tab.refreshPage()
// })
this.$emit("codingTools", row.taskId);
},
//
getPrintTable(taskId) {
getAcceptanceForm({ taskId: taskId }).then((response) => {
this.printData = response.data;
this.printTableData = response.data.checkDetailsList;
let supplierList = [];
this.printTableData.forEach((e) => {
if (e.supplier) {
supplierList.push(e.supplier);
}
});
supplierList = [...new Set(supplierList)];
this.supplierStr = supplierList.join(",");
});
},
//
handlePrint(row) {
// this.query.taskId = row.taskId
// this.getPrintTable(row.taskId)
this.openPrint = true;
this.title = "机具设备到货验收单";
},
//
print() {
this.$refs.remarksPrintRef.print();
},
/** 删除按钮操作 */
handleDeletePurchase(row) {
// console.log(row)
this.$modal
.confirm("是否确认删除所选择的数据项?")
.then(function () {
return purchaseCheckInfoRemove(row.id);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"/material/purchase_check_info/export",
{ ...this.queryParams },
`新购到货_${new Date().getTime()}.xlsx`
);
},
},
//
handleSend(row) {
console.log("发布");
},
handleSendAll() {},
watch: {
$route: {
handler(to) {
if (to.query.keyWord) {
this.queryParams.keyWord = to.query.keyWord;
}
},
deep: true,
immediate: true,
},
},
};
</script>
<style lang="scss" scoped>
::v-deep.el-table .fixed-width .el-button--mini {
width: 70px !important;
margin-bottom: 10px;
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,44 +3,35 @@
<el-form
:model="maForm"
ref="maForm"
size="small"
:rules="rules"
size="small"
:inline="true"
label-width="120px"
>
<el-form-item label="租赁单位" prop="unitId">
<el-select
v-model="maForm.unitId"
placeholder="租赁单位"
clearable
<el-cascader
v-model="unitId"
:show-all-levels="false"
:options="uniteList"
:props="selectTreeProps"
filterable
style="width: 240px"
clearable
collapse-tags
disabled
>
<el-option
v-for="item in uniteList"
:key="item.unitId"
:label="item.unitName"
:value="item.unitId"
/>
</el-select>
placeholder="请选择租赁单位"
></el-cascader>
</el-form-item>
<el-form-item label="租赁工程" prop="projectId">
<el-select
v-model="maForm.projectId"
placeholder="租赁工程"
clearable
<el-cascader
v-model="projectId"
:show-all-levels="false"
:options="projectList"
:props="selectTreeProps"
filterable
style="width: 240px"
clearable
collapse-tags
disabled
>
<el-option
v-for="item in projectList"
:key="item.proId"
:label="item.proName"
:value="item.proId"
/>
</el-select>
placeholder="请选择租赁工程"
></el-cascader>
</el-form-item>
<el-form-item label="领料人" prop="leasePerson">
<el-input
@ -66,6 +57,7 @@
/>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
@ -102,7 +94,7 @@
<el-table-column
label="当前库存"
align="center"
prop="purchaseNum"
prop="storageNum"
:show-overflow-tooltip="true"
>
</el-table-column>
@ -112,22 +104,10 @@
prop="preNum"
:show-overflow-tooltip="true"
/>
<el-table-column
label="已领数量"
align="center"
prop="purchasePrice"
:show-overflow-tooltip="true"
/>
<el-table-column
label="管理模式"
align="center"
prop="purchasePrice"
:show-overflow-tooltip="true"
/>
<el-table-column
label="出库数量"
align="center"
prop="purchasePrice"
prop="alNum"
:show-overflow-tooltip="true"
/>
<el-table-column
@ -146,6 +126,7 @@ import {
uploadPurchaseFile,
getPurchaseFileList,
} from "@/api/purchase/goodsAccept";
import { getApplyInfo, getListProject, getListUnite } from "@/api/lease/apply";
import { getToken } from "@/utils/auth";
export default {
name: "QueryTools",
@ -175,44 +156,91 @@ export default {
},
data() {
return {
fixCodeList: ["否", "是"],
//ID
taskId: "",
//
loading: true,
//
taskInfo: {},
//
uniteList: [],
//
projectList: [],
//
equipmentList: [],
unitId: null,
projectId: null,
//
open: false,
rowData: {},
maForm: {},
maForm: {
unitId: undefined,
projectId: undefined,
},
selectTreeProps: {
children: "children",
label: "name",
// multiple: false,
value: "id",
// multiple: true,
},
};
},
computed: {},
mounted() {
this.taskId = this.queryTaskId;
this.id = this.queryId;
this.projectInfoList();
this.getTaskInfo();
},
methods: {
/** 租赁单位和工程-下拉选 */
projectInfoList() {
getListUnite({ id: null }).then((response) => {
this.uniteList = response.data;
});
getListProject({ id: null }).then((response) => {
this.projectList = response.data;
});
},
//-
getTaskInfo() {
this.loading = true;
getApplyInfo({ taskId: this.taskId, id: this.id }).then((response) => {
this.taskInfo = response.data;
this.equipmentList = response.data.purchaseCheckDetailsList;
getApplyInfo(this.id).then((response) => {
this.maForm = response.data.leaseApplyInfo;
this.maForm.unitId = response.data.leaseApplyInfo.leaseUnitId;
this.maForm.projectId = response.data.leaseApplyInfo.leaseProjectId;
this.unitId = this.treeParentsById(this.uniteList, this.maForm.unitId);
this.projectId = this.treeParentsById(
this.projectList,
this.maForm.projectId
);
this.equipmentList = response.data.leaseApplyDetailsList;
this.loading = false;
});
},
//
treeParentsById(list, id) {
for (let i in list) {
if (list[i].id == id) {
//value
return [list[i].id];
}
if (list[i].children) {
let node = this.treeParentsById(list[i].children, id);
if (node !== undefined) {
//
node.unshift(list[i].id);
return node;
}
}
}
},
/** 导出按钮操作 */
handleExport() {
this.download(
"/material/purchase_check_info/exportDetails",
{ taskId: this.taskId },
`新购到货详情_${new Date().getTime()}.xlsx`
"/material/lease_apply_info/exportDetails",
{ id: this.id },
`领料申请详情_${new Date().getTime()}.xlsx`
);
},
},

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff