工作流优化2,集成系统组织架构,增加转变,沟通,废弃功能。增加条件判断等

This commit is contained in:
zsvg
2022-10-09 17:34:56 +08:00
parent 0996b81f03
commit 3fb3048180
22 changed files with 764 additions and 45 deletions
@@ -0,0 +1,27 @@
package vboot.core.module.bpm.proc.cond;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Getter
@Setter
@ApiModel("流程条件参数")
public class BpmProcCond {
@Id
@Column(length = 32)
@ApiModelProperty("主键ID")
private String id;
@Column(length = 2000)
@ApiModelProperty("参数值")
private String cond;
}
@@ -0,0 +1,10 @@
package vboot.core.module.bpm.proc.cond;
import org.springframework.data.jpa.repository.JpaRepository;
import vboot.core.module.bpm.proc.main.BpmProcMain;
public interface BpmProcCondRepo extends JpaRepository<BpmProcCond,String> {
}
@@ -0,0 +1,11 @@
package vboot.core.module.bpm.proc.main;
import lombok.Data;
@Data
public class Zcond {
private String proid;//流程ID
private String modty;//类别
}
@@ -0,0 +1,48 @@
package vboot.core.module.gen.org;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import vboot.core.common.mvc.api.R;
import vboot.core.common.mvc.dao.JdbcDao;
import vboot.core.common.mvc.dao.Sqler;
import vboot.core.common.mvc.pojo.Ztree;
import java.util.List;
@RestController
@RequestMapping("gen/org/role")
public class GenOrgRoleApi {
//查询角色树
@GetMapping("tree")
public R getTree(String name) {
Sqler sqler = new Sqler("sys_org_role_tree");
sqler.addLike("t.name", name);
sqler.addOrder("t.ornum");
sqler.addWhere("t.avtag=1");
sqler.addSelect("null pid");
List<Ztree> list = jdbcDao.findTreeList(sqler);
return R.ok(list);
}
//查询角色
@GetMapping("list")
public R getList(String treid,String name) {
Sqler sqler = new Sqler("sys_org_role_main");
sqler.addLike("t.name", name);
sqler.addOrder("t.ornum");
sqler.addEqual("t.treid",treid);
return R.ok(jdbcDao.findMapList(sqler));
}
@Autowired
private JdbcDao jdbcDao;
// @Autowired
// private SysOrgDeptService deptService;
}
@@ -0,0 +1,25 @@
package vboot.core.module.sys.org.role;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
//层级角色
@Data
@Entity
public class SysOrgRoleMain {
@Id
@Column(length = 36)
private String id;//主键
@Column(length = 64)
private String name;//角色名称
private Integer ornum;//排序号
private String notes;//备注
}
@@ -0,0 +1,54 @@
package vboot.core.module.sys.org.role;
import lombok.Data;
import vboot.core.module.sys.org.root.SysOrg;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//层级节点
@Entity
@Data
public class SysOrgRoleNode {
@Id
@Column(length = 32)
private String id;//ID
@Column(length = 100)
private String name;//名称
@Transient
private List<SysOrgRoleNode> children = new ArrayList<>(); //行项目
@Transient
private String pid;//父ID
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "pid")
private SysOrgRoleNode parent;//父元素
// private Integer tieid;//1为机构,2为部门,4为岗位,8为用户,16为常用群组,32为角色线
private String treid;//角色树id
@Column(length = 1000)
private String tier;//层级
private String notes;//备注
private Integer ornum;//排序号
@Column(updatable = false)
private Date crtim = new Date();//创建时间
private Date uptim;//更新时间
private Boolean avtag;//可用标记
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "memid")
private SysOrg member;
}
@@ -0,0 +1,93 @@
package vboot.core.module.sys.org.role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import vboot.core.common.mvc.api.R;
import vboot.core.common.mvc.dao.JdbcDao;
import vboot.core.common.mvc.dao.Sqler;
import vboot.core.common.mvc.pojo.Ztree;
import vboot.core.common.utils.lang.XstrUtil;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestController
@RequestMapping("sys/org/rnode")
public class SysOrgRoleNodeApi {
private String table = "sys_org_role_node";
@GetMapping
public R get(String name, String pid, String notes) {
Sqler sqler = new Sqler(table);
if (XstrUtil.isNotBlank(name)) {
sqler.addLike("t.name" , name);
} else {
if ("".equals(pid)) {
sqler.addWhere("t.pid is null");
} else if (XstrUtil.isNotBlank(pid)) {
sqler.addEqual("t.pid" , pid);
}
}
sqler.addLike("t.notes" , notes);
sqler.addWhere("t.avtag=1");
sqler.addOrder("t.ornum");
sqler.addSelect("t.ornum,t.notes,t.pid,t.crtim,t.uptim");
return R.ok(jdbcDao.findPageData(sqler));
}
//查询层级树
@GetMapping("tree")
public R getTree(String name) {
Sqler sqler = new Sqler("sys_org_role_node");
sqler.addSelect("t.pid");
sqler.addLike("t.name", name);
sqler.addOrder("t.ornum");
sqler.addWhere("t.avtag=1");
List<Ztree> list = jdbcDao.findTreeList(sqler);
return R.ok(list);
}
//排除了自己
// @GetMapping("listn")
// public R listn(String name, String id) {
// Sqler sqler = new Sqler(table);
// sqler.addLike("t.name", name);
// sqler.addWhere("t.avtag=1");
// sqler.addOrder("t.ornum");
// sqler.addSelect("t.pid");
// return R.ok(service.findWithoutItself(sqler, id));
// }
@GetMapping("one/{id}")
public R getOne(@PathVariable String id, HttpServletRequest request) {
SysOrgRoleNode main = service.findById(id);
return R.ok(main);
}
@PostMapping
public R post(@RequestBody SysOrgRoleNode main) {
service.insert(main);
return R.ok(main.getId());
}
@PutMapping
public R put(@RequestBody SysOrgRoleNode main) throws Exception {
service.update(main);
return R.ok(main.getId());
}
@DeleteMapping("{ids}")
public R delete(@PathVariable String[] ids) {
return R.ok(service.delete(ids));
}
@Autowired
private JdbcDao jdbcDao;
@Autowired
private SysOrgRoleNodeService service;
}
@@ -0,0 +1,8 @@
package vboot.core.module.sys.org.role;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SysOrgRoleNodeRepo extends JpaRepository<SysOrgRoleNode,String> {
}
@@ -0,0 +1,184 @@
package vboot.core.module.sys.org.role;
import cn.hutool.core.util.StrUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import vboot.core.common.mvc.api.PageData;
import vboot.core.common.mvc.dao.JdbcDao;
import vboot.core.common.mvc.dao.Sqler;
import vboot.core.common.mvc.pojo.ZidName;
import vboot.core.common.utils.lang.XstrUtil;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
@Transactional(rollbackFor = Exception.class)
public class SysOrgRoleNodeService {
@Transactional(readOnly = true)
public SysOrgRoleNode findById(String id) {
return nodeRepo.findById(id).get();
}
public SysOrgRoleNode insert(SysOrgRoleNode main) {
if (main.getId() == null || "".equals(main.getId())) {
main.setId(XstrUtil.getUUID());
}
if (main.getParent() == null || StrUtil.isBlank(main.getParent().getId())) {
main.setTier("x" + main.getId() + "x");
} else {
String tier = jdbcDao.findOneString("select tier from sys_org_role_node where id=?", main.getParent().getId());
main.setTier(tier + main.getId() + "x");
}
return nodeRepo.save(main);
}
public SysOrgRoleNode update(SysOrgRoleNode main) throws Exception {
main.setUptim(new Date());
if (main.getParent() == null || StrUtil.isBlank(main.getParent().getId())) {
main.setTier("x" + main.getId() + "x");
} else {
String tier = jdbcDao.findOneString("select tier from sys_org_role_node where id=?", main.getParent().getId());
main.setTier(tier + main.getId() + "x");
String[] arr = tier.split("x");
for (String str : arr) {
if (main.getId().equals(str)) {
throw new Exception("父层级不能为自己或者自己的子层级");
}
}
}
SysOrgRoleNode backTier = nodeRepo.save(main);
String oldTier = jdbcDao.findOneString("select tier from sys_org_role_node where id=?", main.getId());
dealTier(oldTier, main.getTier(), main.getId());
return backTier;
}
public int delete(String[] ids) {
for (String str : ids) {
nodeRepo.deleteById(str);
}
return ids.length;
}
private void dealTier(String oldTier, String newTier, String id) {
String sql = "select id,tier as name from sys_org_role_node where tier like ? and id<>?";
List<ZidName> list = jdbcDao.findIdNameList(sql, oldTier + "%", id);
String updateSql = "update sys_org_role_node set tier=? where id=?";
List<Object[]> updateList = new ArrayList<Object[]>();
batchReady(oldTier, newTier, list, updateList);
jdbcDao.batch(updateSql, updateList);
}
private void batchReady(String oldTier, String newTier, List<ZidName> list, List<Object[]> updateList) {
for (ZidName ztwo : list) {
Object[] arr = new Object[2];
arr[1] = ztwo.getId();
arr[0] = ztwo.getName().replace(oldTier, newTier);
updateList.add(arr);
}
}
public List<SysOrgRoleNode> findAll(Sqler sqler) {
List<SysOrgRoleNode> list = jdbcDao.getTp().query(sqler.getSql(), sqler.getParams(), new BeanPropertyRowMapper<>(SysOrgRoleNode.class));
return list;
}
public PageData findPageData(Sqler sqler) {
return jdbcDao.findPageData(sqler);
}
public List<SysOrgRoleNode> findTree(Sqler sqler) {
List<SysOrgRoleNode> list = jdbcDao.getTp().query(sqler.getSql(), sqler.getParams(), new BeanPropertyRowMapper<>(SysOrgRoleNode.class));
return buildByRecursive(list);
}
//使用递归方法建树
private List<SysOrgRoleNode> buildByRecursive(List<SysOrgRoleNode> nodes) {
List<SysOrgRoleNode> list = new ArrayList<>();
for (SysOrgRoleNode node : nodes) {
if (node.getPid() == null) {
list.add(findChildrenByTier(node, nodes));
} else {
boolean flag = false;
for (SysOrgRoleNode node2 : nodes) {
if (node.getPid().equals(node2.getId())) {
flag = true;
break;
}
}
if (!flag) {
list.add(findChildrenByTier(node, nodes));
}
}
}
return list;
}
//递归查找子节点
private SysOrgRoleNode findChildrenByTier(SysOrgRoleNode node, List<SysOrgRoleNode> nodes) {
for (SysOrgRoleNode item : nodes) {
if (node.getId().equals(item.getPid())) {
if (node.getChildren() == null) {
node.setChildren(new ArrayList<>());
}
node.getChildren().add(findChildrenByTier(item, nodes));
}
}
return node;
}
// public List<SysOrgRoleTree> findWithoutItself(Sqler sqler, String id) {
// List<SysOrgRoleTree> list = jdbcDao.getTp().query(sqler.getSql(), sqler.getParams(), new BeanPropertyRowMapper<>(SysOrgRoleTree.class));
// return buildByRecursiveWithoutItself(list, id);
// }
//使用递归方法建树不包含自己
// private List<SysOrgRoleTree> buildByRecursiveWithoutItself(List<SysOrgRoleTree> nodes, String id) {
// List<SysOrgRoleTree> list = new ArrayList<>();
// for (SysOrgRoleTree node : nodes) {
// if (node.getPid() == null && !node.getId().equals(id)) {
// list.add(findChildrenByTierWithoutItself(node, nodes, id));
// } else {
// boolean flag = false;
// for (SysOrgRoleTree node2 : nodes) {
// if (node.getPid() != null && node.getPid().equals(node2.getId())) {
// flag = true;
// break;
// }
// }
// if (!flag && !node.getId().equals(id)) {
// list.add(findChildrenByTierWithoutItself(node, nodes, id));
// }
// }
// }
// return list;
// }
//递归查找子节点不包含自己
// private SysOrgRoleTree findChildrenByTierWithoutItself(SysOrgRoleTree node, List<SysOrgRoleTree> nodes, String id) {
// for (SysOrgRoleTree item : nodes) {
// if (node.getId().equals(item.getPid()) && (!item.getId().equals(id))) {
// if (node.getChildren() == null) {
// node.setChildren(new ArrayList<>());
// }
// node.getChildren().add(findChildrenByTierWithoutItself(item, nodes, id));
// }
// }
// return node;
// }
@Autowired
private JdbcDao jdbcDao;
@Autowired
private SysOrgRoleNodeRepo nodeRepo;
}
@@ -0,0 +1,25 @@
package vboot.core.module.sys.org.role;
import lombok.Getter;
import lombok.Setter;
import vboot.core.common.mvc.entity.BaseMainEntity;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
//层级树
@Entity
@Getter
@Setter
public class SysOrgRoleTree extends BaseMainEntity {
private Integer ornum;//排序号
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "treid")
@OrderBy("ornum ASC")
private List<SysOrgRoleMain> roles = new ArrayList<>();//层级角色
}
@@ -0,0 +1,64 @@
package vboot.core.module.sys.org.role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import vboot.core.common.mvc.api.R;
import vboot.core.common.mvc.dao.JdbcDao;
import vboot.core.common.mvc.dao.Sqler;
@RestController
@RequestMapping("sys/org/rtree")
public class SysOrgRoleTreeApi {
@GetMapping
public R get(String name) {
Sqler sqler = new Sqler("sys_org_role_tree");
sqler.addLike("t.name", name);
sqler.addSelect("t.notes");
return R.ok(service.findPageData(sqler));
}
@GetMapping("one/{id}")
public R getOne(@PathVariable String id) {
SysOrgRoleTree main = service.findOne(id);
return R.ok(main);
}
@PostMapping
public R post(@RequestBody SysOrgRoleTree main) {
return R.ok(service.insertx(main));
}
@PutMapping
public R put(@RequestBody SysOrgRoleTree main) {
return R.ok(service.updatex(main));
}
@DeleteMapping("{ids}")
public R delete(@PathVariable String[] ids) {
return R.ok(service.delete(ids));
}
@GetMapping("calc")
public R calc(String useid, String rolid) {
return R.ok(service.calc(useid, rolid));
}
@GetMapping("tlist")
public R getTlist() {
return R.ok(service.findAll());
}
@GetMapping("rlist")
public R getRlist(String treid) {
String sql = "select id,name from sys_org_role_main where treid=?";
return R.ok(jdbcDao.findMapList(sql, treid));
}
@Autowired
private SysOrgRoleTreeService service;
@Autowired
private JdbcDao jdbcDao;
}
@@ -0,0 +1,10 @@
package vboot.core.module.sys.org.role;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SysOrgRoleTreeRepo extends JpaRepository<SysOrgRoleTree,String> {
}
@@ -0,0 +1,75 @@
package vboot.core.module.sys.org.role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
import vboot.core.common.mvc.service.BaseMainService;
import vboot.core.framework.security.pojo.UserDo;
import vboot.core.module.sys.org.root.SysOrg;
import vboot.core.module.sys.org.root.SysOrgRepo;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service
public class SysOrgRoleTreeService extends BaseMainService<SysOrgRoleTree> {
public String insertx(SysOrgRoleTree main) {
String id = insert(main);
List<SysOrg> list = new ArrayList<>();
for (SysOrgRoleMain role : main.getRoles()) {
SysOrg sysOrg = new SysOrg(role.getId(), role.getName(), 32);
list.add(sysOrg);
}
orgRepo.saveAll(list);
return id;
}
public String updatex(SysOrgRoleTree main) {
String id = update(main);
List<SysOrg> list = new ArrayList<>();
for (SysOrgRoleMain role : main.getRoles()) {
SysOrg sysOrg = new SysOrg(role.getId(), role.getName(), 32);
list.add(sysOrg);
}
orgRepo.saveAll(list);
return id;
}
public SysOrg calc(String useid, String rolid) {
String sql = "select t.tier \"tier\",m.ornum \"ornum\" from sys_org_role_node t " +
"inner join sys_org_role_main m on m.treid=t.treid where t.memid=? and m.id=?";
Map<String, Object> map = jdbcDao.findMap(sql, useid, rolid);
if (map == null) {
sql = "select t.tier \"tier\",m.ornum \"ornum\" from sys_org_role_node t " +
"inner join sys_org_role_main m on m.treid=t.treid " +
"inner join sys_org_user u on u.depid=t.memid where u.id=? and m.id=?";
map = jdbcDao.findMap(sql, useid, rolid);
if (map == null) {
return null;
}
}
String tier = "" + map.get("tier");
Integer ornum = Integer.parseInt("" + map.get("ornum"));
String[] idArr = tier.split("x");
String sql3 = "select o.id,o.name,o.type from sys_org_role_node t inner join sys_org o on o.id=t.memid where t.id=?";
SysOrg org = jdbcDao.getTp().queryForObject(sql3,
new Object[]{idArr[ornum]}, new BeanPropertyRowMapper<>(SysOrg.class));
return org;
}
@Autowired
private SysOrgRepo orgRepo;
@Autowired
private SysOrgRoleTreeRepo repo;
@PostConstruct
public void initDao() {
super.setRepo(repo);
}
}
@@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.*;
import vboot.core.common.mvc.dao.JdbcDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import vboot.core.common.utils.lang.XstrUtil;
import vboot.core.framework.security.authz.AuthzApiData;
import vboot.core.framework.security.pojo.Yapi;
import vboot.core.framework.security.pojo.Yurl;
@@ -148,7 +149,9 @@ public class SysApiInit {
topUrl.setPid(topUrl.getId().split("-")[0]);
}
topUrl.setUrl(classUrl);
list.add(topUrl);
if(XstrUtil.isNotBlank(topUrl.getId())){
list.add(topUrl);
}
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
GetMapping getMapping = method.getAnnotation(GetMapping.class);
@@ -262,7 +265,9 @@ public class SysApiInit {
for (String str : rootSet) {
Yurl yurl = new Yurl();
yurl.setId(str);
list.add(yurl);
if(XstrUtil.isNotBlank(yurl.getId())){
list.add(yurl);
}
}
return list;
}
@@ -218,6 +218,54 @@ public class SysPortalVueInit {
menu114a.setPorid("sys");
menuService.insert(menu114a);
SysPortalMenu menu115 = new SysPortalMenu();
menu115.setId("SysOrgRtree");
menu115.setName("角色管理");
menu115.setCode("SysOrgRtree");
menu115.setPath("/sys/org/rtree");
menu115.setComp("/sys/org/role/tree");
menu115.setOrnum(50);
menu115.setIcon("ele-Cherry");
menu115.setPid("SysOrg");
menu115.setCatag(true);
menu115.setAvtag(true);
menu115.setShtag(true);
menu115.setType("M");
menu115.setPorid("sys");
menuService.insert(menu115);
SysPortalMenu menu115a = new SysPortalMenu();
menu115a.setId("SysOrgRtreeEdit");
menu115a.setName("角色树编辑");
menu115a.setCode("SysOrgRtreeEdit");
menu115a.setPath("/sys/org/rtree/edit");
menu115a.setComp("/sys/org/role/tree_edit");
menu115a.setOrnum(51);
menu115a.setIcon("ele-Tickets");
menu115a.setPid("SysOrg");
menu115a.setCatag(true);
menu115a.setAvtag(true);
menu115a.setShtag(false);
menu115a.setType("M");
menu115a.setPorid("sys");
menuService.insert(menu115a);
SysPortalMenu menu115b = new SysPortalMenu();
menu115b.setId("SysOrgRnode");
menu115b.setName("角色树节点配置");
menu115b.setCode("SysOrgRnode");
menu115b.setPath("/sys/org/rnode");
menu115b.setComp("/sys/org/role/node");
menu115b.setOrnum(52);
menu115b.setIcon("ele-Tickets");
menu115b.setPid("SysOrg");
menu115b.setCatag(true);
menu115b.setAvtag(true);
menu115b.setShtag(false);
menu115b.setType("M");
menu115b.setPorid("sys");
menuService.insert(menu115b);
SysPortalMenu menu12 = new SysPortalMenu();
menu12.setId("SysApi");
menu12.setName("接口管理");
@@ -926,6 +974,38 @@ public class SysPortalVueInit {
menu413b.setPorid("sys");
menuService.insert(menu413b);
SysPortalMenu menu414 = new SysPortalMenu();
menu414.setId("SysTodoMain");
menu414.setName("流程待办");
menu414.setCode("SysTodoMain");
menu414.setPath("/sys/todo/main");
menu414.setComp("/sys/todo/main/index");
menu414.setOrnum(414);
menu414.setIcon("ele-Tickets");
menu414.setPid("OaFlow");
menu414.setCatag(true);
menu414.setAvtag(true);
menu414.setShtag(true);
menu414.setType("M");
menu414.setPorid("sys");
menuService.insert(menu414);
SysPortalMenu menu414a = new SysPortalMenu();
menu414a.setId("SysTodoMainEdit");
menu414a.setName("流程待办查看");
menu414a.setCode("SysTodoMainEdit");
menu414a.setPath("/sys/todo/main/edit");
menu414a.setComp("/sys/todo/main/edit");
menu414a.setOrnum(4141);
menu414a.setIcon("ele-Tickets");
menu414a.setPid("OaFlow");
menu414a.setCatag(true);
menu414a.setAvtag(true);
menu414a.setShtag(false);
menu414a.setType("M");
menu414a.setPorid("sys");
menuService.insert(menu414a);
//-----------------DEMO--------------------
SysPortalMenu menu8 = new SysPortalMenu();
menu8.setId("My");
@@ -1,5 +1,5 @@
#应用初始化类型
app.init.orgName=WC集团
app.init.orgName=XX集团
app.init.orgRootId=1
#-- sa:组织架构只包含一个sa管理员与一个vben的演示账户
#-- test:除了以上数据还包含张三李四等测试人员
@@ -34,16 +34,16 @@
<el-switch v-model='form.avtag'/>
</el-form-item>
<el-form-item label='创建人:'>
{{ form.crman ? form.crman.name : '' }}
<div class="zinput">{{ form.crman ? form.crman.name : '' }}</div>
</el-form-item>
<el-form-item label='创建时间:'>
{{ form.crtim }}
<div class="zinput">{{ form.crtim }}</div>
</el-form-item>
<el-form-item label='更新人:'>
{{ form.upman ? form.upman.name : '' }}
<div class="zinput">{{ form.upman ? form.upman.name : '' }}</div>
</el-form-item>
<el-form-item label='更新时间:'>
{{ form.uptim }}
<div class="zinput">{{ form.uptim }}</div>
</el-form-item>
</el-form>
</div>
@@ -2,24 +2,24 @@
<div>
<el-card class='box-card'>
<template #header>
<el-row>
<el-col :span='14'>
<div class='zjustify'>
<div>
<el-input v-model='state.form.name' placeholder='输入名称回车查询' class='list-search' clearable @keyup.enter='listQuery(state)'/>
<el-button type='primary' @click='listQuery(state)' plain>查 询</el-button>
<el-button class='more-button' :icon='state.moreParams?ArrowUp:ArrowDown' plain @click='state.moreParams=!state.moreParams'/>
</el-col>
<el-col :span='10' style='text-align: right'>
</div>
<div>
<el-button type='success' :icon='Plus' @click='editRef.open({})' plain>新增</el-button>
<el-button type='danger' :icon='Delete' :disabled='state.multiple' @click='listDelete(state)' plain>删除</el-button>
</el-col>
</el-row>
</div>
</div>
<div v-show='state.moreParams' class='more-params'>
<el-form :inline='true' label-width='100px'>
<el-form-item label='更多参数1'>
<el-input v-model='state.form.notes' placeholder='更多参数1'/>
<el-input v-model='state.form.xxx' placeholder='更多参数1'/>
</el-form-item>
<el-form-item label='更多参数2'>
<el-input v-model='state.form.xx' placeholder='更多参数2'/>
<el-input v-model='state.form.yyy' placeholder='更多参数2'/>
</el-form-item>
<el-form-item/>
</el-form>
@@ -50,7 +50,7 @@
layout='total, sizes, prev, pager, next, jumper'
/>
</el-card>
<Edit ref="editRef" @close="listQuery(state)"/>
<Dedit ref="editRef" @close="listQuery(state)"/>
</div>
</template>
@@ -58,7 +58,7 @@
import {Plus, Delete, ArrowDown, ArrowUp} from '@element-plus/icons-vue';
import {onMounted, reactive, ref} from 'vue';
import {listQuery, listDelete, listSelect} from '/@/comps/page/index';
import Edit from './edit.vue';
import Dedit from './edit.vue';
const editRef = ref() as any;
const state = reactive({
@@ -52,7 +52,7 @@ const state = reactive({
const {form} = toRefs(state);
const formRef = ref();
const openModal = async (data: any) => {
const open = async (data: any) => {
if (data && data.id) {
state.form = await request({
url: state.url + '/one/' + data.id,
@@ -66,7 +66,7 @@ const openModal = async (data: any) => {
}
state.show = true;
};
defineExpose({openModal});
defineExpose({open});
const emits = defineEmits(['close']);
const handleConfirm = async () => {
@@ -2,24 +2,24 @@
<div>
<el-card class='box-card'>
<template #header>
<el-row>
<el-col :span='14'>
<div class='zjustify'>
<div>
<el-input v-model='state.form.name' placeholder='输入名称回车查询' class='list-search' clearable @keyup.enter='listQuery(state)'/>
<el-button type='primary' @click='listQuery(state)' plain>查 询</el-button>
<el-button class='more-button' :icon='state.moreParams?ArrowUp:ArrowDown' plain @click='state.moreParams=!state.moreParams'/>
</el-col>
<el-col :span='10' style='text-align: right'>
<el-button type='success' :icon='Plus' @click='editRef.openModal()' plain>新增</el-button>
</div>
<div>
<el-button type='success' :icon='Plus' @click='editRef.open()' plain>新增</el-button>
<el-button type='danger' :icon='Delete' :disabled='state.multiple' @click='listDelete(state)' plain>删除</el-button>
</el-col>
</el-row>
</div>
</div>
<div v-show='state.moreParams' class='more-params'>
<el-form :inline='true' label-width='100px'>
<el-form-item label='更多参数1'>
<el-input v-model='state.form.notes' placeholder='更多参数1'/>
<el-input v-model='state.form.xxx' placeholder='更多参数1'/>
</el-form-item>
<el-form-item label='更多参数2'>
<el-input v-model='state.form.xx' placeholder='更多参数2'/>
<el-input v-model='state.form.yyy' placeholder='更多参数2'/>
</el-form-item>
<el-form-item/>
</el-form>
@@ -32,7 +32,7 @@
<el-table-column label='序号' type='index' width='55' align='center'/>
<el-table-column label='${table.remark}名称' prop='id' width='160'>
<template #default='scope'>
<span style='cursor:pointer;color: #3e9ece' @click='editRef.openModal({id:scope.row.id})'>
<span style='cursor:pointer;color: #3e9ece' @click='editRef.open({id:scope.row.id})'>
{{ scope.row.name }}
</span>
</template>
@@ -49,7 +49,7 @@
layout='total, sizes, prev, pager, next, jumper'
/>
</el-card>
<Edit ref="editRef" @close="listQuery(state)"/>
<Pedit ref="editRef" @close="listQuery(state)"/>
</div>
</template>
@@ -57,7 +57,7 @@
import {Plus, Delete, ArrowDown, ArrowUp} from '@element-plus/icons-vue';
import {onMounted, reactive, ref} from 'vue';
import {listQuery, listDelete, listSelect} from '/@/comps/page/index';
import Edit from './edit.vue';
import Pedit from './edit.vue';
const editRef = ref() as any;
const state = reactive({
@@ -1,15 +1,15 @@
<template>
<el-card class='box-card' :body-style="{padding:'2px 8px'}" shadow='never'>
<template #header>
<el-row>
<el-col :span='10'>
<div class='zjustify'>
<div>
<div style='line-height: 32px'>${table.remark}编辑</div>
</el-col>
<el-col :span='14' style='text-align: right'>
</div>
<div>
<el-button type='success' @click='tabSave({formRef,state,proxy,route})' plain>保 存</el-button>
<el-button type='info' @click='tabClose({proxy,route})' plain>关 闭</el-button>
</el-col>
</el-row>
</div>
</div>
</template>
<div style='margin-top: 8px;margin-bottom: 8px'>
<el-form ref="formRef" :inline="true" class='yform #if($table.pecol==1)yform100#elseif($table.pecol==4)yform25#end' :model='form' label-width='140px'>
@@ -42,13 +42,13 @@
<el-input type='textarea' :rows='4' v-model='form.notes'/>
</el-form-item>
<el-form-item label='创建人:' style="width: 25%">
{{ form.crman ? form.crman.name : '' }}
<div class="zinput">{{ form.crman ? form.crman.name : '' }}</div>
</el-form-item>
<el-form-item label='创建时间:' style="width: 25%">
<div class='zinput'> {{ form.crtim }}</div>
</el-form-item>
<el-form-item label='更新人:' style="width: 25%">
{{ form.upman ? form.upman.name : '' }}
<div class="zinput">{{ form.upman ? form.upman.name : '' }}</div>
</el-form-item>
<el-form-item label='更新时间:' style="width: 25%">
<div class='zinput'> {{ form.uptim }}</div>
@@ -2,17 +2,17 @@
<div>
<el-card class='box-card'>
<template #header>
<el-row>
<el-col :span='14'>
<div class='zjustify'>
<div>
<el-input v-model='state.form.name' placeholder='输入名称回车查询' class='list-search' clearable @keyup.enter='listQuery(state)' />
<el-button type='primary' @click='listQuery(state)' plain>查 询</el-button>
<el-button class='more-button' :icon='state.moreParams?ArrowUp:ArrowDown' plain @click='state.moreParams=!state.moreParams' />
</el-col>
<el-col :span='10' style='text-align: right'>
</div>
<div>
<el-button type='success' :icon='Plus' @click='tabAdd(state.url)' plain>新增</el-button>
<el-button type='danger' :icon='Delete' :disabled='state.multiple' @click='listDelete(state)' plain>删除</el-button>
</el-col>
</el-row>
</div>
</div>
<div v-show='state.moreParams' class='more-params'>
<el-form :inline='true' label-width='100px'>
<el-form-item label='更多参数1'>