bonus-ui/src/views/material/lease/outBound/index.vue

1086 lines
45 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<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"
>
<!-- v-for 和 v-if 尽量不要同时使用 -->
<el-option
v-for="dict in dict.type.lease_task_status"
v-show="dict.value != 1 && dict.value != 2"
: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-table v-loading="loading" :data="typeList" border>
<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 align="center" width="100" label="申请时间" prop="createTime" />
<el-table-column label="申请人" width="100" 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"
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="140px"
: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="preCountNum"
width="80px"
:show-overflow-tooltip="true"
></el-table-column>
<el-table-column
label="已出库数量"
align="center"
prop="alNum"
width="90px"
: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" width="120px" :show-overflow-tooltip="true">
<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="270" 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="handleOut(scope.row)"
v-if="scope.row.taskStatus != 4"
>
出库
</el-button>
<el-button size="mini" type="warning" @click="handleLld(scope.row)">领料单</el-button>
<el-button
size="mini"
type="warning"
@click="handlePrint(scope.row)"
v-if="scope.row.taskStatus == 4"
>
出库检验单
</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="出库" :visible.sync="showOutInfo" width="1200px" append-to-body>
<el-form
:model="queryOutInfo"
ref="queryFormOutInfo"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item prop="keyWord">
<el-input v-model="queryOutInfo.keyWord" placeholder="请输入规格型号" clearable maxlength="20" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQueryOutInfo">
查询
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQueryOutInfo">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="getListOutInfo" width="600px" height="450">
<el-table-column label="类型名称" align="center" prop="maTypeName" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="center" prop="typeName" :show-overflow-tooltip="true" />
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true" />
<el-table-column label="待出库数量" align="center" prop="outNum" :show-overflow-tooltip="true" />
<el-table-column label="已出库数量" align="center" prop="alNum" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="primary"
@click="codeOut(scope.row)"
v-if="scope.row.manageType == 0 && scope.row.outNum != 0"
>
编码出库
</el-button>
<el-button
size="mini"
type="primary"
v-if="scope.row.manageType == 1 && scope.row.outNum != 0"
@click="numOut(scope.row)"
>
数量出库
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="dialogTotal > 0"
:total="dialogTotal"
:page.sync="queryOutInfo.pageNum"
:limit.sync="queryOutInfo.pageSize"
@pagination="getDialogList"
/>
</el-dialog>
<!-- 查看弹窗 -->
<el-dialog title="查看" :visible.sync="showOutView" width="1200px" append-to-body>
<el-form
:model="queryOutView"
ref="queryFormOutInfo"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item prop="keyWord">
<el-input v-model="queryOutView.keyWord" placeholder="请输入规格型号" clearable maxlength="20" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQueryOutView">
查询
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQueryOutView">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="getListOutInfo" width="600px" height="450">
<el-table-column label="类型名称" align="center" prop="maTypeName" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="center" prop="typeName" :show-overflow-tooltip="true" />
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true" />
<el-table-column label="待出库数量" align="center" prop="outNum" :show-overflow-tooltip="true" />
<el-table-column label="已出库数量" align="center" prop="alNum" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="ViewTotal > 0"
:total="ViewTotal"
:page.sync="queryOutView.pageNum"
:limit.sync="queryOutView.pageSize"
@pagination="getListView"
/>
</el-dialog>
<!-- 编码出库 -->
<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 v-loading="loadingTwo" :data="outCodeList" height="500" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" width="80" type="index">
<!-- <template slot-scope="scope">
<span>{{
(outQuery.pageNum - 1) * 10 + scope.$index + 1
}}</span>
</template> -->
</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>
<!-- 验收单弹窗 -->
<el-dialog :title="title" :visible.sync="openPrint" width="1100px" 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; flex-wrap: wrap">
<div class="item" style="width: 50%; flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
<span>领用工程:</span>
{{ checkDataInfo.leaseProject }}
</div>
<div class="item" style="width: 50%; 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: 1000px; padding-bottom: 1px"
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" />
<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" 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: 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="margin-top: 20px; padding: 1px">
<el-table-column label="序号" align="center" type="index" />
<el-table-column label="类型名称" align="center" prop="maTypeName" />
<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: 25%">审核:</div>
<div
style="width: 75%; 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: 80px; transform: rotate(-90deg); max-width: 100%"
alt=""
/>
</div>
</div>
</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>
</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="数量出库" :visible.sync="openNum" width="1200px" append-to-body>
<el-form :model="numOutForm" ref="numOutForm" size="small" :inline="true" label-width="100px">
<!-- <span style="margin-right: 50px;">
待出库数量:{{outNum}}
</span>-->
<el-form-item label="请输入车牌号" prop="carCode">
<el-input v-model="numOutForm.carCode" maxlength="20" />
</el-form-item>
<span style="margin-right: 50px; color: red">部分设备出库时,需进行装车,需记录车牌号码</span>
<br />
<el-form-item label="备注" prop="remark">
<el-input v-model="numOutForm.remark" maxlength="50" />
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" size="mini" @click="saveNumOut">出库</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="outNumList" height="500">
<el-table-column label="序号" align="center" type="index" />
<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="unitName" :show-overflow-tooltip="true" />
<el-table-column label="待出库数量" align="center" prop="outNum" :show-overflow-tooltip="true" />
<el-table-column label="已出库数量" align="center" prop="alNum" :show-overflow-tooltip="true" />
<el-table-column label="出库数量" align="center">
<template slot-scope="scope">
<el-input
v-model.number="scope.row.inputNum"
controls-position="right"
type="number"
style="width: 100%"
clearable
placeholder="请输入出库数量"
:min="0"
@input="checkNum(scope.row)"
></el-input>
</template>
</el-table-column>
</el-table>
</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" width="600px" height="450">
<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, getApplyInfo, getCheckInfo } from '@/api/lease/apply'
import { outInfoList, getDetailsByTypeId, submitOut, submitNumOut } from '@/api/lease/out'
import vueEasyPrint from 'vue-easy-print'
// import chapter from '../../../../utils/chapter';
import printJS from 'print-js'
export default {
name: 'OutBound',
dicts: ['lease_task_status'],
components: { vueEasyPrint },
data() {
return {
// 遮罩层
loading: true,
loadingTwo: false,
//查看的显示
showOutView: false,
//出库的显示
showOutInfo: false,
//编码出库的显示
openCode: false,
open: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
ViewTotal: 0,
outTotal: 0,
dialogTotal: 0,
// 弹出层标题
title: '',
typeList: [],
//出库数量
getListOutInfo: [],
outCodeList: [],
outNumList: [], //数量弹窗表格数据
maCodeList: [],
// 日期范围
dateRange: [],
statusDataRange: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
time: null, //申请时间
taskStatus: '',
keyWord: ''
},
//出库的搜索栏
queryOutInfo: {
pageNum: 1,
pageSize: 10
},
//查看的搜索栏
queryOutView: {
pageNum: 1,
pageSize: 10
},
outQuery: {
pageNum: 1,
pageSize: 10,
maCode: ''
},
form: {
remark: ''
},
// 表单校验
rules: {},
openPrint: false,
printData: {},
printTableData: [],
checkDataInfo: {},
outNum: 0,
outObj: {},
parentIdTemp: undefined,
//领料单
leaseApplyDetails: [],
// 领料任务详情数据
leaseApplyData: {},
openNum: false, //数量弹窗开关
numOutForm: {
//数量表单-车牌号
carCode: '',
remark: ''
},
titleView: '',
showView: false,
getListViewInfo: [],
idTemp: '',
publishTask: ''
}
},
created() {
if (this.$route.query.code) {
this.queryParams.keyWord = this.$route.query.code
}
this.getList()
},
methods: {
// 多选框选中数据
handleSelectionChange(selection) {
this.maCodeList = []
this.ids = selection.map(item => item.id)
selection.forEach(item => {
this.maCodeList.push({
typeId: item.typeId,
manageType: 0,
leaseType: 0,
maId: item.maId,
maCode: item.maCode,
parentId: this.parentIdTemp,
outNum: 1,
publishTask: this.publishTask
})
})
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],
pageSize: this.queryParams.pageSize,
pageNum: this.queryParams.pageNum
}
if (!this.queryParams.taskStatus) {
params.statusList = [3, 4, 5]
} else {
params.statusList = [this.queryParams.taskStatus]
}
getListLeaseApply(this.addDateRange(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.taskStatus = ''
this.queryParams.keyWord = ''
this.handleQuery()
},
/** 查看按钮操作 */
handleView(row) {
const { id, publishTask } = row
this.publishTask = publishTask
this.title = '查看'
this.showOutView = true
this.queryOutView.id = row.id
outInfoList(id, { keyWord: this.queryOutView.keyWord, publishTask }).then(response => {
this.getListOutInfo = response.data.leaseApplyDetailsList
// this.loading = false;
})
},
//查看
handleQueryOutView() {
this.queryOutView.pageNum = 1
this.getListView()
},
resetQueryOutView() {
this.queryOutView.keyWord = ''
this.getListView()
},
getListView() {
outInfoList(this.queryOutView.id, {
keyWord: this.queryOutView.keyWord,
publishTask: this.publishTask
}).then(response => {
this.getListOutInfo = response.data.leaseApplyDetailsList
// this.dialogTotal = response.
// this.loading = false;
})
},
/** 出库查询列表 */
getDialogList() {
outInfoList(this.queryOutInfo.id, {
keyWord: this.queryOutInfo.keyWord,
publishTask: this.publishTask
}).then(response => {
this.getListOutInfo = response.data.leaseApplyDetailsList
// this.dialogTotal = response.
// this.loading = false;
})
},
//出库搜索按钮
handleQueryOutInfo() {
this.queryOutInfo.pageNum = 1
this.getDialogList()
},
//出库搜索按钮
resetQueryOutInfo() {
this.queryOutInfo.keyWord = ''
this.getDialogList()
},
/** 出库按钮操作 */
handleOut(row) {
const { id, publishTask } = row
this.publishTask = publishTask
this.title = '出库'
this.showOutInfo = true
this.queryOutInfo.id = row.id
outInfoList(id, { keyWord: this.queryOutInfo.keyWord, publishTask }).then(response => {
this.getListOutInfo = response.data.leaseApplyDetailsList
// this.loading = false;
})
},
//数量出库
numOut(row) {
console.log(row, '数量出库当前行数据--')
this.title = '数量出库'
this.openNum = true
this.resetForm('codeOutForm')
this.resetForm('numOutForm')
// console.log(row)
let obj = {}
console.log('row', row)
this.$set(obj, 'taskId', row.taskId)
this.$set(obj, 'id', row.id)
this.$set(obj, 'manageType', 1)
this.$set(obj, 'maId', row.maId)
this.$set(obj, 'parentId', row.parentId)
this.$set(obj, 'typeName', row.typeName)
this.$set(obj, 'typeModelName', row.maTypeName)
this.$set(obj, 'typeId', row.typeId)
this.$set(obj, 'alNum', row.alNum) //已出库数量
this.$set(obj, 'outNum', row.outNum) //待出库数量
this.$set(obj, 'inputNum', 1) //出库数量
this.$set(obj, 'num', row.num) //库存
this.$set(obj, 'unitValue', row.unitValue)
this.$set(obj, 'unitName', row.unitName)
console.log('[obj]', [obj])
this.outNumList = [obj]
},
//编码出库
codeOut(row) {
this.title = '编码出库'
this.openCode = true
// this.resetForm("codeOutForm");
this.resetForm('outQuery')
this.parentIdTemp = row.parentId
this.outNum = row.outNum
this.outQuery.typeId = row.typeId
this.outQuery.maStatus = 1
this.outObj = row
this.handleOutQuery()
},
getCodeList() {
getDetailsByTypeId(this.outQuery).then(response => {
this.outCodeList = response.rows
if (response.total) {
this.outTotal = response.total
}
})
},
handleOutQuery() {
this.outQuery.pageNum = 1
this.getCodeList()
},
resetOutQuery() {
this.outQuery.maCode = ''
this.handleOutQuery()
},
saveCodeOut() {
console.log(this.maCodeList)
console.log(this.outNum)
if (this.maCodeList.length == 0) {
this.$modal.msgError('请先勾选设备编码!')
} else if (this.maCodeList.length > this.outNum) {
this.$modal.msgError('出库编码数量不可大于待出库数量!')
} else {
let param = { leaseOutDetailsList: this.maCodeList }
submitOut(param).then(response => {
this.$modal.msgSuccess('出库成功')
this.openCode = false
this.handleQueryOutInfo()
this.handleQuery()
})
}
},
handleCodeOutQuery() {},
// 表单重置
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('机具检验专用章', '安徽送边电工程有限公司机具(物流)分公司')
}, 200)
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: ['*']
// 其他配置选项
})
},
//领料单打印
print() {
this.$refs.remarksPrintRef.print()
},
codeInfo(row) {
this.showView = true
this.titleView = '查看'
this.getListViewInfo = row.maCodeVoList
},
// /** 导出按钮操作 */
// handleExport(row) {
// this.download(
// "/material/lease_apply_info/exportInfo",
// { ...this.queryParams },
// `领料出库_${new Date().getTime()}.xlsx`
// );
// },
//数量出库保存
saveNumOut() {
this.outNumList[0].carCode = this.numOutForm.carCode
this.outNumList[0].remark = this.numOutForm.remark
this.outNumList[0].leaseType = 0
this.outNumList[0].publishTask = this.publishTask
let param = { leaseOutDetailsList: this.outNumList }
console.log(param, '数量出库时参数')
submitNumOut(param).then(response => {
this.$modal.msgSuccess('出库成功')
this.openNum = false
this.handleQueryOutInfo()
this.handleQuery()
})
},
//输入出库数量
checkNum(row) {
console.log(row)
let maxNum = row.outNum
if (row.unitValue == 1) {
row.inputNum = Number(String(row.inputNum).replace(/[^\d.]/g, ''))
} else {
row.inputNum = Number(String(row.inputNum).replace(/[^\d]/g, ''))
}
if (row.inputNum <= 0) {
row.inputNum = 0
}
if (row.inputNum > row.outNum) {
row.inputNum = maxNum
}
},
printView() {
this.$refs.remarksPrintRefView.print()
},
// 关闭弹窗并刷新页面
closeDialogAndRefresh() {
this.openPrint = false
},
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 = 1
context.strokeStyle = '#ff2f2f'
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 = '#ff5050' // 设置印章单位字体颜色为较浅的红色
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;
}
</style>