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

1387 lines
39 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 label="日期">
<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 label="关键字" 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 label="状态" 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"
v-if="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" row-key="id" 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="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"
: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">
<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="800px"
append-to-body
>
<div style="height: 500px; 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; padding-bottom: 1px"
border
>
<el-table-column label="机具名称" align="center" prop="typeName" width="60px"/>
<el-table-column label="规格型号" align="center" prop="typeModelName" width="60px"/>
<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" width="60px"/>
<el-table-column label="额定载荷KN" align="center" prop="ratedLoad" width="60px"/>
<el-table-column label="试验载荷KN" align="center" prop="testLoad" width="60px"/>
<el-table-column label="持荷时间min" align="center" prop="holdingTime" width="60px"/>
<el-table-column label="试验日期" align="center" prop="testTime" width="50px"/>
<el-table-column label="下次试验日期" align="center" prop="nextTestTime" width="60px"/>
<el-table-column label="检验结论" align="center" prop="checkResult" width="50px"/>
<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: 50%; display: flex; align-items: center;">
<div>
<span>检验单位:</span>
</div>
<div >
<canvas id="canvas" width="180" height="180" style="display: block;"></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="openPrint = false">关 闭</el-button>
</div>
</el-dialog>
<!-- 领料单弹窗 -->
<el-dialog :visible.sync="open" width="800px" 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: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>领料单位:</span>
{{ leaseApplyData.leaseUnit }}
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>工程名称:</span>
{{ leaseApplyData.leaseProject }}
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>时间:</span>
{{ leaseApplyData.createTime }}
</div>
<div
class="item"
style="
width: 50%;
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 type="expand">
<template slot-scope="scope">
<div class="nested-table-container">
<el-table :data="scope.row.maTypeDetails" style="width: 100%">
&lt;!&ndash; 子表格的列 &ndash;&gt;
<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="typeName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="单位"
align="center"
prop="unitName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="预领数量"
align="center"
prop="preNum"
:show-overflow-tooltip="true"
/>
</el-table>
</div>
</template>
</el-table-column>-->
<el-table-column label="规格型号" align="center" prop="typeName" />
<el-table-column label="计量单位" align="center" prop="unitName" />
<el-table-column label="已领数量" align="center" prop="alNum" />
<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-column-->
<!-- label="出库方式"-->
<!-- align="center"-->
<!-- prop="manageTypeName"-->
<!-- />-->
</el-table>
<div
class="fillIn"
style="
margin-top: 30px;
display: flex;
justify-content: space-between;
"
>
<div class="item" style="width: 25%">
<span>审核:</span>
</div>
<div class="item" style="width: 25%">
<span>领料:</span>
</div>
<div class="item" style="width: 25%">
<span>仓库:</span>
</div>
<div class="item" style="width: 25%">
<span>操作人:</span>
</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="1000px"
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 {
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:'',
};
},
created() {
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,
parentId: this.parentIdTemp,
outNum: 1,
});
});
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.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.time = [];
this.resetForm("queryForm");
this.queryParams.keyWord = "";
this.handleQuery();
},
/** 查看按钮操作 */
handleView(row) {
this.title = "查看";
this.showOutView = true;
this.queryOutView.id = row.id;
outInfoList(row.id,{keyWord:this.queryOutView.keyWord}).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}).then((response) => {
this.getListOutInfo = response.data.leaseApplyDetailsList;
// this.dialogTotal = response.
// this.loading = false;
});
},
/** 出库查询列表 */
getDialogList() {
outInfoList(this.queryOutInfo.id,{keyWord:this.queryOutInfo.keyWord}).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) {
this.title = "出库";
this.showOutInfo = true;
this.queryOutInfo.id = row.id;
outInfoList(row.id,{keyWord:this.queryOutInfo.keyWord}).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.clearCanvas();
this.chapter('机具检验专用章', this.checkDataInfo.leaseUnit)
}, 200);
this.openPrint = true;
this.title = "出库检验单";
},
/** 导出按钮操作 */
handleExportCheck() {
this.download(
"/material/lease_apply_info/exportInfo",
{ id:this.idTemp },
`出库检验单_${new Date().getTime()}.xlsx`
);
},
// 清除画布内容的方法
clearCanvas() {
const canvas = document.getElementById("canvas");
if (canvas) {
const context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
}
},
//打开领料单
async handleLld(row) {
this.open = true;
var ids = row.id;
const res = await getApplyInfo(ids);
console.log(res);
this.leaseApplyDetails = res.data.leaseApplyDetailsList;
this.leaseApplyData = res.data.leaseApplyInfo;
console.log(this.leaseApplyData);
},
//出库检验单打印
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;
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.remarksPrintRef.print();
},
chapter(text, companyName) {
let canvas = document.getElementById("canvas");
if(canvas){
let context = canvas.getContext("2d");
//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();
//画五角星
create5star(context, width, height, 20, "#f00", 0);
// 绘制印章名称
context.font = "14px 宋体";
context.textBaseline = "middle"; //设置文本的垂直对齐方式
context.textAlign = "center"; //设置文本的水平对对齐方式
context.lineWidth = 1;
context.strokeStyle = "#f00";
context.strokeText(text, width, height + 50);
// 绘制印章单位
context.translate(width, height); // 平移到此位置,
context.font = "14px 宋体";
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.strokeText(c, 0, 0); // 此点为字的中心点
context.restore();
}
//绘制五角星
function 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>