<template>
|
<!-- <TableLayout v-permissions="['ext:appliancesext:query']"> -->
|
<TableLayout>
|
<!-- 搜索表单 -->
|
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-suffix=":" label-width="100px" inline>
|
<el-form-item label="工装编码" prop="code">
|
<el-input
|
v-model="searchForm.code"
|
placeholder="请输入工装编码"
|
@keypress.enter.native="search"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="工装类型" prop="categoryId">
|
<el-select v-model="searchForm.categoryId" clearable filterable placeholder="全部">
|
<el-option
|
v-for="item in appTypes"
|
:key="item.id"
|
:label="item.combinationName"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="仓库" prop="warehouseId">
|
<el-select v-model="searchForm.warehouseId" clearable filterable placeholder="全部" @change="selectWarehouse">
|
<el-option
|
v-for="item in warehouse"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="货位" prop="locationId">
|
<el-select v-model="searchForm.locationId" :disabled="searchForm.warehouseId == ''" clearable filterable placeholder="全部">
|
<el-option
|
v-for="item in warehouseLocation"
|
:key="item.id"
|
:label="item.unionName"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="工装属性" prop="smodelLabel">
|
<el-select v-model="searchForm.smodelLabel" placeholder="请选择工装属性" clearable filterable>
|
<el-option
|
v-for="item in properties"
|
:key="item.id"
|
:label="item.code"
|
:value="item.label">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="质量属性" prop="qualityType">
|
<el-select v-model="searchForm.qualityType" placeholder="请选择质量属性" clearable filterable>
|
<el-option
|
v-for="item in qualityTypes"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="工装状态" prop="status">
|
<el-select v-model="searchForm.status" clearable filterable placeholder="全部">
|
<el-option
|
v-for="item in status"
|
:key="item.value"
|
:label="item.name"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="单据编号" prop="wmodelCode">
|
<el-input
|
v-model="searchForm.wmodelCode"
|
placeholder="请输入单据编号"
|
@keypress.enter.native="search"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="物料信息" prop="mmodelName">
|
<el-input
|
v-model="searchForm.mmodelName"
|
placeholder="请输入物料名称或者编码"
|
@keypress.enter.native="search"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="批次号" prop="batch">
|
<el-input
|
v-model="searchForm.batch"
|
placeholder="请输入批次号"
|
@keypress.enter.native="search"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="生产工序" prop="procedureId">
|
<el-select v-model="searchForm.procedureId" filterable clearable placeholder="请选择生产工序">
|
<el-option
|
v-for="(item, index) in procedures"
|
:key="index"
|
:label="item.name"
|
:value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<!-- <el-form-item label="位置类型" prop="positionType">
|
<el-select v-model="searchForm.positionType" clearable filterable placeholder="全部">
|
<el-option
|
v-for="item in positionType"
|
:key="item.value"
|
:label="item.name"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item> -->
|
<section>
|
<el-button type="primary" @click="search">搜索</el-button>
|
<el-button @click="reset">重置</el-button>
|
</section>
|
</el-form>
|
<!-- 表格和分页 -->
|
<template v-slot:table-wrap>
|
<!-- <ul class="toolbar" v-permissions="['ext:appliancesext:create', 'ext:appliancesext:delete']">
|
<li><el-button type="primary" @click="$refs.operaAppliancesExtWindow.open('新建工装器具信息')" icon="el-icon-plus" v-permissions="['ext:appliancesext:create']">新建</el-button></li>
|
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['ext:appliancesext:delete']">删除</el-button></li>
|
</ul> -->
|
<ul class="toolbar">
|
<li>
|
<el-button type="primary" @click="scrap">报废</el-button>
|
</li>
|
<li>
|
<el-button
|
type="primary"
|
@click="$refs.operaAppliancesExtWindow.open('新建工装器具信息')"
|
>新建</el-button
|
>
|
</li>
|
<li>
|
<ImportButton
|
text="导入"
|
:type="appTypes"
|
template-name="appliances_import_template.xlsx"
|
template-path="template/appliances_import_template.xlsx"
|
action="/ext/appliancesExt/importExcel"
|
@success="search"
|
/>
|
</li>
|
<li><el-button type="primary" :loading="isWorking.export" @click="exportExcel">导出</el-button></li>
|
<li>
|
<el-button
|
type="primary"
|
@click="printLabelWithArray"
|
v-if="containPermissions(['ext:barcodeparamext:query'])"
|
plain>打印标签</el-button>
|
</li>
|
</ul>
|
<el-table
|
v-loading="isWorking.search"
|
:data="tableData.list"
|
stripe
|
border
|
:summary-method="getSummaries"
|
show-summary
|
@selection-change="handleSelectionChange"
|
>
|
<el-table-column type="selection" fixed="left" width="55"></el-table-column>
|
<el-table-column
|
prop="type"
|
label="工装类型"
|
min-width="100px"
|
fixed="left"
|
>
|
<template slot-scope="{ row }">
|
{{ typeToStr(row) }}
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="smodelCode"
|
label="工装属性"
|
min-width="80px"
|
></el-table-column>
|
<el-table-column
|
prop="code"
|
label="工装编码"
|
min-width="100px"
|
></el-table-column>
|
<el-table-column
|
prop="serialNum"
|
label="序列号"
|
min-width="60px"
|
></el-table-column>
|
<el-table-column label="状态" min-width="60px">
|
<template slot-scope="{row}">
|
{{ statusToStr(row.status) }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="wmodelCode" label="单据编号" show-overflow-tooltip min-width="140px">
|
<template slot-scope="{row}">
|
<span class="long-title-style">{{ row.zjcode || '-' }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column prop="mmodelCode" label="物料编码" min-width="160px"></el-table-column>
|
<el-table-column prop="mmodelName" label="物料信息" show-overflow-tooltip min-width="100px">
|
<template slot-scope="{row}">
|
<span class="long-title-style">
|
{{ row.mmodelName }}
|
</span>
|
</template>
|
</el-table-column>
|
<el-table-column prop="batch" label="批次号" show-overflow-tooltip min-width="100px">
|
<template slot-scope="{row}">
|
{{ row.batch || '-' }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="num" label="数量" min-width="100px">
|
<template slot-scope="{row}">
|
{{ row.num ? (row.num + (row.umodelName || '')) : '0' }}
|
</template>
|
</el-table-column>
|
<el-table-column label="质量属性" min-width="80px">
|
<template slot-scope="{row}">
|
<span v-if="row.qualityType==0" class="valid-style">合格</span>
|
<span v-else-if="row.qualityType==1" class="unvalid-style">不良</span>
|
<span v-else-if="row.qualityType==2" class="scrap-style">报废</span>
|
<span v-else>-</span>
|
</template>
|
</el-table-column>
|
<el-table-column prop="pmodelName" show-overflow-tooltip label="生产工序" min-width="100px">
|
<template slot-scope="{row}">
|
<span class="long-title-style">{{ row.pmodelName || '-' }}</span>
|
</template>
|
</el-table-column>
|
<!-- <el-table-column prop="positionType" label="位置类型" min-width="80px">
|
<template slot-scope="{row}">
|
{{ positionToStr(row.positionType) }}
|
</template>
|
</el-table-column> -->
|
<!-- <el-table-column prop="vmodelStationCode" label="工位" show-overflow-tooltip min-width="100px">
|
<template slot-scope="{row}">
|
<span class="long-title-style">{{ row.vmodelStationCode || '-' }}</span>
|
</template>
|
</el-table-column> -->
|
<el-table-column prop="whmodelName" label="仓库" show-overflow-tooltip min-width="140px">
|
<template slot-scope="{row}">
|
<span class="long-title-style">{{ row.whmodelName || '-' }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column prop="lmodelUnionName" label="货位" show-overflow-tooltip min-width="140px">
|
<template slot-scope="{row}">
|
<span class="long-title-style">{{ row.lmodelUnionName || '-' }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="createTime"
|
label="创建时间"
|
min-width="140px"
|
></el-table-column>
|
<el-table-column
|
prop="remark"
|
label="报废原因"
|
min-width="140px"
|
show-overflow-tooltip
|
>
|
<template slot-scope="{row}">
|
<span class="long-title-style">
|
{{ row.remark || '-' }}
|
</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="操作"
|
min-width="120"
|
fixed="right"
|
>
|
<template slot-scope="{ row }">
|
<el-button v-if="containPermissions(['ext:barcodeparamext:query'])" type="text" @click="printLabel(row)">打印标签</el-button>
|
<span v-else>-</span>
|
</template>
|
</el-table-column>
|
</el-table>
|
<pagination
|
@size-change="handleSizeChange"
|
@current-change="handlePageChange"
|
:pagination="tableData.pagination"
|
>
|
</pagination>
|
</template>
|
<!-- 新建/修改 -->
|
<OperaAppliancesExtWindow
|
ref="operaAppliancesExtWindow"
|
@success="handlePageChange"
|
/>
|
<OperaAppliancesFromExtWindow
|
ref="operaAppliancesFromExtWindow"
|
@success="handlePageChange"
|
/>
|
<QrCodeLabel ref="qrCodeLabel"></QrCodeLabel>
|
</TableLayout>
|
</template>
|
|
<script>
|
import BaseTable from '@/components/base/BaseTable'
|
import TableLayout from '@/layouts/TableLayout'
|
import ImportButton from '@/components/common/ImportButton'
|
// import SearchFormCollapse from '@/components/common/SearchFormCollapse'
|
import Pagination from '@/components/common/Pagination'
|
import OperaMaterialDistributionWindow from '@/components/ext/OperaMaterialDistributionWindow'
|
import OperaAppliancesExtWindow from '@/components/ext/OperaAppliancesExtWindow'
|
import OperaAppliancesFromExtWindow from '@/components/ext/OperaAppliancesFromExtWindow'
|
import QrCodeLabel from '@/components/common/QrCodeLabel'
|
import { checkAllList } from '@/api/ext/categoryUnionExt'
|
import { fetchList as getPrefix } from '@/api/ext/barcodeParamExt'
|
import { queryListByCode } from '@/api/system/dictData'
|
import { productesGroup } from '@/api/ext/proceduresExt'
|
import { queryWarehouseAllData } from '@/api/ext/warehouseExt'
|
import { getListByWarehouseId } from '@/api/ext/warehouseLocationExt'
|
import { addPrecision } from '@/utils/util'
|
export default {
|
name: 'AppliancesExt',
|
extends: BaseTable,
|
components: {
|
TableLayout,
|
Pagination,
|
OperaAppliancesExtWindow,
|
OperaMaterialDistributionWindow,
|
OperaAppliancesFromExtWindow,
|
ImportButton,
|
QrCodeLabel
|
},
|
data () {
|
return {
|
properties: [],
|
appTypes: [],
|
procedures: [],
|
status: [
|
// 0.报废、1.空、2.部分、3.满,
|
{ name: '报废', id: 0 },
|
{ name: '空', id: 1 },
|
// { name: '部分', id: 2 },
|
{ name: '满', id: 3 }
|
],
|
positionType: [
|
// 0仓库1.车间
|
{ name: '仓库', id: 0 },
|
{ name: '车间', id: 1 }
|
],
|
direction: 'rtl',
|
drawer: false,
|
scarpForm: {
|
scarP: ''
|
},
|
// 搜索
|
searchForm: {
|
code: '',
|
batch: null,
|
smodelLabel: '',
|
procedureId: '',
|
qualityType: '',
|
categoryId: '',
|
wmodelCode: '',
|
status: '',
|
positionType: '',
|
warehouseId: '', // 仓库id
|
locationId: '', // 货位id
|
mmodelName: ''
|
},
|
printList: [],
|
warehouse: [],
|
warehouseLocation: [],
|
qualityTypes: [
|
// 0合格 1不良 2报废
|
{ name: '合格', id: 0 },
|
{ name: '不良', id: 1 },
|
{ name: '报废', id: 2 },
|
],
|
prefix: '',
|
}
|
},
|
provide() {
|
return {
|
properties:() => this.properties,
|
appTypes:() => this.appTypes
|
}
|
},
|
created () {
|
this.config({
|
module: '工装器具信息',
|
api: '/ext/appliancesExt',
|
'field.id': 'id',
|
'field.main': 'name'
|
})
|
this.search()
|
checkAllList({ bmodelCateType: 2 })
|
.then(res => {
|
this.appTypes = res
|
})
|
.catch(err => {
|
console.log(err)
|
})
|
productesGroup({})
|
.then(res => {
|
this.procedures = res
|
})
|
.catch(err => {
|
console.log(err)
|
})
|
queryListByCode('?dicCode=SYSTEM_APPLIANCE_TYPE')
|
.then(res => {
|
// console.log(res)
|
this.properties = res
|
})
|
.catch(err => {
|
console.log(err)
|
})
|
getPrefix({
|
page: 1,
|
capacity: 1,
|
model: { type: 4, status: 1 }
|
})
|
.then(res => {
|
this.prefix = res.records[0].prefix
|
})
|
queryWarehouseAllData({ status: 1, rootDepartId: this.$store.state.userInfo.curComDepartment.id })
|
.then(res => {
|
this.warehouse = res
|
})
|
|
},
|
methods: {
|
typeToStr (row) {
|
return row.cmodel1BigName ? (row.cmodel1BigName + ( row.cmodel1MiddleName ? (' - ' + row.cmodel1MiddleName + (row.cmodel1SmallName ? ' - ' + row.cmodel1SmallName : '')) : '' )) : '-'
|
},
|
statusToStr (status) {
|
for (const item of this.status) {
|
if (item.id === status) return item.name
|
}
|
},
|
materailName (row) {
|
return row.mmodelName ? (row.mmodelName + ' | ' + row.mmodelCode) : '-'
|
},
|
positionToStr (position) {
|
for (const item of this.positionType) {
|
if (item.id === position) return item.name
|
}
|
return '-'
|
},
|
scrap () {
|
if (this.tableData.selectedRows.length === 0) {
|
this.$tip.warning('请至少选择一条数据')
|
return
|
}
|
const ids = []
|
for (const item of this.tableData.selectedRows) {
|
ids.push(item.id)
|
}
|
this.$refs.operaAppliancesFromExtWindow.open('报废', { ids })
|
},
|
printLabel (row) {
|
this.printList = [{
|
code: row.code,
|
title: '',
|
content: row.cmodel1BigName,
|
department: this.$store.state.userInfo.curComDepartment.name
|
}]
|
this.$refs.qrCodeLabel.open('打印标签', this.printList, this.prefix, true)
|
},
|
printLabelWithArray () {
|
if (this.tableData.selectedRows.length === 0) {
|
this.$tip.warning('请至少选择一条数据')
|
return
|
}
|
this.printList = this.tableData.selectedRows.map((item) => {
|
return {
|
code: item.code,
|
title: '',
|
content: item.cmodel1BigName,
|
department: this.$store.state.userInfo.curComDepartment.name
|
}
|
})
|
this.$refs.qrCodeLabel.open('打印标签', this.printList, this.prefix, true)
|
},
|
selectWarehouse(value) {
|
this.warehouseLocation = []
|
this.searchForm.locationId = ''
|
if (!value) {
|
return
|
}
|
getListByWarehouseId(value, 1)
|
.then(res => {
|
this.warehouseLocation = res
|
})
|
.catch(err => {
|
console.log(err)
|
})
|
},
|
getSummaries (param) {
|
const { columns, data } = param;
|
const sums = [];
|
columns.forEach((column, index) => {
|
if (index === 0) {
|
sums[index] = '合计';
|
return;
|
} else if (index === 1 || index === 2 || index === 4 || index === 5 || index === 6 || index === 7|| index === 8 || index === 9 || index === 11 || index === 12 || index === 13|| index === 14 || index === 16) {
|
sums[index] = '-';
|
return;
|
}
|
const values = data.map(item => Number(item[column.property]));
|
// console.log(values)
|
if (!values.every(value => isNaN(value))) {
|
sums[index] = 0
|
values.forEach(item => {
|
sums[index] = addPrecision(item, sums[index])
|
})
|
} else {
|
sums[index] = '-';
|
}
|
});
|
return sums
|
}
|
}
|
}
|
</script>
|