库存物料DB 库存盘点UI/UX 接口逻辑处理

库存物料DB 库存盘点UI/UX 接口逻辑处理
pull/3/head
siontion 9 months ago
parent 232cfdef95
commit 2a0f04ced0

@ -28,7 +28,7 @@ public class StoragePageReqVO extends PageParam {
private String stockNo; private String stockNo;
@Schema(description = "上游单号") @Schema(description = "上游单号")
private Long headerNo; private String headerNo;
@Schema(description = "备注", example = "你说的对") @Schema(description = "备注", example = "你说的对")
private String description; private String description;

@ -40,7 +40,7 @@ public class StorageRespVO {
@Schema(description = "上游单号") @Schema(description = "上游单号")
@ExcelProperty("上游单号") @ExcelProperty("上游单号")
private Long headerNo; private String headerNo;
@Schema(description = "备注", example = "你说的对") @Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注") @ExcelProperty("备注")

@ -29,7 +29,7 @@ public class StorageSaveReqVO {
private String stockNo; private String stockNo;
@Schema(description = "上游单号") @Schema(description = "上游单号")
private Long headerNo; private String headerNo;
@Schema(description = "备注", example = "你说的对") @Schema(description = "备注", example = "你说的对")
private String description; private String description;

@ -89,6 +89,14 @@ public class StorageLogController {
return success(pageResult); return success(pageResult);
} }
@GetMapping("/all")
@Operation(summary = "获得全部库存数据")
@PreAuthorize("@ss.hasPermission('heli:storage-log:query')")
public CommonResult<List<StorageLogNowDO>> getStorageNowList(@Valid StorageNowAllReqVO queryReqVO) {
List<StorageLogNowDO> pageResult = storageLogService.getStorageNowList(queryReqVO);
return success(pageResult);
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出入/出库日志 Excel") @Operation(summary = "导出入/出库日志 Excel")
@PreAuthorize("@ss.hasPermission('heli:storage-log:export')") @PreAuthorize("@ss.hasPermission('heli:storage-log:export')")

@ -0,0 +1,27 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Schema(description = "管理后台 - 入/出库日志分页 Request VO")
@Data
public class StorageNowAllReqVO {
@Schema(description = "物料编码")
private String matCode;
@Schema(description = "物料类型")
private String matType;
@Schema(description = "是否排除库存为0的物料")
private Integer noZero;
@Schema(description = "仓库id")
private Integer whId;
}

@ -55,7 +55,7 @@ public class StorageDO extends BaseDO {
/** /**
* *
*/ */
private Long headerNo; private String headerNo;
/** /**
* *
*/ */

@ -6,6 +6,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*; import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
/** /**
* / DO * / DO
@ -27,20 +28,17 @@ public class StorageLogNowDO extends BaseDO {
@TableId @TableId
private Long id; private Long id;
/**
*
*/
private BigDecimal storageOkQty; private BigDecimal storageOkQty;
/**
*
*/
private String lotNo; private String lotNo;
private String matName; private String matName;
private String shortName;
private String matCode; private String matCode;
private String matType; private String matType;
private String matSpec;
private String matBrand;
private String matUnit;
private Long whId; private Long whId;
private String whName; private String whName;
@ -51,9 +49,7 @@ public class StorageLogNowDO extends BaseDO {
private Long pnId; private Long pnId;
private String pnName; private String pnName;
private String shortName;
private String matSpec;
private String matBrand;
private String matUnit;
} }

@ -4,10 +4,13 @@ import com.alibaba.druid.util.StringUtils;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* / Mapper * / Mapper
* *
@ -33,4 +36,8 @@ public interface StorageLogNowMapper extends BaseMapperX<StorageLogNowDO> {
return selectPage(reqVO,query); return selectPage(reqVO,query);
} }
PageResult<StorageLogNowDO> selectAllPage(StorageLogPageReqVO reqVO); PageResult<StorageLogNowDO> selectAllPage(StorageLogPageReqVO reqVO);
List<StorageLogNowDO> selectNoZero(StorageNowAllReqVO reqVO);
List<StorageLogNowDO> selectNowList(StorageNowAllReqVO reqVO);
} }

@ -16,8 +16,7 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.*;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.WAREHOUSE;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
/** /**
@ -39,7 +38,14 @@ public class StorageServiceImpl implements StorageService {
storage.setStockNo(UUID.fastUUID().toString(true)); storage.setStockNo(UUID.fastUUID().toString(true));
storageMapper.insert(storage); storageMapper.insert(storage);
storage.setStockNo(STOCK_IN.getCode(storage.getId().toString())); if(createReqVO.getStockType().equals(1)) {
// 入库前缀
storage.setStockNo(STOCK_IN.getCode(storage.getId().toString()));
}else{
// 出库前缀
storage.setStockNo(STOCK_OUT.getCode(storage.getId().toString()));
}
storageMapper.updateById(storage); storageMapper.updateById(storage);
// 返回 // 返回
return storage.getId(); return storage.getId();

@ -57,6 +57,8 @@ public interface StorageLogService {
PageResult<StorageLogNowDO> getStorageNowPage(StorageLogPageReqVO pageReqVO); PageResult<StorageLogNowDO> getStorageNowPage(StorageLogPageReqVO pageReqVO);
List<StorageLogNowDO> getStorageNowList(StorageNowAllReqVO queryReqVO);
void createStorageLogBatch(List<StorageLogDO> storageLogDOs); void createStorageLogBatch(List<StorageLogDO> storageLogDOs);
} }

@ -86,6 +86,18 @@ public class StorageLogServiceImpl implements StorageLogService {
return storageLogNowMapper.selectPage(pageReqVO); return storageLogNowMapper.selectPage(pageReqVO);
} }
@Override
public List<StorageLogNowDO> getStorageNowList(StorageNowAllReqVO queryReqVO) {
if(queryReqVO.getNoZero().equals(1)){
// 根据仓库id排除库存为o的物料
return storageLogNowMapper.selectNoZero(queryReqVO);
}else{
// 筛选全部的实时库存数据,包含未分配仓库的物料信息和已分配仓库的物料信息
return storageLogNowMapper.selectNowList(queryReqVO);
}
//
}
@Override @Override
public void createStorageLogBatch(List<StorageLogDO> storageLogDOs) { public void createStorageLogBatch(List<StorageLogDO> storageLogDOs) {
for (StorageLogDO storageLogDo : storageLogDOs){ for (StorageLogDO storageLogDo : storageLogDOs){

@ -55,4 +55,46 @@
</if> </if>
</where> </where>
</select> </select>
<select id="selectNoZero"
parameterType="com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogAll.StorageLogAllDO">
select * from v_storage_material_now where storage_ok_qty>0
<where>
<if test="matCode != null and matCode != ''">
AND (mat_code like concat('%', #{matCode}, '%') OR mat_name like concat('%', #{matCode}, '%'))
</if>
<if test="matType != null and matType != ''">
AND mat_type = #{matType}
</if>
<if test="whId != null and whId != ''">
AND wh_id = #{whId}
</if>
</where>
</select>
<select id="selectNowList"
parameterType="com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogAll.StorageLogAllDO">
select * from (
select * from v_storage_material_now
union all
select deleted,id,creator,updater,create_time,update_time,tenant_id,code as mat_code,name as mat_name,
(select label from system_dict_data where dict_type='heli_material_type' and value= mat.material_type) as
mat_type,spec as mat_spec,
(select label from system_dict_data where dict_type='heli_material_unit' and value= mat.unit) as mat_unit,
brand as mat_brand,'' as wh_id, '' as wh_name,'' as rg_id,'' as rg_name,'' as pn_id,'' as pn_name,''
lot_no,short_name,0 as storage_ok_qty
from base_material as mat where not exists(select id from v_storage_material_now where id=mat.id)
) t;
<where>
<if test="matCode != null and matCode != ''">
AND (mat_code like concat('%', #{matCode}, '%') OR mat_name like concat('%', #{matCode}, '%'))
</if>
<if test="matType != null and matType != ''">
AND mat_type = #{matType}
</if>
<if test="whId != null and whId != ''">
AND wh_id = #{whId}
</if>
</where>
</select>
</mapper> </mapper>

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<resultMap id="StorageLogAllDO" type="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogAll.StorageLogAllDO">
<result property="id" column="id"/>
<result property="stockId" column="stock_id"/>
<result property="matId" column="mat_id"/>
<result property="whId" column="wh_id"/>
<result property="rgId" column="rg_id"/>
<result property="pnId" column="pn_id"/>
<result property="storageOkQty" column="storage_ok_qty"/>
<result property="lotNo" column="lotNo"/>
<result property="stockNo" column="stock_no"/>
<result property="stockType" column="stock_type"/>
<result property="headerNo" column="header_no"/>
<result property="matName" column="mat_name"/>
<result property="matCode" column="mat_code"/>
<result property="matType" column="mat_type"/>
<result property="whName" column="wh_name"/>
<result property="rgName" column="rg_name"/>
<result property="pnName" column="pn_name"/>
</resultMap>
<select id="selectNoZero"
parameterType="com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO">
select * from v_storage_material_now
<where>
storage_ok_qty>0
<if test="matCode != null and matCode != ''">
AND (mat_code like concat('%', #{matCode}, '%') OR mat_name like concat('%', #{matCode}, '%'))
</if>
<if test="matType != null and matType != ''">
AND mat_type = #{matType}
</if>
<if test="whId != null and whId != ''">
AND wh_id = #{whId}
</if>
</where>
</select>
<select id="selectNowList"
parameterType="com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO">
select * from (
select * from v_storage_material_now
union all
select deleted,id,creator,updater,create_time,update_time,tenant_id,code as mat_code,name as mat_name,
(select label from system_dict_data where dict_type='heli_material_type' and value= mat.material_type) as
mat_type,spec as mat_spec,
(select label from system_dict_data where dict_type='heli_material_unit' and value= mat.unit) as mat_unit,
brand as mat_brand,'' as wh_id, '' as wh_name,'' as rg_id,'' as rg_name,'' as pn_id,'' as pn_name,''
lot_no,short_name,0 as storage_ok_qty
from base_material as mat where not exists(select id from v_storage_material_now where id=mat.id)
) t
<where>
<if test="matCode != null and matCode != ''">
AND (mat_code like concat('%', #{matCode}, '%') OR mat_name like concat('%', #{matCode}, '%'))
</if>
<if test="matType != null and matType != ''">
AND mat_type = #{matType}
</if>
<if test="whId != null and whId != ''">
AND wh_id = #{whId}
</if>
</where>
</select>
</mapper>

@ -10,8 +10,17 @@ export interface StorageLogVO {
storageOkQty: number storageOkQty: number
lotNo: string lotNo: string
description: string description: string
noZero: number
matCode: string
matType:string
} }
// 查询入/出库实时分页
export const getStorageNowList = async (params) => {
return await request.get({ url: `/heli/storage-log/all`, params })
}
// 查询入/出库实时分页 // 查询入/出库实时分页
export const getStorageNowPage = async (params) => { export const getStorageNowPage = async (params) => {
return await request.get({ url: `/heli/storage-log/now`, params }) return await request.get({ url: `/heli/storage-log/now`, params })

@ -276,11 +276,11 @@
</el-form> </el-form>
<div class="text-center hl-footer"> <div class="text-center hl-footer">
<el-button @click="() => router.go(-1)" size="large"> </el-button> <el-button @click="() => router.go(-1)" size="large"> </el-button>
<el-button @click="submitForm" type="success" :disabled="ctrView || ctrSave" size="large"> <el-button @click="submitForm" type="success" v-if="btnSave" size="large">
</el-button> </el-button>
<el-button @click="handleStatus(2)" type="primary" :disabled="ctrView || ctrSave" size="large"> <el-button @click="handleStatus(2)" type="primary" v-if="btnSave" size="large">
</el-button> </el-button>
<el-button @click="handleStatus(3)" type="danger" :disabled="ctrView || ctrCancel" size="large"> <el-button @click="handleStatus(3)" type="danger" v-if="btnCancel" size="large">
</el-button> </el-button>
</div> </div>
</el-card> </el-card>
@ -507,8 +507,8 @@ const submitForm = async () => {
} catch (e) { } catch (e) {
return return
} }
// // //
await message.confirm('确认保存入库信息?') // await message.confirm('?')
// //
await saveFormData() await saveFormData()
@ -618,6 +618,8 @@ const ctrView = ref(false)
const ctrSave = ref(false) const ctrSave = ref(false)
const ctrCancel = ref(true) const ctrCancel = ref(true)
const ctrDelete = ref(false) const ctrDelete = ref(false)
const btnSave = ref(true)
const btnCancel = ref(false)
// //
const initStatus = async (status) =>{ const initStatus = async (status) =>{
@ -627,18 +629,25 @@ const initStatus = async (status) =>{
ctrSave.value = false ctrSave.value = false
ctrCancel.value = true ctrCancel.value = true
ctrDelete.value = false ctrDelete.value = false
btnSave.value= true
btnCancel.value = false
break break
case 2: case 2:
ctrView.value = false ctrView.value = false
ctrSave.value = true ctrSave.value = true
ctrCancel.value = false ctrCancel.value = false
ctrDelete.value = true ctrDelete.value = true
btnSave.value= false
btnCancel.value = true
break break
case 3: case 3:
ctrView.value = true ctrView.value = true
ctrSave.value = true ctrSave.value = true
ctrCancel.value = true ctrCancel.value = true
ctrDelete.value = true ctrDelete.value = true
btnSave.value= false
btnCancel.value = false
break break
default: default:
break break
@ -649,6 +658,9 @@ const initStatus = async (status) =>{
ctrSave.value = true ctrSave.value = true
ctrCancel.value = true ctrCancel.value = true
ctrDelete.value = true ctrDelete.value = true
btnSave.value= false
btnCancel.value = false
} }
} }
const userList = ref<UserApi.UserVO[]>([]) // const userList = ref<UserApi.UserVO[]>([]) //

@ -279,11 +279,11 @@
</el-form> </el-form>
<div class="text-center hl-footer"> <div class="text-center hl-footer">
<el-button @click="() => router.go(-1)" size="large"> </el-button> <el-button @click="() => router.go(-1)" size="large"> </el-button>
<el-button @click="submitForm" type="success" :disabled="ctrView || ctrSave" size="large"> <el-button @click="submitForm" type="success" v-if="btnSave" size="large">
</el-button> </el-button>
<el-button @click="handleStatus(2)" type="primary" :disabled="ctrView || ctrSave" size="large"> <el-button @click="handleStatus(2)" type="primary" v-if="btnSave" size="large">
</el-button> </el-button>
<el-button @click="handleStatus(3)" type="danger" :disabled="ctrView || ctrCancel" size="large"> <el-button @click="handleStatus(3)" type="danger" v-if="btnCancel" size="large">
</el-button> </el-button>
</div> </div>
</el-card> </el-card>
@ -549,8 +549,8 @@ const submitForm = async () => {
return return
} }
// // //
await message.confirm('确认保存出库信息?') // await message.confirm('?')
// //
await saveFormData() await saveFormData()
@ -708,38 +708,49 @@ const ctrView = ref(false)
const ctrSave = ref(false) const ctrSave = ref(false)
const ctrCancel = ref(true) const ctrCancel = ref(true)
const ctrDelete = ref(false) const ctrDelete = ref(false)
const btnSave = ref(true)
const btnCancel = ref(false)
// //
const initStatus = async (status) => { const initStatus = async (status) => {
switch (status) { switch(status){
case 1: case 1:
ctrView.value = false ctrView.value = false
ctrSave.value = false ctrSave.value = false
ctrCancel.value = true ctrCancel.value = true
ctrDelete.value = false ctrDelete.value = false
btnSave.value= true
btnCancel.value = false
break break
case 2: case 2:
ctrView.value = false ctrView.value = false
ctrSave.value = true ctrSave.value = true
ctrCancel.value = false ctrCancel.value = false
ctrDelete.value = true ctrDelete.value = true
btnSave.value= false
btnCancel.value = true
break break
case 3: case 3:
ctrView.value = true ctrView.value = true
ctrSave.value = true ctrSave.value = true
ctrCancel.value = true ctrCancel.value = true
ctrDelete.value = true ctrDelete.value = true
btnSave.value= false
btnCancel.value = false
break break
default: default:
break break
} }
// //
if (query.type === 'review') { if(query.type === 'review'){
ctrView.value = true ctrView.value = true
ctrSave.value = true ctrSave.value = true
ctrCancel.value = true ctrCancel.value = true
ctrDelete.value = true ctrDelete.value = true
btnSave.value= false
btnCancel.value = false
} }
} }
const userList = ref<UserApi.UserVO[]>([]) // const userList = ref<UserApi.UserVO[]>([]) //

@ -352,8 +352,22 @@ const handleStatus = async (num) => {
} }
const getList = async (arrMat) => { const getList = async (arrMat) => {
message.alertWarning('数组个数为:'+arrMat.length)
arrMat.forEach(row => {
row.cid = matCount
if(formData.value.matItemDOList){
formData.value.matItemDOList.forEach(item =>{
if(item.matId !== row.matId || item.wh_id!==row.wh_id || item.rg_id !== row.rg_id || item.pn_id!== row.pn_id){
item.push(row)
matCount = matCount+1
}
})
}else{
formData.value.matItemDOList= []
formData.value.matItemDOList.push(row)
}
});
formData.value.matItemDOList = arrMat formData.value.matItemDOList = arrMat
} }
const userList = ref<UserApi.UserVO[]>([]) // const userList = ref<UserApi.UserVO[]>([]) //

@ -12,7 +12,7 @@
<el-table-column prop="matBrand" label="品牌" min-width="120" align="center" /> <el-table-column prop="matBrand" label="品牌" min-width="120" align="center" />
<el-table-column prop="rgName" label="库区" min-width="120" align="center" /> <el-table-column prop="rgName" label="库区" min-width="120" align="center" />
<el-table-column prop="pnName" label="库位" min-width="140" align="center" /> <el-table-column prop="pnName" label="库位" min-width="140" align="center" />
<el-table-column prop="matRest" label="库存数量" min-width="120" align="center" /> <el-table-column prop="storageOkQty" label="库存数量" min-width="120" align="center" />
<el-table-column prop="matUnit" label="库存单位" min-width="120" align="center" /> <el-table-column prop="matUnit" label="库存单位" min-width="120" align="center" />
</el-table> </el-table>
</el-form> </el-form>
@ -48,9 +48,12 @@ const handleSelectionChange = async (val) =>{
const getRowKeys = (row) => { const getRowKeys = (row) => {
return row.matId; return row.matId;
}; };
const queryParams = reactive({
pageNo: 1, const queryReqVo = reactive({
pageSize: 10 noZero: undefined,
whId: undefined,
matCode: undefined,
matType: undefined
}) })
/** 打开弹窗 */ /** 打开弹窗 */
@ -59,11 +62,14 @@ const open = async (noZero: number, whId?: number, isAll?: number) => {
dialogTitle.value = '物料列表' dialogTitle.value = '物料列表'
// //
queryReqVo.noZero = noZero
queryReqVo.whId = whId
queryReqVo.matCode = ''
queryReqVo.matType = ''
formLoading.value = true formLoading.value = true
const data = await StorageLogApi.getStorageNowPage(queryParams) const data = await StorageLogApi.getStorageNowList(queryReqVo)
list.value = data.list list.value = data
total.value = data.total
chkboxEnable.value = isAll ===2 ? false :true chkboxEnable.value = isAll ===2 ? false :true
var iNum =1 var iNum =1
@ -94,6 +100,11 @@ const submitForm = async () => {
try { try {
dialogVisible.value = false dialogVisible.value = false
multipleSelection.value.forEach(item =>{
item.matRest = item.storageOkQty
item.storageOkQty = ''
})
// //
emit('success', multipleSelection.value) emit('success', multipleSelection.value)
} finally { } finally {

@ -68,34 +68,6 @@ const formRules = reactive({
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
const userList = ref<UserApi.UserVO[]>([]) //
const userSelectList = ref<UserApi.UserVO[]>([])
const userSelectLoading = ref(false)
const remoteUserSearch = (query: string) => {
if (query) {
userSelectLoading.value = true
setTimeout(() => {
userSelectLoading.value = false
userSelectList.value = userList.value.filter((item) => {
return (
item.nickname.toLowerCase().includes(query.toLowerCase()) ||
item.username.toLowerCase().includes(query.toLowerCase())
)
})
}, 200)
} else {
userSelectList.value = userList.value
}
}
/** 搜索按钮操作 */
const handleContact = (uid) => {
var mobileUser = userList.value.find((item) => {
return item.id === uid
})
formData.value.telephone = mobileUser?.mobile
}
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (type: string, id?: number) => { const open = async (type: string, id?: number) => {
dialogVisible.value = true dialogVisible.value = true
@ -115,15 +87,6 @@ const open = async (type: string, id?: number) => {
formLoading.value = false formLoading.value = false
} }
} }
//
let userParams = {
pageNo: 1,
pageSize: 10,
status: '0'
}
const data = await UserApi.getUserPage(userParams)
userList.value = data.list
userSelectList.value = data.list
} }
defineExpose({ open }) // open defineExpose({ open }) // open
@ -166,5 +129,6 @@ const resetForm = () => {
const handleSelectedUser = (newValue: any) => { const handleSelectedUser = (newValue: any) => {
formData.value.contact = newValue?.id formData.value.contact = newValue?.id
formData.value.telephone = newValue?.mobile
} }
</script> </script>

@ -0,0 +1,4 @@
ALTER table wms_storage MODIFY column header_no VARCHAR(128);
ALTER table wms_storage_mat MODIFY column wh_id BIGINT(20) null;
ALTER table wms_storage_mat MODIFY column rg_id BIGINT(20) null;
ALTER table wms_storage_mat MODIFY column pn_id BIGINT(20) null;
Loading…
Cancel
Save