add:添加组盘页面

This commit is contained in:
zhangzq
2025-07-29 20:32:51 +08:00
parent 62294fcdf5
commit 9916121e63
54 changed files with 1569 additions and 835 deletions

View File

@@ -6,6 +6,7 @@
"license": "Apache-2.0",
"scripts": {
"dev": "vue-cli-service serve",
"dev_mac": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",

View File

@@ -0,0 +1,34 @@
import Vue from 'vue'
import { tableEnum as getEnumDetail } from '@/views/system/dict/enumDetail'
// tableEnums: ['st_ivt_bsrealstorattr#stor_name#stor_code'],
export default class TableEnum {
constructor(tableEnum) {
this.tableEnum = tableEnum
}
async init(names, completeCallback) {
if (names === undefined || name === null) {
throw new Error('need TableEnum names')
}
const ps = []
names.forEach(n => {
const split = n.split('#')
const code = split[0]
const label = split[1]
const value = split[2]
Vue.set(this.tableEnum.tableEnum, code, {})
Vue.set(this.tableEnum.label, code, {})
Vue.set(this.tableEnum, code, [])
ps.push(getEnumDetail({ 'code': code, 'label': label, 'value': value }).then(data => {
this.tableEnum[code].splice(0, 0, ...data)
data.forEach(d => {
Vue.set(this.tableEnum.tableEnum[code], d.value, d)
Vue.set(this.tableEnum.label[code], d.value, d.label)
})
}))
})
await Promise.all(ps)
completeCallback()
}
}

View File

@@ -0,0 +1,29 @@
import TableEnum from './TableEnum'
const install = function(Vue) {
Vue.mixin({
data() {
if (this.$options.tableEnums instanceof Array) {
const tableEnum = {
tableEnum: {},
label: {}
}
return {
tableEnum
}
}
return {}
},
created() {
if (this.$options.tableEnums instanceof Array) {
new TableEnum(this.tableEnum).init(this.$options.tableEnums, () => {
this.$nextTick(() => {
this.$emit('dictReady')
})
})
}
}
})
}
export default { install }

View File

@@ -11,6 +11,7 @@ import 'mavon-editor/dist/css/index.css'
// 数据字典
import dict from './components/Dict'
import tableEnum from './components/TableEnum'
import scroll from 'vue-seamless-scroll'
// 权限指令
@@ -71,6 +72,7 @@ Vue.use(VueHighlightJS)
Vue.use(mavonEditor)
Vue.use(permission)
Vue.use(dict)
Vue.use(tableEnum)
Vue.use(VueBus)
// 全局设置控件样式https://codeantenna.com/a/0IN5FMJk5h
Element.Table.props.border = { type: Boolean, default: true }

View File

@@ -0,0 +1,22 @@
import request from '@/utils/request'
export function get(code) {
const params = {
code
}
return request({
url: 'api/dict/getStatusEnum',
method: 'get',
params
})
}
export function tableEnum(params) {
return request({
url: 'api/dict/getTableEnum',
method: 'get',
params
})
}
export default { get, tableEnum }

View File

@@ -19,28 +19,6 @@
:placeholder="$t('common.Please_select')"
/>
</el-form-item>
<el-form-item :label="$t('VehicleInfo.placeholder.vehicle_no')">
<el-input
v-model="query.storagevehicle_code_begin"
clearable
size="mini"
:placeholder="$t('VehicleInfo.placeholder.start_vehicle')"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
-
<el-input
v-model="query.storagevehicle_code_end"
clearable
size="mini"
:placeholder="$t('VehicleInfo.placeholder.end_vehicle')"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<rrOperation />
</el-form>
</div>
@@ -65,32 +43,52 @@
:visible.sync="crud.status.cu > 0"
width="450px"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-position="right" label-width="auto">
<el-form-item
:label="$t('VehicleInfo.table.storagevehicle_type_name')"
prop="storagevehicle_type"
>
<treeselect
v-model="form.storagevehicle_type"
:load-options="loadChildNodes"
:options="classes1"
style="width: 80%"
:placeholder="$t('common.Please_select')"
/>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="100px">
<el-form-item label="载具类型" prop="vehicle_type">
<el-select
v-model="form.vehicle_type"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 250px;"
@change="getVehicle"
>
<el-option
v-for="item in dict.storagevehicle_type"
:label="item.label"
:value="item.para1"
/>
</el-select>
</el-form-item>
<br>
<el-form-item :label="$t('VehicleInfo.dialog.num')" prop="num">
<el-input-number v-model="form.num" :precision="0" style="width: 80%" />
<el-form-item label="起始载具号" prop="vehicle_code">
<el-input v-model="form.vehicle_code" :disabled="true" style="width: 250px;"/>
</el-form-item>
<el-form-item :label="$t('VehicleInfo.table.is_used')">
<el-radio v-model="form.is_used" label="0">{{ $t('common.No') }}</el-radio>
<el-radio v-model="form.is_used" label="1">{{ $t('common.Yes') }}</el-radio>
<el-form-item label="载具数量" prop="num">
<el-input-number v-model="form.num" :precision="0" style="width: 150px;"/>
</el-form-item>
<el-form-item label="高度(mm)" prop="h">
<el-input-number v-model="form.h" :precision="0" style="width: 150px;"/>
</el-form-item>
<el-form-item label="宽度(mm)" prop="w">
<el-input-number v-model="form.w" :precision="0" style="width: 150px;"/>
</el-form-item>
<el-form-item label="深度(mm)" prop="l">
<el-input-number v-model="form.l" :precision="0" style="width: 150px;"/>
</el-form-item>
<el-form-item label="重量(g)" prop="weight">
<el-input-number v-model="form.weight" :precision="0" style="width: 150px;"/>
</el-form-item>
<el-form-item label="是否启用">
<el-radio v-model="form.is_used" label="0">否</el-radio>
<el-radio v-model="form.is_used" label="1">是</el-radio>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="info" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">{{ $t('VehicleInfo.dialog.build') }}</el-button>
<el-button type="primary" @click="addAndprint">{{ $t('VehicleInfo.dialog.build_print') }}</el-button>
<el-button type="info" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">生成</el-button>
<el-button type="primary" @click="addAndprint">生成并打印</el-button>
</div>
</el-dialog>
<!--表格渲染-->
@@ -103,11 +101,6 @@
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column
prop="storagevehicle_type_name"
:label="$t('VehicleInfo.table.storagevehicle_type_name')"
:min-width="flexWidth('storagevehicle_code', crud.data, $t('VehicleInfo.table.storagevehicle_type_name'))"
/>
<el-table-column
prop="storagevehicle_code"
:label="$t('VehicleInfo.table.storagevehicle_code')"
@@ -266,7 +259,6 @@ export default {
parent_class_code: 'vehicle_type'
}
crudClassstandard.getClassType(param).then(res => {
debugger
const data = res
this.buildTree(data)
this.classes1 = data
@@ -317,6 +309,16 @@ export default {
})
})
},
getVehicle(code) {
if (!code) {
this.crud.notify('请选择载具类型', CRUD.NOTIFICATION_TYPE.INFO)
this.form.vehicle_code = ''
return false
}
crudStoragevehicleinfo.getVehicle(code).then(res => {
this.form.vehicle_code = res.value
})
},
print() {
const _selectData = this.$refs.table.selection
if (!_selectData || _selectData.length < 1) {

View File

@@ -0,0 +1,153 @@
<template>
<el-dialog
title="物料选择"
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
width="1000px"
@close="close"
@open="open"
>
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="物料名称">
<el-input
v-model="query.search"
clearable
size="mini"
placeholder="物料名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<rrOperation />
</el-form>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
style="width: 100%;"
size="mini"
border
:cell-style="{'text-align':'center'}"
:header-cell-style="{background:'#f5f7fa',color:'#606266','text-align':'center'}"
@select="handleSelectionChange"
@select-all="onSelectAll"
@current-change="clickChange"
>
<el-table-column v-if="!isSingle" type="selection" width="55" />
<el-table-column v-if="isSingle" label="选择" width="55">
<template slot-scope="scope">
<el-radio v-model="tableRadio" :label="scope.row"><i /></el-radio>
</template>
</el-table-column>
<el-table-column prop="material_code" label="物料编码" width="140" />
<el-table-column prop="material_name" label="物料名称" width="170" show-overflow-tooltip />
<el-table-column prop="material_spec" label="物料规格" width="170" show-overflow-tooltip/>
<el-table-column prop="class_name" label="物料分类" width="140" />
<el-table-column prop="unit_name" label="计量单位" />
<el-table-column prop="product_series_name" label="系列" />
<el-table-column prop="update_optname" label="修改人" />
<el-table-column prop="update_time" label="修改时间" width="135" />
</el-table>
<!--分页组件-->
<pagination />
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
</template>
<script>
import CRUD, { header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
name: 'MaterialDialog',
components: { rrOperation, pagination },
dicts: ['is_used'],
cruds() {
return CRUD({ title: '物料选择', url: 'api/Materia', optShow: {}})
},
mixins: [presenter(), header()],
props: {
dialogShow: {
type: Boolean,
default: false
},
isSingle: {
type: Boolean,
default: true
}
},
data() {
return {
dialogVisible: false,
tableRadio: null,
tableData: []
}
},
watch: {
dialogShow: {
handler(newValue) {
this.dialogVisible = newValue
}
}
},
methods: {
clickChange(item) {
this.tableRadio = item
},
open() {
},
handleSelectionChange(val, row) {
if (val.length > 1) {
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(val.pop())
} else {
this.checkrow = row
}
},
onSelectAll() {
this.$refs.table.clearSelection()
},
close() {
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
},
submit() {
// 处理单选
if (this.isSingle && this.tableRadio) {
this.$emit('update:dialogShow', false)
this.$emit('materialChoose', this.tableRadio)
return
}
this.rows = this.$refs.table.selection
if (this.rows.length <= 0) {
this.$message('请先勾选物料')
return
}
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
this.$emit('materialChoose', this.rows)
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep .el-dialog__body {
padding-top: 0px;
}
</style>

View File

@@ -85,21 +85,25 @@
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>-->
<!-- <el-col :span="8">-->
<!-- <el-form-item label="静置时间" prop="standing_time">-->
<!-- <el-input-number v-model="form.standing_time" :controls="false" :min="0" label="分钟"-->
<!-- style="width: 200px;"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="8">-->
<!-- <el-form-item label="是否启用" prop="is_used">-->
<!-- <el-radio v-model="form.is_used" label="0">否</el-radio>-->
<!-- <el-radio v-model="form.is_used" label="1">是</el-radio>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-row>
<el-col :span="8">
<el-form-item label="单位" prop="qty_unit_name">
<el-select
v-model="form.qty_unit_name"
style="width: 100px"
placeholder=""
@change="unitChange"
>
<el-option
v-for="item in tableEnum.md_pb_measureunit"
:key="item.id"
:label="item.label"
:value="item.value+'@'+item.label"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
@@ -206,6 +210,7 @@ export default {
name: 'Materia',
// 数据字典
dicts: ['is_used'],
tableEnums: ['md_pb_measureunit#unit_name#measure_unit_id'],
components: { pagination, crudOperation, rrOperation, udOperation, UploadDialog },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {

View File

@@ -0,0 +1,27 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/group',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/group/',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/group',
method: 'put',
data
})
}
export default { add, edit, del }

View File

@@ -0,0 +1,269 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<el-row>
<el-col :span="4">
物料查询
<el-input
v-model="query.material_code"
clearable
style="width: 150px"
size="mini"
placeholder="物料编码、名称"
@keyup.enter.native="crud.toQuery"
/>
</el-col>
<el-col :span="4">
批次查询
<el-input
v-model="query.pcsn"
clearable
style="width: 150px"
size="mini"
placeholder="批次"
@keyup.enter.native="crud.toQuery"
/>
</el-col>
<el-col :span="4">
载具编码
<el-input
v-model="query.storagevehicle_code"
clearable
style="width: 150px"
size="mini"
placeholder="载具编码"
@keyup.enter.native="crud.toQuery"
/>
</el-col>
<el-col :span="4">
组盘状态
<el-select
v-model="query.status"
clearable
style="width: 150px"
size="mini"
placeholder="状态"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.GROUP_STATUS"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="4">
<rrOperation />
</el-col>
</el-row>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--新增表格-->
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="1200px"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="110px">
<el-row>
<el-col :span="8">
<el-form-item label="物料编码" prop="material_code" >
<el-input v-model="form.material_code" @focus="getMaterial" style="width: 200px;" :disabled="crud.status.edit > 0" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料名称" prop="material_name">
<el-input disabled v-model="form.material_name" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="规格" prop="material_spec">
<label slot="label">规&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格</label>
<el-input disabled v-model="form.material_spec" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="载具编码" prop="storagevehicle_code">
<label slot="label">载具编码</label>
<el-input v-model="form.storagevehicle_code" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料批号" prop="pcsn">
<el-input v-model="form.pcsn" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料数量" prop="qty">
<el-input-number v-model="form.qty" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="单位" prop="qty_unit_name">
<el-select
v-model="form.qty_unit_name"
style="width: 100px"
placeholder=""
@change="unitChange"
>
<el-option
v-for="item in tableEnum.md_pb_measureunit"
:key="item.id"
:label="item.label"
:value="item.value+'@'+item.label"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="源单号" prop="ext_code">
<el-input v-model="form.ext_code" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="源单类型" prop="ext_type">
<el-input v-model="form.ext_type" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column prop="storagevehicle_code" label="载具编码" :min-width="flexWidth('storagevehicle_code',crud.data,'载具编码')" />
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
<el-table-column prop="pcsn" label="批次" :min-width="flexWidth('pcsn',crud.data,'批次')" />
<el-table-column prop="status" label="状态" :formatter="formattStatus" :min-width="flexWidth('status',crud.data,'状态')" />
<el-table-column prop="qty" label="组盘数量" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="create_name" label="组盘人" :min-width="flexWidth('create_name',crud.data,'组盘人')" />
<el-table-column prop="create_time" label="组盘时间" :min-width="flexWidth('create_time',crud.data,'组盘时间')" />
<el-table-column
v-permission="['admin','Supplierbase:edit','Supplierbase:del']"
label="操作"
width="150px"
lign="center"
>
<template slot-scope="scope">
<udOperation
:data="scope.row"
:is-visiable-edit="false"
:disabled-dle="scope.row.status === '02'"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
<!--放引用的组件-->
<MaterialDialog :dialog-show.sync="materialDialog" @materialChoose="materialChoose" />
</div>
</template>
<script>
import crudGroup from '@/views/wms/pdm/group/group'
import CRUD, { crud, form, header, presenter } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import rrOperation from '@crud/RR.operation'
import MaterialDialog from '@/views/wms/basedata/material/MaterialDialog'
const defaultForm = {
group_id: null,
storagevehicle_code: null,
material_id: null,
material_name: null,
material_spec: null,
pcsn: null,
qty_unit_id: null,
qty_unit_name: null,
qty: null,
remark: null,
status: null,
create_id: null,
create_name: null,
create_time: null,
ext_code: null,
ext_type: null
}
export default {
name: 'Group',
components: { pagination, MaterialDialog, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
tableEnums: ['md_pb_measureunit#unit_name#measure_unit_id'],
// 数据字典
dicts: ['is_used', 'GROUP_STATUS'],
cruds() {
return CRUD({
title: '组盘记录',
url: 'api/group',
optShow: {
add: true,
reset: true
},
idField: 'group_id',
sort: 'group_id,desc',
crudMethod: { ...crudGroup }
})
},
data() {
return {
permission: {},
materialDialog: false,
classes: [],
rules: {
}
}
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
formattStatus(row) {
return this.dict.label.GROUP_STATUS[row.status]
},
getMaterial() {
this.materialDialog = true
},
unitChange(row) {
const split = row.split('@')
this.form.qty_unit_id = split[0]
this.form.qty_unit_name = split[1]
},
materialChoose(row) {
this.form.material_name = row.material_name
this.form.material_id = row.material_id
this.form.material_code = row.material_code
this.form.material_spec = row.material_spec
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,177 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="90px"
label-suffix=":"
>
<el-form-item label="所属区域">
<el-select
clearable
v-model="query.region_code"
style="width: 120px"
placeholder=""
>
<el-option
v-for="item in tableEnum.sch_base_region"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="点位搜索">
<el-input
v-model="query.point_code"
clearable
size="small"
placeholder="点位编码或名称"
style="width: 200px;"
class="filter-item"
/>
</el-form-item>
<el-form-item label="物料搜索">
<el-input
v-model="query.material_code"
clearable
size="small"
placeholder="物料编码、名称或规格"
style="width: 200px;"
class="filter-item"
/>
</el-form-item>
<el-form-item label="批次号">
<el-input
v-model="query.pcsn"
clearable
size="small"
placeholder="批次号"
style="width: 200px;"
class="filter-item"
/>
</el-form-item>
<rrOperation :crud="crud" />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column prop="point_code" label="点位编码" :min-width="flexWidth('struct_code',crud.data,'点位编码')" />
<el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('struct_name',crud.data,'区域编码')" />
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_code',crud.data,'物料规格')" />
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
<el-table-column prop="pcsn" label="批次号" :min-width="flexWidth('pcsn',crud.data,'批次号')" />
<el-table-column prop="storagevehicle_code" label="载具号" :min-width="flexWidth('storagevehicle_code',crud.data,'载具号')" />
<el-table-column prop="qty" label="总数" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column label="可用数" :min-width="100" >
<template slot-scope="scope">
<span>{{ scope.row.qty - scope.row.frozen_qty }}</span>
</template>
</el-table-column>
<el-table-column prop="frozen_qty" label="冻结数" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="unit_name" label="计量单位" :min-width="flexWidth('qty_unit_name',crud.data,'计量单位')" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="inbound_time" label="入库时间" :min-width="flexWidth('insert_time',crud.data,'入库时间')" />
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudStructivt from '@/views/wms/pdm/structivt/structivt'
import CRUD, { presenter, header, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
export default {
name: 'Structivt',
components: { pagination, crudOperation, rrOperation },
mixins: [presenter(), header(), crud()],
tableEnums: ['sch_base_region#region_name#region_code'],
cruds() {
return CRUD({
title: '库存管理', url: 'api/regionStruct', idField: 'stockrecord_id', sort: 'stockrecord_id,desc',
optShow: {
add: false,
edit: false,
showDtlLoading: false,
del: false,
download: false,
reset: true
},
crudMethod: { ...crudStructivt }
})
},
data() {
return {
sects: [],
permission: {},
rules: {}
}
},
created() {
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
hand(value) {
this.crud.toQuery()
},
sectQueryChange(val) {
if (val.length === 1) {
this.query.stor_id = val[0]
this.query.sect_id = ''
}
if (val.length === 0) {
this.query.sect_id = ''
this.query.stor_id = ''
}
if (val.length === 2) {
this.query.stor_id = val[0]
this.query.sect_id = val[1]
}
this.crud.toQuery()
},
querytable() {
this.crud.toQuery()
},
downdtl() {
if (this.currentRow !== null) {
this.showDtlLoading = true
download('/api/structivt/download', this.crud.query).then(result => {
downloadFile(result, '成品库存', 'xlsx')
this.showDtlLoading = false
}).catch(() => {
this.showDtlLoading = false
})
}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,65 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/structivt',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/structivt/',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/structivt',
method: 'put',
data
})
}
export function getStruct() {
return request({
url: 'api/structivt/getStruct',
method: 'get'
})
}
export function getStructById(data) {
return request({
url: 'api/structivt/getStructById',
method: 'post',
data
})
}
export function getUnits() {
return request({
url: 'api/structivt/getUnits',
method: 'get'
})
}
export function save(data) {
return request({
url: 'api/structivt/save',
method: 'post',
data: data
})
}
export function excelImport(data) {
return request({
url: 'api/structivt/importExcel',
method: 'post',
data
})
}
export default { add, edit, del, getStruct, getStructById, getUnits, save, excelImport }