仓库管理 物料初始可视化,库存数量为0的展示

仓库管理 物料初始可视化,库存数量为0的展示
pull/3/head
siontion 9 months ago
parent 41829d973a
commit 2bc3366202

@ -40,7 +40,7 @@ public enum CodeEnum {
WAREHOUSE("仓库", "Wa", 4), WAREHOUSE("仓库", "Wa", 4),
STOCK_IN("入库单", "WI", 4, "yyyyMMdd"), STOCK_IN("入库单", "WI", 4, "yyyyMMdd"),
STOCK_OUT("出库单", "WO", 4, "yyyyMMdd"), STOCK_OUT("出库单", "WO", 4, "yyyyMMdd"),
STOCK_CHECK("盘点单据", "WC", 4, "yyyyMMdd"), STOCK_CHECK("盘点单据", "WC", 3, "yyyyMMdd"),
PROJECT_ORDER("业务订单", 3, "yyyyMM"), PROJECT_ORDER("业务订单", 3, "yyyyMM"),
PROJECT_DELIVERY_ORDER("发货单", "HL", 3, "yyyyMM"), PROJECT_DELIVERY_ORDER("发货单", "HL", 3, "yyyyMM"),
; ;

@ -28,7 +28,7 @@ public interface MouldTypeMapper extends BaseMapperX<MouldTypeDO> {
} }
default List<Map<String, Object>> selectSimpleList() { default List<Map<String, Object>> selectSimpleList() {
return selectMaps(new QueryWrapper<MouldTypeDO>().select("id", "name","mould_type_id").lambda()); return selectMaps(new QueryWrapper<MouldTypeDO>().select("id", "name").lambda());
} }
} }

@ -10,6 +10,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO;
import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum;
import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
@ -36,6 +37,7 @@ public interface StorageMapper extends BaseMapperX<StorageDO> {
.like(!StringUtils.isEmpty(reqVO.getMatName()), MaterialDO::getName, reqVO.getMatName()) .like(!StringUtils.isEmpty(reqVO.getMatName()), MaterialDO::getName, reqVO.getMatName())
.like(!StringUtils.isEmpty(reqVO.getStockNo()),StorageDO::getStockNo, reqVO.getStockNo()) .like(!StringUtils.isEmpty(reqVO.getStockNo()),StorageDO::getStockNo, reqVO.getStockNo())
.like(!StringUtils.isEmpty(reqVO.getHeaderNo()),StorageDO::getHeaderNo, reqVO.getHeaderNo()) .like(!StringUtils.isEmpty(reqVO.getHeaderNo()),StorageDO::getHeaderNo, reqVO.getHeaderNo())
.eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name())
.eq(reqVO.getStockType() != null,StorageDO::getStockType, reqVO.getStockType()) .eq(reqVO.getStockType() != null,StorageDO::getStockType, reqVO.getStockType())
.eq(reqVO.getStockInType() != null,StorageDO::getStockInType, reqVO.getStockInType()) .eq(reqVO.getStockInType() != null,StorageDO::getStockInType, reqVO.getStockInType())
.eq(reqVO.getWhId() != null,StorageDO::getWhId, reqVO.getWhId()) .eq(reqVO.getWhId() != null,StorageDO::getWhId, reqVO.getWhId())

@ -1,11 +1,16 @@
package com.chanko.yunxi.mes.module.heli.service.storage; package com.chanko.yunxi.mes.module.heli.service.storage;
import cn.hutool.core.lang.UUID; import cn.hutool.core.lang.UUID;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.enums.CodeEnum;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.storage.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.storage.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO;
@ -31,22 +36,36 @@ public class StorageServiceImpl implements StorageService {
@Resource @Resource
private StorageMapper storageMapper; private StorageMapper storageMapper;
@Resource
private SerialNumberService serialNumberService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Long createStorage(StorageSaveReqVO createReqVO) { public Long createStorage(StorageSaveReqVO createReqVO) {
// 插入 // 插入
StorageDO storage = BeanUtils.toBean(createReqVO, StorageDO.class); StorageDO storage = BeanUtils.toBean(createReqVO, StorageDO.class);
storage.setStockNo(UUID.fastUUID().toString(true));
storageMapper.insert(storage);
SerialNumberDO serialNumberDO = new SerialNumberDO();
if(createReqVO.getStockType().equals(1)) { if(createReqVO.getStockType().equals(1)) {
// 月度流水号
serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
// 入库前缀 // 入库前缀
storage.setStockNo(STOCK_IN.getCode(storage.getId().toString())); storage.setStockNo(STOCK_IN.getCode(serialNumberDO.getSerialNumber().toString()));
}else{ }else{
// 月度流水号
serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
// 出库前缀 // 出库前缀
storage.setStockNo(STOCK_OUT.getCode(storage.getId().toString())); storage.setStockNo(STOCK_OUT.getCode(serialNumberDO.getSerialNumber().toString()));
} }
storageMapper.insert(storage);
storageMapper.updateById(storage); // 回写序列记录
serialNumberService.updateSerialNumber(serialNumberDO);
// 返回 // 返回
return storage.getId(); return storage.getId();
} }

@ -1,6 +1,7 @@
package com.chanko.yunxi.mes.module.heli.service.storagecheck; package com.chanko.yunxi.mes.module.heli.service.storagecheck;
import cn.hutool.core.lang.UUID; import cn.hutool.core.lang.UUID;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO;
@ -9,14 +10,18 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagecheckmat.StorageCheckMatMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagecheckmat.StorageCheckMatMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper;
import com.chanko.yunxi.mes.module.heli.enums.CodeEnum;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService; import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService;
import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.print.DocFlavor; import javax.print.DocFlavor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheck.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheck.vo.*;
@ -58,15 +63,24 @@ public class StorageCheckServiceImpl implements StorageCheckService {
@Resource @Resource
private StorageCheckMatService storageCheckMatService; private StorageCheckMatService storageCheckMatService;
@Resource
private SerialNumberService serialNumberService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Long createStorageCheck(StorageCheckSaveReqVO createReqVO) { public Long createStorageCheck(StorageCheckSaveReqVO createReqVO) {
// 插入 // 插入
StorageCheckDO storageCheck = BeanUtils.toBean(createReqVO, StorageCheckDO.class); StorageCheckDO storageCheck = BeanUtils.toBean(createReqVO, StorageCheckDO.class);
storageCheck.setStockNo(UUID.fastUUID().toString(true)); // 月度流水号
SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_CHECK.name(), new SimpleDateFormat("yyyyMM").format(new Date()));
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
storageCheck.setStockNo(STOCK_CHECK.getCode(serialNumberDO.getSerialNumber().toString()));
storageCheckMapper.insert(storageCheck); storageCheckMapper.insert(storageCheck);
storageCheck.setStockNo(STOCK_CHECK.getCode(storageCheck.getId().toString())); // 回写序列记录
storageCheckMapper.updateById(storageCheck); serialNumberService.updateSerialNumber(serialNumberDO);
// 返回 // 返回
return storageCheck.getId(); return storageCheck.getId();
} }

@ -6,10 +6,7 @@ export interface EquipVO {
mouldTypeId: number mouldTypeId: number
status: number status: number
} }
// 查询设备信息全页数据
export const getSimpList = async () => {
return await request.get({ url: `/heli/equip/all-simples` })
}
// 查询设备信息分页 // 查询设备信息分页
export const getEquipPage = async (params) => { export const getEquipPage = async (params) => {
return await request.get({ url: `/heli/equip/page`, params }) return await request.get({ url: `/heli/equip/page`, params })

@ -17,14 +17,11 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="模具类型id对应 base_mould_type 表中的id" prop="mouldTypeId"> <el-form-item label="模具类型" prop="mouldTypeId">
<el-input <el-select v-model="queryParams.mouldTypeId" placeholder="启用状态" clearable class="!w-240px">
v-model="queryParams.mouldTypeId" <el-option v-for="dict in mouldTypeList" :key="dict.id" :label="dict.name"
placeholder="请输入模具类型id对应 base_mould_type 表中的id" :value="dict.name" />
clearable </el-select>
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item label="启用状态" prop="pnStatus"> <el-form-item label="启用状态" prop="pnStatus">
<el-select v-model="queryParams.status" placeholder="启用状态" clearable class="!w-240px"> <el-select v-model="queryParams.status" placeholder="启用状态" clearable class="!w-240px">
@ -32,65 +29,7 @@
:value="dict.value" /> :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建者" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="更新者" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入更新者"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否删除" prop="deleted">
<el-select
v-model="queryParams.deleted"
placeholder="请选择是否删除"
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="租户编号" prop="tenantId">
<el-input
v-model="queryParams.tenantId"
placeholder="请输入租户编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
@ -118,10 +57,9 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="自增字段,唯一" align="center" prop="id" /> <el-table-column label="设备名称" align="center" prop="name" />
<el-table-column label="设备名称 唯一" align="center" prop="name" /> <el-table-column label="模具类型" align="center" prop="mouldTypeId" />
<el-table-column label="模具类型id对应 base_mould_type 表中的id" align="center" prop="mouldTypeId" /> <el-table-column label="状态" align="center" prop="status" />
<el-table-column label="状态,1表示正常2表示禁用默认是1" align="center" prop="status" />
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button <el-button
@ -160,7 +98,8 @@
import download from '@/utils/download' import download from '@/utils/download'
import * as EquipApi from '@/api/heli/equip' import * as EquipApi from '@/api/heli/equip'
import EquipForm from './EquipForm.vue' import EquipForm from './EquipForm.vue'
import * as MoudleTypeApi from '@api/heli/mouldtype' import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import * as MoudleTypeApi from '@/api/heli/mouldtype'
defineOptions({ name: 'Equip' }) defineOptions({ name: 'Equip' })
@ -176,13 +115,7 @@ const queryParams = reactive({
id: undefined, id: undefined,
name: undefined, name: undefined,
mouldTypeId: undefined, mouldTypeId: undefined,
status: undefined, status: 1
creator: undefined,
createTime: [],
updater: undefined,
updateTime: [],
deleted: undefined,
tenantId: undefined,
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
@ -245,9 +178,10 @@ const handleExport = async () => {
} }
} }
const mouldTypeList = ref([])
/** 初始化 **/ /** 初始化 **/
onMounted( async() => { onMounted( async() => {
await MoudleTypeApi.getSimpList() mouldTypeList.value = await MoudleTypeApi.getSimpList()
await getList() await getList()
}) })
</script> </script>

@ -483,7 +483,7 @@ const saveFormData = async () => {
if (formData.value.attachments != undefined && formData.value.attachments.length > 0) { if (formData.value.attachments != undefined && formData.value.attachments.length > 0) {
// //
matUploadData.value.businessId = formData.value.id matUploadData.value.businessId = formData.value.id
matUploadRef.value!.submit() await matUploadRef.value!.submit()
} }
await initStatus(formData.value.status) await initStatus(formData.value.status)
//formData.value = await StorageApi.getStorage(formData.value.id) //formData.value = await StorageApi.getStorage(formData.value.id)

@ -142,7 +142,7 @@
<template #default="scope"> <template #default="scope">
<el-form-item :prop="`${scope.$index}.pnId`" :rules="subFormRules.pnId" class="mb-0px!"> <el-form-item :prop="`${scope.$index}.pnId`" :rules="subFormRules.pnId" class="mb-0px!">
<el-select v-model="scope.row.pnId" placeholder="" style="width: 100%" v-bind:disabled="ctrView || ctrSave" @change="handlePn(scope)"> <el-select v-model="scope.row.pnId" placeholder="" style="width: 100%" v-bind:disabled="ctrView || ctrSave" @change="handlePn(scope)">
<el-option v-for="dict in pnList" :key="dict.id" :label="dict.pn_name" <el-option v-for="dict in scope.row.pnlist" :key="dict.id" :label="dict.pn_name"
:value="dict.id" /> :value="dict.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -507,7 +507,7 @@ const saveFormData = async () => {
if (formData.value.attachments != undefined && formData.value.attachments.length > 0) { if (formData.value.attachments != undefined && formData.value.attachments.length > 0) {
// //
matUploadData.value.businessId = formData.value.id matUploadData.value.businessId = formData.value.id
matUploadRef.value!.submit() await matUploadRef.value!.submit()
} }
await initStatus(formData.value.status) await initStatus(formData.value.status)
message.success(t(commonResult)) message.success(t(commonResult))
@ -684,7 +684,7 @@ const handleMatCode = async (scope, matid) => {
// scope.row.lotNo = matVo.lotNo // scope.row.lotNo = matVo.lotNo
// scope.row.description = matVo.description // scope.row.description = matVo.description
scope.row.pnlist = pnList.value scope.row.pnlist = pnList.value.filter(row => row.id == row.rgId)
} else { } else {
scope.row.matId = '' scope.row.matId = ''
scope.row.matName = '' scope.row.matName = ''
@ -769,9 +769,11 @@ onMounted(async () => {
// //
matSimpList.value = await MaterialApi.getSimpList() matSimpList.value = await MaterialApi.getSimpList()
matList.value = matSimpList.value.filter( mat => matLastData.value.filter( row => row.matId == mat.id).length>0)
// //
if (query.id) { if (query.id) {
matList.value = matSimpList.value.filter( mat => matLastData.value.filter( row => row.matId == mat.id).length>0)
// //
formData.value = await StorageApi.getStorage(query.id) formData.value = await StorageApi.getStorage(query.id)
@ -806,9 +808,11 @@ onMounted(async () => {
item.matType = matSimpList.value.find((record) => record.id === item.matId)?.material_type item.matType = matSimpList.value.find((record) => record.id === item.matId)?.material_type
item.matUnit = matSimpList.value.find((record) => record.id === item.matId)?.unit item.matUnit = matSimpList.value.find((record) => record.id === item.matId)?.unit
item.matRest = matLastData.value.find( row => row.matId == item.matId && row.pnId == item.pnId)?.matRest item.matRest = matLastData.value.find( row => row.matId == item.matId && row.pnId == item.pnId)?.matRest
item.matRest = (item.matRest==undefined || item.matRest.length==0)?0:item.matRest
item.pnlist = pnList.value.filter((pn) => pn.rg_id === item.rgId) item.pnlist = pnList.value.filter((pn) => pn.rg_id === item.rgId)
matCount = matCount + 1 matCount = matCount + 1
}) })
matList.value = matSimpList.value.filter( mat => matLastData.value.filter( row => row.matId == mat.id).length>0 || formData.value.matItemDOList.filter(fan => fan.matId == mat.id).length>0)
// //
let attParams = { let attParams = {

@ -169,7 +169,7 @@
编辑 编辑
</el-button> </el-button>
<el-button link type="primary" @click="openDetail('review', scope.row.id)"> <el-button link type="primary" @click="openDetail('review', scope.row.id)">
查看 查看详情
</el-button> </el-button>
<!-- <el-button <!-- <el-button
link link

@ -111,7 +111,7 @@
<el-table-column label="出库单号" align="center" prop="stockNo" fixed min-width="200" /> <el-table-column label="出库单号" align="center" prop="stockNo" fixed min-width="200" />
<el-table-column label="出库类型" align="center" prop="stockInType" min-width="120"> <el-table-column label="出库类型" align="center" prop="stockInType" min-width="120">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_STORAGE_IN_TYPE" :value="scope.row.stockInType" /> <dict-tag :type="DICT_TYPE.HELI_STORAGE_OUT_TYPE" :value="scope.row.stockInType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="上游单号" align="center" prop="headerNo" min-width="100" /> <el-table-column label="上游单号" align="center" prop="headerNo" min-width="100" />
@ -169,7 +169,7 @@
编辑 编辑
</el-button> </el-button>
<el-button link type="primary" @click="openDetail('review', scope.row.id)"> <el-button link type="primary" @click="openDetail('review', scope.row.id)">
查看 查看详情
</el-button> </el-button>
<!-- <el-button <!-- <el-button
link link

@ -496,7 +496,7 @@ const saveFormData = async () => {
if (formData.value.attachments != undefined && formData.value.attachments.length > 0) { if (formData.value.attachments != undefined && formData.value.attachments.length > 0) {
// //
matUploadData.value.businessId = formData.value.id matUploadData.value.businessId = formData.value.id
matUploadRef.value!.submit() await matUploadRef.value!.submit()
} }
message.success(t('common.updateSuccess')) message.success(t('common.updateSuccess'))

@ -91,7 +91,7 @@
编辑 编辑
</el-button> </el-button>
<el-button link type="primary" @click="openDetail('review', scope.row.id)"> <el-button link type="primary" @click="openDetail('review', scope.row.id)">
查看 查看详情
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>

Loading…
Cancel
Save