报废驳回后退料功能开发

This commit is contained in:
BianLzhaoMin 2024-07-03 17:51:15 +08:00
parent a308207b26
commit 41a735b8cb
12 changed files with 1110 additions and 197 deletions

View File

@ -19,8 +19,20 @@ export const auditingPreScrapApi = (data) => {
export const getPreScrapListApi = (data) => { export const getPreScrapListApi = (data) => {
return request.get('/material/scrap/getScrapTaskList', { params: data }) return request.get('/material/scrap/getScrapTaskList', { params: data })
} }
/* 预报废列表驳回退料查询接口 */
export const getScrapReturnDetailsApi = (data) => {
return request.get('/material/scrap/getScrapRefuseList', { params: data })
}
/* 预报废列表驳回退料 编辑退料查询接口 */
export const getScrapEditReturnApi = (data) => {
return request.get('/material/scrap/getScrapRefuseMaCodeList', { params: data })
}
/* 预报废列表驳回退料 保存接口 */
export const getScrapReturnSaveApi = (data) => {
return request.post('/material/scrap/setNumOrCodeBack', data)
}
/* 报废列表提交报废接口 */ /* 报废列表提交报废接口 */
export const submitScrapApi = (data) => { export const submitScrapApi = (data) => {
return request.post('/material/scrap/submitScrapTask', data) return request.post('/material/scrap/submitScrapTask', data)
} }

View File

@ -95,7 +95,7 @@
> >
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<el-switch <el-switch
v-model="scope.row.status" v-model="row.status"
active-value="0" active-value="0"
inactive-value="1" inactive-value="1"
@change="changeStatus(row)" @change="changeStatus(row)"

View File

@ -246,7 +246,11 @@
<!-- 弹框内层内容 --> <!-- 弹框内层内容 -->
<template slot="innerContent"> <template slot="innerContent">
<el-form :model="scrapInfoParams"> <el-form
:model="scrapInfoParams"
ref="scrapInfoRef"
:rules="scrapInfoRules"
>
<el-form-item label="报废原因:"> <el-form-item label="报废原因:">
<el-input <el-input
v-model="scrapInfoParams.scrapReason" v-model="scrapInfoParams.scrapReason"
@ -256,7 +260,7 @@
style="width: 350px" style="width: 350px"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="损坏原因:"> <el-form-item label="损坏原因:" prop="scrapType">
<el-radio-group <el-radio-group
style="width: 350px" style="width: 350px"
v-model="scrapInfoParams.scrapType" v-model="scrapInfoParams.scrapType"
@ -266,11 +270,16 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="损坏照片:" class="upload-box"> <el-form-item
label="损坏照片:"
class="upload-box"
prop="fileList"
required
>
<!-- 报废图片 --> <!-- 报废图片 -->
<Upload <Upload
style="width: 350px" style="width: 350px"
:file-list="fileList" :file-list="scrapInfoParams.fileList"
:action-url="actionUrl" :action-url="actionUrl"
:limit="3" :limit="3"
:multiple="true" :multiple="true"
@ -356,8 +365,8 @@ export default {
scrapReason: '', // scrapReason: '', //
scrapType: '', // scrapType: '', //
fileUrl: '', fileUrl: '',
},
fileList: [], fileList: [],
},
imgUrlList: [], imgUrlList: [],
actionUrl: process.env.VUE_APP_BASE_API + '/system/sys/file/upload', actionUrl: process.env.VUE_APP_BASE_API + '/system/sys/file/upload',
numReturnList: [], numReturnList: [],
@ -380,6 +389,18 @@ export default {
backReceiveRecordWebPt, backReceiveRecordWebPt,
currentRows: null, currentRows: null,
scrapAll: false, scrapAll: false,
scrapInfoRules: {
scrapType: {
required: true,
message: '请选择损坏原因',
trigger: 'change',
},
fileList: {
required: true,
message: '请上传图片',
trigger: 'change',
},
},
} }
}, },
created() { created() {
@ -603,6 +624,14 @@ export default {
if (bfNum > 0) { if (bfNum > 0) {
detailsInfo.backNum = bfNum detailsInfo.backNum = bfNum
detailsInfo.backStatus = 3 detailsInfo.backStatus = 3
if (
!this.scrapInfoParams.scrapType ||
this.imgUrlList.length === 0
) {
this.$message.error('请编辑报废信息!')
return
}
detailsInfo.scrapReason = this.scrapInfoParams.scrapReason detailsInfo.scrapReason = this.scrapInfoParams.scrapReason
detailsInfo.scrapType = this.scrapInfoParams.scrapType detailsInfo.scrapType = this.scrapInfoParams.scrapType
if (this.imgUrlList.length > 0) { if (this.imgUrlList.length > 0) {
@ -643,14 +672,25 @@ export default {
}, },
// //
handleRemove(file) { handleRemove(file) {
this.imgUrlList = this.imgUrlList.filter( console.log(file, '移除的数据---')
(e) => e !== file.response.data.fileUrl, this.imgUrlList = this.imgUrlList.filter((e) => e !== file.url)
) this.scrapInfoParams.fileList =
this.scrapInfoParams.fileList.filter((e) => e.url !== file.url)
}, },
// //
handleSuccess(res) { handleSuccess(res) {
if (res.code == 200) { if (res.code == 200) {
this.imgUrlList.push(res.data.fileUrl) this.imgUrlList.push(res.data.fileUrl)
console.log(res, '图片上传成功!!')
let fileObj = {
name: res.data.fileName,
url: res.data.fileUrl,
}
this.scrapInfoParams.fileList.push(fileObj)
this.$refs.scrapInfoRef.clearValidate('fileList')
} }
}, },
// //
@ -659,6 +699,8 @@ export default {
}, },
// //
handleSubmitInner() { handleSubmitInner() {
this.$refs.scrapInfoRef.validate((valid) => {
if (valid) {
if (this.dialogConfigReturn.outerTitle === '编码退料') { if (this.dialogConfigReturn.outerTitle === '编码退料') {
if (this.currentRows) { if (this.currentRows) {
console.log(this.currentRows, '当前行信息') console.log(this.currentRows, '当前行信息')
@ -671,7 +713,8 @@ export default {
manageType: 0, manageType: 0,
createBy: sessionStorage.getItem('userId'), createBy: sessionStorage.getItem('userId'),
maId: this.currentRows.maId, maId: this.currentRows.maId,
scrapReason: this.scrapInfoParams.scrapReason, scrapReason:
this.scrapInfoParams.scrapReason,
scrapType: this.scrapInfoParams.scrapType, scrapType: this.scrapInfoParams.scrapType,
fileUrl: '', fileUrl: '',
}, },
@ -705,14 +748,18 @@ export default {
manageType: 0, manageType: 0,
createBy: sessionStorage.getItem('userId'), createBy: sessionStorage.getItem('userId'),
maId: item.maId, maId: item.maId,
scrapReason: this.scrapInfoParams.scrapReason, scrapReason:
this.scrapInfoParams.scrapReason,
scrapType: this.scrapInfoParams.scrapType, scrapType: this.scrapInfoParams.scrapType,
fileUrl: '', fileUrl: '',
} }
}) })
if (this.imgUrlList.length > 0) { if (this.imgUrlList.length > 0) {
arr.map((e) => (e.fileUrl = this.imgUrlList.join(','))) arr.map(
(e) =>
(e.fileUrl = this.imgUrlList.join(',')),
)
} }
let param = { let param = {
taskId: this.sendParamsReturn.taskId, taskId: this.sendParamsReturn.taskId,
@ -729,14 +776,14 @@ export default {
} }
} }
this.dialogConfigReturn.innerVisible = false this.dialogConfigReturn.innerVisible = false
}
})
}, },
// 退 // 退
async handleComplete() { async handleComplete() {
let param1 = { let param1 = {
parentId: this.sendParams.id, parentId: this.sendParams.id,
} }
console.log(param1, '参数1----')
const res1 = await getRecord(param1) const res1 = await getRecord(param1)
if (res1.code == 200) { if (res1.code == 200) {
let param = { let param = {
@ -775,6 +822,7 @@ export default {
this.scrapInfoParams.scrapReason = '' this.scrapInfoParams.scrapReason = ''
this.scrapInfoParams.scrapType = '' this.scrapInfoParams.scrapType = ''
this.scrapInfoParams.fileUrl = '' this.scrapInfoParams.fileUrl = ''
this.scrapInfoParams.fileList = []
this.codeDetails = true this.codeDetails = true
this.imgUrlList = [] this.imgUrlList = []
} }

View File

@ -1,54 +1,75 @@
// 驳回退料页面
export const configReturn = {
export const config = {
handleColShow: true, // 是否显示操作列 handleColShow: true, // 是否显示操作列
pageShow: true, // 是否显示分页组件 pageShow: true, // 是否显示分页组件
isSelShow: true,// 表格是否需要复选框 isSelShow: false,// 表格是否需要复选框
isFormShow: true, // 是否显示表单查询组件 isFormShow: true, // 是否显示表单查询组件
handleWidth: '', // 操作列宽度 handleWidth: '', // 操作列宽度
formLabel: [ formLabel: [
{ f_label: '关键字', f_model: 'keywords', f_type: 'ipt' }, // { f_label: '关键字', f_model: 'keyWord', f_type: 'ipt' },
{ f_label: '类型名称', f_model: 'backUnit', f_type: 'sel', f_selList: [] }, { f_label: '类型名称', f_model: 'typeId', f_type: 'sel', f_selList: [] },
{ f_label: '规格型号', f_model: 'backPro', f_type: 'sel', f_selList: [] }, { f_label: '规格型号', f_model: 'modelId', f_type: 'selCas', f_selList: [], optionProps: { value: 'id', } },
], ],
columnsList: [ columnsList: [
// { t_width: '55px', t_props: '', t_label: '序号' }, // { t_width: '55px', t_props: '', t_label: '序号' },
{ t_width: '', t_props: 'demo', t_label: '类型名称' }, { t_props: 'machineTypeName', t_label: '类型名称' },
{ t_width: '', t_props: '', t_label: '规格型号' }, { t_props: 'specificationType', t_label: '规格型号' },
{ t_width: '', t_props: '', t_label: '数量' }, { t_props: 'typeCode', t_label: '退料数量', t_slot: 'preNum' },
{ t_width: '', t_props: '', t_label: '合格数量' }, { t_props: 'num', t_label: '待退料数量', t_slot: 'num' },
{ t_width: '', t_props: '', t_label: '维修数量' }, // { t_props: 'num', t_label: '合格数量' },
{ t_width: '', t_props: '', t_label: '预报废数量' }, // { t_props: 'num', t_label: '维修数量' },
{ t_width: '', t_props: '', t_label: '状态' }, // { t_props: 'num', t_label: '预报废数量' },
], // { t_props: 'status', t_label: '状态' },
handleBtn: [
{ btn_title: '查看', id: 1 },
{ btn_title: '审核', id: 2 },
], ],
routerParams: ''
} }
export const dialogConfig = { export const dialogConfigReturn = {
outerWidth: '70%', outerWidth: '80%',
outerTitle: '', outerTitle: '',
outerVisible: false, outerVisible: false,
innerWidth: '50%', innerWidth: '30%',
innerTitle: '', innerTitle: '报废信息填写',
innerVisible: false, innerVisible: false,
handleColShow: false, // 是否显示操作列 handleColShow: true, // 是否显示操作列
pageShow: false, // 是否显示分页组件 pageShow: true, // 是否显示分页组件
isSelShow: false,// 表格是否需要复选框 isSelShow: false,// 表格是否需要复选框
isFormShow: true, // 是否显示表单查询组件 isFormShow: true, // 是否显示表单查询组件
handleWidth: '', // 操作列宽度
formLabel: [ formLabel: [
{ f_label: '设备类型', f_model: 'keywords', f_type: 'ipt' }, { f_label: '设备编码', f_model: 'maCode', f_type: 'ipt' },
], ],
columnsList: [ columnsList: [
// { t_width: '55px', t_props: '', t_label: '序号' }, // { t_width: '55px', t_props: '', t_label: '序号' },
{ t_width: '', t_props: 'demo', t_label: '设备类型' }, { t_width: '', t_props: 'machineTypeName', t_label: '设备类型' },
{ t_width: '', t_props: '', t_label: '规格型号' }, { t_width: '', t_props: 'specificationType', t_label: '规格型号' },
{ t_width: '', t_props: '', t_label: '设备编码' }, { t_width: '', t_props: 'maCode', t_label: '设备编码' },
{ t_width: '', t_props: '', t_label: '退料状态' }, { t_width: '', t_props: 'maStatus', t_label: '退料状态' },
],
}
export const dialogConfigReturnDet = {
outerWidth: '80%',
outerTitle: '详情',
outerVisible: false,
innerWidth: '30%',
innerTitle: '报废信息填写',
innerVisible: false,
handleColShow: false, // 是否显示操作列
pageShow: true, // 是否显示分页组件
isSelShow: false,// 表格是否需要复选框
isFormShow: true, // 是否显示表单查询组件
handleWidth: '', // 操作列宽度
formLabel: [
{ f_label: '设备编码', f_model: 'maCode', f_type: 'ipt' },
],
columnsList: [
// { t_width: '55px', t_props: '', t_label: '序号' },
{ t_width: '', t_props: 'typeName', t_label: '设备类型' },
{ t_width: '', t_props: 'typeCode', t_label: '规格型号' },
{ t_width: '', t_props: 'maCode', t_label: '设备编码' },
{ t_width: '', t_props: '', t_label: '退料状态', t_slot: 'type', },
], ],
} }

View File

@ -1,78 +1,308 @@
<template> <template>
<!-- 退料驳回 --> <!-- 报废驳回 -->
<div> <div>
<TableModel <TableModel
:config="config" :config="configReturn"
:sendApi="getScrapReturnDetailsApi"
:sendParams="sendParams" :sendParams="sendParams"
@getTableSelectionChange="getTableSelectionChange" ref="homeTbRef"
> >
<template slot="export"> <template slot="export">
<el-row class="mb8"> <el-row class="mb8">
<el-button type="warning" plain size="mini" <el-button
type="primary"
size="mini"
@click="handleComplete"
>完成退料</el-button >完成退料</el-button
> >
</el-row> </el-row>
</template> </template>
<template slot-scope="{ data }" slot="handle">
<el-button type="text" size="mini" @click="handlePreview(data)" <template slot="preNum" slot-scope="{ data }">
>查看</el-button {{ parseInt(data.preNum) }}
</template>
<template slot="num" slot-scope="{ data }">
{{ parseInt(data.num) }}
</template>
<!-- 列表操作栏 -->
<template slot="handle" slot-scope="{ data }">
<el-button
type="text"
@click="handlePreview(data)"
v-if="data.num == 0"
icon="el-icon-search"
> >
<el-button type="text" size="mini" @click="handleEdit(data)" 查看
>编辑退料</el-button </el-button>
<el-button
type="text"
@click="handleEditReturn(data)"
style="color: #e6a23c"
icon="el-icon-edit-outline"
v-if="data.num > 0"
> >
<el-button type="text" size="mini" @click="handleRevoke(data)" 编辑退料
>撤回</el-button </el-button>
<el-button
type="text"
@click="handleRevoke(data)"
icon="el-icon-circle-close"
style="color: #de3115"
v-if="data.num == 0"
> >
撤回
</el-button>
</template> </template>
</TableModel> </TableModel>
<DialogModel <DialogModel
:dialogConfig="dialogConfig" :dialogConfig="dialogConfigReturn"
@closeDialogOuter="closeDialogOuter" @closeDialogOuter="closeDialogOuter"
@closeDialogInner="closeDialogInner" @closeDialogInner="closeDialogInner"
> >
<template slot="outerContent"> <template slot="outerContent">
<template v-if="dialogConfig.outerTitle === '查看'"> <template
<TableModel :config="dialogConfig" /> v-if="
</template> dialogConfigReturn.outerTitle !== '数量退料' &&
<template v-if="dialogConfig.outerTitle === '编辑退料'"> codeDetails
<TableModel :config="dialogConfig"> "
<template slot="export"> >
<el-row :gutter="10" class="mb8"> <TableModel
<el-button type="success" plain size="mini" v-if="isQuery"
ref="dialogTbRef"
:config="dialogConfigReturn"
@getTableSelectionChange="getTableSelList"
:sendApi="getScrapEditReturnApi"
:sendParams="sendParamsReturn"
>
<template
slot="export"
v-if="dialogConfigReturn.outerTitle === '编码退料'"
><el-row class="mb8">
<el-button
type="success"
size="mini"
@click="handleBatch(1)"
>批量合格</el-button >批量合格</el-button
> >
<el-button type="warning" plain size="mini" <el-button
type="primary"
size="mini"
@click="handleBatch(2)"
>批量维修</el-button >批量维修</el-button
> >
<el-button type="danger" plain size="mini" <el-button
>批量预报废</el-button type="warning"
size="mini"
@click="handleBatch(3)"
>批量报废</el-button
> >
</el-row> </el-row>
</template> </template>
<template slot="handle"> <!-- 列表操作栏 -->
<template slot="handle" slot-scope="{ data }">
<el-button <el-button
type="text"
size="mini" size="mini"
style="color: #95d475" type="success"
>合格</el-button @click="handleSingle(1, data)"
> >
合格
</el-button>
<el-button <el-button
type="text"
size="mini" size="mini"
style="color: #eebe77" type="primary"
>维修</el-button @click="handleSingle(2, data)"
> >
待维修
</el-button>
<el-button <el-button
type="text"
size="mini" size="mini"
style="color: #f89898" type="warning"
>预报废</el-button @click="handleSingle(3, data)"
>
预报废
</el-button>
</template>
</TableModel>
<TableModel
v-else
:sendApi="backReceiveRecordWebPt"
:sendParams="sendParamsReturn"
:config="dialogConfigReturnDet"
>
<template slot="type" slot-scope="{ data }">
<el-tag
v-if="data.backStatus == 1"
size="mini"
type="success"
>合格</el-tag
>
<el-tag
v-if="data.backStatus == 2"
size="mini"
type="warning"
>维修</el-tag
>
<el-tag
v-if="data.backStatus == 3"
size="mini"
type="danger"
>报废</el-tag
> >
</template> </template>
</TableModel> </TableModel>
</template> </template>
<template v-else>
<el-row class="mb8">
<el-button
size="mini"
type="primary"
@click="handleSave()"
v-if="codeDetails"
>
保存
</el-button></el-row
>
<el-table :data="numReturnList" border>
<el-table-column
prop="typeName"
align="center"
label="类型名称"
/>
<el-table-column
prop="type"
align="center"
label="规格型号"
show-overflow-tooltip
/>
<el-table-column
prop="num"
align="center"
label="退料数量"
/>
<el-table-column align="center" label="合格数量">
<template slot-scope="{ row }">
<el-input
style="width: 100px"
placeholder="请输入数量"
v-model="row.hgNum"
v-if="!row.isQuery"
/>
<template v-else>
{{ row.hgNum }}
</template>
</template>
</el-table-column>
<el-table-column align="center" label="待维修数量">
<template slot-scope="{ row }">
<el-input
style="width: 100px"
placeholder="请输入数量"
v-model="row.wxNum"
v-if="!row.isQuery"
/>
<template v-else>
{{ row.wxNum }}
</template>
</template>
</el-table-column>
<el-table-column align="center" label="预报废数量">
<template slot-scope="{ row }">
<el-input
style="width: 100px"
placeholder="请输入数量"
v-model="row.bfNum"
v-if="!row.isQuery"
/>
<template v-else>
{{ row.bfNum }}
</template>
</template>
</el-table-column>
<el-table-column
align="center"
label="报废信息"
v-if="isNumDetails"
>
<template slot-scope="{ row }">
<el-button
type="primary"
size="mini"
@click="editScrapInfo(row)"
:disabled="row.bfNum <= 0"
> </el-button
>
</template>
</el-table-column>
</el-table>
</template>
</template>
<!-- 弹框内层内容 -->
<template slot="innerContent">
<el-form :model="scrapInfoParams">
<el-form-item label="报废原因:">
<el-input
v-model="scrapInfoParams.scrapReason"
placeholder="请输入报废原因"
size="small"
maxlength="50"
style="width: 350px"
></el-input>
</el-form-item>
<el-form-item label="损坏原因:">
<el-radio-group
style="width: 350px"
v-model="scrapInfoParams.scrapType"
>
<el-radio :label="1">人为</el-radio>
<el-radio :label="0">自然</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="损坏照片:" class="upload-box">
<!-- 报废图片 -->
<Upload
style="width: 350px"
:file-list="fileList"
:action-url="actionUrl"
:limit="3"
:multiple="true"
@remove="handleRemove"
@success="handleSuccess"
>
<template>
<el-row class="Upload-tip">
<el-button size="small" type="primary"
>点击上传</el-button
>
</el-row>
<el-row class="upload-tip">
<span class="tip-text"
>请上传jpgjpegpng格式的图片单张图片大小不可超过5M最多可上传3张</span
>
</el-row>
</template>
</Upload>
</el-form-item>
</el-form>
<el-row class="dialog-common-btn">
<el-button size="mini" plain @click="handleCancelInner"
> </el-button
>
<el-button
size="mini"
type="warning"
@click="handleSubmitInner"
> </el-button
>
</el-row>
</template> </template>
</DialogModel> </DialogModel>
</div> </div>
@ -81,59 +311,515 @@
<script> <script>
import TableModel from '@/components/TableModel' import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel' import DialogModel from '@/components/DialogModel'
import SelDepart from '../../component/selDepart.vue' import Upload from './upload.vue'
import { config, dialogConfig } from './config' import {
import { receiveView } from '@/api/claimAndRefund/return' configReturn,
dialogConfigReturn,
dialogConfigReturnDet,
} from './config.js'
import {
getBackMachine,
receiveView,
getBackMachineNew,
setNumBack,
setCodeBack,
backReceiveRecordWeb, //
backReceiveRecordWebPt, //
revoke,
getRecord,
endBack,
} from '@/api/claimAndRefund/return.js'
import {
getScrapReturnDetailsApi,
getScrapEditReturnApi,
getScrapReturnSaveApi,
} from '@/api/scrap/forecastWaste.js'
export default { export default {
name: 'auditingReturn',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,
SelDepart, Upload,
}, },
props: { props: {
sendParams: { returnInfo: {
type: Object, type: Object,
default: () => { default: () => null,
return {}
}, },
sendTbParams: {
type: Object,
default: () => null,
}, },
// parentId: {
// type: [String, Number],
// default: () => '',
// },
}, },
data() { data() {
return { return {
config, pageContent: '驳回退料',
dialogConfig, configReturn,
dialogConfigReturn,
dialogConfigReturnDet,
getScrapReturnDetailsApi,
getScrapEditReturnApi,
taSelList: [],
//
scrapInfoParams: {
scrapReason: '', //
scrapType: '', //
fileUrl: '',
},
fileList: [],
imgUrlList: [],
actionUrl: process.env.VUE_APP_BASE_API + '/system/sys/file/upload',
numReturnList: [],
sendParams: {
taskId: '',
id: '',
},
receiveView, receiveView,
getBackMachineNew,
getBackMachine,
sendParamsReturn: {
taskId: '',
typeId: '',
pageSize: 10,
pageNum: 1,
},
codeDetails: true,
isQuery: true,
isNumDetails: true,
backReceiveRecordWebPt,
currentRows: null,
scrapAll: false,
parentId: '',
} }
}, },
methods: { created() {
/* 按钮操作 */ if (this.sendTbParams) {
handlePreview(row) { this.sendParams = this.sendTbParams
this.dialogConfig.outerTitle = '查看' }
this.dialogConfig.handleColShow = false
this.dialogConfig.outerWidth = '70%'
this.dialogConfig.outerVisible = true
},
handleEdit(row) {
this.dialogConfig.outerTitle = '编辑退料'
this.dialogConfig.handleColShow = true
this.dialogConfig.outerWidth = '70%'
this.dialogConfig.outerVisible = true
},
handleRevoke(row) {},
getTableSelectionChange() {}, if (this.returnInfo) {
closeDialog(val) { this.sendParams.taskId = this.returnInfo.taskId
this.dialogConfig.outerVisible = val this.sendParams.id = this.returnInfo.id
}
// if (this.returnInfo.taskStatus == 40) {
// this.pageContent = '退'
// } else {
// this.pageContent = '退'
// }
},
methods: {
//
handlePreview(data) {
if (data.manageType == 0) {
this.sendParamsReturn.parentId = data.id
this.sendParamsReturn.typeId = data.modelId
this.isQuery = false
this.isNumDetails = false
this.dialogConfigReturn.handleColShow = true
this.codeDetails = true
} else {
backReceiveRecordWeb({
parentId: data.id,
typeId: data.modelId,
}).then((res) => {
const { typeName, typeCode, hgNum, wxNum, bfNum, backNum } =
res.data.rows[0]
const numReturnInfo = {
typeName,
type: typeCode,
num: backNum,
hgNum,
wxNum,
bfNum,
isQuery: true,
}
this.numReturnList.push(numReturnInfo)
})
this.isQuery = true
this.isNumDetails = false
this.dialogConfigReturn.handleColShow = false
this.codeDetails = false
}
this.dialogConfigReturn.outerTitle = '退料详情'
this.dialogConfigReturn.isSelShow = false
this.dialogConfigReturn.outerVisible = true
},
// 退
handleEditReturn(data) {
this.parentId = data.parentId
if (data.manageType == 0) {
this.isQuery = true
this.isNumDetails = false
this.dialogConfigReturn.outerTitle = '编码退料'
this.sendParamsReturn.taskId = this.sendParams.taskId
this.sendParamsReturn.typeId = data.typeId
this.dialogConfigReturn.handleColShow = true
} else {
const numReturnInfo = {
typeName: data.machineTypeName,
type: data.specificationType,
num: parseInt(data.num),
hgNum: '',
wxNum: '',
bfNum: '',
taskId: this.sendParams.taskId,
id: data.id,
typeId: data.typeId,
}
this.numReturnList.push(numReturnInfo)
this.isNumDetails = true
this.dialogConfigReturn.outerTitle = '数量退料'
this.dialogConfigReturn.handleColShow = false
}
this.dialogConfigReturn.outerVisible = true
this.dialogConfigReturn.isSelShow = true
this.dialogConfigReturn.handleWidth = '240px'
},
//
handleRevoke(data) {
this.$confirm('是否确定撤回?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
revoke({
createBy: sessionStorage.getItem('userId'),
manageType: data.manageType,
parentId: data.id,
typeId: data.modelId,
}).then((res) => {
this.$message.success('已撤回')
this.$refs.homeTbRef.getList()
})
})
.catch(() => {})
},
//
getTableSelList(list) {
this.taSelList = list
},
//
handleBatch(type) {
if (this.taSelList.length < 1) {
this.$message.error('请勾选列表数据!')
return
}
if (type == 1 || type == 2) {
let arr = []
arr = this.taSelList.map((item) => {
return {
parentId: this.parentId,
typeId: item.typeId,
backNum: 1,
backStatus: type,
manageType: 0,
createBy: sessionStorage.getItem('userId'),
maId: item.maId,
}
})
let param = {
taskId: this.sendParamsReturn.taskId,
flag: 1,
arr: arr,
}
getScrapReturnSaveApi(param).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess('操作成功')
this.$modal.msgSuccess('操作成功')
this.dialogConfigReturn.outerVisible = false
this.$refs.homeTbRef.getList()
}
})
} else {
this.scrapAll = true
this.dialogConfigReturn.innerVisible = true
}
},
//
handleSingle(type, data) {
// type 1 2 3
let arr = [
{
parentId: this.parentId,
typeId: data.typeId,
backNum: 1,
backStatus: type,
manageType: 0,
createBy: sessionStorage.getItem('userId'),
maId: data.maId,
},
]
let param = {
taskId: this.sendParamsReturn.taskId,
flag: 1,
arr: arr,
}
if (type === 1 || type === 2) {
getScrapReturnSaveApi(param).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess('操作成功')
this.dialogConfigReturn.outerVisible = false
this.$refs.homeTbRef.getList()
}
})
} else {
this.currentRows = data
this.dialogConfigReturn.innerVisible = true
}
},
// 退
handleSave() {
const { num, hgNum, wxNum, bfNum, id, typeId, taskId } =
this.numReturnList[0]
if (hgNum * 1 + wxNum * 1 + bfNum * 1 > num) {
this.$message.error('申请数量已超过待退数量!')
return
}
if (hgNum * 1 + wxNum * 1 + bfNum * 1 === 0) {
this.$message.error('当前未设置数量!')
return
}
// 退
const numReturnParams = {
arr: [],
flag: 0,
}
const detailsInfo = {
parentId: this.parentId,
typeId,
manageType: 1,
createBy: sessionStorage.getItem('userId'),
backStatus: '',
backNum: '',
}
if (hgNum > 0) {
detailsInfo.backNum = hgNum
detailsInfo.backStatus = 1
numReturnParams.arr.push(detailsInfo)
}
if (wxNum > 0) {
detailsInfo.backNum = wxNum
detailsInfo.backStatus = 2
numReturnParams.arr.push(detailsInfo)
}
if (bfNum > 0) {
detailsInfo.backNum = bfNum
detailsInfo.backStatus = 3
detailsInfo.scrapReason = this.scrapInfoParams.scrapReason
detailsInfo.scrapType = this.scrapInfoParams.scrapType
if (this.imgUrlList.length > 0) {
this.scrapInfoParams.fileUrl = this.imgUrlList.join(',')
} else {
this.scrapInfoParams.fileUrl = ''
}
detailsInfo.fileUrl = this.scrapInfoParams.fileUrl
numReturnParams.arr.push(detailsInfo)
}
getScrapReturnSaveApi(numReturnParams).then((res) => {
this.dialogConfigReturn.outerVisible = false
this.$refs.homeTbRef.getList()
})
// console.log('退', numInfo, bfNum, num)
},
// 退
editScrapInfo(row) {
const surplusNum = row.num - row.hgNum - row.wxNum
if (row.bfNum > surplusNum) {
this.$message.error('报废数量已超过剩余待退料数量')
return
}
this.dialogConfigReturn.innerVisible = true
},
//
batchRevoke() {
if (this.taSelList.length < 1) {
this.$message.error('请勾选列表数据!')
return
}
},
//
revokeSingle(data) {
console.log(data, '撤回--')
},
//
handleRemove(file) {
this.imgUrlList = this.imgUrlList.filter(
(e) => e !== file.response.data.fileUrl,
)
},
//
handleSuccess(res) {
if (res.code == 200) {
this.imgUrlList.push(res.data.fileUrl)
}
},
//
handleCancelInner() {
this.dialogConfigReturn.innerVisible = false
},
//
handleSubmitInner() {
if (this.dialogConfigReturn.outerTitle === '编码退料') {
if (this.currentRows) {
console.log(this.currentRows, '当前行信息')
let arr = [
{
parentId: this.parentId,
typeId: this.currentRows.typeId,
backNum: 1,
backStatus: 3,
manageType: 0,
createBy: sessionStorage.getItem('userId'),
maId: this.currentRows.maId,
scrapReason: this.scrapInfoParams.scrapReason,
scrapType: this.scrapInfoParams.scrapType,
fileUrl: '',
},
]
if (this.imgUrlList.length > 0) {
arr[0].fileUrl = this.imgUrlList.join(',')
}
let param = {
taskId: this.sendParamsReturn.taskId,
arr: arr,
flag: 1,
}
getScrapReturnSaveApi(param).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess('操作成功')
this.currentRows = null
this.dialogConfigReturn.outerVisible = false
this.$refs.homeTbRef.getList()
}
})
}
if (this.scrapAll) {
console.log('批量报废功能!!!')
let arr = []
arr = this.taSelList.map((item) => {
return {
parentId: this.parentId,
typeId: item.typeId,
backNum: 1,
backStatus: 3,
manageType: 0,
createBy: sessionStorage.getItem('userId'),
maId: item.maId,
scrapReason: this.scrapInfoParams.scrapReason,
scrapType: this.scrapInfoParams.scrapType,
fileUrl: '',
}
})
if (this.imgUrlList.length > 0) {
arr.map((e) => (e.fileUrl = this.imgUrlList.join(',')))
}
let param = {
taskId: this.sendParamsReturn.taskId,
arr: arr,
flag: 1,
}
getScrapReturnSaveApi(param).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess('操作成功')
this.scrapAll = false
this.dialogConfigReturn.outerVisible = false
this.$refs.homeTbRef.getList()
}
})
}
}
this.dialogConfigReturn.innerVisible = false
},
// 退
async handleComplete() {
let param1 = {
parentId: this.sendParams.id,
}
console.log(param1, '参数1----')
const res1 = await getRecord(param1)
if (res1.code == 200) {
let param = {
createBy: sessionStorage.getItem('userId'),
parentId: this.sendParams.id,
taskId: this.sendParams.taskId,
}
endBack(param).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess('操作成功')
this.$emit('closeReturnPage', 1)
}
})
}
}, },
/* 外层弹框关闭 */ /* 外层弹框关闭 */
closeDialogOuter() { closeDialogOuter() {
this.dialogConfig.outerVisible = false this.dialogConfigReturn.outerVisible = false
}, },
/* 内层弹框关闭 */ /* 内层弹框关闭 */
closeDialogInner() { closeDialogInner() {
this.dialogConfig.innerVisible = false this.dialogConfigReturn.innerVisible = false
},
},
watch: {
dialogConfigReturn: {
handler(newVal) {
/* 监听外层弹框关闭 清空勾选的数据 */
if (!newVal.outerVisible) {
this.taSelList = []
this.numReturnList = []
this.scrapInfoParams.scrapReason = ''
this.scrapInfoParams.scrapType = ''
this.scrapInfoParams.fileUrl = ''
this.codeDetails = true
this.imgUrlList = []
}
},
deep: true,
}, },
}, },
} }
</script> </script>
<style scoped lang="scss">
.upload-box {
display: flex;
.Upload-tip {
text-align: left;
}
}
.upload-tip {
text-align: left;
.tip-text {
font-size: 13px;
color: red;
letter-spacing: 1px;
}
}
</style>

View File

@ -0,0 +1,110 @@
<template>
<el-upload
class="upload-demo"
:action="actionUrl"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:multiple="multiple"
:limit="limit"
:on-exceed="handleExceed"
:file-list="fileList"
:headers="headers"
:on-success="handleSuccess"
:data="uploadData"
:before-upload="beforeUpload"
>
<slot name="default">
<el-button size="small" type="primary">点击上传</el-button>
</slot>
<!-- <div slot="tip" class="el-upload__tip">{{ uploadTip }}</div> -->
</el-upload>
</template>
<script>
import { getToken } from '@/utils/auth'
export default {
name: 'UploadFile',
props: {
fileList: {
type: Array,
default: () => [],
},
actionUrl: {
type: String,
default: 'https://jsonplaceholder.typicode.com/posts/',
},
limit: {
type: Number,
default: 3,
},
// uploadTip: {
// type: String,
// default: 'jpg/png500kb'
// },
multiple: {
type: Boolean,
default: true,
},
},
data() {
return {
uploadImgUrl:
process.env.VUE_APP_BASE_API + '/dev-api' + this.actionUrl,
headers: {
Authorization: 'Bearer ' + getToken(),
},
uploadData: {
fileType: 'sx',
},
}
},
methods: {
handleRemove(file, fileList) {
this.$emit('remove', file, fileList)
},
handleSuccess(response, file, fileList) {
this.$emit('success', response, fileList)
},
handlePreview(file) {
this.$emit('preview', file)
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 ${this.limit} 个文件,本次选择了 ${
files.length
} 个文件共选择了 ${files.length + fileList.length} 个文件`,
)
this.$emit('exceed', files, fileList)
},
beforeRemove(file, fileList) {
// return this.$confirm(` ${file.name} `)
// .then(() => {
// this.$emit('before-remove', file, fileList)
// })
// .catch(() => {})
},
beforeUpload(file) {
console.log('file', file)
const isJPGorPNG =
file.type == 'image/png' ||
file.type == 'image/jpg' ||
file.type == 'image/jpeg'
const isLt5M = file.size / 1024 / 1024 < 5 // 5MB
if (!isJPGorPNG) {
this.$message.error('只能上传 jpg、jpeg、png 格式的图片')
}
if (!isLt5M) {
this.$message.error('上传图片大小不能超过 5MB')
}
return isJPGorPNG && isLt5M
},
},
}
</script>
<style scoped>
.upload-demo .el-upload__tip {
margin-top: 10px;
}
</style>

View File

@ -16,7 +16,7 @@ export const config = {
pageShow: true, // 是否显示分页组件 pageShow: true, // 是否显示分页组件
isSelShow: true,// 表格是否需要复选框 isSelShow: true,// 表格是否需要复选框
isFormShow: true, // 是否显示表单查询组件 isFormShow: true, // 是否显示表单查询组件
handleWidth: '180px', // 操作列宽度 handleWidth: '240px', // 操作列宽度
formLabel: [ formLabel: [
{ f_label: '关键字', f_model: 'keyword', f_type: 'ipt' }, { f_label: '关键字', f_model: 'keyword', f_type: 'ipt' },
{ f_label: '单位名称', f_model: 'backUnit', f_type: 'sel', f_selList: [] }, { f_label: '单位名称', f_model: 'backUnit', f_type: 'sel', f_selList: [] },

View File

@ -152,7 +152,7 @@
<template v-if="temp"> <template v-if="temp">
<PageHeader :pageContent="pageContent" @goBack="goBack" /> <PageHeader :pageContent="pageContent" @goBack="goBack" />
<AuditingReturn :sendParams="sendParamsAuditing" /> <AuditingReturn :sendTbParams="sendParamsAuditing" />
</template> </template>
</div> </div>
</template> </template>
@ -191,7 +191,9 @@ export default {
getPreScrapListApi, getPreScrapListApi,
getDialogListApi, getDialogListApi,
tableSelList: [], tableSelList: [],
sendParams: {}, // sendParams: {
taskId: '',
}, //
temp: false, temp: false,
getSelList, getSelList,
getTypeListSel, getTypeListSel,
@ -203,8 +205,13 @@ export default {
deptIds: [], deptIds: [],
}, },
auditingList: [], auditingList: [],
sendParamsAuditing: {}, sendParamsAuditing: {
taskId: '',
pageNum: 1,
pageSize: 10,
},
pageContent: '驳回退料', pageContent: '驳回退料',
parentId: '',
} }
}, },
created() { created() {
@ -234,7 +241,9 @@ export default {
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
handleReject(row) { handleReject(row) {
console.log(row, '驳回退料----')
this.sendParamsAuditing.taskId = row.taskId this.sendParamsAuditing.taskId = row.taskId
this.parentId = row.parentId
this.temp = !this.temp this.temp = !this.temp
}, },

View File

@ -15,6 +15,7 @@
placeholder="请输入成套名称" placeholder="请输入成套名称"
:disabled="isEdit" :disabled="isEdit"
v-model="addCompleteForm.completeSetName" v-model="addCompleteForm.completeSetName"
maxlength="20"
/> />
</el-form-item> </el-form-item>
<el-form-item label="主体设备"> <el-form-item label="主体设备">
@ -71,10 +72,11 @@
style="width: 180px" style="width: 180px"
placeholder="请输入数量" placeholder="请输入数量"
@change="deviceNumChange" @change="deviceNumChange"
maxlength="9"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="数量"> <el-table-column align="center" label="操作">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<el-button <el-button
size="mini" size="mini"
@ -249,6 +251,7 @@ export default {
submitComplete() { submitComplete() {
this.$refs.addFormRef.validate(async (valid) => { this.$refs.addFormRef.validate(async (valid) => {
if (valid) { if (valid) {
let isNum = false
const isMainDevice = this.tempList.some( const isMainDevice = this.tempList.some(
(e) => e.ascriptionType === 1, (e) => e.ascriptionType === 1,
) )
@ -266,14 +269,20 @@ export default {
this.$message.error('请添加配套设备!') this.$message.error('请添加配套设备!')
return return
} }
try {
this.tempList.forEach((e) => { this.tempList.forEach((e) => {
if (!parseInt(e.deviceNum)) { if (!parseInt(e.deviceNum)) {
this.$message.error('请输入数量!') this.$message.error('请输入数量!')
return isNum = true
throw new Error()
} else { } else {
e.deviceNum = parseInt(e.deviceNum) e.deviceNum = parseInt(e.deviceNum)
} }
}) })
} catch (error) {}
if (isNum) return
this.saveParams.parentId = this.tempList[0].deviceTypeId this.saveParams.parentId = this.tempList[0].deviceTypeId
this.saveParams.wholeTypeName = this.saveParams.wholeTypeName =

View File

@ -3,7 +3,7 @@ import { getDeviceTypeTree } from '@/api/claimAndRefund/receive'
export const config = { export const config = {
handleColShow: true, // 是否显示操作列 handleColShow: true, // 是否显示操作列
pageShow: true, // 是否显示分页组件 pageShow: false, // 是否显示分页组件
isSelShow: false,// 表格是否需要复选框 isSelShow: false,// 表格是否需要复选框
isFormShow: true, // 是否显示表单查询组件 isFormShow: true, // 是否显示表单查询组件
handleWidth: '', // 操作列宽度 handleWidth: '', // 操作列宽度

View File

@ -15,9 +15,10 @@
placeholder="请输入成套名称" placeholder="请输入成套名称"
:disabled="isEdit" :disabled="isEdit"
v-model="addCompleteForm.completeSetName" v-model="addCompleteForm.completeSetName"
maxlength="20"
/> />
</el-form-item> </el-form-item>
<el-form-item label="主体设备"> <el-form-item label="主体设备" prop="mainDevice">
<el-cascader <el-cascader
ref="mainDeviceRef" ref="mainDeviceRef"
placeholder="请选择主体设备" placeholder="请选择主体设备"
@ -31,7 +32,7 @@
:disabled="mainDeviceDisabled" :disabled="mainDeviceDisabled"
/> />
</el-form-item> </el-form-item>
<el-form-item label="配套设备"> <el-form-item label="配套设备" prop="assortDevice">
<el-cascader <el-cascader
ref="assortDeviceRef" ref="assortDeviceRef"
placeholder="请选择配套设备" placeholder="请选择配套设备"
@ -71,6 +72,7 @@
style="width: 180px" style="width: 180px"
placeholder="请输入数量" placeholder="请输入数量"
@change="deviceNumChange" @change="deviceNumChange"
maxlength="9"
/> />
</template> </template>
</el-table-column> </el-table-column>
@ -121,6 +123,16 @@ export default {
message: '请输入成套名称', message: '请输入成套名称',
}, },
], ],
// mainDevice: [
// {
// required: true,
// },
// ],
// assortDevice: [
// {
// required: true,
// },
// ],
}, },
deviceTypeTreeProps: { deviceTypeTreeProps: {
multiple: false, multiple: false,
@ -249,6 +261,7 @@ export default {
submitComplete() { submitComplete() {
this.$refs.addFormRef.validate(async (valid) => { this.$refs.addFormRef.validate(async (valid) => {
if (valid) { if (valid) {
let isNum = false
const isMainDevice = this.tempList.some( const isMainDevice = this.tempList.some(
(e) => e.ascriptionType === 1, (e) => e.ascriptionType === 1,
) )
@ -266,14 +279,19 @@ export default {
this.$message.error('请添加配套设备!') this.$message.error('请添加配套设备!')
return return
} }
try {
this.tempList.forEach((e) => { this.tempList.forEach((e) => {
if (!parseInt(e.deviceNum)) { if (!parseInt(e.deviceNum)) {
this.$message.error('请输入数量!') this.$message.error('请输入数量!')
return isNum = true
throw new Error()
} else { } else {
e.deviceNum = parseInt(e.deviceNum) e.deviceNum = parseInt(e.deviceNum)
} }
}) })
} catch (error) {}
if (isNum) return
this.saveParams.parentId = this.tempList[0].deviceTypeId this.saveParams.parentId = this.tempList[0].deviceTypeId
this.saveParams.wholeTypeName = this.saveParams.wholeTypeName =

View File

@ -3,7 +3,7 @@ import { getDeviceTypeTree } from '@/api/claimAndRefund/receive'
export const config = { export const config = {
handleColShow: true, // 是否显示操作列 handleColShow: true, // 是否显示操作列
pageShow: true, // 是否显示分页组件 pageShow: false, // 是否显示分页组件
isSelShow: false,// 表格是否需要复选框 isSelShow: false,// 表格是否需要复选框
isFormShow: true, // 是否显示表单查询组件 isFormShow: true, // 是否显示表单查询组件
handleWidth: '', // 操作列宽度 handleWidth: '', // 操作列宽度