opt:基础功能优化

This commit is contained in:
DESKTOP-5DIJMF9\admin
2025-07-16 16:07:40 +08:00
parent d6d30ef859
commit 0a15908907
11 changed files with 162 additions and 284 deletions

View File

@@ -81,6 +81,13 @@ export function getClassName() {
})
}
export function getAllClass() {
return request({
url: 'api/Classstandard/getAllClass',
method: 'get'
})
}
export function getCasClass(data) {
return request({
url: 'api/Classstandard/getCasClass',
@@ -100,5 +107,6 @@ export default {
getType,
queryClassById,
getClassName,
getCasClass
getCasClass,
getAllClass
}

View File

@@ -54,19 +54,31 @@
</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-form-item label="物料规格" prop="material_spec">
<label slot="label">物料规格</label>
<el-input 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="material_model">
<label slot="label">型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号</label>
<el-form-item label="物料型号" prop="material_model">
<label slot="label">物料型号</label>
<el-input v-model="form.material_model" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料分类" prop="material_type_id">
<treeselect
v-model="form.material_type_id"
:load-options="loadClass"
:options="classes"
style="width: 200px;"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="外部标识" prop="ext_id">
<el-input v-model="form.ext_id" style="width: 200px;" />
@@ -75,14 +87,14 @@
</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 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-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 label="备注" prop="remark">
<el-input v-model="form.remark" style="width: 380px;" rows="2" type="textarea" />
</el-form-item>
</el-col>
</el-row>
@@ -105,7 +117,7 @@
<el-table-column prop="material_name" label="物料名称" width="180" show-overflow-tooltip />
<el-table-column prop="material_spec" label="物料规格" width="140" />
<el-table-column prop="material_model" label="物料型号" />
<el-table-column prop="class_name" label="物料分类" width="140" />
<el-table-column prop="class_name" label="物料分类" width="140" :formatter="bill_typeFormat" />
<el-table-column label="启用" align="center" prop="is_used">
<template slot-scope="scope">
<el-switch
@@ -118,6 +130,7 @@
/>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" width="140" />
<el-table-column prop="update_optname" label="修改人" />
<el-table-column prop="update_time" label="修改时间" width="135" />
<el-table-column
@@ -150,6 +163,10 @@ import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import UploadDialog from './UploadDialog'
import crudClassstandard from '@/views/wms/basedata/class/classstandard'
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import crudMaterialbase from '@/views/wms/basedata/material/material'
const defaultForm = {
material_id: null,
@@ -161,7 +178,7 @@ const defaultForm = {
english_name: null,
base_unit_id: null,
approve_fileno: null,
print_no: null,
remark: null,
material_type_id: null,
len_unit_id: null,
length: null,
@@ -172,24 +189,16 @@ const defaultForm = {
net_weight: null,
cubage_unit_id: null,
cubage: null,
create_id: null,
create_name: null,
create_time: null,
update_optid: null,
update_optname: null,
update_time: null,
is_used_time: null,
is_used: null,
is_used: '0',
is_delete: null,
ext_id: null,
material_height_type: null,
product_series: null
ext_id: null
}
export default {
name: 'Materia',
// 数据字典
dicts: ['is_used'],
components: { UploadDialog, pagination, crudOperation, rrOperation, udOperation },
components: { UploadDialog, pagination, crudOperation, rrOperation, udOperation, Treeselect },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
@@ -203,14 +212,11 @@ export default {
},
data() {
return {
classes1: [],
classes2: [],
classes3: [],
classes: [],
fullscreenLoading: false,
uploadShow: false,
measure_unit: [],
productSeries: [],
permission: {},
classlist: [],
rules: {
material_id: [
{ required: true, message: '不能为空', trigger: 'blur' }
@@ -221,21 +227,25 @@ export default {
material_name: [
{ required: true, message: '物料名称不能为空', trigger: 'blur' }
],
create_id: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
create_time: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
is_used: [
{ required: true, message: '是否启用不能为空', trigger: 'blur' }
],
material_height_type: [
{ required: true, message: '不能为空', trigger: 'blur' }
material_type_id: [
{ required: true, message: '物料分类不能为空', trigger: 'blur' }
]
}
}
},
created() {
crudClassstandard.getAllClass().then(res => {
this.classlist = res
})
const param = {
'materOpt_code': '00'
}
crudMaterialbase.getMaterOptType(param).then(res => {
this.class_idStr = res.class_idStr
this.crud.query.class_idStr = res.class_idStr
this.queryClassId()
})
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
@@ -249,6 +259,41 @@ export default {
this.crud.notify('同步成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
bill_typeFormat(row, column) {
for (const item of this.classlist) {
if (item.value === row.material_type_id) {
return item.label
}
}
},
loadClass({ action, parentNode, callback }) {
if (action === LOAD_CHILDREN_OPTIONS) {
crudClassstandard.getClass({ pid: parentNode.id }).then(res => {
parentNode.children = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
setTimeout(() => {
callback()
}, 100)
})
}
},
queryClassId() {
const param = {
'class_idStr': this.class_idStr
}
crudClassstandard.queryClassById(param).then(res => {
this.classes = res.content.map(obj => {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
// 改变状态
changeEnabled(data, val) {
this.$confirm('此操作将 "' + this.dict.label.is_used[val] + '" ' + data.material_name + ', 是否继续', '提示', {

View File

@@ -1,151 +0,0 @@
<template>
<el-dialog
v-if="dialogShow"
title="仓位信息"
append-to-body
:visible.sync="dialogVisible"
:before-close="handleClose"
width="1100px"
destroy-on-close
@close="close"
>
<el-form ref="form3" :model="formMst" :rules="rules" size="mini" label-width="130px">
<el-row>
<el-col :span="8">
<el-form-item label="所属库区:">
<el-cascader
placeholder="所属库区"
:options="sects"
:props="{ checkStrictly: true }"
clearable
style="width: 210px"
class="filter-item"
@change="sectQueryChange"
/>
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item label="仓位前缀:">
<el-input v-model="formMst.prefix" placeholder="如91、B21、C31等" size="mini" style="width: 210px" />
</el-form-item>
</el-col>-->
<el-col :span="8">
<el-form-item label="生成数量:">
<el-input-number :precision="0" :step="1" :min="1" :max="90000" v-model="formMst.num" size="mini" :controls="false" style="width: 210px" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="20" style="border: 1px solid white">
<span />
</el-col>
<el-col :span="4">
<span>
<el-button icon="el-icon-check" size="mini" type="primary" :loading="loadingBut" @click="oneCreate">保存</el-button>
<el-button icon="el-icon-close" size="mini" type="info" @click="close">关闭</el-button>
</span>
</el-col>
</el-row>
</el-form>
</el-dialog>
</template>
<script>
import CRUD, { crud } from '@crud/crud'
import crudStructattr from '@/views/wms/basedata/structattr/structattr'
export default {
name: 'SunShowDialog',
mixins: [crud()],
props: {
dialogShow: {
type: Boolean,
default: false
}
},
data() {
return {
formMst: {
stor_id: '',
sect_id: '',
prefix: '',
num: 0
},
sects: [],
dialogVisible: false,
loadingBut: false
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
methods: {
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done()
})
.catch(_ => {
})
},
close() {
this.$refs['form3'].resetFields()
this.$emit('update:dialogShow', false)
},
sectQueryChange(val) {
if (val.length === 1) {
this.formMst.stor_id = val[0]
this.formMst.sect_id = ''
}
if (val.length === 0) {
this.formMst.sect_id = ''
this.formMst.stor_id = ''
}
if (val.length === 2) {
this.formMst.stor_id = val[0]
this.formMst.sect_id = val[1]
}
},
oneCreate() {
if (this.formMst.sect_id === '') {
return this.crud.notify('库区不能为空', CRUD.NOTIFICATION_TYPE.INFO)
}
if (this.formMst.num === '') {
return this.crud.notify('数量不能为空', CRUD.NOTIFICATION_TYPE.INFO)
}
this.loadingBut = true
crudStructattr.oneCreate(this.formMst).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.close()
this.crud.toQuery()
this.loadingBut = false
}).catch(() => {
this.loadingBut = false
})
},
blurQuery() {
this.loadingBut = true
crudStructattr.blurQuery({ 'prefix': this.formMst.prefix }).then(res => {
this.crud.notify('可使用此前缀!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.loadingBut = false
}).catch(() => {
this.loadingBut = false
})
}
}
}
</script>
<style scoped>
</style>

View File

@@ -85,7 +85,7 @@
inactive-value="1"
active-color="#C0CCDA"
inactive-color="#409EFF"
@change="hand"
@change="crud.toQuery"
/>
</el-form-item>
<rrOperation />
@@ -93,16 +93,6 @@
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<!-- <el-button-->
<!-- slot="right"-->
<!-- class="filter-item"-->
<!-- type="warning"-->
<!-- icon="el-icon-check"-->
<!-- size="mini"-->
<!-- @click="openOneCreate"-->
<!-- >-->
<!-- 一键生成-->
<!-- </el-button>-->
</crudOperation>
<!--表单组件-->
@@ -174,12 +164,12 @@
<el-col :span="12">
<el-form-item label="容量" prop="capacity">
<label slot="label">容&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;量:</label>
<el-input v-model="form.capacity" style="width: 200px;" />
<el-input-number v-model="form.capacity" style="width: 200px;" :precision="3" :controls="false"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="承受重量" prop="weight">
<el-input v-model="form.weight" style="width: 200px;" />
<el-input-number v-model="form.weight" style="width: 200px;" :precision="3" :controls="false"></el-input-number>
</el-form-item>
</el-col>
</el-row>
@@ -187,13 +177,13 @@
<el-col :span="12">
<el-form-item label="宽度" prop="width">
<label slot="label">宽&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;度:</label>
<el-input v-model="form.width" style="width: 200px;" />
<el-input-number v-model="form.width" style="width: 200px;" :precision="3" :controls="false"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="深度" prop="zdepth">
<label slot="label">深&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;度:</label>
<el-input v-model="form.zdepth" style="width: 200px;" />
<el-input-number v-model="form.zdepth" style="width: 200px;" :precision="3" :controls="false"></el-input-number>
</el-form-item>
</el-col>
</el-row>
@@ -201,31 +191,35 @@
<el-col :span="12">
<el-form-item label="高度" prop="height">
<label slot="label">高&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;度:</label>
<el-input v-model="form.height" style="width: 200px;" />
<el-input-number v-model="form.height" style="width: 200px;" :precision="3" :controls="false"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="放置类型" prop="placement_type">
<el-select
v-model="form.placement_type"
placeholder=""
style="width: 200px"
>
<el-option
v-for="item in dict.placement_type"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-form-item label="是否临时" prop="is_tempstruct">
<el-radio v-model="form.is_tempstruct" label="1">是</el-radio>
<el-radio v-model="form.is_tempstruct" label="0">否</el-radio>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="是否临时" prop="is_tempstruct">
<el-radio v-model="form.is_tempstruct" label="1">是</el-radio>
<el-radio v-model="form.is_tempstruct" label="0">否</el-radio>
<el-col :span="12">
<el-form-item label="" prop="row_num">
<label slot="label">排:</label>
<el-input-number v-model="form.row_num" style="width: 200px;" :precision="0" :min="1" :controls="false"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="" prop="col_num">
<label slot="label">列:</label>
<el-input-number v-model="form.col_num" style="width: 200px;" :precision="0" :min="1" :controls="false"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="" prop="layer_num">
<label slot="label">层:</label>
<el-input-number v-model="form.layer_num" style="width: 200px;" :precision="0" :min="1" :controls="false"></el-input-number>
</el-form-item>
</el-col>
</el-row>
@@ -252,9 +246,6 @@
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<!--
<el-table-column type="selection" width="55" />
-->
<el-table-column prop="struct_code" label="仓位编码" :min-width="flexWidth('struct_code',crud.data,'仓位编码')" />
<el-table-column prop="struct_name" label="仓位名称" :min-width="flexWidth('struct_name',crud.data,'仓位名称')" />
<el-table-column prop="simple_name" label="仓位简称" :min-width="flexWidth('simple_name',crud.data,'仓位简称')" />
@@ -266,12 +257,9 @@
{{ dict.label.d_lock_type[scope.row.lock_type] }}
</template>
</el-table-column>
<el-table-column prop="sect_name" label="库区名称" />
<el-table-column prop="placement_type" label="放置类型" min-width="120" show-overflow-tooltip>
<template slot-scope="scope">
{{ dict.label.placement_type[scope.row.placement_type] }}
</template>
</el-table-column>
<el-table-column prop="row_num" label="" width="40" />
<el-table-column prop="col_num" label="" width="40" />
<el-table-column prop="layer_num" label="" width="40" />
<el-table-column label="是否启用" align="center" prop="is_used">
<template slot-scope="scope">
<el-switch
@@ -305,7 +293,6 @@
<!--分页组件-->
<pagination />
</div>
<!-- <OneCreateDialog :dialog-show.sync="openOneCreateDialog" />-->
</div>
</template>
@@ -317,7 +304,6 @@ import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import OneCreateDialog from '@/views/wms/basedata/structattr/OneCreateDialog'
import crudSectattr from '@/views/wms/basedata/sectattr/sectattr'
const defaultForm = {
@@ -342,18 +328,13 @@ const defaultForm = {
yqty: null,
zqty: null,
is_tempstruct: '0',
create_id: null,
create_name: null,
create_time: null,
col_num: null,
layer_num: null,
block_num: null,
update_optid: null,
update_optname: null,
update_time: null,
is_delete: null,
back_ground_color: null,
front_ground_color: null,
back_ground_pic: null,
font_direction_scode: null,
is_used: null,
is_used: '0',
is_zdepth: null,
storagevehicle_id: null,
storagevehicle_code: null,
@@ -382,6 +363,7 @@ export default {
optShow: { add: true, reset: true },
url: 'api/structattr',
idField: 'struct_id',
query: { is_used: '1' },
crudMethod: { ...crudStructattr }
})
},
@@ -429,28 +411,17 @@ export default {
stor_id: [
{ required: true, message: '仓库标识不能为空', trigger: 'blur' }
],
capacity: [
row_num: [
{ required: false, message: '不能为空', trigger: 'blur' },
{ validator: numberOne }
],
weight: [
col_num: [
{ required: false, message: '不能为空', trigger: 'blur' },
{ validator: numberOne }
],
width: [
layer_num: [
{ required: false, message: '不能为空', trigger: 'blur' },
{ validator: numberOne }
],
height: [
{ required: false, message: '不能为空', trigger: 'blur' },
{ validator: numberOne }
],
zdepth: [
{ required: false, message: '不能为空', trigger: 'blur' },
{ validator: numberOne }
],
material_height_type: [
{ required: true, message: '物料高度类型不能为空', trigger: 'blur' }
]
}
}

View File

@@ -69,7 +69,6 @@
>
<el-option
v-for="item in dict.ST_INV_TYPE_MV"
:disabled="item.value === '21' || item.value === '31'"
:key="item.value"
:label="item.label"
:value="item.value"
@@ -227,7 +226,7 @@ const defaultForm = {
bill_status: '10',
total_qty: '0',
detail_count: '0',
bill_type: '29',
bill_type: '99',
remark: '',
biz_date: new Date(),
create_mode: '',