add:库内移库,库存状态变更

This commit is contained in:
2025-08-21 11:10:55 +08:00
parent 69c7b8ecc9
commit 0173a6e51e
30 changed files with 1038 additions and 279 deletions

View File

@@ -22,7 +22,6 @@
placeholder="所属库区"
:options="sects"
:props="{ checkStrictly: true }"
clearable
@change="sectQueryChange"
/>
</el-form-item>
@@ -55,6 +54,9 @@
<el-table-column prop="struct_code" label="货位编码" />
<el-table-column prop="struct_name" label="货位名称" />
<el-table-column prop="sect_name" label="库区名称" />
<el-table-column prop="storagevehicle_code" label="载具编码" />
<el-table-column prop="is_emptyvehicle" label="是否空载具" :formatter="isEmpVehihcle" />
</el-table>
<!--分页组件-->
<pagination />
@@ -80,7 +82,7 @@ export default {
return CRUD({
title: '仓位',
optShow: {},
url: 'api/structattr',
url: 'api/structattr/getMoveStruct',
idField: 'struct_id',
sort: 'struct_id,desc',
query: { search: '', is_lock: '0', lock_type: '0', sect_id: '', stor_id: '' },
@@ -100,7 +102,11 @@ export default {
type: String,
default: String
},
layerNum: {
defaultList: {
type: String,
default: Array
},
notPoint: {
type: String,
default: String
}
@@ -114,8 +120,7 @@ export default {
checkrow: {},
rows: [],
dialogDis: true,
lock: '',
defaultList: ['1582991156504039424', '1645705331612979200']
lock: ''
}
},
watch: {
@@ -155,6 +160,7 @@ export default {
this.query.is_lock = '0'
this.query.lock_type = this.lock
this.query.is_used = '1'
this.query.not_point = this.notPoint
this.crud.toQuery()
},
handleSelectionChange(val, row) {
@@ -196,6 +202,13 @@ export default {
}
this.$emit('update:dialogShow', false)
this.$emit('tableChanged', this.checkrow)
},
isEmpVehihcle(row) {
if (row.is_emptyvehicle === '1') {
return '是'
} else {
return '否'
}
}
}
}

View File

@@ -179,11 +179,11 @@
{{ scope.row.vehicle_code ? scope.row.vehicle_code : '-' }}
</template>
</el-table-column>
<!--<el-table-column prop="vehicle_code2" label="载具编码2" :min-width="flexWidth('vehicle_code2',crud.data,'载具编码2')">
<el-table-column prop="vehicle_code2" label="载具编码2" :min-width="flexWidth('vehicle_code2',crud.data,'载具编码2')">
<template slot-scope="scope">
{{ scope.row.vehicle_code2 ? scope.row.vehicle_code2 : '-' }}
</template>
</el-table-column>-->
</el-table-column>
<!-- <el-table-column prop="task_class_id" label="任务分类" :min-width="flexWidth('task_class_id',crud.data,'任务分类')" />-->
<el-table-column prop="task_status" label="任务状态" :min-width="flexWidth('task_status',crud.data,'任务状态')">
<template slot-scope="scope">

View File

@@ -0,0 +1,257 @@
<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-cascader
placeholder="所属库区"
:options="sects"
:props="{ checkStrictly: true }"
clearable
class="filter-item"
style="width: 200px;"
@change="sectQueryChange"
/>
</el-form-item>
<el-form-item label="仓位搜索">
<el-input
v-model="query.struct_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">
</crudOperation>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<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="stor_name" label="仓库" :min-width="flexWidth('stor_name',crud.data,'仓库')" />
<el-table-column prop="sect_name" label="库区" :min-width="flexWidth('sect_name',crud.data,'库区')" />
<el-table-column prop="quality_type" label="品质类型" min-width="140">
<template scope="scope">
<el-select
v-if="scope.row.edit"
v-model="scope.row.quality_type"
clearable
size="mini"
placeholder="全部"
style="width: 110px;"
class="filter-item"
>
<el-option
v-for="item in dict.QUALITY_TYPE"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<div v-if="!scope.row.edit">{{scope.row.quality_name}}</div>
</template>
</el-table-column>
<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="material_spec" label="物料规格" :min-width="flexWidth('material_spec',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="canuse_qty" label="可用数" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="frozen_qty" label="冻结数" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="qty_unit_name" label="计量单位" :min-width="flexWidth('qty_unit_name',crud.data,'计量单位')" />
<el-table-column prop="produce_time" label="生产日期" :min-width="flexWidth('produce_time',crud.data,'生产日期')" />
<el-table-column prop="quality_time" label="有效日期" :min-width="flexWidth('quality_time',crud.data,'有效日期')" />
<el-table-column prop="bake_num" label="烘干次数" :min-width="flexWidth('bake_num',crud.data,'烘干次数')" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="insert_time" label="入库时间" :min-width="flexWidth('insert_time',crud.data,'入库时间')" />
<el-table-column align="center" width="200" label="操作" fixed="right">
<template scope="scope">
<el-button
v-show="!scope.row.edit"
type="primary"
class="filter-item"
size="mini"
icon="el-icon-edit"
@click="handleEdit(scope.$index, scope.row)"
>编辑
</el-button>
<el-button
v-show="scope.row.edit"
type="success"
class="filter-item"
size="mini"
icon="el-icon-check"
@click="handleEdit(scope.$index, scope.row)"
>完成
</el-button>
<el-button
type="primary"
class="filter-item"
size="mini"
icon="el-icon-refresh-right"
:loading="loadingConfirm"
@click="statusChange(scope.$index, scope.row)"
>变更
</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudStructivt from '@/views/wms/statement/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 crudSectattr from '@/views/wms/basedata/sectattr/sectattr'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
export default {
name: 'IvtStatusChanage',
components: { pagination, crudOperation, rrOperation },
mixins: [presenter(), header(), crud()],
dicts: ['QUALITY_TYPE'],
cruds() {
return CRUD({
title: '状态变更', url: 'api/structivt', 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: [],
loadingConfirm: false,
permission: {},
rules: {}
}
},
created() {
crudSectattr.getSect({ 'stor_id': '' }).then(res => {
this.sects = res.content
})
},
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
})
}
},
formattQuality(row) {
return this.dict.label.QUALITY_TYPE[row.quality_type]
},
handleEdit(index, row) {
// 判断是否可以关闭编辑状态
row.edit = !row.edit
this.$refs.table.selection.split(index, 1, row)
},
statusChange(index, row) {
if (!row.edit) {
this.crud.notify('请点击编辑后在变更!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
if (row.old_quality_type === row.quality_type) {
this.crud.notify('变更品质类型相同!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
this.loadingConfirm = true
crudStructivt.statusChange(row).then(res => {
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
this.loadingConfirm = false
}).catch(() => {
this.loadingConfirm = false
})
}
}
}
</script>
<style scoped>
</style>

View File

@@ -65,6 +65,7 @@
<el-select
v-model="form.bill_type"
placeholder="业务类型"
:disabled="crud.status.view > 0"
class="filter-item"
>
<el-option
@@ -144,7 +145,7 @@
size="mini"
@click="queryDtl()"
>
添加库存物料
添加库存托盘
</el-button>
</span>
@@ -159,14 +160,10 @@
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column v-if="crud.status.add!==1" prop="work_status" label="状态" align="center" :formatter="bill_statusFormat" :min-width="flexWidth('work_status',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="qty" label="重量" :formatter="crud.formatNum3" align="center" :min-width="flexWidth('qty',crud.data,'重量')" />
<el-table-column prop="qty_unit_name" label="单位" align="center" :min-width="flexWidth('qty_unit_name',crud.data,'单位')" />
<el-table-column prop="storagevehicle_code" label="载具号" :min-width="flexWidth('storagevehicle_code',crud.data,'载具号')" />
<el-table-column prop="storagevehicle_code" label="移出载具号" :min-width="flexWidth('storagevehicle_code',crud.data,'移出载具号')" />
<el-table-column prop="turnout_sect_name" label="移出库区" :min-width="flexWidth('turnout_sect_name',crud.data,'移出库区')" />
<el-table-column prop="turnout_struct_code" label="移出货位" :min-width="flexWidth('turnout_struct_code',crud.data,'移出货位')" />
<el-table-column prop="storagevehicle_code2" label="移入载具号" :min-width="flexWidth('storagevehicle_code2',crud.data,'移入载具号')" />
<el-table-column prop="turnin_sect_name" label="移入库区" :min-width="flexWidth('turnin_sect_name',crud.data,'移入库区')" />
<el-table-column prop="turnin_struct_code" label="移入货位" :min-width="flexWidth('turnin_struct_code',crud.data,'移入货位')" align="center">
<template scope="scope">
@@ -176,6 +173,7 @@
<span v-show="scope.row.edit">{{ scope.row.turnin_struct_code }}</span>
</template>
</el-table-column>
<el-table-column v-if="crud.status.view > 0" prop="task_code" label="任务编码" :min-width="flexWidth('task_code',crud.data,'任务编码')" />
<el-table-column v-if="crud.status.cu > 0" align="center" width="160" label="操作" fixed="right">
<template scope="scope">
<el-button
@@ -207,7 +205,7 @@
</el-table-column>
</el-table>
<AddDtl :dialog-show.sync="dtlShow" :sect-list="sectList" :stor-id="storId" @tableChanged="tableChanged" />
<StructDiv ref="child" :stor-id="storId" :dialog-show.sync="structShow" @tableChanged="structChanged" />
<StructDiv ref="child" :stor-id="storId" :default-list="defaultList" :not-point="not_point" :dialog-show.sync="structShow" @tableChanged="structChanged" />
</el-dialog>
</template>
@@ -227,7 +225,7 @@ const defaultForm = {
bill_status: '10',
total_qty: '0',
detail_count: '0',
bill_type: '29',
bill_type: '2001',
remark: '',
biz_date: new Date(),
create_mode: '',
@@ -251,11 +249,13 @@ export default {
structShow: false,
structShow2: false,
flagnow: false,
not_point: null,
nowrow: {},
storId: null,
nowindex: '',
storlist: [],
sectList: [],
defaultList: [],
invtypelist: [],
rules: {
stor_id: [
@@ -334,6 +334,9 @@ export default {
this.$refs.child.getMsg(false)
this.nowindex = index
this.nowrow = row
this.not_point = row.struct_id
this.defaultList.push(row.stor_id)
this.defaultList.push(row.sect_id)
},
tableChanged(rows) {
const tablemap = new Map()
@@ -385,6 +388,7 @@ export default {
this.form.tableData[i].turnin_sect_id = row.sect_id
this.form.tableData[i].turnin_sect_code = row.sect_code
this.form.tableData[i].turnin_sect_name = row.sect_name
this.form.tableData[i].storagevehicle_code2 = row.storagevehicle_code
this.form.tableData.splice(i, 1, this.form.tableData[i]) // 通过splice 替换数据 触发视图更新
}
}

View File

@@ -1,6 +1,6 @@
<template>
<el-dialog
title="库存物料选择"
title="库存载具选择"
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
@@ -38,23 +38,12 @@
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="物料编码">
<el-form-item label="载具编码">
<el-input
v-model="query.material_code"
v-model="query.storagevehicle_code"
clearable
size="mini"
placeholder="物料"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="批次">
<el-input
v-model="query.pcsn"
clearable
size="mini"
placeholder="批次"
placeholder="载具"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
@@ -75,12 +64,12 @@
<el-table-column type="selection" width="55" />
<el-table-column prop="turnout_sect_name" label="库区名称" :min-width="flexWidth('turnout_sect_name',crud.data,'库区名称')" />
<el-table-column prop="turnout_struct_code" label="货位编码" :min-width="flexWidth('turnout_struct_code',crud.data,'货位编码')" />
<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="qty" label="重量" :formatter="crud.formatNum3" :min-width="flexWidth('qty',crud.data,'重量')" />
<el-table-column prop="qty_unit_name" label="重量单位" :min-width="flexWidth('qty_unit_name',crud.data,'重量单位')" />
<el-table-column prop="storagevehicle_code" label="载具编码" :min-width="flexWidth('storagevehicle_code',crud.data,'载具编码')">
<template slot-scope="scope">
<el-link type="warning" @click="toView(scope.$index, scope.row)">{{ scope.row.storagevehicle_code }}</el-link>
</template>
</el-table-column>
<el-table-column prop="is_emptyvehicle" label="是否空载具" :formatter="isEmpVehihcle" :min-width="flexWidth('is_emptyvehicle',crud.data,'是否空载具')" />
</el-table>
<!--分页组件-->
<pagination />
@@ -88,6 +77,7 @@
<el-button slot="left" type="info" @click="dialogVisible = false">关闭</el-button>
<el-button slot="left" type="primary" @click="submit">保存</el-button>
</span>
<ViewMaterDialog :dialog-show.sync="viewMaterDialog" :open-param="viewMaterParam" />
</el-dialog>
</template>
@@ -97,10 +87,11 @@ import CRUD, { header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
import crudSectattr from '@/views/wms/basedata/sectattr/sectattr'
import ViewMaterDialog from '@/views/wms/st/movebill/ViewMaterDialog'
export default {
name: 'AddDtl',
components: { rrOperation, pagination },
components: { rrOperation, pagination, ViewMaterDialog },
cruds() {
return CRUD({ title: '用户', idField: 'storagevehicleext_id', url: 'api/moveStor/getCanuseIvt',
query: {
@@ -138,6 +129,8 @@ export default {
return {
dialogVisible: false,
opendtlParam: '',
viewMaterDialog: false,
viewMaterParam: null,
sects: [],
rows: [],
defaultList: []
@@ -177,11 +170,9 @@ export default {
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
},
ivt_levelFormat(row, column) {
return this.dict.label.ST_IVT_LEVEL[row.ivt_level]
},
is_activeFormat(row, column) {
return this.dict.label.is_usable[row.is_active]
toView(index, row) {
this.viewMaterParam = row
this.viewMaterDialog = true
},
sectQueryChange(val) {
if (val.length === 1) {
@@ -207,6 +198,13 @@ export default {
this.$emit('update:dialogShow', false)
this.$emit('tableChanged', this.rows)
this.crud.resetQuery(false)
},
isEmpVehihcle(row) {
if (row.is_emptyvehicle === '1') {
return '是'
} else {
return '否'
}
}
}
}

View File

@@ -0,0 +1,129 @@
<template>
<el-dialog
title="载具详情"
append-to-body
:visible.sync="dialogVisible"
:before-close="handleClose"
width="1100px"
destroy-on-close
@close="close"
>
<el-form ref="form2" :model="formMst" :rules="rules" size="mini" label-width="130px">
<el-row>
<el-col :span="8">
<el-form-item label="物料编码:">
<el-input v-model="formMst.material_code" disabled size="mini" style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料名称:">
<el-input v-model="formMst.material_name" disabled size="mini" style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料规格:">
<el-input v-model="formMst.material_spec" disabled size="mini" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="物料批次:">
<el-input v-model="formMst.pcsn" disabled size="mini" style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="可用数量:">
<el-input v-model="formMst.qty" disabled size="mini" style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="计量单位:">
<el-input v-model="formMst.qty_unit_name" disabled size="mini" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row :gutter="22">
<el-col :span="22" style="border: 1px solid white">
<span />
</el-col>
<el-col :span="2">
<el-button icon="el-icon-close" size="mini" type="info" @click="close">关闭</el-button>
</el-col>
</el-row>
<el-row :gutter="18">
<el-col :span="18" style="border: 10px solid white">
<span />
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { crud } from '@crud/crud'
export default {
name: 'ViewMaterDialog',
mixins: [crud()],
props: {
dialogShow: {
type: Boolean,
default: false
},
openParam: {
type: Object
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
this.formMst = this.openParam
}
}
},
data() {
return {
formMst: {
},
dialogVisible: false
}
},
methods: {
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done()
})
.catch(_ => {
})
},
close() {
this.$refs['form2'].resetFields()
this.$emit('update:dialogShow', false)
}
}
}
</script>
<style>
.crud-opts2 {
padding: 0 0;
display: -webkit-flex;
display: flex;
align-items: center;
}
.crud-opts2 .crud-opts-right2 {
margin-left: auto;
padding: 4px 4px;
}
.input-with-select {
background-color: #fff;
}
</style>

View File

@@ -117,6 +117,17 @@
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
:disabled="confirm_flag"
@click="sendTask"
>
任务下发
</el-button>
<el-button
slot="right"
class="filter-item"
@@ -326,6 +337,12 @@ export default {
this.querytable()
})
},
sendTask() {
movestor.sendTask({ 'moveinv_id': this.currentRow.moveinv_id }).then(res => {
this.crud.notify('任务下发成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.querytable()
})
},
querytable() {
this.onSelectAll()
this.crud.toQuery()

View File

@@ -40,4 +40,12 @@ export function confirm(data) {
})
}
export default { add, edit, del, getMoveDtl, confirm }
export function sendTask(data) {
return request({
url: '/api/moveStor/sendTask',
method: 'post',
data
})
}
export default { add, edit, del, getMoveDtl, confirm, sendTask }

View File

@@ -90,6 +90,9 @@
<el-table-column prop="canuse_qty" label="可用数" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="frozen_qty" label="冻结数" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="qty_unit_name" label="计量单位" :min-width="flexWidth('qty_unit_name',crud.data,'计量单位')" />
<el-table-column prop="produce_time" label="生产日期" :min-width="flexWidth('produce_time',crud.data,'生产日期')" />
<el-table-column prop="quality_time" label="有效日期" :min-width="flexWidth('quality_time',crud.data,'有效日期')" />
<el-table-column prop="bake_num" label="烘干次数" :min-width="flexWidth('bake_num',crud.data,'烘干次数')" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="insert_time" label="入库时间" :min-width="flexWidth('insert_time',crud.data,'入库时间')" />
</el-table>

View File

@@ -62,4 +62,12 @@ export function excelImport(data) {
})
}
export default { add, edit, del, getStruct, getStructById, getUnits, save, excelImport }
export function statusChange(data) {
return request({
url: 'api/structivt/statusChange',
method: 'post',
data
})
}
export default { add, edit, del, getStruct, getStructById, getUnits, save, excelImport, statusChange }