领料申请发布,标签管理,综合查询

This commit is contained in:
hongchao 2025-03-07 11:32:13 +08:00
parent 0f69acdf26
commit bd8a01ee1a
6 changed files with 462 additions and 21 deletions

View File

@ -104,6 +104,24 @@ export function getOutRecordListApi(query) {
})
}
// 待报废详情查询
export function getToScrapInputListApi(query) {
return request({
url: '/material/complex_query/getScrapList',
method: 'get',
params: query
})
}
// 已审核详情查询
export function getAuditInputListApi(query) {
return request({
url: '/material/complex_query/getScrapAuditList',
method: 'get',
params: query
})
}
// 获取电子标签详情
export function getListTag(query) {
return request({
@ -122,8 +140,14 @@ export function getOutRecordListApi(query) {
})
}
// 获取一级设备类型下拉框
export function getOptionListApi(query) {
return request({
url: '/material/ma_type/getListLevel',
method: 'get',
params: query
})
}

View File

@ -111,7 +111,146 @@
@pagination="getList"
/>
<!-- 弹框 -->
<el-dialog title="业务联系单" :visible.sync="dialogVisible" width="46%">
<div id="print-content" style="padding: 0 30px">
<span></span>
<!-- 标题 -->
<div style="text-align: center; font-size: 16px">
<h3 style="font-size: 25px">{{ dialogForm.impUnitName }}</h3>
<h2 style="font-size: 35px; margin: 0 20%; display: flex; justify-content: space-around; align-items: center">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</h2>
</div>
<div
style="display: flex; justify-content: space-between; align-items: center; line-height: 1.9; padding: 0 15px"
>
<span style="text-decoration: underline">{{ dialogForm.leaseProject }}</span>
<span>
<span style="text-decoration: underline">{{ dialogForm.code }}</span>
</span>
</div>
<!-- 内容 -->
<div style="border: 3px solid #000; min-height: 800px; line-height: 1.9; position: relative">
<div style="font-weight: 800; border-bottom: 1px solid #888; display: flex">
<div style="width: 50%; padding-left: 10px">主送单位{{ dialogForm.leaseUnit }}</div>
<div style="width: 50%; padding-left: 10px; border-left: 1px solid #888">
抄送单位{{ dialogForm.leaseUnit }}
</div>
</div>
<!-- 内容 -->
<div style="padding-left: 10px; min-height: 300px">
<div>联系内容</div>
<div style="text-indent: 2em">
因在
<span style="font-weight: 800">
{{ dialogForm.maTypeNames }}
</span>
进行架线施工需要现需领用以下工具器详见附件一
</div>
</div>
<!-- 说明 -->
<div style="padding-left: 10px; min-height: 200px">
<div>说明</div>
<div>{{ '第一项目管理部(合肥肥东)' }}</div>
<div>项目部材料站站长联系人{{ '徐青松' }} {{ '15234213324' }}</div>
<div>项目部技术联系人{{ '杨金勇' }} {{ '17832421245' }}</div>
<div>领取人员{{ dialogForm.leaseUnit }} {{ dialogForm.leasePerson }}{{ dialogForm.phone }}</div>
</div>
<div
style="
width: 100%;
display: flex;
border-top: 1px solid #888;
border-bottom: 1px solid #888;
position: absolute;
bottom: 90px;
right: 0;
"
>
<div style="width: 35%; padding-left: 10px">主管{{ '' }}</div>
<div style="width: 43%; padding-left: 10px; border-left: 1px solid #888">
联系{{ dialogForm.leasePerson }} {{ dialogForm.phone }}
</div>
<div style="width: 22%; padding-left: 10px; border-left: 1px solid #888">
{{ handleTimeFormat(dialogForm.supplierTime) }}
</div>
</div>
<div
style="
width: 100%;
display: flex;
border-top: 1px solid #888;
border-bottom: 1px solid #888;
position: absolute;
bottom: 0;
right: 0;
"
>
<div style="width: 50%; padding-left: 10px">签复</div>
<div
style="
width: 50%;
padding-left: 100px;
border-left: 1px solid #888;
display: flex;
justify-content: space-around;
align-items: center;
"
>
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
<!-- 附件 -->
<div style="margin-top: 100px">
<div style="font-size: 20px; padding-left: 40px; line-height: 1.9">
附件一{{ dialogForm.leaseProject }}
<span style="margin-left: 20px">{{ dialogForm.code }}</span>
号附件
</div>
<div></div>
</div>
<table border="1" style="width: 100%; border-collapse: collapse">
<thead>
<tr>
<th style="width: 55px; text-align: center">序号</th>
<th
v-for="(column, index) in dialogColumns"
:key="column.prop"
:style="{ width: column.width, textAlign: 'center' }"
>
{{ column.label }}
</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, rowIndex) in dialogList" :key="rowIndex">
<td style="text-align: center">{{ rowIndex + 1 }}</td>
<td v-for="(column, colIndex) in dialogColumns" :key="colIndex" :style="{ textAlign: 'center' }">
{{ row[column.prop] }}
</td>
</tr>
</tbody>
</table>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="print"> </el-button>
<el-button type="primary" @click="">查看PDF</el-button>
<el-button @click="dialogVisible = false"> </el-button>
</span>
</el-dialog>
</div>
@ -126,6 +265,7 @@ import {
import {
getLeasePublishList,
} from "@/api/leasePublish/index";
import { getLeaseTask, getCodePDF } from '@/api/business/index'
import vueEasyPrint from "vue-easy-print";
import printJS from 'print-js';
@ -164,6 +304,19 @@ export default {
taskStatus: null, //
},
dialogVisible: false, //
dialogForm: {
proName: '', //
code: '' //
},
dialogColumns: [
{ label: '名称', prop: 'maTypeName', width: '150px' },
{ label: '规格', prop: 'typeName', width: '150px' },
{ label: '单位', prop: 'unitName', width: '60px' },
{ label: '数量', prop: 'preNum', width: '60px' },
{ label: '备注', prop: 'remark', width: '' }
],
dialogList: []
};
},
created() {
@ -296,6 +449,54 @@ export default {
}
},
//
async handleLld(row) {
console.log('🚀 ~ getDialogContent ~ row:', row.taskId)
const loading = this.$loading({
lock: true,
text: '加载中...'
})
try {
//
const res = await getLeaseTask(row.id)
console.log('🚀 ~ getDialogContent ~ res:', res)
// PDF
const PDFres = await getCodePDF(row.taskId)
console.log('🚀 ~ getDialogContent ~ res:', PDFres)
this.dialogVisible = true
this.dialogForm = {
...res.data.leaseApplyInfo,
pdfUrl: PDFres.data.url
}
this.dialogList = res.data.leaseApplyDetailsList
loading.close()
} catch (error) {
console.log('🚀 ~ 获取弹框内容 ~ error:', error)
loading.close()
}
},
// 2021-09-01 20210901
handleTimeFormat(time) {
if (time) {
return time.replace(/-/g, '年').replace(/-/g, '月') + '日'
}
return ''
},
//
print() {
printJS({
printable: 'print-content',
type: 'html', //
// targetStyles: ['*'], //
scanStyles: false, //
// css: [
// 'https://unpkg.com/element-ui/lib/theme-chalk/index.css' // Element UI
// ],
maxWidth: '1400'
//
})
},
},

View File

@ -282,21 +282,30 @@ export default {
// this.$modal.msgError("");
// return;
// }
const infos={'idList':this.idList,'taskIdList':this.taskIdList}
let idLstTemp = [];
let taskIdListTemp = [];
idLstTemp = idLstTemp.concat(row.idList);
taskIdListTemp = taskIdListTemp.concat(row.taskIdList);
const infos={'idList':idLstTemp,'taskIdList':taskIdListTemp}
this.$modal.confirm('是否确认通过?')
.then(function() {
return ledgerApprove(infos)
}).then(() => {
this.$modal.msgSuccess('入库成功')
this.$modal.msgSuccess('通过成功')
this.getTopData();
this.getList()
//
this.$refs.multipleTable.clearSelection();
}).catch(() => {});
},
//
reject(row) {
this.checkResult = "不合格";
this.confirmShow = true;
this.idList = [];
this.taskIdList = [];
this.idList = this.idList.concat(row.idList);
this.taskIdList = this.taskIdList.concat(row.taskIdList);
// this.$modal.confirm('')
// .then(function() {
// return partTypeReject(infos)

View File

@ -57,6 +57,17 @@
placeholder="请选择工程名称"
></el-cascader> -->
</el-form-item>
<el-form-item >
<el-select v-model="queryParams.firstTypeIdList" multiple placeholder="请选择一级设备类型" collapse-tags>
<el-option
v-for="item in optionList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="typeName">
<el-input
v-model="queryParams.typeName"
@ -155,7 +166,7 @@
<script>
import {
getOutRecordListApi
getOutRecordListApi,getOptionListApi,
} from '@/api/stquery/stquery';
import {
getProjectList,
@ -207,8 +218,11 @@ export default {
proId: null,
typeName: null, //
typeModelName: null, //
outStyle:null
outStyle:null,
companyId:null,
firstTypeIdList:[]
},
optionList: []
}
},
created() {
@ -219,6 +233,7 @@ export default {
initSelectData() {
this.GetUnitData()
this.GetProData()
this.getOptionListApi()
},
/** 转换菜单数据结构 */
normalizer(node) {
@ -257,6 +272,17 @@ export default {
this.proList = res.data
this.queryParams.proId=null
},
async getOptionListApi() {
const res = await getOptionListApi()
if (res.code == 200) {
this.optionList = res.data.map((item) => {
return {
value: item.typeId,
label: item.typeName,
}
}
)}
},
proChange(val){
// if(val&&val.length>0){
// this.queryParams.proId=this.projectId[this.projectId.length - 1]
@ -282,6 +308,7 @@ export default {
outStyle: this.queryParams.outStyle,
typeName: this.queryParams.typeName,
typeModelName: this.queryParams.typeModelName,
firstTypeIdList: this.queryParams.firstTypeIdList,
startTime: this.queryParams.time && this.queryParams.time[0],
endTime: this.queryParams.time && this.queryParams.time[1],
pageSize: this.queryParams.pageSize,
@ -315,6 +342,7 @@ export default {
this.queryParams.time=[]
this.unitId=[]
this.projectId=[]
this.queryParams.firstTypeIdList=[]
this.resetForm('queryForm')
this.handleQuery()
},

View File

@ -127,7 +127,7 @@
</el-table-column>
<el-table-column label="待报废数量" align="center" prop="pendingScrapNum" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span class="clickText" @click="openTestedRecords(scope.row)">
<span class="clickText" @click="openToScrapRecords(scope.row)">
{{ scope.row.pendingScrapNum }}
</span>
<!-- 否则直接显示数字 -->
@ -139,7 +139,7 @@
</el-table-column>
<el-table-column label="已审核报废数量" align="center" prop="scrapNum" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span class="clickText" @click="openTestedRecords(scope.row)">
<span class="clickText" @click="openAuditedRecords(scope.row)">
{{ scope.row.scrapNum }}
</span>
<!-- 否则直接显示数字 -->
@ -446,6 +446,108 @@
/>
</el-dialog>
<!-- 待报废设备弹窗-->
<el-dialog :title="title" :visible.sync="openToScrapRecord" width="1200px" append-to-body>
<el-form :model="dialogToScrapQuery" ref="dialogToScrapQuery" size="small" :inline="true" label-width="80px">
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="dialogToScrapQuery.keyWord"
placeholder="请输入关键字"
clearable :maxlength="20"
style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleDialogToScrapQuery"
>查询</el-button>
</el-form-item>
<el-form-item>
<el-button
icon="el-icon-download"
size="mini"
@click="handleDialogToScrapExport"
>导出</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="toScrapRecordList">
<el-table-column label="序号" align="center" width="80" type="index"
:index="indexContinuation(dialogToScrapQuery.pageNum, dialogToScrapQuery.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="buyPrice" :show-overflow-tooltip="true"/>
<el-table-column label="设备编码" align="center" prop="maCode" :show-overflow-tooltip="true"/>
<el-table-column label="报废人员" align="center" prop="scrapBy" :show-overflow-tooltip="true"/>
<el-table-column label="审核人员" align="center" prop="auditBy" :show-overflow-tooltip="true"/>
<el-table-column label="报废时间" align="center" prop="scrapTime" :show-overflow-tooltip="true"/>
<el-table-column label="报废类型" align="center" prop="scrapType" :show-overflow-tooltip="true"/>
</el-table>
<pagination
v-show="dialogToScrapTotal > 0"
:total="dialogToScrapTotal"
:page.sync="dialogToScrapQuery.pageNum"
:limit.sync="dialogToScrapQuery.pageSize"
@pagination="getToScrapRecords"
/>
</el-dialog>
<!-- 已审核报废设备弹窗-->
<el-dialog :title="title" :visible.sync="openAuditedRecord" width="1200px" append-to-body>
<el-form :model="dialogAuditedQuery" ref="dialogAuditedQuery" size="small" :inline="true" label-width="80px">
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="dialogAuditedQuery.keyWord"
placeholder="请输入关键字"
clearable :maxlength="20"
style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleDialogAuditedQuery"
>查询</el-button>
</el-form-item>
<el-form-item>
<el-button
icon="el-icon-download"
size="mini"
@click="handleDialogAuditedExport"
>导出</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="auditedRecordList">
<el-table-column label="序号" align="center" width="80" type="index"
:index="indexContinuation(dialogAuditedQuery.pageNum, dialogAuditedQuery.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="buyPrice" :show-overflow-tooltip="true"/>
<el-table-column label="设备编码" align="center" prop="maCode" :show-overflow-tooltip="true"/>
<el-table-column label="报废人员" align="center" prop="scrapBy" :show-overflow-tooltip="true"/>
<el-table-column label="审核人员" align="center" prop="auditBy" :show-overflow-tooltip="true"/>
<el-table-column label="审核时间" align="center" prop="auditTime" :show-overflow-tooltip="true"/>
<el-table-column label="报废类型" align="center" prop="scrapType" :show-overflow-tooltip="true"/>
</el-table>
<pagination
v-show="dialogAuditedTotal > 0"
:total="dialogAuditedTotal"
:page.sync="dialogAuditedQuery.pageNum"
:limit.sync="dialogAuditedQuery.pageSize"
@pagination="getAuditedRecords"
/>
</el-dialog>
</div>
</template>
@ -460,7 +562,7 @@
// import {getRecords} from "@/api/claimAndRefund/secondStore";
import {
getRetainedEquipmentListApi, getRetainedEquipmentListNoPageApi,getStorageInfoListApi,getUserRecordListApi,getRepairRecordListApi,
getPurchaseRecordListApi,getRepairInputListApi
getPurchaseRecordListApi,getRepairInputListApi,getToScrapInputListApi,getAuditInputListApi,
} from '@/api/stquery/stquery';
export default {
name: '',
@ -540,6 +642,26 @@ export default {
testedRecordList: [], //
dialogTestedTotal: 0,
//
openToScrapRecord: false,
dialogToScrapQuery: {
pageNum: 1,
pageSize: 10,
keyWord: undefined,
},
toScrapRecordList: [], //
dialogToScrapTotal: 0,
//
openAuditedRecord: false,
dialogAuditedQuery: {
pageNum: 1,
pageSize: 10,
keyWord: undefined,
},
auditedRecordList: [], //
dialogAuditedTotal: 0,
}
},
created() {
@ -792,6 +914,63 @@ export default {
`综合查询_修试后入库设备_${new Date().getTime()}.xlsx`,
)
},
//
openToScrapRecords(row) {
this.openToScrapRecord = true
this.dialogToScrapQuery.typeId= row.typeId
this.dialogToScrapQuery.pageNum = 1;
this.dialogToScrapQuery.keyWord = "";
this.getToScrapRecords()
},
/** 查询待报废设备列表 */
getToScrapRecords() {
getToScrapInputListApi(this.dialogToScrapQuery).then((response) => {
this.toScrapRecordList = response.data.rows
this.dialogToScrapTotal = response.data.total
})
},
/** 搜索待报废按钮操作 */
handleDialogToScrapQuery() {
this.dialogToScrapQuery.pageNum = 1
this.getToScrapRecords()
},
handleDialogToScrapExport() {
this.download(
'material/complex_query/exportScrapList',
{...this.dialogToScrapQuery},
`综合查询_待报废设备_${new Date().getTime()}.xlsx`,
)
},
//
openAuditedRecords(row) {
this.openAuditedRecord = true
this.dialogAuditedQuery.typeId= row.typeId
this.dialogAuditedQuery.pageNum = 1;
this.dialogAuditedQuery.keyWord = "";
this.getAuditedRecords()
},
/** 查询已审核报废设备列表 */
getAuditedRecords() {
getAuditInputListApi(this.dialogAuditedQuery).then((response) => {
this.auditedRecordList = response.data.rows
this.dialogAuditedTotal = response.data.total
})
},
/** 搜索已审核报废按钮操作 */
handleDialogAuditedQuery() {
this.dialogAuditedQuery.pageNum = 1
this.getAuditedRecords()
},
handleDialogAuditedExport() {
this.download(
'material/complex_query/exportScrapAuditList',
{...this.dialogAuditedQuery},
`综合查询_已审核报废设备_${new Date().getTime()}.xlsx`,
)
},
},
}
</script>

View File

@ -274,7 +274,7 @@
class="title"
style="text-align: center; font-weight: 450; font-size: 18px; "
>
安徽顺凯有限公司
安徽顺凯检测技术有限公司
</div>
<div
class="title"
@ -300,7 +300,7 @@
"
>
<span >试样名称</span>
<span style="margin-left: 80px;">{{"攀登自锁器"}}</span>
<span style="margin-left: 80px;">{{this.tagInfo.materialName}}</span>
</div>
</div>
@ -320,7 +320,7 @@
"
>
<span >规格型号</span>
<span style="margin-left: 80px;">{{"1.5T"}}</span>
<span style="margin-left: 80px;">{{this.tagInfo.materialModel}}</span>
</div>
</div>
@ -340,7 +340,7 @@
"
>
<span >编号</span>
<span style="margin-left: 80px;">{{"W204-20648"}}</span>
<span style="margin-left: 80px;">{{this.tagInfo.maCode}}</span>
</div>
</div>
@ -361,7 +361,7 @@
"
>
<span >本次检验日期</span>
<span style="margin-left: 80px;">{{"2024-8-02"}}</span>
<span style="margin-left: 80px;">{{this.tagInfo.thisCheckTime}}</span>
</div>
</div>
@ -383,7 +383,7 @@
"
>
<span >下次检验日期</span>
<span style="margin-left: 80px;">{{"2025-7-02"}}</span>
<span style="margin-left: 80px;">{{this.tagInfo.nextCheckTime}}</span>
</div>
</div>
@ -405,7 +405,7 @@
"
>
<span >试验人</span>
<span style="margin-left: 80px;">{{"张三"}}</span>
<span style="margin-left: 80px;">{{this.tagInfo.checkMan}}</span>
</div>
</div>
@ -426,7 +426,7 @@
"
>
<span >检测结果</span>
<span style="margin-left: 80px;">{{"合格"}}</span>
<span style="margin-left: 80px;">{{this.tagInfo.inspectStatus}}</span>
</div>
</div>
@ -522,7 +522,7 @@ export default {
this.tagInfo = response.data[0]
}
});
this.isJj = 0;
this.isJj = this.tagInfo.isJj;
this.$nextTick(() => {
let canvas = null
if(this.isJj==null){
@ -533,10 +533,10 @@ export default {
console.log("xxxxxxxxx",canvas)
if (canvas!=null && this.isJj==0) {
this.chapter('机具检验专用章', '安徽送电工程有限公司机具(物流)分公司', canvas);
this.chapter('机具检验专用章', '安徽送电工程有限公司机具(物流)分公司', canvas);
}
if (canvas!=null && this.isJj==1) {
this.chapter('检验专用章', '安徽顺凯检测有限公司', canvas);
this.chapter('检验专用章', '安徽顺凯检测技术有限公司', canvas);
}
});
},