代码重新生成

master
guochaojie 4 months ago
parent 6c17098da0
commit 9089f2e435

@ -5,12 +5,14 @@ import jnpf.entity.RecycleDeviceEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* RecycleDevice
*
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-06-19
* 2024-06-21
*/
public interface RecycleDeviceMapper extends BaseMapper<RecycleDeviceEntity> {
}

@ -5,11 +5,11 @@ import jnpf.entity.SimCardEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* SimCard
* SIM
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-05-22
* 2024-06-21
*/
public interface SimCardMapper extends BaseMapper<SimCardEntity> {

@ -2,7 +2,9 @@ package jnpf.service;
import jnpf.model.recyclebucket.*;
import jnpf.entity.*;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -16,7 +18,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
public interface RecycleBucketService extends IService<RecycleBucketEntity> {
List<RecycleBucketEntity> getList(RecycleBucketPagination recycleBucketPagination);
List<RecycleBucketEntity> getTypeList(RecycleBucketPagination recycleBucketPagination,String dataType);
List<RecycleBucketEntity> getTypeList(RecycleBucketPagination recycleBucketPagination, String dataType);
List<RecycleBucketEntity> getByDeviceCode(String deviceCode);
RecycleBucketEntity getInfo(String id);
@ -28,8 +32,8 @@ public interface RecycleBucketService extends IService<RecycleBucketEntity> {
//子表方法
//副表数据方法
String checkForm(RecycleBucketForm form,int i);
String checkForm(RecycleBucketForm form, int i);
void saveOrUpdate(RecycleBucketForm recycleBucketForm,String id, boolean isSave) throws Exception;
void saveOrUpdate(RecycleBucketForm recycleBucketForm, String id, boolean isSave) throws Exception;
}

@ -7,11 +7,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
/**
* RecycleDevice
*
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-06-19
* 2024-06-21
*/
public interface RecycleDeviceService extends IService<RecycleDeviceEntity> {
List<RecycleDeviceEntity> getList(RecycleDevicePagination recycleDevicePagination);
@ -32,6 +32,4 @@ public interface RecycleDeviceService extends IService<RecycleDeviceEntity> {
void saveOrUpdate(RecycleDeviceForm recycleDeviceForm,String id, boolean isSave) throws Exception;
String generateQRCode(String deviceCode);
}

@ -7,11 +7,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
/**
* SimCard
* SIM
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-05-22
* 2024-06-21
*/
public interface SimCardService extends IService<SimCardEntity> {
List<SimCardEntity> getList(SimCardPagination simCardPagination);

@ -5,18 +5,26 @@ import jnpf.mapper.RecycleBucketMapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.model.recyclebucket.*;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import jnpf.util.GeneraterSwapUtil;
import jnpf.database.model.superQuery.SuperQueryJsonModel;
import jnpf.database.model.superQuery.ConditionJsonModel;
import jnpf.database.model.superQuery.SuperQueryConditionModel;
import java.lang.reflect.Field;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.regex.Pattern;
import jnpf.model.QueryModel;
import java.util.stream.Collectors;
import jnpf.base.model.ColumnDataModel;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -25,13 +33,17 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
import jnpf.base.UserInfo;
import jnpf.permission.entity.UserEntity;
/**
*
*
* V3.5
* https://www.jnpfsoft.com
@ -39,7 +51,7 @@ import jnpf.permission.entity.UserEntity;
* 2024-06-17
*/
@Service
public class RecycleBucketServiceImpl extends ServiceImpl<RecycleBucketMapper, RecycleBucketEntity> implements RecycleBucketService{
public class RecycleBucketServiceImpl extends ServiceImpl<RecycleBucketMapper, RecycleBucketEntity> implements RecycleBucketService {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@ -47,262 +59,281 @@ public class RecycleBucketServiceImpl extends ServiceImpl<RecycleBucketMapper, R
private UserProvider userProvider;
@Override
public List<RecycleBucketEntity> getList(RecycleBucketPagination recycleBucketPagination){
return getTypeList(recycleBucketPagination,recycleBucketPagination.getDataType());
public List<RecycleBucketEntity> getList(RecycleBucketPagination recycleBucketPagination) {
return getTypeList(recycleBucketPagination, recycleBucketPagination.getDataType());
}
/** 列表查询 */
/**
*
*/
@Override
public List<RecycleBucketEntity> getTypeList(RecycleBucketPagination recycleBucketPagination,String dataType){
String userId=userProvider.get().getUserId();
List<String> AllIdList =new ArrayList();
List<List<String>> intersectionList =new ArrayList<>();
public List<RecycleBucketEntity> getTypeList(RecycleBucketPagination recycleBucketPagination, String dataType) {
String userId = userProvider.get().getUserId();
List<String> AllIdList = new ArrayList();
List<List<String>> intersectionList = new ArrayList<>();
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
String columnData = !isPc ? RecycleBucketConstant.getAppColumnData() : RecycleBucketConstant.getColumnData();
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(columnData, ColumnDataModel.class);
String ruleJson = !isPc ? JsonUtil.getObjectToString(columnDataModel.getRuleListApp()) : JsonUtil.getObjectToString(columnDataModel.getRuleList());
int total=0;
int recycleBucketNum =0;
QueryWrapper<RecycleBucketEntity> recycleBucketQueryWrapper=new QueryWrapper<>();
int total = 0;
int recycleBucketNum = 0;
QueryWrapper<RecycleBucketEntity> recycleBucketQueryWrapper = new QueryWrapper<>();
List<String> allSuperIDlist = new ArrayList<>();
String superOp ="";
if (ObjectUtil.isNotEmpty(recycleBucketPagination.getSuperQueryJson())){
String superOp = "";
if (ObjectUtil.isNotEmpty(recycleBucketPagination.getSuperQueryJson())) {
List<String> allSuperList = new ArrayList<>();
List<List<String>> intersectionSuperList = new ArrayList<>();
List<List<String>> intersectionSuperList = new ArrayList<>();
String queryJson = recycleBucketPagination.getSuperQueryJson();
SuperJsonModel superJsonModel = JsonUtil.getJsonToBean(queryJson, SuperJsonModel.class);
int superNum = 0;
QueryWrapper<RecycleBucketEntity> recycleBucketSuperWrapper = new QueryWrapper<>();
recycleBucketSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(recycleBucketSuperWrapper,RecycleBucketEntity.class,queryJson,"0"));
recycleBucketSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(recycleBucketSuperWrapper, RecycleBucketEntity.class, queryJson, "0"));
int recycleBucketNum1 = recycleBucketSuperWrapper.getExpression().getNormal().size();
if (recycleBucketNum1>0){
List<String> recycleBucketList =this.list(recycleBucketSuperWrapper).stream().map(RecycleBucketEntity::getId).collect(Collectors.toList());
if (recycleBucketNum1 > 0) {
List<String> recycleBucketList = this.list(recycleBucketSuperWrapper).stream().map(RecycleBucketEntity::getId).collect(Collectors.toList());
allSuperList.addAll(recycleBucketList);
intersectionSuperList.add(recycleBucketList);
superNum++;
}
superOp = superNum > 0 ? superJsonModel.getMatchLogic() : "";
//and or
if(superOp.equalsIgnoreCase("and")){
if (superOp.equalsIgnoreCase("and")) {
allSuperIDlist = generaterSwapUtil.getIntersection(intersectionSuperList);
}else{
} else {
allSuperIDlist = allSuperList;
}
}
List<String> allRuleIDlist = new ArrayList<>();
String ruleOp ="";
if (ObjectUtil.isNotEmpty(ruleJson)){
String ruleOp = "";
if (ObjectUtil.isNotEmpty(ruleJson)) {
List<String> allRuleList = new ArrayList<>();
List<List<String>> intersectionRuleList = new ArrayList<>();
List<List<String>> intersectionRuleList = new ArrayList<>();
SuperJsonModel ruleJsonModel = JsonUtil.getJsonToBean(ruleJson, SuperJsonModel.class);
int ruleNum = 0;
QueryWrapper<RecycleBucketEntity> recycleBucketSuperWrapper = new QueryWrapper<>();
recycleBucketSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(recycleBucketSuperWrapper,RecycleBucketEntity.class,ruleJson,"0"));
recycleBucketSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(recycleBucketSuperWrapper, RecycleBucketEntity.class, ruleJson, "0"));
int recycleBucketNum1 = recycleBucketSuperWrapper.getExpression().getNormal().size();
if (recycleBucketNum1>0){
List<String> recycleBucketList =this.list(recycleBucketSuperWrapper).stream().map(RecycleBucketEntity::getId).collect(Collectors.toList());
if (recycleBucketNum1 > 0) {
List<String> recycleBucketList = this.list(recycleBucketSuperWrapper).stream().map(RecycleBucketEntity::getId).collect(Collectors.toList());
allRuleList.addAll(recycleBucketList);
intersectionRuleList.add(recycleBucketList);
ruleNum++;
}
ruleOp = ruleNum > 0 ? ruleJsonModel.getMatchLogic() : "";
//and or
if(ruleOp.equalsIgnoreCase("and")){
if (ruleOp.equalsIgnoreCase("and")) {
allRuleIDlist = generaterSwapUtil.getIntersection(intersectionRuleList);
}else{
} else {
allRuleIDlist = allRuleList;
}
}
boolean pcPermission = true;
boolean appPermission = false;
if(isPc && pcPermission){
if (!userProvider.get().getIsAdministrator()){
Object recycleBucketObj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(recycleBucketQueryWrapper,RecycleBucketEntity.class,recycleBucketPagination.getMenuId(),"0"));
if (ObjectUtil.isEmpty(recycleBucketObj)){
return new ArrayList<>();
} else {
recycleBucketQueryWrapper = (QueryWrapper<RecycleBucketEntity>)recycleBucketObj;
if( recycleBucketQueryWrapper.getExpression().getNormal().size()>0){
recycleBucketNum++;
}
}
}
}
if(!isPc && appPermission){
if (!userProvider.get().getIsAdministrator()){
Object recycleBucketObj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(recycleBucketQueryWrapper,RecycleBucketEntity.class,recycleBucketPagination.getMenuId(),"0"));
if (ObjectUtil.isEmpty(recycleBucketObj)){
return new ArrayList<>();
} else {
recycleBucketQueryWrapper = (QueryWrapper<RecycleBucketEntity>)recycleBucketObj;
if( recycleBucketQueryWrapper.getExpression().getNormal().size()>0){
recycleBucketNum++;
}
boolean pcPermission = true;
boolean appPermission = false;
if (isPc && pcPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object recycleBucketObj = generaterSwapUtil.getAuthorizeCondition(new QueryModel(recycleBucketQueryWrapper, RecycleBucketEntity.class, recycleBucketPagination.getMenuId(), "0"));
if (ObjectUtil.isEmpty(recycleBucketObj)) {
return new ArrayList<>();
} else {
recycleBucketQueryWrapper = (QueryWrapper<RecycleBucketEntity>) recycleBucketObj;
if (recycleBucketQueryWrapper.getExpression().getNormal().size() > 0) {
recycleBucketNum++;
}
}
}
}
if (!isPc && appPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object recycleBucketObj = generaterSwapUtil.getAuthorizeCondition(new QueryModel(recycleBucketQueryWrapper, RecycleBucketEntity.class, recycleBucketPagination.getMenuId(), "0"));
if (ObjectUtil.isEmpty(recycleBucketObj)) {
return new ArrayList<>();
} else {
recycleBucketQueryWrapper = (QueryWrapper<RecycleBucketEntity>) recycleBucketObj;
if (recycleBucketQueryWrapper.getExpression().getNormal().size() > 0) {
recycleBucketNum++;
}
}
}
}
if(isPc){
if(ObjectUtil.isNotEmpty(recycleBucketPagination.getBucketCode())){
recycleBucketNum++;
}
}
if (isPc) {
if (ObjectUtil.isNotEmpty(recycleBucketPagination.getBucketCode())) {
recycleBucketNum++;
String value = recycleBucketPagination.getBucketCode() instanceof List ?
JsonUtil.getObjectToString(recycleBucketPagination.getBucketCode()) :
String.valueOf(recycleBucketPagination.getBucketCode());
recycleBucketQueryWrapper.lambda().like(RecycleBucketEntity::getBucketCode,value);
JsonUtil.getObjectToString(recycleBucketPagination.getBucketCode()) :
String.valueOf(recycleBucketPagination.getBucketCode());
recycleBucketQueryWrapper.lambda().like(RecycleBucketEntity::getBucketCode, value);
}
if(ObjectUtil.isNotEmpty(recycleBucketPagination.getShowName())){
recycleBucketNum++;
if (ObjectUtil.isNotEmpty(recycleBucketPagination.getShowName())) {
recycleBucketNum++;
String value = recycleBucketPagination.getShowName() instanceof List ?
JsonUtil.getObjectToString(recycleBucketPagination.getShowName()) :
String.valueOf(recycleBucketPagination.getShowName());
recycleBucketQueryWrapper.lambda().like(RecycleBucketEntity::getShowName,value);
JsonUtil.getObjectToString(recycleBucketPagination.getShowName()) :
String.valueOf(recycleBucketPagination.getShowName());
recycleBucketQueryWrapper.lambda().like(RecycleBucketEntity::getShowName, value);
}
if(ObjectUtil.isNotEmpty(recycleBucketPagination.getDoorNum())){
recycleBucketNum++;
if (ObjectUtil.isNotEmpty(recycleBucketPagination.getDoorNum())) {
recycleBucketNum++;
List<String> idList = new ArrayList<>();
try {
String[][] doorNum = JsonUtil.getJsonToBean(recycleBucketPagination.getDoorNum(),String[][].class);
for(int i=0;i<doorNum.length;i++){
if(doorNum[i].length>0){
idList.add(JsonUtil.getObjectToString(Arrays.asList(doorNum[i])));
}
}
}catch (Exception e1){
try {
List<String> doorNum = JsonUtil.getJsonToList(recycleBucketPagination.getDoorNum(),String.class);
if(doorNum.size()>0){
idList.addAll(doorNum);
}
}catch (Exception e2){
idList.add(String.valueOf(recycleBucketPagination.getDoorNum()));
}
}
recycleBucketQueryWrapper.lambda().and(t->{
idList.forEach(tt->{
t.like(RecycleBucketEntity::getDoorNum, tt).or();
});
});
List<String> idList = new ArrayList<>();
try {
String[][] doorNum = JsonUtil.getJsonToBean(recycleBucketPagination.getDoorNum(), String[][].class);
for (int i = 0; i < doorNum.length; i++) {
if (doorNum[i].length > 0) {
idList.add(JsonUtil.getObjectToString(Arrays.asList(doorNum[i])));
}
}
} catch (Exception e1) {
try {
List<String> doorNum = JsonUtil.getJsonToList(recycleBucketPagination.getDoorNum(), String.class);
if (doorNum.size() > 0) {
idList.addAll(doorNum);
}
} catch (Exception e2) {
idList.add(String.valueOf(recycleBucketPagination.getDoorNum()));
}
}
recycleBucketQueryWrapper.lambda().and(t -> {
idList.forEach(tt -> {
t.like(RecycleBucketEntity::getDoorNum, tt).or();
});
});
}
}
List<String> intersection = generaterSwapUtil.getIntersection(intersectionList);
if (total>0){
if (intersection.size()==0){
if (total > 0) {
if (intersection.size() == 0) {
intersection.add("jnpfNullList");
}
recycleBucketQueryWrapper.lambda().in(RecycleBucketEntity::getId, intersection);
}
//是否有高级查询
if (StringUtil.isNotEmpty(superOp)){
if (allSuperIDlist.size()==0){
//是否有高级查询
if (StringUtil.isNotEmpty(superOp)) {
if (allSuperIDlist.size() == 0) {
allSuperIDlist.add("jnpfNullList");
}
List<String> finalAllSuperIDlist = allSuperIDlist;
recycleBucketQueryWrapper.lambda().and(t->t.in(RecycleBucketEntity::getId, finalAllSuperIDlist));
recycleBucketQueryWrapper.lambda().and(t -> t.in(RecycleBucketEntity::getId, finalAllSuperIDlist));
}
//是否有数据过滤查询
if (StringUtil.isNotEmpty(ruleOp)){
if (allRuleIDlist.size()==0){
//是否有数据过滤查询
if (StringUtil.isNotEmpty(ruleOp)) {
if (allRuleIDlist.size() == 0) {
allRuleIDlist.add("jnpfNullList");
}
List<String> finalAllRuleIDlist = allRuleIDlist;
recycleBucketQueryWrapper.lambda().and(t->t.in(RecycleBucketEntity::getId, finalAllRuleIDlist));
recycleBucketQueryWrapper.lambda().and(t -> t.in(RecycleBucketEntity::getId, finalAllRuleIDlist));
}
//排序
if(StringUtil.isEmpty(recycleBucketPagination.getSidx())){
if (StringUtil.isEmpty(recycleBucketPagination.getSidx())) {
recycleBucketQueryWrapper.lambda().orderByDesc(RecycleBucketEntity::getId);
}else{
} else {
try {
String sidx = recycleBucketPagination.getSidx();
String[] strs= sidx.split("_name");
String[] strs = sidx.split("_name");
RecycleBucketEntity recycleBucketEntity = new RecycleBucketEntity();
Field declaredField = recycleBucketEntity.getClass().getDeclaredField(strs[0]);
declaredField.setAccessible(true);
String value = declaredField.getAnnotation(TableField.class).value();
recycleBucketQueryWrapper="asc".equals(recycleBucketPagination.getSort().toLowerCase())?recycleBucketQueryWrapper.orderByAsc(value):recycleBucketQueryWrapper.orderByDesc(value);
recycleBucketQueryWrapper = "asc".equals(recycleBucketPagination.getSort().toLowerCase()) ? recycleBucketQueryWrapper.orderByAsc(value) : recycleBucketQueryWrapper.orderByDesc(value);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
if("0".equals(dataType)){
if((total>0 && AllIdList.size()>0) || total==0){
Page<RecycleBucketEntity> page=new Page<>(recycleBucketPagination.getCurrentPage(), recycleBucketPagination.getPageSize());
IPage<RecycleBucketEntity> userIPage=this.page(page, recycleBucketQueryWrapper);
return recycleBucketPagination.setData(userIPage.getRecords(),userIPage.getTotal());
}else{
if ("0".equals(dataType)) {
if ((total > 0 && AllIdList.size() > 0) || total == 0) {
Page<RecycleBucketEntity> page = new Page<>(recycleBucketPagination.getCurrentPage(), recycleBucketPagination.getPageSize());
IPage<RecycleBucketEntity> userIPage = this.page(page, recycleBucketQueryWrapper);
return recycleBucketPagination.setData(userIPage.getRecords(), userIPage.getTotal());
} else {
List<RecycleBucketEntity> list = new ArrayList();
return recycleBucketPagination.setData(list, list.size());
}
}else{
} else {
return this.list(recycleBucketQueryWrapper);
}
}
@Override
public RecycleBucketEntity getInfo(String id){
QueryWrapper<RecycleBucketEntity> queryWrapper=new QueryWrapper<>();
queryWrapper.lambda().eq(RecycleBucketEntity::getId,id);
public RecycleBucketEntity getInfo(String id) {
QueryWrapper<RecycleBucketEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(RecycleBucketEntity::getId, id);
return this.getOne(queryWrapper);
}
@Override
public void create(RecycleBucketEntity entity){
public void create(RecycleBucketEntity entity) {
this.save(entity);
}
@Override
public boolean update(String id, RecycleBucketEntity entity){
public boolean update(String id, RecycleBucketEntity entity) {
return this.updateById(entity);
}
@Override
public void delete(RecycleBucketEntity entity){
if(entity!=null){
public void delete(RecycleBucketEntity entity) {
if (entity != null) {
this.removeById(entity.getId());
}
}
/** 验证表单唯一字段,正则,非空 i-0新增-1修改*/
/**
* i-0-1
*/
@Override
public String checkForm(RecycleBucketForm form,int i) {
boolean isUp =StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0");
String id="";
public String checkForm(RecycleBucketForm form, int i) {
boolean isUp = StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0");
String id = "";
String countRecover = "";
if (isUp){
if (isUp) {
id = form.getId();
}
//主表字段验证
return countRecover;
}
/**
* ()
* @param id
* @param recycleBucketForm
* @return
*/
* ()
*
* @param id
* @param recycleBucketForm
* @return
*/
@Override
@Transactional
public void saveOrUpdate(RecycleBucketForm recycleBucketForm,String id, boolean isSave) throws Exception{
UserInfo userInfo=userProvider.get();
public void saveOrUpdate(RecycleBucketForm recycleBucketForm, String id, boolean isSave) throws Exception {
UserInfo userInfo = userProvider.get();
UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId());
recycleBucketForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(RecycleBucketConstant.getFormData(),recycleBucketForm),RecycleBucketForm.class);
generaterSwapUtil.swapDatetime(RecycleBucketConstant.getFormData(), recycleBucketForm), RecycleBucketForm.class);
RecycleBucketEntity entity = JsonUtil.getJsonToBean(recycleBucketForm, RecycleBucketEntity.class);
if(isSave){
String mainId = RandomUtil.uuId() ;
entity.setBucketCode(generaterSwapUtil.getBillNumber("bucketCode", false));
if (isSave) {
String mainId = RandomUtil.uuId();
entity.setBucketCode(generaterSwapUtil.getBillNumber("bucketCode", false));
entity.setId(mainId);
}else{
} else {
// entity.setBucketCode(generaterSwapUtil.getBillNumber("bucketCode", false));
}
this.saveOrUpdate(entity);
}
@Override
public List<RecycleBucketEntity> getByDeviceCode(String deviceCode) {
QueryWrapper<RecycleBucketEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(RecycleBucketEntity::getDeviceCode, deviceCode);
return this.list(queryWrapper);
}
}

@ -1,11 +1,6 @@
package jnpf.service.impl;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -24,22 +19,20 @@ import jnpf.permission.entity.UserEntity;
import jnpf.service.RecycleDeviceService;
import jnpf.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* RecycleDevice
*
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-06-19
* 2024-06-21
*/
@Service
public class RecycleDeviceServiceImpl extends ServiceImpl<RecycleDeviceMapper, RecycleDeviceEntity> implements RecycleDeviceService{
@ -49,9 +42,6 @@ public class RecycleDeviceServiceImpl extends ServiceImpl<RecycleDeviceMapper, R
@Autowired
private UserProvider userProvider;
@Value("${nxhs.url}")
private String wx_url;
@Override
public List<RecycleDeviceEntity> getList(RecycleDevicePagination recycleDevicePagination){
return getTypeList(recycleDevicePagination,recycleDevicePagination.getDataType());
@ -296,31 +286,22 @@ public class RecycleDeviceServiceImpl extends ServiceImpl<RecycleDeviceMapper, R
if(isSave){
String mainId = RandomUtil.uuId() ;
entity.setDeviceCode(generaterSwapUtil.getBillNumber("deviceCode", false));
entity.setDeviceCode(generaterSwapUtil.getBillNumber("deviceCode", false));
entity.setCreatorTime(DateUtil.getNowDate());
entity.setCreatorUserId(userInfo.getUserId());
entity.setLastModifyUserId(null);
entity.setLastModifyTime(null);
entity.setOrganizeJsonId(generaterSwapUtil.getCurrentOrgIds(userInfo.getOrganizeId(),"all"));
entity.setId(mainId);
String deviceCode = entity.getDeviceCode();
String qrCode = generateQRCode(deviceCode);
entity.setDeviceCodeQr(qrCode);
}else{
entity.setDeviceCode(generaterSwapUtil.getBillNumber("deviceCode", false));
entity.setCreatorTime(DateUtil.getNowDate());
entity.setCreatorUserId(userInfo.getUserId());
entity.setLastModifyUserId(null);
entity.setLastModifyTime(null);
entity.setOrganizeJsonId(generaterSwapUtil.getCurrentOrgIds(userInfo.getOrganizeId(),"all"));
}
this.saveOrUpdate(entity);
}
@Override
public String generateQRCode(String deviceCode) {
HashMap<String, Object> param = new HashMap<>();
param.put("deviceCode",deviceCode);
param.put("page","");
HttpResponse response = HttpRequest.post(wx_url + "/api/wx/generateDeviceQRCode")
.header("Content-Type", "application/json")
.body(JSONUtil.toJsonStr(param))
.timeout(1000)
.execute();
String body = response.body();
JSONObject result = JSONUtil.parseObj(body);
String data = result.getStr("data");
return data;
}
}

@ -32,11 +32,11 @@ import jnpf.base.UserInfo;
import jnpf.permission.entity.UserEntity;
/**
*
* SimCard
* SIM
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-05-22
* 2024-06-21
*/
@Service
public class SimCardServiceImpl extends ServiceImpl<SimCardMapper, SimCardEntity> implements SimCardService{
@ -144,45 +144,35 @@ public class SimCardServiceImpl extends ServiceImpl<SimCardMapper, SimCardEntity
}
}
if(isPc){
if(ObjectUtil.isNotEmpty(simCardPagination.getDevId())){
if(ObjectUtil.isNotEmpty(simCardPagination.getDeviceCode())){
simCardNum++;
List<String> idList = new ArrayList<>();
try {
String[][] devId = JsonUtil.getJsonToBean(simCardPagination.getDevId(),String[][].class);
for(int i=0;i<devId.length;i++){
if(devId[i].length>0){
idList.add(JsonUtil.getObjectToString(Arrays.asList(devId[i])));
String[][] deviceCode = JsonUtil.getJsonToBean(simCardPagination.getDeviceCode(),String[][].class);
for(int i=0;i<deviceCode.length;i++){
if(deviceCode[i].length>0){
idList.add(JsonUtil.getObjectToString(Arrays.asList(deviceCode[i])));
}
}
}catch (Exception e1){
try {
List<String> devId = JsonUtil.getJsonToList(simCardPagination.getDevId(),String.class);
if(devId.size()>0){
idList.addAll(devId);
List<String> deviceCode = JsonUtil.getJsonToList(simCardPagination.getDeviceCode(),String.class);
if(deviceCode.size()>0){
idList.addAll(deviceCode);
}
}catch (Exception e2){
idList.add(String.valueOf(simCardPagination.getDevId()));
idList.add(String.valueOf(simCardPagination.getDeviceCode()));
}
}
simCardQueryWrapper.lambda().and(t->{
idList.forEach(tt->{
t.like(SimCardEntity::getDevId, tt).or();
t.like(SimCardEntity::getDeviceCode, tt).or();
});
});
}
if(ObjectUtil.isNotEmpty(simCardPagination.getDevName())){
simCardNum++;
String value = simCardPagination.getDevName() instanceof List ?
JsonUtil.getObjectToString(simCardPagination.getDevName()) :
String.valueOf(simCardPagination.getDevName());
simCardQueryWrapper.lambda().like(SimCardEntity::getDevName,value);
}
if(ObjectUtil.isNotEmpty(simCardPagination.getIccid())){
simCardNum++;
@ -193,13 +183,46 @@ public class SimCardServiceImpl extends ServiceImpl<SimCardMapper, SimCardEntity
}
if(ObjectUtil.isNotEmpty(simCardPagination.getDevSn())){
if(ObjectUtil.isNotEmpty(simCardPagination.getStatusType())){
simCardNum++;
String value = simCardPagination.getDevSn() instanceof List ?
JsonUtil.getObjectToString(simCardPagination.getDevSn()) :
String.valueOf(simCardPagination.getDevSn());
simCardQueryWrapper.lambda().like(SimCardEntity::getDevSn,value);
simCardQueryWrapper.lambda().eq(SimCardEntity::getStatusType,simCardPagination.getStatusType());
}
if(ObjectUtil.isNotEmpty(simCardPagination.getCarrier())){
simCardNum++;
List<String> idList = new ArrayList<>();
try {
String[][] carrier = JsonUtil.getJsonToBean(simCardPagination.getCarrier(),String[][].class);
for(int i=0;i<carrier.length;i++){
if(carrier[i].length>0){
idList.add(JsonUtil.getObjectToString(Arrays.asList(carrier[i])));
}
}
}catch (Exception e1){
try {
List<String> carrier = JsonUtil.getJsonToList(simCardPagination.getCarrier(),String.class);
if(carrier.size()>0){
idList.addAll(carrier);
}
}catch (Exception e2){
idList.add(String.valueOf(simCardPagination.getCarrier()));
}
}
simCardQueryWrapper.lambda().and(t->{
idList.forEach(tt->{
t.like(SimCardEntity::getCarrier, tt).or();
});
});
}
if(ObjectUtil.isNotEmpty(simCardPagination.getActive())){
simCardNum++;
simCardQueryWrapper.lambda().eq(SimCardEntity::getActive,simCardPagination.getActive());
}
@ -302,6 +325,21 @@ public class SimCardServiceImpl extends ServiceImpl<SimCardMapper, SimCardEntity
countRecover = "SIM卡号不能重复";
}
}
if(StringUtil.isNotEmpty(form.getDataPlan())){
if(!Pattern.compile("^\\d+$").matcher(String.valueOf(form.getDataPlan())).matches()){
return "请输入正确的数字";
}
}
if(StringUtil.isNotEmpty(form.getDataUsage())){
if(!Pattern.compile("^\\d+$").matcher(String.valueOf(form.getDataUsage())).matches()){
return "请输入正确的数字";
}
}
if(StringUtil.isNotEmpty(form.getDataBalance())){
if(!Pattern.compile("^\\d+$").matcher(String.valueOf(form.getDataBalance())).matches()){
return "请输入正确的数字";
}
}
return countRecover;
}
/**

@ -15,30 +15,36 @@ import jnpf.model.recycledevice.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.*;
import jnpf.annotation.JnpfField;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.base.entity.ProvinceEntity;
import java.io.IOException;
import java.util.stream.Collectors;
import jnpf.engine.entity.FlowTaskEntity;
import jnpf.exception.WorkFlowException;
import org.springframework.transaction.annotation.Transactional;
/**
* RecycleDevice
*
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-06-19
* @ 2024-06-21
*/
@Slf4j
@RestController
@Tag(name = "RecycleDevice" , description = "scm")
@Tag(name = "设备柜清单", description = "scm")
@RequestMapping("/api/scm/RecycleDevice")
public class RecycleDeviceController {
@ -50,29 +56,39 @@ public class RecycleDeviceController {
@Autowired
private RecycleDeviceService recycleDeviceService;
@Resource
private RecycleBucketService recycleBucketService;
@Resource
private SimCardService simCardService;
@Resource
private RecycleCameraService cameraService;
/**
*
*
* @param recycleDevicePagination
* @return
*/
*
*
* @param recycleDevicePagination
* @return
*/
@Operation(summary = "获取列表")
@PostMapping("/getList")
public ActionResult list(@RequestBody RecycleDevicePagination recycleDevicePagination)throws IOException{
List<RecycleDeviceEntity> list= recycleDeviceService.getList(recycleDevicePagination);
List<Map<String, Object>> realList=new ArrayList<>();
public ActionResult list(@RequestBody RecycleDevicePagination recycleDevicePagination) throws IOException {
List<RecycleDeviceEntity> list = recycleDeviceService.getList(recycleDevicePagination);
List<Map<String, Object>> realList = new ArrayList<>();
for (RecycleDeviceEntity entity : list) {
Map<String, Object> recycleDeviceMap=JsonUtil.entityToMap(entity);
recycleDeviceMap.put("id", recycleDeviceMap.get("id"));
//副表数据
//子表数据
Map<String, Object> recycleDeviceMap = JsonUtil.entityToMap(entity);
recycleDeviceMap.put("id", recycleDeviceMap.get("id"));
String deviceCode = entity.getDeviceCode();
//桶信息
List<RecycleBucketEntity> buckets = recycleBucketService.getByDeviceCode(deviceCode);
recycleDeviceMap.put("buckets", buckets);
//sim卡信息
//摄像头信息
realList.add(recycleDeviceMap);
}
//数据转换
realList = generaterSwapUtil.swapDataList(realList, RecycleDeviceConstant.getFormData(), RecycleDeviceConstant.getColumnData(), recycleDevicePagination.getModuleId(),false);
realList = generaterSwapUtil.swapDataList(realList, RecycleDeviceConstant.getFormData(), RecycleDeviceConstant.getColumnData(), recycleDevicePagination.getModuleId(), false);
//返回对象
PageListVO vo = new PageListVO();
@ -81,110 +97,119 @@ public class RecycleDeviceController {
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
*
*
* @param recycleDeviceForm
* @return
*/
*
*
* @param recycleDeviceForm
* @return
*/
@PostMapping()
@Operation(summary = "创建")
public ActionResult create(@RequestBody @Valid RecycleDeviceForm recycleDeviceForm) {
String b = recycleDeviceService.checkForm(recycleDeviceForm,0);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
String b = recycleDeviceService.checkForm(recycleDeviceForm, 0);
if (StringUtil.isNotEmpty(b)) {
return ActionResult.fail(b);
}
try{
recycleDeviceService.saveOrUpdate(recycleDeviceForm, null ,true);
}catch(Exception e){
try {
recycleDeviceService.saveOrUpdate(recycleDeviceForm, null, true);
} catch (Exception e) {
return ActionResult.fail("新增数据失败");
}
return ActionResult.success("创建成功");
}
/**
*
* @param id
* @param recycleDeviceForm
* @return
*/
*
*
* @param id
* @param recycleDeviceForm
* @return
*/
@PutMapping("/{id}")
@Operation(summary = "更新")
public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid RecycleDeviceForm recycleDeviceForm,
@RequestParam(value = "isImport", required = false) boolean isImport){
public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid RecycleDeviceForm recycleDeviceForm,
@RequestParam(value = "isImport", required = false) boolean isImport) {
recycleDeviceForm.setId(id);
if (!isImport) {
String b = recycleDeviceService.checkForm(recycleDeviceForm,1);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
String b = recycleDeviceService.checkForm(recycleDeviceForm, 1);
if (StringUtil.isNotEmpty(b)) {
return ActionResult.fail(b);
}
}
RecycleDeviceEntity entity= recycleDeviceService.getInfo(id);
if(entity!=null){
try{
recycleDeviceService.saveOrUpdate(recycleDeviceForm,id,false);
}catch(Exception e){
RecycleDeviceEntity entity = recycleDeviceService.getInfo(id);
if (entity != null) {
try {
recycleDeviceService.saveOrUpdate(recycleDeviceForm, id, false);
} catch (Exception e) {
return ActionResult.fail("修改数据失败");
}
return ActionResult.success("更新成功");
}else{
} else {
return ActionResult.fail("更新失败,数据不存在");
}
}
/**
*
* @param id
* @return
*/
*
*
* @param id
* @return
*/
@Operation(summary = "删除")
@DeleteMapping("/{id}")
@Transactional
public ActionResult delete(@PathVariable("id") String id){
RecycleDeviceEntity entity= recycleDeviceService.getInfo(id);
if(entity!=null){
public ActionResult delete(@PathVariable("id") String id) {
RecycleDeviceEntity entity = recycleDeviceService.getInfo(id);
if (entity != null) {
//假删除
entity.setDeleteMark(1);
recycleDeviceService.update(id,entity);
recycleDeviceService.update(id, entity);
}
return ActionResult.success("删除成功");
}
/**
* ()
* 使-
* @param id
* @return
*/
* ()
* 使-
*
* @param id
* @return
*/
@Operation(summary = "表单信息(详情页)")
@GetMapping("/detail/{id}")
public ActionResult detailInfo(@PathVariable("id") String id){
RecycleDeviceEntity entity= recycleDeviceService.getInfo(id);
if(entity==null){
public ActionResult detailInfo(@PathVariable("id") String id) {
RecycleDeviceEntity entity = recycleDeviceService.getInfo(id);
if (entity == null) {
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> recycleDeviceMap=JsonUtil.entityToMap(entity);
Map<String, Object> recycleDeviceMap = JsonUtil.entityToMap(entity);
recycleDeviceMap.put("id", recycleDeviceMap.get("id"));
//副表数据
//子表数据
recycleDeviceMap = generaterSwapUtil.swapDataDetail(recycleDeviceMap,RecycleDeviceConstant.getFormData(),"563701730794023749",false);
recycleDeviceMap = generaterSwapUtil.swapDataDetail(recycleDeviceMap, RecycleDeviceConstant.getFormData(), "563701730794023749", false);
return ActionResult.success(recycleDeviceMap);
}
/**
* ()
* 使-
* @param id
* @return
*/
* ()
* 使-
*
* @param id
* @return
*/
@Operation(summary = "信息")
@GetMapping("/{id}")
public ActionResult info(@PathVariable("id") String id){
RecycleDeviceEntity entity= recycleDeviceService.getInfo(id);
if(entity==null){
public ActionResult info(@PathVariable("id") String id) {
RecycleDeviceEntity entity = recycleDeviceService.getInfo(id);
if (entity == null) {
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> recycleDeviceMap=JsonUtil.entityToMap(entity);
Map<String, Object> recycleDeviceMap = JsonUtil.entityToMap(entity);
recycleDeviceMap.put("id", recycleDeviceMap.get("id"));
//副表数据
//子表数据
recycleDeviceMap = generaterSwapUtil.swapDataForm(recycleDeviceMap,RecycleDeviceConstant.getFormData(),RecycleDeviceConstant.TABLEFIELDKEY,RecycleDeviceConstant.TABLERENAMES);
recycleDeviceMap = generaterSwapUtil.swapDataForm(recycleDeviceMap, RecycleDeviceConstant.getFormData(), RecycleDeviceConstant.TABLEFIELDKEY, RecycleDeviceConstant.TABLERENAMES);
return ActionResult.success(recycleDeviceMap);
}

@ -30,15 +30,15 @@ import jnpf.exception.WorkFlowException;
import org.springframework.transaction.annotation.Transactional;
/**
* SimCard
* SIM
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-22
* @ 2024-06-21
*/
@Slf4j
@RestController
@Tag(name = "SimCard" , description = "scm")
@Tag(name = "SIM卡管理" , description = "scm")
@RequestMapping("/api/scm/SimCard")
public class SimCardController {

@ -9,7 +9,7 @@ import java.util.Date;
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-06-19
* @ 2024-06-21
*/
@Data
@TableName("nx_recycle_device")
@ -48,21 +48,21 @@ public class RecycleDeviceEntity {
private String creatorUserId;
@TableField("F_CREATOR_TIME")
private Date creatorTime;
@TableField(value = "f_last_modify_time" , fill = FieldFill.INSERT_UPDATE)
@TableField("F_LAST_MODIFY_TIME")
private Date lastModifyTime;
@TableField(value = "f_last_modify_user_id" , fill = FieldFill.INSERT_UPDATE)
@TableField("F_LAST_MODIFY_USER_ID")
private String lastModifyUserId;
@TableField(value = "company_id" , fill = FieldFill.INSERT)
@TableField("COMPANY_ID")
private String companyId;
@TableField(value = "organize_json_id" , fill = FieldFill.INSERT)
@TableField("ORGANIZE_JSON_ID")
private String organizeJsonId;
@TableField("F_FLOW_ID")
private String flowId;
@TableField(value = "f_delete_time" , fill = FieldFill.UPDATE)
@TableField("F_DELETE_TIME")
private Date deleteTime;
@TableField(value = "f_delete_user_id" , fill = FieldFill.UPDATE)
@TableField("F_DELETE_USER_ID")
private String deleteUserId;
@TableField(value = "f_delete_mark" , updateStrategy = FieldStrategy.IGNORED)
@TableField("F_DELETE_MARK")
private Integer deleteMark;
@TableField("F_TENANT_ID")
private Integer tenantId;

@ -9,21 +9,15 @@ import java.util.Date;
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-22
* @ 2024-06-21
*/
@Data
@TableName("nx_sim_card")
public class SimCardEntity {
@TableId(value ="ID" )
private String id;
@TableField(value = "DEV_ID" , updateStrategy = FieldStrategy.IGNORED)
private String devId;
@TableField(value = "DEV_NAME" , updateStrategy = FieldStrategy.IGNORED)
private String devName;
@TableField(value = "DEV_SN" , updateStrategy = FieldStrategy.IGNORED)
private String devSn;
@TableField(value = "ORG_ID" , updateStrategy = FieldStrategy.IGNORED)
private String orgId;
@TableField(value = "DEVICE_CODE" , updateStrategy = FieldStrategy.IGNORED)
private String deviceCode;
@TableField(value = "MSISDN" , updateStrategy = FieldStrategy.IGNORED)
private String msisdn;
@TableField(value = "ICCID" , updateStrategy = FieldStrategy.IGNORED)
@ -46,16 +40,8 @@ public class SimCardEntity {
private Date expiryDate;
@TableField(value = "UPDATE_TIME" , updateStrategy = FieldStrategy.IGNORED)
private Date updateTime;
@TableField(value = "ACCOUNT_STATUS" , updateStrategy = FieldStrategy.IGNORED)
private String accountStatus;
@TableField(value = "DEALER" , updateStrategy = FieldStrategy.IGNORED)
@TableField("DEALER")
private String dealer;
@TableField(value = "OBJECT_ID" , updateStrategy = FieldStrategy.IGNORED)
private String objectId;
@TableField(value = "POWER_STATUS" , updateStrategy = FieldStrategy.IGNORED)
private String powerStatus;
@TableField(value = "SUPPORT_SMS" , updateStrategy = FieldStrategy.IGNORED)
private String supportSms;
@TableField("F_CREATOR_TIME")
private Date creatorTime;
@TableField("F_CREATOR_USER_ID")

@ -6,11 +6,11 @@ import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* RecycleDevice
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-06-19
* @ 2024-06-21
*/
@Data
public class RecycleDeviceForm {

@ -7,11 +7,11 @@ import java.util.List;
/**
*
* RecycleDevice
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-06-19
* @ 2024-06-21
*/
@Data
public class RecycleDevicePagination extends Pagination {

@ -6,75 +6,51 @@ import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* SimCard
* SIM
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-22
* @ 2024-06-21
*/
@Data
public class SimCardForm {
/** 主键 */
private String id;
/** 设备Id **/
@JsonProperty("devId")
private Object devId;
/** 设备名 **/
@JsonProperty("devName")
private String devName;
/** 设备编号 **/
@JsonProperty("devSn")
private String devSn;
/** 机构 **/
@JsonProperty("orgId")
private Object orgId;
/** msisdn **/
@JsonProperty("msisdn")
private String msisdn;
/** 关联设备 **/
@JsonProperty("deviceCode")
private Object deviceCode;
/** SIM卡号 **/
@JsonProperty("iccid")
private String iccid;
/** msisdn **/
@JsonProperty("msisdn")
private String msisdn;
/** imsi **/
@JsonProperty("imsi")
private String imsi;
/** 运营商 **/
@JsonProperty("carrier")
private Object carrier;
/** 卡状态 **/
@JsonProperty("statusType")
private String statusType;
/** 运营商 **/
@JsonProperty("carrier")
private String carrier;
/** 套餐大小(M) **/
@JsonProperty("dataPlan")
private BigDecimal dataPlan;
/** 已用量(M) **/
@JsonProperty("dataUsage")
private BigDecimal dataUsage;
/** 剩余流量(M) **/
@JsonProperty("dataBalance")
private BigDecimal dataBalance;
/** 激活状态 **/
@JsonProperty("active")
private String active;
/** 服务期止 **/
@JsonProperty("expiryDate")
private String expiryDate;
/** 套餐大小 **/
@JsonProperty("dataPlan")
private String dataPlan;
/** 已用流量 **/
@JsonProperty("dataUsage")
private String dataUsage;
/** 剩余流量 **/
@JsonProperty("dataBalance")
private String dataBalance;
/** 同步日期 **/
@JsonProperty("updateTime")
private String updateTime;
/** 账号状态 **/
@JsonProperty("accountStatus")
private String accountStatus;
/** 经销商 **/
@JsonProperty("dealer")
private String dealer;
/** objectId **/
@JsonProperty("objectId")
private String objectId;
/** 电源状态 **/
@JsonProperty("powerStatus")
private String powerStatus;
/** 短信支持 **/
@JsonProperty("supportSms")
private String supportSms;
/** 服务期止 **/
@JsonProperty("expiryDate")
private String expiryDate;
}

@ -7,11 +7,11 @@ import java.util.List;
/**
*
* SimCard
* SIM
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-22
* @ 2024-06-21
*/
@Data
public class SimCardPagination extends Pagination {
@ -27,16 +27,19 @@ public class SimCardPagination extends Pagination {
private String moduleId;
/** 菜单id */
private String menuId;
/** 设备Id */
@JsonProperty("devId")
private Object devId;
/** 设备名 */
@JsonProperty("devName")
private Object devName;
/** 关联设备 */
@JsonProperty("deviceCode")
private Object deviceCode;
/** SIM卡号 */
@JsonProperty("iccid")
private Object iccid;
/** 设备编号 */
@JsonProperty("devSn")
private Object devSn;
/** 卡状态 */
@JsonProperty("statusType")
private Object statusType;
/** 运营商 */
@JsonProperty("carrier")
private Object carrier;
/** 激活状态 */
@JsonProperty("active")
private Object active;
}

@ -1,253 +0,0 @@
<template>
<transition name="el-zoom-in-center">
<div class="JNPF-preview-main">
<Detail v-if="detailVisible" ref="Detail" @close="detailVisible = false" />
<div class="JNPF-common-page-header">
<el-page-header @back="goBack"
content="详情"/>
<div class="options">
<el-button @click="goBack"> </el-button>
</div>
</div>
<el-row :gutter="15" class=" main" :style="{margin: '0 auto',width: '100%'}">
<el-form ref="formRef" :model="dataForm" size="small" label-width="110px" label-position="right" >
<template v-if="!loading">
<el-col :span="8" >
<jnpf-form-tip-item label="设备Id"
prop="devId" >
<p>{{ dataForm.devId }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="设备名"
prop="devName" >
<p>{{dataForm.devName}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="设备编号"
prop="devSn" >
<p>{{dataForm.devSn}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="机构"
prop="orgId" >
<p>{{ dataForm.orgId }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="msisdn"
prop="msisdn" >
<p>{{dataForm.msisdn}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="SIM卡号"
prop="iccid" >
<p>{{dataForm.iccid}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="imsi"
prop="imsi" >
<p>{{dataForm.imsi}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="卡状态"
prop="statusType" >
<p>{{ dataForm.statusType }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="运营商"
prop="carrier" >
<p>{{dataForm.carrier}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="套餐大小(M)"
prop="dataPlan" >
<JnpfNumber v-model="dataForm.dataPlan"
placeholder="数字文本" disabled
:step="1" thousands >
</JnpfNumber>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="已用量(M)"
prop="dataUsage" >
<JnpfNumber v-model="dataForm.dataUsage"
placeholder="数字文本" disabled
:step="1" thousands >
</JnpfNumber>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="剩余流量(M)"
prop="dataBalance" >
<JnpfNumber v-model="dataForm.dataBalance"
placeholder="数字文本" disabled
:step="1" thousands >
</JnpfNumber>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="激活状态"
prop="active" >
<p>{{ dataForm.active }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="服务期止"
prop="expiryDate" >
<p>{{dataForm.expiryDate}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="同步日期"
prop="updateTime" >
<p>{{dataForm.updateTime}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="账号状态"
prop="accountStatus" >
<p>{{ dataForm.accountStatus }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="经销商"
prop="dealer" >
<p>{{dataForm.dealer}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="objectId"
prop="objectId" >
<p>{{dataForm.objectId}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="电源状态"
prop="powerStatus" >
<p>{{ dataForm.powerStatus }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item label="短信支持"
prop="supportSms" >
<p>{{ dataForm.supportSms }} </p>
</jnpf-form-tip-item>
</el-col>
</template>
</el-form>
</el-row>
</div>
</transition>
</template>
<script>
import request from '@/utils/request'
import { getConfigData } from '@/api/onlineDev/visualDev'
import jnpf from '@/utils/jnpf'
import Detail from '@/views/basic/dynamicModel/list/detail'
import { thousandsFormat } from "@/components/Generator/utils/index"
export default {
components: { Detail},
props: [],
data() {
return {
visible: false,
detailVisible: false,
loading: false,
dataForm: {
id :'',
devId : "",
devName : '',
devSn : '',
orgId : "",
msisdn : '',
iccid : '',
imsi : '',
statusType : "1",
carrier : '',
dataPlan : '',
dataUsage : '',
dataBalance : '',
active : "1",
expiryDate : '',
updateTime : '',
accountStatus : "1",
dealer : '',
objectId : '',
powerStatus : "1",
supportSms : "1",
},
devIdOptions:[{"fullName":"设备1","id":"1"},{"fullName":"设备2","id":"2"}],
devIdProps:{"label":"fullName","value":"id" },
orgIdOptions:[{"fullName":"机构A","id":"1"},{"fullName":"机构B","id":"2"}],
orgIdProps:{"label":"fullName","value":"id" },
statusTypeOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"2"}],
statusTypeProps:{"label":"fullName","value":"id" },
activeOptions:[{"fullName":"激活","id":"1"},{"fullName":"未激活","id":"2"}],
activeProps:{"label":"fullName","value":"id" },
accountStatusOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"2"}],
accountStatusProps:{"label":"fullName","value":"id" },
powerStatusOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"2"}],
powerStatusProps:{"label":"fullName","value":"id" },
supportSmsOptions:[{"fullName":"支持","id":"1"},{"fullName":"不支持","id":"2"}],
supportSmsProps:{"label":"fullName","value":"id" },
}
},
computed: {},
watch: {},
created() {
},
mounted() {},
methods: {
toDetail(defaultValue, modelId) {
if (!defaultValue) return
getConfigData(modelId).then(res => {
if (!res.data || !res.data.formData) return
let formData = JSON.parse(res.data.formData)
formData.popupType = 'general'
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(formData, modelId, defaultValue)
})
})
},
dataInfo(dataAll){
let _dataAll =dataAll
this.dataForm = _dataAll
},
goBack() {
this.$emit('refresh')
},
init(id) {
this.dataForm.id = id || 0;
this.visible = true;
this.$nextTick(() => {
if(this.dataForm.id){
this.loading = true
request({
url: '/api/scm/SimCard/detail/'+this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
}
})
},
},
}
</script>

File diff suppressed because one or more lines are too long

@ -1,537 +0,0 @@
<template>
<div class="JNPF-common-layout">
<div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item label="设备Id">
<JnpfSelect v-model="query.devId" placeholder="请选择" clearable :options="devIdOptions"
:props="devIdProps" multiple>
</JnpfSelect>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设备名">
<el-input v-model="query.devName" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="SIM卡号">
<el-input v-model="query.iccid" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<template v-if="showAll">
<el-col :span="6">
<el-form-item label="设备编号">
<el-input v-model="query.devSn" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
</template>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
<el-button type="text" icon="el-icon-arrow-down" @click="showAll = true" v-if="!showAll">
展开
</el-button>
<el-button type="text" icon="el-icon-arrow-up" @click="showAll = false" v-else>
收起
</el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
<el-button type="primary" icon="icon-ym icon-ym-btn-add" v-has="'btn_add'"
@click="addOrUpdateHandle()">新增
</el-button>
</div>
<div class="JNPF-common-head-right">
<el-tooltip content="高级查询" placement="top" v-if="true">
<el-link icon="icon-ym icon-ym-filter JNPF-common-head-icon" :underline="false"
@click="openSuperQuery()" />
</el-tooltip>
<el-tooltip effect="dark" :content="$t('common.refresh')" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
@click="initData()" />
</el-tooltip>
</div>
</div>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange'
:span-method="arraySpanMethod">
<el-table-column label="设备Id" prop="devId" algin="left">
<template slot-scope="scope">
{{ scope.row.devId }}
</template>
</el-table-column>
<el-table-column prop="devName" label="设备名" align="left">
</el-table-column>
<el-table-column prop="devSn" label="设备编号" align="left">
</el-table-column>
<!-- <el-table-column label="机构" prop="orgId" algin="left">
<template slot-scope="scope">
{{ scope.row.orgId }}
</template>
</el-table-column> -->
<!-- <el-table-column prop="msisdn" label="msisdn" align="left">
</el-table-column> -->
<el-table-column prop="iccid" label="SIM卡号" align="left">
</el-table-column>
<!-- <el-table-column prop="imsi" label="imsi" align="left">
</el-table-column> -->
<el-table-column label="卡状态" prop="statusType" algin="left">
<template slot-scope="scope">
{{ scope.row.statusType }}
</template>
</el-table-column>
<!-- <el-table-column prop="carrier" label="运营商" align="left">
</el-table-column> -->
<el-table-column prop="dataPlan" label="套餐大小(M)" align="left">
<template slot-scope="scope" v-if="scope.row.dataPlan">
<JnpfNumber v-model="scope.row.dataPlan" :thousands="true" />
</template>
</el-table-column>
<el-table-column prop="dataUsage" label="已用量(M)" align="left">
<template slot-scope="scope" v-if="scope.row.dataUsage">
<JnpfNumber v-model="scope.row.dataUsage" :thousands="true" />
</template>
</el-table-column>
<el-table-column prop="dataBalance" label="剩余流量(M)" align="left">
<template slot-scope="scope" v-if="scope.row.dataBalance">
<JnpfNumber v-model="scope.row.dataBalance" :thousands="true" />
</template>
</el-table-column>
<!-- <el-table-column label="激活状态" prop="active" algin="left">
<template slot-scope="scope">
{{ scope.row.active }}
</template>
</el-table-column> -->
<el-table-column prop="expiryDate" label="服务期止" align="left">
</el-table-column>
<el-table-column prop="updateTime" label="同步日期" align="left">
</el-table-column>
<!-- <el-table-column label="账号状态" prop="accountStatus" algin="left">
<template slot-scope="scope">
{{ scope.row.accountStatus }}
</template>
</el-table-column> -->
<!-- <el-table-column prop="dealer" label="经销商" align="left">
</el-table-column> -->
<!-- <el-table-column prop="objectId" label="objectId" align="left">
</el-table-column> -->
<!-- <el-table-column label="电源状态" prop="powerStatus" algin="left">
<template slot-scope="scope">
{{ scope.row.powerStatus }}
</template>
</el-table-column>
<el-table-column label="短信支持" prop="supportSms" algin="left">
<template slot-scope="scope">
{{ scope.row.supportSms }}
</template>
</el-table-column> -->
<el-table-column label="操作" fixed="right" width="150">
<template slot-scope="scope">
<el-button type="text" @click="addOrUpdateHandle(scope.row)" v-has="'btn_edit'">
</el-button>
<el-button type="text" class="JNPF-table-delBtn" v-has="'btn_remove'"
@click="handleDel(scope.row.id)">删除
</el-button>
<el-button type="text" v-has="'btn_detail'" @click="goDetail(scope.row.id)">
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize"
@pagination="initData" />
</div>
</div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh" />
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
<ImportBox v-if="uploadBoxVisible" ref="UploadBox" @refresh="initData" />
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible = false" />
<ToFormDetail v-if="toFormDetailVisible" ref="toFormDetail" @close="toFormDetailVisible = false" />
<SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson"
@superQuery="superQuery" />
</div>
</template>
<script>
import request from '@/utils/request'
import { mapGetters } from "vuex";
import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
import JNPFForm from './form'
import Detail from './Detail'
import ExportBox from '@/components/ExportBox'
import ToFormDetail from '@/views/basic/dynamicModel/list/detail'
import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
import { getConfigData } from '@/api/onlineDev/visualDev'
import { getDefaultCurrentValueUserIdAsync } from '@/api/permission/user'
import { getDefaultCurrentValueDepartmentIdAsync } from '@/api/permission/organize'
import columnList from './columnList'
import { thousandsFormat } from "@/components/Generator/utils/index"
import SuperQuery from '@/components/SuperQuery'
import superQueryJson from './superQueryJson'
export default {
components: {
JNPFForm,
Detail,
ExportBox, ToFormDetail, SuperQuery
},
data() {
return {
keyword: '',
expandsTree: true,
refreshTree: true,
toFormDetailVisible: false,
expandObj: {},
columnOptions: [],
mergeList: [],
exportList: [],
columnList,
showAll: false,
superQueryVisible: false,
superQueryJson,
uploadBoxVisible: false,
detailVisible: false,
query: {
devId: undefined,
devName: undefined,
iccid: undefined,
devSn: undefined,
},
treeProps: {
children: 'children',
label: 'fullName',
value: 'id',
isLeaf: 'isLeaf'
},
list: [],
listLoading: true,
total: 0,
queryData: {},
listQuery: {
superQueryJson: '',
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
},
formVisible: false,
flowVisible: false,
flowListVisible: false,
flowList: [],
exportBoxVisible: false,
devIdOptions: [{ "fullName": "设备1", "id": "1" }, { "fullName": "设备2", "id": "2" }],
devIdProps: { "label": "fullName", "value": "id" },
orgIdOptions: [{ "fullName": "机构A", "id": "1" }, { "fullName": "机构B", "id": "2" }],
orgIdProps: { "label": "fullName", "value": "id" },
statusTypeOptions: [{ "fullName": "正常", "id": "1" }, { "fullName": "异常", "id": "2" }],
statusTypeProps: { "label": "fullName", "value": "id" },
activeOptions: [{ "fullName": "激活", "id": "1" }, { "fullName": "未激活", "id": "2" }],
activeProps: { "label": "fullName", "value": "id" },
accountStatusOptions: [{ "fullName": "正常", "id": "1" }, { "fullName": "异常", "id": "2" }],
accountStatusProps: { "label": "fullName", "value": "id" },
powerStatusOptions: [{ "fullName": "正常", "id": "1" }, { "fullName": "异常", "id": "2" }],
powerStatusProps: { "label": "fullName", "value": "id" },
supportSmsOptions: [{ "fullName": "支持", "id": "1" }, { "fullName": "不支持", "id": "2" }],
supportSmsProps: { "label": "fullName", "value": "id" },
interfaceRes: {
},
}
},
computed: {
...mapGetters(['userInfo']),
menuId() {
return this.$route.meta.modelId || ''
}
},
created() {
this.getColumnList(),
this.initSearchDataAndListData()
this.queryData = JSON.parse(JSON.stringify(this.query))
},
methods: {
toDetail(defaultValue, modelId) {
if (!defaultValue) return
getConfigData(modelId).then(res => {
if (!res.data || !res.data.formData) return
let formData = JSON.parse(res.data.formData)
formData.popupType = 'general'
this.toFormDetailVisible = true
this.$nextTick(() => {
this.$refs.toFormDetail.init(formData, modelId, defaultValue)
})
})
},
toggleTreeExpand(expands) {
this.refreshTree = false
this.expandsTree = expands
this.$nextTick(() => {
this.refreshTree = true
this.$nextTick(() => {
this.$refs.treeBox.setCurrentKey(null)
})
})
},
filterNode(value, data) {
if (!value) return true;
return data[this.treeProps.label].indexOf(value) !== -1;
},
loadNode(node, resolve) {
const nodeData = node.data
const config = {
treeInterfaceId: "",
treeTemplateJson: []
}
if (config.treeInterfaceId) {
//
if (config.treeTemplateJson && config.treeTemplateJson.length) {
for (let i = 0; i < config.treeTemplateJson.length; i++) {
const element = config.treeTemplateJson[i];
element.defaultValue = nodeData[element.relationField] || ''
}
}
//
let query = {
paramList: config.treeTemplateJson || [],
}
//
getDataInterfaceRes(config.treeInterfaceId, query).then(res => {
let data = res.data
if (Array.isArray(data)) {
resolve(data);
} else {
resolve([]);
}
})
}
},
getColumnList() {
//
this.columnOptions = this.transformColumnList(this.columnList)
},
transformColumnList(columnList) {
let list = []
for (let i = 0; i < columnList.length; i++) {
const e = columnList[i];
if (!e.prop.includes('-')) {
list.push(e)
} else {
let prop = e.prop.split('-')[0]
let label = e.label.split('-')[0]
let vModel = e.prop.split('-')[1]
let newItem = {
align: "center",
jnpfKey: "table",
prop,
label,
children: []
}
e.vModel = vModel
if (!this.expandObj.hasOwnProperty(`${prop}Expand`)) this.$set(this.expandObj, `${prop}Expand`, false)
if (!list.some(o => o.prop === prop)) list.push(newItem)
for (let i = 0; i < list.length; i++) {
if (list[i].prop === prop) {
list[i].children.push(e)
break
}
}
}
}
this.getMergeList(list)
this.getExportList(list)
return list
},
arraySpanMethod({ column }) {
for (let i = 0; i < this.mergeList.length; i++) {
if (column.property == this.mergeList[i].prop) {
return [this.mergeList[i].rowspan, this.mergeList[i].colspan]
}
}
},
getMergeList(list) {
let newList = JSON.parse(JSON.stringify(list))
newList.forEach(item => {
if (item.children && item.children.length) {
let child = {
prop: item.prop + '-child-first'
}
item.children.unshift(child)
}
})
newList.forEach(item => {
if (item.children && item.children.length) {
item.children.forEach((child, index) => {
if (index == 0) {
this.mergeList.push({
prop: child.prop,
rowspan: 1,
colspan: item.children.length
})
} else {
this.mergeList.push({
prop: child.prop,
rowspan: 0,
colspan: 0
})
}
})
} else {
this.mergeList.push({
prop: item.prop,
rowspan: 1,
colspan: 1
})
}
})
},
getExportList(list) {
let exportList = []
for (let i = 0; i < list.length; i++) {
if (list[i].jnpfKey === 'table') {
for (let j = 0; j < list[i].children.length; j++) {
exportList.push(list[i].children[j])
}
} else {
exportList.push(list[i])
}
}
this.exportList = exportList
},
goDetail(id) {
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id)
})
},
sortChange({ column, prop, order }) {
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
async initSearchDataAndListData() {
await this.initSearchData()
this.initData()
},
//
async initSearchData() {
},
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
keyword: this.keyword,
dataType: 0,
menuId: this.menuId,
moduleId: '562988941775480645',
type: 1,
};
request({
url: `/api/scm/SimCard/getList`,
method: 'post',
data: _query
}).then(res => {
var _list = res.data.list;
this.list = _list.map(o => ({
...o,
...this.expandObj,
}))
this.total = res.data.pagination.total
this.listLoading = false
})
},
handleDel(id) {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/scm/SimCard/${id}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
});
},
handelUpload() {
this.uploadBoxVisible = true
this.$nextTick(() => {
this.$refs.UploadBox.init("", "scm/SimCard")
})
},
openSuperQuery() {
this.superQueryVisible = true
this.$nextTick(() => {
this.$refs.SuperQuery.init()
})
},
superQuery(queryJson) {
this.listQuery.superQueryJson = queryJson
this.listQuery.currentPage = 1
this.initData()
},
addOrUpdateHandle(row, isDetail) {
let id = row ? row.id : ""
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail, this.list)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.exportList)
})
},
download(data) {
let query = { ...data, ...this.listQuery, ...this.query, menuId: this.menuId }
request({
url: `/api/scm/SimCard/Actions/Export`,
method: 'post',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery.currentPage = 1
this.listQuery.pageSize = 20
this.listQuery.sort = "desc"
this.listQuery.sidx = ""
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
this.query = JSON.parse(JSON.stringify(this.queryData))
this.search()
},
colseFlow(isrRefresh) {
this.flowVisible = false
if (isrRefresh) this.reset()
},
}
}
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,175 @@
<template>
<el-dialog title="详情"
:close-on-click-modal="false" append-to-body
:visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
width="600px">
<el-row :gutter="15" class="">
<el-form ref="formRef" :model="dataForm" size="small" label-width="110px" label-position="right" >
<template v-if="!loading">
<el-col :span="24" >
<jnpf-form-tip-item label="关联设备"
prop="deviceCode" >
<p>{{dataForm.deviceCode}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="SIM卡号"
prop="iccid" >
<p>{{dataForm.iccid}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="msisdn"
prop="msisdn" >
<p>{{dataForm.msisdn}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="imsi"
prop="imsi" >
<p>{{dataForm.imsi}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="运营商"
prop="carrier" >
<p>{{ dataForm.carrier }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="卡状态"
prop="statusType" >
<p>{{ dataForm.statusType }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="激活状态"
prop="active" >
<p>{{ dataForm.active }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="套餐大小"
prop="dataPlan" >
<p>{{dataForm.dataPlan}}MB</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="已用流量"
prop="dataUsage" >
<p>{{dataForm.dataUsage}}MB</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="剩余流量"
prop="dataBalance" >
<p>{{dataForm.dataBalance}}MB</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="同步日期"
prop="updateTime" >
<p>{{dataForm.updateTime}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="服务期止"
prop="expiryDate" >
<p>{{dataForm.expiryDate}}</p>
</jnpf-form-tip-item>
</el-col>
</template>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
</span>
<Detail v-if="detailVisible" ref="Detail" @close="detailVisible = false" />
</el-dialog>
</template>
<script>
import request from '@/utils/request'
import { getConfigData } from '@/api/onlineDev/visualDev'
import jnpf from '@/utils/jnpf'
import Detail from '@/views/basic/dynamicModel/list/detail'
import { thousandsFormat } from "@/components/Generator/utils/index"
export default {
components: { Detail},
props: [],
data() {
return {
visible: false,
detailVisible: false,
loading: false,
dataForm: {
id :'',
deviceCode : "",
iccid : '',
msisdn : '',
imsi : '',
carrier : "",
statusType : "2",
active : "1",
dataPlan : '',
dataUsage : '',
dataBalance : '',
updateTime : '',
expiryDate : '',
},
deviceCodeProps:{"label":"fullName","value":"id" },
carrierOptions:[{"fullName":"中国移动","id":"YD"},{"fullName":"中国联通","id":"LT"},{"fullName":"中国电信","id":"DX"}],
carrierProps:{"label":"fullName","value":"id" },
statusTypeOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"0"}],
statusTypeProps:{"label":"fullName","value":"id" },
activeOptions:[{"fullName":"激活","id":"1"},{"fullName":"未激活","id":"0"}],
activeProps:{"label":"fullName","value":"id" },
}
},
computed: {},
watch: {},
created() {
},
mounted() {},
methods: {
toDetail(defaultValue, modelId) {
if (!defaultValue) return
getConfigData(modelId).then(res => {
if (!res.data || !res.data.formData) return
let formData = JSON.parse(res.data.formData)
formData.popupType = 'general'
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(formData, modelId, defaultValue)
})
})
},
dataInfo(dataAll){
let _dataAll =dataAll
this.dataForm = _dataAll
},
init(id) {
this.dataForm.id = id || 0;
this.visible = true;
this.$nextTick(() => {
if(this.dataForm.id){
this.loading = true
request({
url: '/api/scm/SimCard/detail/'+this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
}
})
},
},
}
</script>

File diff suppressed because one or more lines are too long

@ -2,71 +2,31 @@
<template>
<transition name="el-zoom-in-center">
<div class="JNPF-preview-main">
<div class="JNPF-common-page-header">
<el-page-header @back="goBack"
:content="!dataForm.id ? '新建':'编辑'"/>
<div class="options">
<el-dropdown class="dropdown" placement="bottom">
<el-button style="width:70px">
<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<template v-if="dataForm.id">
<el-dropdown-item @click.native="prev" :disabled='prevDis'>
{{'上一条'}}
</el-dropdown-item>
<el-dropdown-item @click.native="next" :disabled='nextDis'>
{{'下一条'}}
</el-dropdown-item>
</template>
<el-dropdown-item type="primary" @click.native="dataFormSubmit(2)"
:loading="continueBtnLoading" :disabled='btnLoading'>
{{!dataForm.id ?'确定并新增':'确定并继续'}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading" :disabled='continueBtnLoading'> </el-button>
<el-button @click="goBack"> </el-button>
</div>
</div>
<el-row :gutter="15" class=" main" :style="{margin: '0 auto',width: '100%'}">
<el-dialog :title="!dataForm.id ? '新建' :'编辑'"
:close-on-click-modal="false" append-to-body
:visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
width="600px">
<el-row :gutter="15" class="">
<el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small" label-width="110px" label-position="right" >
<template v-if="!loading">
<!-- 具体表单 -->
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="设备Id" prop="devId" >
<JnpfSelect v-model="dataForm.devId" @change="changeData('devId',-1)"
placeholder="请选择" clearable :style='{"width":"100%"}' :options="devIdOptions" :props="devIdProps" >
label="关联设备" prop="deviceCode" >
<JnpfSelect v-model="dataForm.deviceCode" @change="changeData('deviceCode',-1)"
placeholder="请选择" clearable :style='{"width":"100%"}' :options="deviceCodeOptions" :props="deviceCodeProps" >
</JnpfSelect>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="设备名" prop="devName" >
<JnpfInput v-model="dataForm.devName" @change="changeData('devName',-1)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item
label="设备编号" prop="devSn" >
<JnpfInput v-model="dataForm.devSn" @change="changeData('devSn',-1)"
label="SIM卡号" prop="iccid" >
<JnpfInput v-model="dataForm.iccid" @change="changeData('iccid',-1)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item
label="机构" prop="orgId" >
<JnpfSelect v-model="dataForm.orgId" @change="changeData('orgId',-1)"
placeholder="请选择" clearable :style='{"width":"100%"}' :options="orgIdOptions" :props="orgIdProps" >
</JnpfSelect>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="msisdn" prop="msisdn" >
<JnpfInput v-model="dataForm.msisdn" @change="changeData('msisdn',-1)"
@ -74,126 +34,78 @@
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="SIM卡号" prop="iccid" >
<JnpfInput v-model="dataForm.iccid" @change="changeData('iccid',-1)"
label="imsi" prop="imsi" >
<JnpfInput v-model="dataForm.imsi" @change="changeData('imsi',-1)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="imsi" prop="imsi" >
<JnpfInput v-model="dataForm.imsi" @change="changeData('imsi',-1)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
label="运营商" prop="carrier" >
<JnpfSelect v-model="dataForm.carrier" @change="changeData('carrier',-1)"
placeholder="请选择" clearable :style='{"width":"100%"}' :options="carrierOptions" :props="carrierProps" >
</JnpfSelect>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="卡状态" prop="statusType" >
<JnpfRadio v-model="dataForm.statusType" @change="changeData('statusType',-1)"
optionType="default" direction="horizontal" size="small" :options="statusTypeOptions" :props="statusTypeProps" >
optionType="button" direction="horizontal" size="small" :options="statusTypeOptions" :props="statusTypeProps" >
</JnpfRadio>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item
label="运营商" prop="carrier" >
<JnpfInput v-model="dataForm.carrier" @change="changeData('carrier',-1)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="套餐大小(M)" prop="dataPlan" >
<JnpfInputNumber v-model="dataForm.dataPlan" @change="changeData('dataPlan',-1)"
placeholder="数字文本" thousands :step="1" >
</JnpfInputNumber>
label="激活状态" prop="active" >
<JnpfRadio v-model="dataForm.active" @change="changeData('active',-1)"
optionType="button" direction="horizontal" size="small" :options="activeOptions" :props="activeProps" >
</JnpfRadio>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="已用量(M)" prop="dataUsage" >
<JnpfInputNumber v-model="dataForm.dataUsage" @change="changeData('dataUsage',-1)"
placeholder="数字文本" thousands :step="1" >
</JnpfInputNumber>
label="套餐大小" prop="dataPlan" >
<JnpfInput v-model="dataForm.dataPlan" @change="changeData('dataPlan',-1)"
placeholder="请输入" addonAfter="MB" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="剩余流量(M)" prop="dataBalance" >
<JnpfInputNumber v-model="dataForm.dataBalance" @change="changeData('dataBalance',-1)"
placeholder="数字文本" thousands :step="1" >
</JnpfInputNumber>
label="已用流量" prop="dataUsage" >
<JnpfInput v-model="dataForm.dataUsage" @change="changeData('dataUsage',-1)"
placeholder="请输入" addonAfter="MB" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="激活状态" prop="active" >
<JnpfRadio v-model="dataForm.active" @change="changeData('active',-1)"
optionType="default" direction="horizontal" size="small" :options="activeOptions" :props="activeProps" >
</JnpfRadio>
label="剩余流量" prop="dataBalance" >
<JnpfInput v-model="dataForm.dataBalance" @change="changeData('dataBalance',-1)"
placeholder="请输入" addonAfter="MB" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="服务期止" prop="expiryDate" >
<JnpfDatePicker v-model="dataForm.expiryDate" @change="changeData('expiryDate',-1)"
label="同步日期" prop="updateTime" >
<JnpfDatePicker v-model="dataForm.updateTime" @change="changeData('updateTime',-1)"
:startTime="dateTime(false,1,1,'','')" :endTime="dateTime(false,1,1,'','')" placeholder="请选择" clearable :style='{"width":"100%"}' type="date" format="yyyy-MM-dd" >
</JnpfDatePicker>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<el-col :span="24" >
<jnpf-form-tip-item
label="同步日期" prop="updateTime" >
<JnpfDatePicker v-model="dataForm.updateTime" @change="changeData('updateTime',-1)"
label="服务期止" prop="expiryDate" >
<JnpfDatePicker v-model="dataForm.expiryDate" @change="changeData('expiryDate',-1)"
:startTime="dateTime(false,1,1,'','')" :endTime="dateTime(false,1,1,'','')" placeholder="请选择" clearable :style='{"width":"100%"}' type="date" format="yyyy-MM-dd" >
</JnpfDatePicker>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item
label="账号状态" prop="accountStatus" >
<JnpfRadio v-model="dataForm.accountStatus" @change="changeData('accountStatus',-1)"
optionType="default" direction="horizontal" size="small" :options="accountStatusOptions" :props="accountStatusProps" >
</JnpfRadio>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item
label="经销商" prop="dealer" >
<JnpfInput v-model="dataForm.dealer" @change="changeData('dealer',-1)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item
label="objectId" prop="objectId" >
<JnpfInput v-model="dataForm.objectId" @change="changeData('objectId',-1)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item
label="电源状态" prop="powerStatus" >
<JnpfRadio v-model="dataForm.powerStatus" @change="changeData('powerStatus',-1)"
optionType="default" direction="horizontal" size="small" :options="powerStatusOptions" :props="powerStatusProps" >
</JnpfRadio>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8" >
<jnpf-form-tip-item
label="短信支持" prop="supportSms" >
<JnpfRadio v-model="dataForm.supportSms" @change="changeData('supportSms',-1)"
optionType="default" direction="horizontal" size="small" :options="supportSmsOptions" :props="supportSmsProps" >
</JnpfRadio>
</jnpf-form-tip-item>
</el-col>
<!-- 表单结束 -->
@ -202,8 +114,21 @@
<SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
ref="selectDialog" @select="addForSelect" @close="selectDialogVisible=false"/>
</el-row>
</div>
</transition>
<span slot="footer" class="dialog-footer">
<div class="upAndDown-button" v-if="dataForm.id">
<el-button @click="prev" :disabled='prevDis'>
{{'上一条'}}
</el-button>
<el-button @click="next" :disabled='nextDis'>
{{'下一条'}}
</el-button>
</div>
<el-button type="primary" @click="dataFormSubmit(2)" :loading="continueBtnLoading">
{{!dataForm.id ?'确定并新增':'确定并继续'}}</el-button>
<el-button @click="visible = false"> </el-button>
<el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading"> </el-button>
</span>
</el-dialog>
</template>
@ -247,110 +172,88 @@
Vmodel:"",
currVmodel:"",
dataForm: {
devId : undefined,
devName : undefined,
devSn : undefined,
orgId : undefined,
msisdn : undefined,
deviceCode : undefined,
iccid : undefined,
msisdn : undefined,
imsi : undefined,
statusType : "1",
carrier : undefined,
carrier : undefined,
statusType : "2",
active : "1",
dataPlan : undefined,
dataUsage : undefined,
dataBalance : undefined,
active : "1",
expiryDate : undefined,
updateTime : undefined,
accountStatus : "1",
dealer : undefined,
objectId : undefined,
powerStatus : "1",
supportSms : "1",
expiryDate : undefined,
},
tableRequiredData: {},
dataRule:
{
iccid: [
deviceCode: [
{
required: true,
message: '请输入',
trigger: 'blur'
},
],
statusType: [
{
required: true,
message: '请至少选择一个',
message: '请选择',
trigger: 'change'
},
],
active: [
iccid: [
{
required: true,
message: '请至少选择一个',
trigger: 'change'
message: '请输入',
trigger: 'blur'
},
],
accountStatus: [
carrier: [
{
required: true,
message: '请至少选择一个',
message: '请选择',
trigger: 'change'
},
],
powerStatus: [
{
required: true,
message: '请至少选择一个',
trigger: 'change'
},
dataPlan: [
{
pattern: /^\d+$/,
message: '请输入正确的数字',
trigger: 'blur'
},
],
supportSms: [
{
required: true,
message: '请至少选择一个',
trigger: 'change'
},
dataUsage: [
{
pattern: /^\d+$/,
message: '请输入正确的数字',
trigger: 'blur'
},
],
dataBalance: [
{
pattern: /^\d+$/,
message: '请输入正确的数字',
trigger: 'blur'
},
],
},
devIdOptions:[{"fullName":"设备1","id":"1"},{"fullName":"设备2","id":"2"}],
devIdProps:{"label":"fullName","value":"id" },
orgIdOptions:[{"fullName":"机构A","id":"1"},{"fullName":"机构B","id":"2"}],
orgIdProps:{"label":"fullName","value":"id" },
statusTypeOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"2"}],
deviceCodeOptions:[],
deviceCodeProps:{"label":"fullName","value":"id" },
carrierOptions:[{"fullName":"中国移动","id":"YD"},{"fullName":"中国联通","id":"LT"},{"fullName":"中国电信","id":"DX"}],
carrierProps:{"label":"fullName","value":"id" },
statusTypeOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"0"}],
statusTypeProps:{"label":"fullName","value":"id" },
activeOptions:[{"fullName":"激活","id":"1"},{"fullName":"未激活","id":"2"}],
activeOptions:[{"fullName":"激活","id":"1"},{"fullName":"未激活","id":"0"}],
activeProps:{"label":"fullName","value":"id" },
accountStatusOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"2"}],
accountStatusProps:{"label":"fullName","value":"id" },
powerStatusOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"2"}],
powerStatusProps:{"label":"fullName","value":"id" },
supportSmsOptions:[{"fullName":"支持","id":"1"},{"fullName":"不支持","id":"2"}],
supportSmsProps:{"label":"fullName","value":"id" },
childIndex:-1,
isEdit:false,
interfaceRes: {
devId:[] ,
devName:[] ,
devSn:[] ,
orgId:[] ,
msisdn:[] ,
deviceCode:[] ,
iccid:[] ,
msisdn:[] ,
imsi:[] ,
statusType:[] ,
carrier:[] ,
statusType:[] ,
active:[] ,
dataPlan:[] ,
dataUsage:[] ,
dataBalance:[] ,
active:[] ,
expiryDate:[] ,
updateTime:[] ,
accountStatus:[] ,
dealer:[] ,
objectId:[] ,
powerStatus:[] ,
supportSms:[] ,
expiryDate:[] ,
},
}
},
@ -442,10 +345,33 @@
}
},
dataAll(){
this.getdeviceCodeOptions();
},
goBack() {
this.$emit('refresh')
},
getdeviceCodeOptions() {
const index = this.childIndex
let templateJsonList = JSON.parse(JSON.stringify(this.interfaceRes.deviceCode))
for (let i = 0; i < templateJsonList.length; i++) {
let json = templateJsonList[i];
if(json.relationField){
let relationFieldAll = json.relationField.split("-");
let val = json.defaultValue;
if(relationFieldAll.length>1 && index>-1){
val = this.dataForm[relationFieldAll[0]+'List']&&this.dataForm[relationFieldAll[0]+'List'].length?this.dataForm[relationFieldAll[0]+'List'][index][relationFieldAll[1]]:''
}else {
val = this.dataForm[relationFieldAll]
}
json.defaultValue = val
}
}
let template ={
paramList:templateJsonList
}
getDataInterfaceRes('563706688754953029',template).then(res => {
let data = res.data
this.deviceCodeOptions = data
this.changeDataFormData(1,'deviceCode','deviceCode',index,'')
})
},
clearData(){
this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
},

@ -0,0 +1,556 @@
<template>
<div class="JNPF-common-layout">
<div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item label="关联设备">
<JnpfSelect v-model="query.deviceCode" placeholder="请选择" clearable
:options="deviceCodeOptions"
:props="deviceCodeProps" multiple >
</JnpfSelect>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="SIM卡号">
<el-input v-model="query.iccid" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="卡状态">
<JnpfSelect v-model="query.statusType" placeholder="请选择" clearable
:options="statusTypeOptions"
:props="statusTypeProps" >
</JnpfSelect>
</el-form-item>
</el-col>
<template v-if="showAll">
<el-col :span="6">
<el-form-item label="运营商">
<JnpfSelect v-model="query.carrier" placeholder="请选择" clearable
:options="carrierOptions"
:props="carrierProps" multiple >
</JnpfSelect>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="激活状态">
<JnpfSelect v-model="query.active" placeholder="请选择" clearable
:options="activeOptions"
:props="activeProps" >
</JnpfSelect>
</el-form-item>
</el-col>
</template>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
<el-button type="text" icon="el-icon-arrow-down" @click="showAll=true" v-if="!showAll">
展开
</el-button>
<el-button type="text" icon="el-icon-arrow-up" @click="showAll=false" v-else>
收起
</el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
<el-button type="primary" icon="icon-ym icon-ym-btn-add" v-has="'btn_add'" @click="addOrUpdateHandle()">
</el-button>
</div>
<div class="JNPF-common-head-right">
<el-tooltip content="高级查询" placement="top" v-if="true">
<el-link icon="icon-ym icon-ym-filter JNPF-common-head-icon" :underline="false"
@click="openSuperQuery()" />
</el-tooltip>
<el-tooltip effect="dark" :content="$t('common.refresh')" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
@click="initData()" />
</el-tooltip>
</div>
</div>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange'
:span-method="arraySpanMethod"
>
<el-table-column
prop="deviceCode"
label="关联设备" align="left"
>
</el-table-column>
<el-table-column
prop="msisdn"
label="msisdn" align="left"
>
</el-table-column>
<el-table-column
prop="iccid"
label="SIM卡号" align="left"
>
</el-table-column>
<el-table-column
prop="imsi"
label="imsi" align="left"
>
</el-table-column>
<el-table-column label="运营商" prop="carrier" algin="left"
>
<template slot-scope="scope">
{{ scope.row.carrier}}
</template>
</el-table-column>
<el-table-column label="卡状态" prop="statusType" algin="left"
>
<template slot-scope="scope">
{{ scope.row.statusType}}
</template>
</el-table-column>
<el-table-column label="激活状态" prop="active" algin="left"
>
<template slot-scope="scope">
{{ scope.row.active}}
</template>
</el-table-column>
<el-table-column
prop="dataPlan"
label="套餐大小" align="left"
>
</el-table-column>
<el-table-column
prop="dataUsage"
label="已用流量" align="left"
>
</el-table-column>
<el-table-column
prop="dataBalance"
label="剩余流量" align="left"
>
</el-table-column>
<el-table-column
prop="updateTime"
label="同步日期" align="left"
>
</el-table-column>
<el-table-column
prop="expiryDate"
label="服务期止" align="left"
>
</el-table-column>
<el-table-column label="操作"
fixed="right" width="150" >
<template slot-scope="scope" >
<el-button type="text"
@click="addOrUpdateHandle(scope.row)" v-has="'btn_edit'" >编辑
</el-button>
<el-button type="text" class="JNPF-table-delBtn" v-has="'btn_remove'" @click="handleDel(scope.row.id)">
</el-button>
<el-button type="text" v-has="'btn_detail'"
@click="goDetail(scope.row.id)">详情
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData"/>
</div>
</div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh"/>
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download"/>
<ImportBox v-if="uploadBoxVisible" ref="UploadBox" @refresh="initData" />
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false"/>
<ToFormDetail v-if="toFormDetailVisible" ref="toFormDetail" @close="toFormDetailVisible = false" />
<SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson"
@superQuery="superQuery" />
</div>
</template>
<script>
import request from '@/utils/request'
import {mapGetters} from "vuex";
import {getDictionaryDataSelector} from '@/api/systemData/dictionary'
import JNPFForm from './form'
import Detail from './Detail'
import ExportBox from '@/components/ExportBox'
import ToFormDetail from '@/views/basic/dynamicModel/list/detail'
import {getDataInterfaceRes} from '@/api/systemData/dataInterface'
import { getConfigData } from '@/api/onlineDev/visualDev'
import { getDefaultCurrentValueUserIdAsync } from '@/api/permission/user'
import { getDefaultCurrentValueDepartmentIdAsync } from '@/api/permission/organize'
import columnList from './columnList'
import { thousandsFormat } from "@/components/Generator/utils/index"
import SuperQuery from '@/components/SuperQuery'
import superQueryJson from './superQueryJson'
export default {
components: {
JNPFForm,
Detail,
ExportBox,ToFormDetail , SuperQuery
},
data() {
return {
keyword:'',
expandsTree: true,
refreshTree: true,
toFormDetailVisible:false,
expandObj:{},
columnOptions: [],
mergeList: [],
exportList:[],
columnList,
showAll: false,
superQueryVisible: false,
superQueryJson,
uploadBoxVisible: false,
detailVisible: false,
query: {
deviceCode:undefined,
iccid:undefined,
statusType:undefined,
carrier:undefined,
active:undefined,
},
treeProps: {
children: 'children',
label: 'fullName',
value: 'id',
isLeaf: 'isLeaf'
},
list: [],
listLoading: true,
total: 0,
queryData: {},
listQuery: {
superQueryJson: '',
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
},
formVisible: false,
flowVisible: false,
flowListVisible: false,
flowList: [],
exportBoxVisible: false,
deviceCodeOptions:[],
deviceCodeProps:{"label":"fullName","value":"id" },
carrierOptions:[{"fullName":"中国移动","id":"YD"},{"fullName":"中国联通","id":"LT"},{"fullName":"中国电信","id":"DX"}],
carrierProps:{"label":"fullName","value":"id" },
statusTypeOptions:[{"fullName":"正常","id":"1"},{"fullName":"异常","id":"0"}],
statusTypeProps:{"label":"fullName","value":"id" },
activeOptions:[{"fullName":"激活","id":"1"},{"fullName":"未激活","id":"0"}],
activeProps:{"label":"fullName","value":"id" },
interfaceRes: {
},
}
},
computed: {
...mapGetters(['userInfo']),
menuId() {
return this.$route.meta.modelId || ''
}
},
created() {
this.getColumnList(),
this.initSearchDataAndListData()
this.getdeviceCodeOptions();
this.queryData = JSON.parse(JSON.stringify(this.query))
},
methods: {
toDetail(defaultValue, modelId) {
if (!defaultValue) return
getConfigData(modelId).then(res => {
if (!res.data || !res.data.formData) return
let formData = JSON.parse(res.data.formData)
formData.popupType = 'general'
this.toFormDetailVisible = true
this.$nextTick(() => {
this.$refs.toFormDetail.init(formData, modelId, defaultValue)
})
})
},
toggleTreeExpand(expands) {
this.refreshTree = false
this.expandsTree = expands
this.$nextTick(() => {
this.refreshTree = true
this.$nextTick(() => {
this.$refs.treeBox.setCurrentKey(null)
})
})
},
filterNode(value, data) {
if (!value) return true;
return data[this.treeProps.label].indexOf(value) !== -1;
},
loadNode(node, resolve) {
const nodeData = node.data
const config ={
treeInterfaceId:"",
treeTemplateJson:[]
}
if (config.treeInterfaceId) {
//
if (config.treeTemplateJson && config.treeTemplateJson.length) {
for (let i = 0; i < config.treeTemplateJson.length; i++) {
const element = config.treeTemplateJson[i];
element.defaultValue = nodeData[element.relationField] || ''
}
}
//
let query = {
paramList: config.treeTemplateJson || [],
}
//
getDataInterfaceRes(config.treeInterfaceId, query).then(res => {
let data = res.data
if (Array.isArray(data)) {
resolve(data);
} else {
resolve([]);
}
})
}
},
getColumnList() {
//
this.columnOptions = this.transformColumnList(this.columnList)
},
transformColumnList(columnList) {
let list = []
for (let i = 0; i < columnList.length; i++) {
const e = columnList[i];
if (!e.prop.includes('-')) {
list.push(e)
} else {
let prop = e.prop.split('-')[0]
let label = e.label.split('-')[0]
let vModel = e.prop.split('-')[1]
let newItem = {
align: "center",
jnpfKey: "table",
prop,
label,
children: []
}
e.vModel = vModel
if (!this.expandObj.hasOwnProperty(`${prop}Expand`)) this.$set(this.expandObj, `${prop}Expand`, false)
if (!list.some(o => o.prop === prop)) list.push(newItem)
for (let i = 0; i < list.length; i++) {
if (list[i].prop === prop) {
list[i].children.push(e)
break
}
}
}
}
this.getMergeList(list)
this.getExportList(list)
return list
},
arraySpanMethod({ column }) {
for (let i = 0; i < this.mergeList.length; i++) {
if (column.property == this.mergeList[i].prop) {
return [this.mergeList[i].rowspan, this.mergeList[i].colspan]
}
}
},
getMergeList(list) {
let newList = JSON.parse(JSON.stringify(list))
newList.forEach(item => {
if (item.children && item.children.length) {
let child = {
prop: item.prop + '-child-first'
}
item.children.unshift(child)
}
})
newList.forEach(item => {
if (item.children && item.children.length ) {
item.children.forEach((child, index) => {
if (index == 0) {
this.mergeList.push({
prop: child.prop,
rowspan: 1,
colspan: item.children.length
})
} else {
this.mergeList.push({
prop: child.prop,
rowspan: 0,
colspan: 0
})
}
})
} else {
this.mergeList.push({
prop: item.prop,
rowspan: 1,
colspan: 1
})
}
})
},
getExportList(list) {
let exportList = []
for (let i = 0; i < list.length; i++) {
if (list[i].jnpfKey === 'table') {
for (let j = 0; j < list[i].children.length; j++) {
exportList.push(list[i].children[j])
}
} else {
exportList.push(list[i])
}
}
this.exportList = exportList
},
getdeviceCodeOptions() {
getDataInterfaceRes('563706688754953029').then(res => {
let data = res.data
this.deviceCodeOptions = data
})
},
goDetail(id){
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id)
})
},
sortChange({column, prop, order}) {
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
async initSearchDataAndListData() {
await this.initSearchData()
this.initData()
},
//
async initSearchData() {
},
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
keyword: this.keyword,
dataType: 0,
menuId:this.menuId,
moduleId:'562988941775480645',
type:1,
};
request({
url: `/api/scm/SimCard/getList`,
method: 'post',
data: _query
}).then(res => {
var _list =res.data.list;
this.list = _list.map(o => ({
...o,
...this.expandObj,
}))
this.total = res.data.pagination.total
this.listLoading = false
})
},
handleDel(id) {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/scm/SimCard/${id}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
});
},
handelUpload(){
this.uploadBoxVisible = true
this.$nextTick(() => {
this.$refs.UploadBox.init("","scm/SimCard")
})
},
openSuperQuery() {
this.superQueryVisible = true
this.$nextTick(() => {
this.$refs.SuperQuery.init()
})
},
superQuery(queryJson) {
this.listQuery.superQueryJson = queryJson
this.listQuery.currentPage = 1
this.initData()
},
addOrUpdateHandle(row, isDetail) {
let id = row?row.id:""
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail,this.list)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.exportList)
})
},
download(data) {
let query = {...data, ...this.listQuery, ...this.query,menuId:this.menuId}
request({
url: `/api/scm/SimCard/Actions/Export`,
method: 'post',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery.currentPage=1
this.listQuery.pageSize=20
this.listQuery.sort="desc"
this.listQuery.sidx=""
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
this.query = JSON.parse(JSON.stringify(this.queryData))
this.search()
},
colseFlow(isrRefresh) {
this.flowVisible = false
if (isrRefresh) this.reset()
},
}
}
</script>

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save