Merge pull request #1148 from dataease/pr@dev@feat_panel-video

refactor:优化授权查询模型
This commit is contained in:
王嘉豪 2021-11-09 11:20:39 +08:00 committed by GitHub
commit c6aa9af3e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 1855 additions and 63 deletions

View File

@ -0,0 +1,23 @@
package io.dataease.base.domain;
import java.io.Serializable;
import lombok.Data;
@Data
public class VAuthModel implements Serializable {
private String id;
private String pid;
private String nodeType;
private String modelType;
private String modelInnerType;
private String authType;
private String createBy;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,690 @@
package io.dataease.base.domain;
import java.util.ArrayList;
import java.util.List;
public class VAuthModelExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public VAuthModelExample() {
oredCriteria = new ArrayList<Criteria>();
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(String value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(String value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(String value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(String value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(String value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(String value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdLike(String value) {
addCriterion("id like", value, "id");
return (Criteria) this;
}
public Criteria andIdNotLike(String value) {
addCriterion("id not like", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<String> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<String> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(String value1, String value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(String value1, String value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andPidIsNull() {
addCriterion("pid is null");
return (Criteria) this;
}
public Criteria andPidIsNotNull() {
addCriterion("pid is not null");
return (Criteria) this;
}
public Criteria andPidEqualTo(String value) {
addCriterion("pid =", value, "pid");
return (Criteria) this;
}
public Criteria andPidNotEqualTo(String value) {
addCriterion("pid <>", value, "pid");
return (Criteria) this;
}
public Criteria andPidGreaterThan(String value) {
addCriterion("pid >", value, "pid");
return (Criteria) this;
}
public Criteria andPidGreaterThanOrEqualTo(String value) {
addCriterion("pid >=", value, "pid");
return (Criteria) this;
}
public Criteria andPidLessThan(String value) {
addCriterion("pid <", value, "pid");
return (Criteria) this;
}
public Criteria andPidLessThanOrEqualTo(String value) {
addCriterion("pid <=", value, "pid");
return (Criteria) this;
}
public Criteria andPidLike(String value) {
addCriterion("pid like", value, "pid");
return (Criteria) this;
}
public Criteria andPidNotLike(String value) {
addCriterion("pid not like", value, "pid");
return (Criteria) this;
}
public Criteria andPidIn(List<String> values) {
addCriterion("pid in", values, "pid");
return (Criteria) this;
}
public Criteria andPidNotIn(List<String> values) {
addCriterion("pid not in", values, "pid");
return (Criteria) this;
}
public Criteria andPidBetween(String value1, String value2) {
addCriterion("pid between", value1, value2, "pid");
return (Criteria) this;
}
public Criteria andPidNotBetween(String value1, String value2) {
addCriterion("pid not between", value1, value2, "pid");
return (Criteria) this;
}
public Criteria andNodeTypeIsNull() {
addCriterion("node_type is null");
return (Criteria) this;
}
public Criteria andNodeTypeIsNotNull() {
addCriterion("node_type is not null");
return (Criteria) this;
}
public Criteria andNodeTypeEqualTo(String value) {
addCriterion("node_type =", value, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeNotEqualTo(String value) {
addCriterion("node_type <>", value, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeGreaterThan(String value) {
addCriterion("node_type >", value, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeGreaterThanOrEqualTo(String value) {
addCriterion("node_type >=", value, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeLessThan(String value) {
addCriterion("node_type <", value, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeLessThanOrEqualTo(String value) {
addCriterion("node_type <=", value, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeLike(String value) {
addCriterion("node_type like", value, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeNotLike(String value) {
addCriterion("node_type not like", value, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeIn(List<String> values) {
addCriterion("node_type in", values, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeNotIn(List<String> values) {
addCriterion("node_type not in", values, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeBetween(String value1, String value2) {
addCriterion("node_type between", value1, value2, "nodeType");
return (Criteria) this;
}
public Criteria andNodeTypeNotBetween(String value1, String value2) {
addCriterion("node_type not between", value1, value2, "nodeType");
return (Criteria) this;
}
public Criteria andModelTypeIsNull() {
addCriterion("model_type is null");
return (Criteria) this;
}
public Criteria andModelTypeIsNotNull() {
addCriterion("model_type is not null");
return (Criteria) this;
}
public Criteria andModelTypeEqualTo(String value) {
addCriterion("model_type =", value, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeNotEqualTo(String value) {
addCriterion("model_type <>", value, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeGreaterThan(String value) {
addCriterion("model_type >", value, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeGreaterThanOrEqualTo(String value) {
addCriterion("model_type >=", value, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeLessThan(String value) {
addCriterion("model_type <", value, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeLessThanOrEqualTo(String value) {
addCriterion("model_type <=", value, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeLike(String value) {
addCriterion("model_type like", value, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeNotLike(String value) {
addCriterion("model_type not like", value, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeIn(List<String> values) {
addCriterion("model_type in", values, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeNotIn(List<String> values) {
addCriterion("model_type not in", values, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeBetween(String value1, String value2) {
addCriterion("model_type between", value1, value2, "modelType");
return (Criteria) this;
}
public Criteria andModelTypeNotBetween(String value1, String value2) {
addCriterion("model_type not between", value1, value2, "modelType");
return (Criteria) this;
}
public Criteria andModelInnerTypeIsNull() {
addCriterion("model_inner_type is null");
return (Criteria) this;
}
public Criteria andModelInnerTypeIsNotNull() {
addCriterion("model_inner_type is not null");
return (Criteria) this;
}
public Criteria andModelInnerTypeEqualTo(String value) {
addCriterion("model_inner_type =", value, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeNotEqualTo(String value) {
addCriterion("model_inner_type <>", value, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeGreaterThan(String value) {
addCriterion("model_inner_type >", value, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeGreaterThanOrEqualTo(String value) {
addCriterion("model_inner_type >=", value, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeLessThan(String value) {
addCriterion("model_inner_type <", value, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeLessThanOrEqualTo(String value) {
addCriterion("model_inner_type <=", value, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeLike(String value) {
addCriterion("model_inner_type like", value, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeNotLike(String value) {
addCriterion("model_inner_type not like", value, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeIn(List<String> values) {
addCriterion("model_inner_type in", values, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeNotIn(List<String> values) {
addCriterion("model_inner_type not in", values, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeBetween(String value1, String value2) {
addCriterion("model_inner_type between", value1, value2, "modelInnerType");
return (Criteria) this;
}
public Criteria andModelInnerTypeNotBetween(String value1, String value2) {
addCriterion("model_inner_type not between", value1, value2, "modelInnerType");
return (Criteria) this;
}
public Criteria andAuthTypeIsNull() {
addCriterion("auth_type is null");
return (Criteria) this;
}
public Criteria andAuthTypeIsNotNull() {
addCriterion("auth_type is not null");
return (Criteria) this;
}
public Criteria andAuthTypeEqualTo(String value) {
addCriterion("auth_type =", value, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeNotEqualTo(String value) {
addCriterion("auth_type <>", value, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeGreaterThan(String value) {
addCriterion("auth_type >", value, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeGreaterThanOrEqualTo(String value) {
addCriterion("auth_type >=", value, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeLessThan(String value) {
addCriterion("auth_type <", value, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeLessThanOrEqualTo(String value) {
addCriterion("auth_type <=", value, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeLike(String value) {
addCriterion("auth_type like", value, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeNotLike(String value) {
addCriterion("auth_type not like", value, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeIn(List<String> values) {
addCriterion("auth_type in", values, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeNotIn(List<String> values) {
addCriterion("auth_type not in", values, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeBetween(String value1, String value2) {
addCriterion("auth_type between", value1, value2, "authType");
return (Criteria) this;
}
public Criteria andAuthTypeNotBetween(String value1, String value2) {
addCriterion("auth_type not between", value1, value2, "authType");
return (Criteria) this;
}
public Criteria andCreateByIsNull() {
addCriterion("create_by is null");
return (Criteria) this;
}
public Criteria andCreateByIsNotNull() {
addCriterion("create_by is not null");
return (Criteria) this;
}
public Criteria andCreateByEqualTo(String value) {
addCriterion("create_by =", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotEqualTo(String value) {
addCriterion("create_by <>", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByGreaterThan(String value) {
addCriterion("create_by >", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByGreaterThanOrEqualTo(String value) {
addCriterion("create_by >=", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLessThan(String value) {
addCriterion("create_by <", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLessThanOrEqualTo(String value) {
addCriterion("create_by <=", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLike(String value) {
addCriterion("create_by like", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotLike(String value) {
addCriterion("create_by not like", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByIn(List<String> values) {
addCriterion("create_by in", values, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotIn(List<String> values) {
addCriterion("create_by not in", values, "createBy");
return (Criteria) this;
}
public Criteria andCreateByBetween(String value1, String value2) {
addCriterion("create_by between", value1, value2, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotBetween(String value1, String value2) {
addCriterion("create_by not between", value1, value2, "createBy");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

View File

@ -0,0 +1,17 @@
package io.dataease.base.domain;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class VAuthModelWithBLOBs extends VAuthModel implements Serializable {
private String name;
private String label;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,27 @@
package io.dataease.base.mapper;
import io.dataease.base.domain.VAuthModel;
import io.dataease.base.domain.VAuthModelExample;
import io.dataease.base.domain.VAuthModelWithBLOBs;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface VAuthModelMapper {
long countByExample(VAuthModelExample example);
int deleteByExample(VAuthModelExample example);
int insert(VAuthModelWithBLOBs record);
int insertSelective(VAuthModelWithBLOBs record);
List<VAuthModelWithBLOBs> selectByExampleWithBLOBs(VAuthModelExample example);
List<VAuthModel> selectByExample(VAuthModelExample example);
int updateByExampleSelective(@Param("record") VAuthModelWithBLOBs record, @Param("example") VAuthModelExample example);
int updateByExampleWithBLOBs(@Param("record") VAuthModelWithBLOBs record, @Param("example") VAuthModelExample example);
int updateByExample(@Param("record") VAuthModel record, @Param("example") VAuthModelExample example);
}

View File

@ -0,0 +1,257 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.dataease.base.mapper.VAuthModelMapper">
<resultMap id="BaseResultMap" type="io.dataease.base.domain.VAuthModel">
<result column="id" jdbcType="VARCHAR" property="id" />
<result column="pid" jdbcType="VARCHAR" property="pid" />
<result column="node_type" jdbcType="VARCHAR" property="nodeType" />
<result column="model_type" jdbcType="VARCHAR" property="modelType" />
<result column="model_inner_type" jdbcType="VARCHAR" property="modelInnerType" />
<result column="auth_type" jdbcType="VARCHAR" property="authType" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.dataease.base.domain.VAuthModelWithBLOBs">
<result column="name" jdbcType="LONGVARCHAR" property="name" />
<result column="label" jdbcType="LONGVARCHAR" property="label" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
id, pid, node_type, model_type, model_inner_type, auth_type, create_by
</sql>
<sql id="Blob_Column_List">
`name`, `label`
</sql>
<select id="selectByExampleWithBLOBs" parameterType="io.dataease.base.domain.VAuthModelExample" resultMap="ResultMapWithBLOBs">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from v_auth_model
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByExample" parameterType="io.dataease.base.domain.VAuthModelExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from v_auth_model
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<delete id="deleteByExample" parameterType="io.dataease.base.domain.VAuthModelExample">
delete from v_auth_model
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="io.dataease.base.domain.VAuthModelWithBLOBs">
insert into v_auth_model (id, pid, node_type,
model_type, model_inner_type, auth_type,
create_by, `name`, `label`
)
values (#{id,jdbcType=VARCHAR}, #{pid,jdbcType=VARCHAR}, #{nodeType,jdbcType=VARCHAR},
#{modelType,jdbcType=VARCHAR}, #{modelInnerType,jdbcType=VARCHAR}, #{authType,jdbcType=VARCHAR},
#{createBy,jdbcType=VARCHAR}, #{name,jdbcType=LONGVARCHAR}, #{label,jdbcType=LONGVARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.VAuthModelWithBLOBs">
insert into v_auth_model
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="pid != null">
pid,
</if>
<if test="nodeType != null">
node_type,
</if>
<if test="modelType != null">
model_type,
</if>
<if test="modelInnerType != null">
model_inner_type,
</if>
<if test="authType != null">
auth_type,
</if>
<if test="createBy != null">
create_by,
</if>
<if test="name != null">
`name`,
</if>
<if test="label != null">
`label`,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="pid != null">
#{pid,jdbcType=VARCHAR},
</if>
<if test="nodeType != null">
#{nodeType,jdbcType=VARCHAR},
</if>
<if test="modelType != null">
#{modelType,jdbcType=VARCHAR},
</if>
<if test="modelInnerType != null">
#{modelInnerType,jdbcType=VARCHAR},
</if>
<if test="authType != null">
#{authType,jdbcType=VARCHAR},
</if>
<if test="createBy != null">
#{createBy,jdbcType=VARCHAR},
</if>
<if test="name != null">
#{name,jdbcType=LONGVARCHAR},
</if>
<if test="label != null">
#{label,jdbcType=LONGVARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="io.dataease.base.domain.VAuthModelExample" resultType="java.lang.Long">
select count(*) from v_auth_model
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update v_auth_model
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.pid != null">
pid = #{record.pid,jdbcType=VARCHAR},
</if>
<if test="record.nodeType != null">
node_type = #{record.nodeType,jdbcType=VARCHAR},
</if>
<if test="record.modelType != null">
model_type = #{record.modelType,jdbcType=VARCHAR},
</if>
<if test="record.modelInnerType != null">
model_inner_type = #{record.modelInnerType,jdbcType=VARCHAR},
</if>
<if test="record.authType != null">
auth_type = #{record.authType,jdbcType=VARCHAR},
</if>
<if test="record.createBy != null">
create_by = #{record.createBy,jdbcType=VARCHAR},
</if>
<if test="record.name != null">
`name` = #{record.name,jdbcType=LONGVARCHAR},
</if>
<if test="record.label != null">
`label` = #{record.label,jdbcType=LONGVARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExampleWithBLOBs" parameterType="map">
update v_auth_model
set id = #{record.id,jdbcType=VARCHAR},
pid = #{record.pid,jdbcType=VARCHAR},
node_type = #{record.nodeType,jdbcType=VARCHAR},
model_type = #{record.modelType,jdbcType=VARCHAR},
model_inner_type = #{record.modelInnerType,jdbcType=VARCHAR},
auth_type = #{record.authType,jdbcType=VARCHAR},
create_by = #{record.createBy,jdbcType=VARCHAR},
`name` = #{record.name,jdbcType=LONGVARCHAR},
`label` = #{record.label,jdbcType=LONGVARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update v_auth_model
set id = #{record.id,jdbcType=VARCHAR},
pid = #{record.pid,jdbcType=VARCHAR},
node_type = #{record.nodeType,jdbcType=VARCHAR},
model_type = #{record.modelType,jdbcType=VARCHAR},
model_inner_type = #{record.modelInnerType,jdbcType=VARCHAR},
auth_type = #{record.authType,jdbcType=VARCHAR},
create_by = #{record.createBy,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
</mapper>

View File

@ -0,0 +1,19 @@
package io.dataease.controller.authModel;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Author: wangjiahao
* Date: 2021/11/5
* Description:
*/
@Api(tags = "授权树:授权树模型")
@ApiSupport(order = 80)
@RestController
@RequestMapping("authModel")
public class VAuthModelController {
}

View File

@ -0,0 +1,12 @@
package io.dataease.dto.authModel;
import io.dataease.base.domain.VAuthModel;
/**
* Author: wangjiahao
* Date: 2021/11/5
* Description:
*/
public class VAuthModelDTO extends VAuthModel {
}

View File

@ -65,10 +65,10 @@
<!--要生成的数据库表 -->
<table tableName="panel_link_jump"/>
<table tableName="panel_link_jump_info"/>
<table tableName="panel_link_jump_target_view_info"/>
<table tableName="chart_view"/>
<!-- <table tableName="panel_link_jump"/>-->
<!-- <table tableName="panel_link_jump_info"/>-->
<!-- <table tableName="panel_link_jump_target_view_info"/>-->
<table tableName="v_auth_model"/>
<!-- <table tableName="sys_dict_item"/>-->
<!-- <table tableName="dataset_table_field"/>-->

View File

@ -51,6 +51,7 @@
"vue-router": "3.0.6",
"vue-to-pdf": "^1.0.0",
"vue-uuid": "2.0.2",
"vue-video-player": "^5.0.2",
"vuedraggable": "^2.24.3",
"vuex": "3.1.0",
"webpack": "^4.46.0",

View File

@ -27,6 +27,7 @@
:is-edit="false"
:element="config"
:search-count="searchCount"
:h="config.style.height"
/>
</div>
</template>
@ -76,6 +77,29 @@ export default {
methods: {
getStyle,
getShapeStyleIntDeDrag(style, prop) {
if (prop === 'rotate') {
return style['rotate']
}
if (prop === 'width') {
return this.format(style['width'], this.scaleWidth)
}
if (prop === 'left') {
return this.format(style['left'], this.scaleWidth)
}
if (prop === 'height') {
return this.format(style['height'], this.scaleHeight)
}
if (prop === 'top') {
const top = this.format(style['top'], this.scaleHeight)
// console.log('top:' + top)
return top
}
},
format(value, scale) {
//
return value * scale / 100
},
getOutStyleDefault(style) {
const result = {};
['width', 'left'].forEach(attr => {

View File

@ -0,0 +1,125 @@
<template>
<el-popover
ref="popover"
width="340"
trigger="click"
>
<el-row>
<el-form ref="form" size="mini" label-width="70px">
<el-form-item :label="'自动播放'">
<el-switch v-model="linkInfoTemp.autoplay" size="mini" />
<span v-show="linkInfoTemp.autoplay" style="color: #909399; font-size: 8px;margin-left: 3px">
<!-- Tips:{{ $t('panel.link_open_tips') }}-->
</span>
</el-form-item>
<el-form-item :label="$t('panel.open_mode')">
<el-radio-group v-model="linkInfoTemp.loop">
<el-radio :label="false">播放一次</el-radio>
<el-radio :label="true">循环播放</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('panel.hyperLinks')">
<el-input v-model="linkInfoTemp.sources[0].src" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">{{ $t('panel.confirm') }}</el-button>
<el-button @click="onClose">{{ $t('panel.cancel') }}</el-button>
</el-form-item>
</el-form>
</el-row>
<i slot="reference" class="icon iconfont icon-chaolianjie" />
</el-popover>
</template>
<script>
import { mapState } from 'vuex'
import { deepCopy } from '@/components/canvas/utils/utils'
export default {
props: {
linkInfo: {
type: Object,
required: true
}
},
data() {
return {
linkInfoTemp: null,
componentType: null,
linkageActiveStatus: false,
editFilter: [
'view',
'custom'
]
}
},
mounted() {
this.linkInfoTemp = deepCopy(this.linkInfo)
},
computed: {
...mapState([
'curComponent'
])
},
methods: {
onSubmit() {
this.curComponent.videoLinks = this.linkInfoTemp
this.$store.state.styleChangeTimes++
this.popoverClose()
},
onClose() {
this.$emit('close')
this.popoverClose()
},
popoverClose() {
this.$refs.popover.showPopper = false
}
}
}
</script>
<style lang="scss" scoped>
.slot-class{
color: white;
}
.bottom {
margin-top: 20px;
text-align: center;
}
.ellip{
/*width: 100%;*/
margin-left: 10px;
margin-right: 10px;
overflow: hidden;/*超出部分隐藏*/
white-space: nowrap;/*不换行*/
text-overflow:ellipsis;/*超出部分文字以...显示*/
background-color: #f7f8fa;
color: #3d4d66;
font-size: 12px;
line-height: 24px;
height: 24px;
border-radius: 3px;
}
.select-filed{
/*width: 100%;*/
margin-left: 10px;
margin-right: 10px;
overflow: hidden;/*超出部分隐藏*/
white-space: nowrap;/*不换行*/
text-overflow:ellipsis;/*超出部分文字以...显示*/
color: #3d4d66;
font-size: 12px;
line-height: 35px;
height: 35px;
border-radius: 3px;
}
>>>.el-popover{
height: 200px;
overflow: auto;
}
</style>

View File

@ -55,9 +55,6 @@
@amAddItem="addItemBox(item)"
@linkJumpSet="linkJumpSet(item)"
>
<!-- <span style="position:relative;left: 0px;top:0px">-->
<!-- item:x-{{ item.x }}y-{{ item.y }}top-{{ item.style.top }}-->
<!-- </span>-->
<component
:is="item.component"
v-if="item.type==='v-text'"
@ -72,17 +69,6 @@
:active="item === curComponent"
@input="handleInput"
/>
<!-- <out-widget
:is="item.component"
v-else-if="item.type==='custom'"
:id="'component' + item.id"
class="component"
:style="getComponentStyleDefault(item.style)"
:prop-value="item.propValue"
:element="item"
:out-style="getShapeStyleInt(item.style)"
:active="item === curComponent"
/> -->
<de-out-widget
v-else-if="item.type==='custom'"
:id="'component' + item.id"
@ -117,6 +103,7 @@
:element="item"
:out-style="getShapeStyleInt(item.style)"
:active="item === curComponent"
:h="getShapeStyleIntDeDrag(item.style,'height')"
/>
</de-drag>
<!--拖拽阴影部分-->

View File

@ -136,6 +136,11 @@
<Hyperlinks :link-info="curComponent.hyperlinks" />
</el-tooltip>
</div>
<div v-if="attrShow('videoLinks')" style="width: 20px;float: left;margin-top: 2px;margin-left: 2px;">
<el-tooltip content="视频信息">
<VideoLinks :link-info="curComponent.videoLinks" />
</el-tooltip>
</div>
<div v-if="attrShow('date-format')" style="width: 20px;float: left;margin-top: 2px;margin-left: 10px;">
<el-tooltip content="日期格式">
@ -150,10 +155,11 @@
<script>
import { mapState } from 'vuex'
import Hyperlinks from '@/components/canvas/components/Editor/Hyperlinks'
import VideoLinks from '@/components/canvas/components/Editor/VideoLinks'
import DateFormat from '@/components/canvas/components/Editor/DateFormat'
export default {
components: { Hyperlinks, DateFormat },
components: { Hyperlinks, DateFormat, VideoLinks },
props: {
scrollLeft: {
type: Number,
@ -273,6 +279,11 @@ export default {
'color',
'backgroundColor',
'hyperlinks'
],
//
'de-video': [
'opacity',
'videoLinks'
]
}
},

View File

@ -0,0 +1,161 @@
<template>
<el-row ref="mainPlayer">
<div v-if="this.element.videoLinks.sources[0].src" class="player">
<video-player
ref="videoPlayer"
class="vjs-custom-skin"
:options="playerOptions"
:playsinline="true"
@play="onPlayerPlay($event)"
@pause="onPlayerPause($event)"
@ended="onPlayerEnded($event)"
@loadeddata="onPlayerLoadeddata($event)"
@waiting="onPlayerWaiting($event)"
@playing="onPlayerPlaying($event)"
@timeupdate="onPlayerTimeupdate($event)"
@canplay="onPlayerCanplay($event)"
@canplaythrough="onPlayerCanplaythrough($event)"
@ready="playerReadied"
@statechanged="playerStateChanged($event)"
/>
</div>
<div v-else class="info-class">
请点击添加配置视频信息...
</div>
</el-row>
</template>
<script>
// custom skin css
import '@/custom-theme.css'
import { mapState } from 'vuex'
export default {
props: {
// eslint-disable-next-line vue/require-default-prop
propValue: {
type: String,
require: true
},
// eslint-disable-next-line vue/require-default-prop
element: {
type: Object
},
editMode: {
type: String,
require: false,
default: 'preview'
},
active: {
type: Boolean,
require: false,
default: false
},
h: {
type: Number,
default: 200
}
},
data() {
return {
}
},
computed: {
player() {
return this.$refs.videoPlayer.player
},
playerOptions() {
const videoLinks = this.element.videoLinks
let playHeight = this.h
if (this.canvasStyleData.panel.gap) {
playHeight = this.h - (this.componentGap * 2)
}
videoLinks.height = playHeight
return videoLinks
},
...mapState([
'componentGap',
'canvasStyleData'
])
},
mounted() {
// console.log('this is current player instance object', this.player)
setTimeout(() => {
console.log('dynamic change options', this.player)
// change src
// this.playerOptions.sources[0].src = 'https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm';
// change item
// this.$set(this.playerOptions.sources, 0, {
// type: "video/mp4",
// src: 'https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm',
// })
// change array
// this.playerOptions.sources = [{
// type: "video/mp4",
// src: 'https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm',
// }]
this.player.muted(false)
}, 5000)
},
methods: {
// listen event
onPlayerPlay(player) {
// console.log('player play!', player)
},
onPlayerPause(player) {
// console.log('player pause!', player)
},
onPlayerEnded(player) {
// console.log('player ended!', player)
},
onPlayerLoadeddata(player) {
// console.log('player Loadeddata!', player)
},
onPlayerWaiting(player) {
// console.log('player Waiting!', player)
},
onPlayerPlaying(player) {
// console.log('player Playing!', player)
},
onPlayerTimeupdate(player) {
// console.log('player Timeupdate!', player.currentTime())
},
onPlayerCanplay(player) {
// console.log('player Canplay!', player)
},
onPlayerCanplaythrough(player) {
// console.log('player Ca
// console.log('example 01nplaythrough!', player)
},
// or listen state event
playerStateChanged(playerCurrentState) {
// console.log('player current update state', playerCurrentState)
},
// player is ready
playerReadied(player) {
// seek to 10s
console.log('example player 1 readied', player)
// player.currentTime(10): the player is readied', player)
}
}
}
</script>
<style>
.info-class{
text-align: center;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background-color: #FFFFFF;
font-size: 12px;
color: #9ea6b2;
}
</style>

View File

@ -21,6 +21,19 @@ export const HYPERLINKS = {
content: 'http://'
}
// 视频信息配置
export const VIDEOLINKS = {
autoplay: true,
muted: true,
loop: true,
language: 'zh',
controlBar: {
fullscreenToggle: false
},
sources: [{
}]
}
export const assistList = [
{
id: '10001',
@ -57,6 +70,14 @@ export const pictureList = [
label: '拖拽上传',
icon: 'iconfont icon-picture',
defaultClass: 'text-filter'
},
{
id: '20002',
component: 'video',
type: 'video',
label: '视频',
icon: 'iconfont icon-video',
defaultClass: 'text-filter'
}
]
@ -275,6 +296,24 @@ const list = [
y: 1,
sizex: 10,
sizey: 5
},
{
id: '20002',
component: 'de-video',
type: 'de-video',
label: '',
icon: 'iconfont icon-picture',
defaultClass: 'text-filter',
style: {
width: 400,
height: 200,
borderRadius: ''
},
videoLinks: VIDEOLINKS,
x: 1,
y: 1,
sizex: 10,
sizey: 5
}
]

View File

@ -6,6 +6,7 @@ import VButton from '@/components/canvas/custom-component/VButton'
import Group from '@/components/canvas/custom-component/Group'
import RectShape from '@/components/canvas/custom-component/RectShape'
import UserView from '@/components/canvas/custom-component/UserView'
import DeVideo from '@/components/canvas/custom-component/DeVideo'
Vue.component('Picture', Picture)
Vue.component('VText', VText)
@ -13,4 +14,5 @@ Vue.component('VButton', VButton)
Vue.component('Group', Group)
Vue.component('RectShape', RectShape)
Vue.component('UserView', UserView)
Vue.component('DeVideo', DeVideo)

180
frontend/src/custom-theme.css Executable file
View File

@ -0,0 +1,180 @@
.vjs-custom-skin > .video-js {
width: 100%;
font-family: "PingFang SC","Helvetica Neue","Hiragino Sans GB","Segoe UI","Microsoft YaHei","微软雅黑",sans-serif;
}
.vjs-custom-skin > .video-js .vjs-menu-button-inline.vjs-slider-active,.vjs-custom-skin > .video-js .vjs-menu-button-inline:focus,.vjs-custom-skin > .video-js .vjs-menu-button-inline:hover,.video-js.vjs-no-flex .vjs-menu-button-inline {
width: 10em
}
.vjs-custom-skin > .video-js .vjs-controls-disabled .vjs-big-play-button {
display: none!important
}
.vjs-custom-skin > .video-js .vjs-control {
width: 3em
}
.vjs-custom-skin > .video-js .vjs-control.vjs-live-control{
width: auto;
padding-left: .5em;
letter-spacing: .1em;
}
.vjs-custom-skin > .video-js .vjs-menu-button-inline:before {
width: 1.5em
}
.vjs-menu-button-inline .vjs-menu {
left: 3em
}
.vjs-paused.vjs-has-started.vjs-custom-skin > .video-js .vjs-big-play-button,.video-js.vjs-ended .vjs-big-play-button,.video-js.vjs-paused .vjs-big-play-button {
display: block
}
.vjs-custom-skin > .video-js .vjs-load-progress div,.vjs-seeking .vjs-big-play-button,.vjs-waiting .vjs-big-play-button {
display: none!important
}
.vjs-custom-skin > .video-js .vjs-mouse-display:after,.vjs-custom-skin > .video-js .vjs-play-progress:after {
padding: 0 .4em .3em
}
.video-js.vjs-ended .vjs-loading-spinner {
display: none;
}
.video-js.vjs-ended .vjs-big-play-button {
display: block !important;
}
.video-js.vjs-ended .vjs-big-play-button,.video-js.vjs-paused .vjs-big-play-button,.vjs-paused.vjs-has-started.vjs-custom-skin > .video-js .vjs-big-play-button {
display: block
}
.vjs-custom-skin > .video-js .vjs-big-play-button {
top: 50%;
left: 50%;
margin-left: -1.5em;
margin-top: -1em
}
.vjs-custom-skin > .video-js .vjs-big-play-button {
background-color: rgba(0,0,0,0.45);
font-size: 3.5em;
/*border-radius: 50%;*/
height: 2em !important;
line-height: 2em !important;
margin-top: -1em !important
}
.video-js:hover .vjs-big-play-button,.vjs-custom-skin > .video-js .vjs-big-play-button:focus,.vjs-custom-skin > .video-js .vjs-big-play-button:active {
background-color: rgba(36,131,213,0.9)
}
.vjs-custom-skin > .video-js .vjs-loading-spinner {
border-color: rgba(36,131,213,0.8)
}
.vjs-custom-skin > .video-js .vjs-control-bar2 {
background-color: #000000
}
.vjs-custom-skin > .video-js .vjs-control-bar {
/*background-color: rgba(0,0,0,0.3) !important;*/
color: #ffffff;
font-size: 14px
}
.vjs-custom-skin > .video-js .vjs-play-progress,.vjs-custom-skin > .video-js .vjs-volume-level {
background-color: #2483d5
}
.vjs-custom-skin > .video-js .vjs-play-progress:before {
top: -0.3em;
}
.vjs-custom-skin > .video-js .vjs-progress-control:hover .vjs-progress-holder {
font-size: 1.3em;
}
.vjs-menu-button-popup.vjs-volume-menu-button-vertical .vjs-menu {
left: 0em;
}
.vjs-custom-skin > .video-js .vjs-menu li {
padding: 0;
line-height: 2em;
font-size: 1.1em;
font-family: "PingFang SC","Helvetica Neue","Hiragino Sans GB","Segoe UI","Microsoft YaHei","微软雅黑",sans-serif;
}
.vjs-custom-skin > .video-js .vjs-time-tooltip,
.vjs-custom-skin > .video-js .vjs-mouse-display:after,
.vjs-custom-skin > .video-js .vjs-play-progress:after {
border-radius: 0;
font-size: 1em;
padding: 0;
width: 3em;
height: 1.5em;
line-height: 1.5em;
top: -3em;
}
.vjs-custom-skin > .video-js .vjs-menu-button-popup .vjs-menu {
width: 5em;
left: -1em;
}
.vjs-custom-skin > .video-js .vjs-menu-button-popup.vjs-volume-menu-button-vertical .vjs-menu {
left: 0;
}
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-resolution-button .vjs-menu {
/*order: 4;*/
}
/*排序顺序*/
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-play-control {
order: 0;
}
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-time-control {
min-width: 1em;
padding: 0;
margin: 0 .1em;
text-align: center;
display: block;
order: 1;
}
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-playback-rate .vjs-playback-rate-value{
font-size: 1.2em;
line-height: 2.4;
}
.vjs-custom-skin > .video-js .vjs-progress-control.vjs-control {
order: 2;
}
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-volume-menu-button {
order: 3;
}
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-resolution-button {
order: 4;
}
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-resolution-button .vjs-resolution-button-label {
display: block;
line-height: 3em;
}
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-playback-rate {
order: 5;
}
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-fullscreen-control {
order: 6;
}

View File

@ -82,6 +82,12 @@ Vue.config.productionTip = false
import vueToPdf from 'vue-to-pdf'
Vue.use(vueToPdf)
import VueVideoPlayer from 'vue-video-player'
import 'video.js/dist/video-js.css'
Vue.use(VueVideoPlayer)
Vue.prototype.hasDataPermission = function(pTarget, pSource) {
if (this.$store.state.user.user.isAdmin) {
return true

View File

@ -66,7 +66,10 @@ const data = {
nowPanelJumpInfoTargetPanel: {}, // 当前仪表板的跳转信息(只包括仪表板)
// 拖拽的组件信息
dragComponentInfo: null
dragComponentInfo: null,
// 仪表板组件间隙大小 px
componentGap: 5
},
mutations: {
...animation.mutations,

View File

@ -54,6 +54,54 @@
<div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe625;</span>
<div class="name">video</div>
<div class="code-name">&amp;#xe625;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6e8;</span>
<div class="name">悬浮按钮发动态</div>
<div class="code-name">&amp;#xe6e8;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe697;</span>
<div class="name">吸附选择</div>
<div class="code-name">&amp;#xe697;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe902;</span>
<div class="name">margin</div>
<div class="code-name">&amp;#xe902;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe91b;</span>
<div class="name">padding</div>
<div class="code-name">&amp;#xe91b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe9a8;</span>
<div class="name">tabs</div>
<div class="code-name">&amp;#xe9a8;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe665;</span>
<div class="name">时间</div>
<div class="code-name">&amp;#xe665;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6fb;</span>
<div class="name">时间格式转换</div>
<div class="code-name">&amp;#xe6fb;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe9b2;</span>
<div class="name">超链接</div>
@ -102,12 +150,6 @@
<div class="code-name">&amp;#xe8e6;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62a;</span>
<div class="name">44.tabs</div>
<div class="code-name">&amp;#xe62a;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe619;</span>
<div class="name">洗浴</div>
@ -420,9 +462,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1634191971474') format('woff2'),
url('iconfont.woff?t=1634191971474') format('woff'),
url('iconfont.ttf?t=1634191971474') format('truetype');
src: url('iconfont.woff2?t=1636358286475') format('woff2'),
url('iconfont.woff?t=1636358286475') format('woff'),
url('iconfont.ttf?t=1636358286475') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -448,6 +490,78 @@
<div class="content font-class">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-video"></span>
<div class="name">
video
</div>
<div class="code-name">.icon-video
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-xuanfuanniufadongtai"></span>
<div class="name">
悬浮按钮发动态
</div>
<div class="code-name">.icon-xuanfuanniufadongtai
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-xifuxuanze"></span>
<div class="name">
吸附选择
</div>
<div class="code-name">.icon-xifuxuanze
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-margin"></span>
<div class="name">
margin
</div>
<div class="code-name">.icon-margin
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-padding"></span>
<div class="name">
padding
</div>
<div class="code-name">.icon-padding
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-tabs"></span>
<div class="name">
tabs
</div>
<div class="code-name">.icon-tabs
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shijian"></span>
<div class="name">
时间
</div>
<div class="code-name">.icon-shijian
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shijiangeshizhuanhuan"></span>
<div class="name">
时间格式转换
</div>
<div class="code-name">.icon-shijiangeshizhuanhuan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-chaolianjie"></span>
<div class="name">
@ -520,15 +634,6 @@
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-tabs"></span>
<div class="name">
44.tabs
</div>
<div class="code-name">.icon-tabs
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-xiyu"></span>
<div class="name">
@ -997,6 +1102,70 @@
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-video"></use>
</svg>
<div class="name">video</div>
<div class="code-name">#icon-video</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-xuanfuanniufadongtai"></use>
</svg>
<div class="name">悬浮按钮发动态</div>
<div class="code-name">#icon-xuanfuanniufadongtai</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-xifuxuanze"></use>
</svg>
<div class="name">吸附选择</div>
<div class="code-name">#icon-xifuxuanze</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-margin"></use>
</svg>
<div class="name">margin</div>
<div class="code-name">#icon-margin</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-padding"></use>
</svg>
<div class="name">padding</div>
<div class="code-name">#icon-padding</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-tabs"></use>
</svg>
<div class="name">tabs</div>
<div class="code-name">#icon-tabs</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shijian"></use>
</svg>
<div class="name">时间</div>
<div class="code-name">#icon-shijian</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shijiangeshizhuanhuan"></use>
</svg>
<div class="name">时间格式转换</div>
<div class="code-name">#icon-shijiangeshizhuanhuan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-chaolianjie"></use>
@ -1061,14 +1230,6 @@
<div class="code-name">#icon-xuanfuanniu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-tabs"></use>
</svg>
<div class="name">44.tabs</div>
<div class="code-name">#icon-tabs</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-xiyu"></use>

View File

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 2459092 */
src: url('iconfont.woff2?t=1634802523514') format('woff2'),
url('iconfont.woff?t=1634802523514') format('woff'),
url('iconfont.ttf?t=1634802523514') format('truetype');
src: url('iconfont.woff2?t=1636358286475') format('woff2'),
url('iconfont.woff?t=1636358286475') format('woff'),
url('iconfont.ttf?t=1636358286475') format('truetype');
}
.iconfont {
@ -13,6 +13,18 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-video:before {
content: "\e625";
}
.icon-xuanfuanniufadongtai:before {
content: "\e6e8";
}
.icon-xifuxuanze:before {
content: "\e697";
}
.icon-margin:before {
content: "\e902";
}

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,27 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "5994030",
"name": "video",
"font_class": "video",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "18545906",
"name": "悬浮按钮发动态",
"font_class": "xuanfuanniufadongtai",
"unicode": "e6e8",
"unicode_decimal": 59112
},
{
"icon_id": "21285292",
"name": "吸附选择",
"font_class": "xifuxuanze",
"unicode": "e697",
"unicode_decimal": 59031
},
{
"icon_id": "924440",
"name": "margin",

View File

@ -27,7 +27,7 @@
<div class="widget-subject">
<div class="filter-header">
<div class="filter-header-text">
<span>图片</span>
<span>多媒体</span>
</div>
</div>

View File

@ -289,7 +289,8 @@ export default {
'picture-add',
'de-tabs',
'rect-shape',
'de-show-date'
'de-show-date',
'de-video'
]
}
},
@ -551,15 +552,12 @@ export default {
})
} else {
this.currentWidget = ApplicationContext.getService(componentInfo.id)
this.currentFilterCom = this.currentWidget.getDrawPanel()
if (this.canvasStyleData.auxiliaryMatrix) {
this.currentFilterCom.x = this.dropComponentInfo.x
this.currentFilterCom.y = this.dropComponentInfo.y
this.currentFilterCom.sizex = this.dropComponentInfo.sizex
this.currentFilterCom.sizey = this.dropComponentInfo.sizey
this.currentFilterCom.style.left = (this.dragComponentInfo.x - 1) * this.curCanvasScale.matrixStyleOriginWidth
this.currentFilterCom.style.top = (this.dragComponentInfo.y - 1) * this.curCanvasScale.matrixStyleOriginHeight
this.currentFilterCom.style.width = this.dragComponentInfo.sizex * this.curCanvasScale.matrixStyleOriginWidth
@ -608,14 +606,6 @@ export default {
this.$store.commit('addComponent', { component })
this.$store.commit('recordSnapshot', 'handleDrop')
this.clearCurrentInfo()
// this.$store.commit('clearDragComponentInfo')
// //
// if (component.type === 'v-text') {
// this.$store.commit('setCurComponent', { component: component, index: this.componentData.length })
// this.styleDialogVisible = true
// this.show = false
// }
},
clearCurrentInfo() {
this.currentWidget = null

View File

@ -0,0 +1,24 @@
<template>
<DeVideo />
</template>
<script>
import DeVideo from '@/components/canvas/custom-component/DeVideo'
export default {
name: 'Video',
components: { DeVideo },
data() {
return {}
},
mounted() {
},
methods: {
}
}
</script>
<style scoped>
</style>