提交 a7144fd0 authored 作者: fit2cloud-chenyw's avatar fit2cloud-chenyw

feat: 公共链接增加有效期

上级 42a36b10
...@@ -13,5 +13,7 @@ public class PanelLink implements Serializable { ...@@ -13,5 +13,7 @@ public class PanelLink implements Serializable {
private String pwd; private String pwd;
private Long overTime;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
...@@ -363,6 +363,66 @@ public class PanelLinkExample { ...@@ -363,6 +363,66 @@ public class PanelLinkExample {
addCriterion("pwd not between", value1, value2, "pwd"); addCriterion("pwd not between", value1, value2, "pwd");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andOverTimeIsNull() {
addCriterion("over_time is null");
return (Criteria) this;
}
public Criteria andOverTimeIsNotNull() {
addCriterion("over_time is not null");
return (Criteria) this;
}
public Criteria andOverTimeEqualTo(Long value) {
addCriterion("over_time =", value, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeNotEqualTo(Long value) {
addCriterion("over_time <>", value, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeGreaterThan(Long value) {
addCriterion("over_time >", value, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeGreaterThanOrEqualTo(Long value) {
addCriterion("over_time >=", value, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeLessThan(Long value) {
addCriterion("over_time <", value, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeLessThanOrEqualTo(Long value) {
addCriterion("over_time <=", value, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeIn(List<Long> values) {
addCriterion("over_time in", values, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeNotIn(List<Long> values) {
addCriterion("over_time not in", values, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeBetween(Long value1, Long value2) {
addCriterion("over_time between", value1, value2, "overTime");
return (Criteria) this;
}
public Criteria andOverTimeNotBetween(Long value1, Long value2) {
addCriterion("over_time not between", value1, value2, "overTime");
return (Criteria) this;
}
} }
public static class Criteria extends GeneratedCriteria { public static class Criteria extends GeneratedCriteria {
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<result column="valid" jdbcType="BIT" property="valid" /> <result column="valid" jdbcType="BIT" property="valid" />
<result column="enable_pwd" jdbcType="BIT" property="enablePwd" /> <result column="enable_pwd" jdbcType="BIT" property="enablePwd" />
<result column="pwd" jdbcType="VARCHAR" property="pwd" /> <result column="pwd" jdbcType="VARCHAR" property="pwd" />
<result column="over_time" jdbcType="BIGINT" property="overTime" />
</resultMap> </resultMap>
<sql id="Example_Where_Clause"> <sql id="Example_Where_Clause">
<where> <where>
...@@ -66,7 +67,7 @@ ...@@ -66,7 +67,7 @@
</where> </where>
</sql> </sql>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
resource_id, `valid`, enable_pwd, pwd resource_id, `valid`, enable_pwd, pwd, over_time
</sql> </sql>
<select id="selectByExample" parameterType="io.dataease.base.domain.PanelLinkExample" resultMap="BaseResultMap"> <select id="selectByExample" parameterType="io.dataease.base.domain.PanelLinkExample" resultMap="BaseResultMap">
select select
...@@ -100,9 +101,9 @@ ...@@ -100,9 +101,9 @@
</delete> </delete>
<insert id="insert" parameterType="io.dataease.base.domain.PanelLink"> <insert id="insert" parameterType="io.dataease.base.domain.PanelLink">
insert into panel_link (resource_id, `valid`, enable_pwd, insert into panel_link (resource_id, `valid`, enable_pwd,
pwd) pwd, over_time)
values (#{resourceId,jdbcType=VARCHAR}, #{valid,jdbcType=BIT}, #{enablePwd,jdbcType=BIT}, values (#{resourceId,jdbcType=VARCHAR}, #{valid,jdbcType=BIT}, #{enablePwd,jdbcType=BIT},
#{pwd,jdbcType=VARCHAR}) #{pwd,jdbcType=VARCHAR}, #{overTime,jdbcType=BIGINT})
</insert> </insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.PanelLink"> <insert id="insertSelective" parameterType="io.dataease.base.domain.PanelLink">
insert into panel_link insert into panel_link
...@@ -119,6 +120,9 @@ ...@@ -119,6 +120,9 @@
<if test="pwd != null"> <if test="pwd != null">
pwd, pwd,
</if> </if>
<if test="overTime != null">
over_time,
</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="resourceId != null"> <if test="resourceId != null">
...@@ -133,6 +137,9 @@ ...@@ -133,6 +137,9 @@
<if test="pwd != null"> <if test="pwd != null">
#{pwd,jdbcType=VARCHAR}, #{pwd,jdbcType=VARCHAR},
</if> </if>
<if test="overTime != null">
#{overTime,jdbcType=BIGINT},
</if>
</trim> </trim>
</insert> </insert>
<select id="countByExample" parameterType="io.dataease.base.domain.PanelLinkExample" resultType="java.lang.Long"> <select id="countByExample" parameterType="io.dataease.base.domain.PanelLinkExample" resultType="java.lang.Long">
...@@ -156,6 +163,9 @@ ...@@ -156,6 +163,9 @@
<if test="record.pwd != null"> <if test="record.pwd != null">
pwd = #{record.pwd,jdbcType=VARCHAR}, pwd = #{record.pwd,jdbcType=VARCHAR},
</if> </if>
<if test="record.overTime != null">
over_time = #{record.overTime,jdbcType=BIGINT},
</if>
</set> </set>
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
...@@ -166,7 +176,8 @@ ...@@ -166,7 +176,8 @@
set resource_id = #{record.resourceId,jdbcType=VARCHAR}, set resource_id = #{record.resourceId,jdbcType=VARCHAR},
`valid` = #{record.valid,jdbcType=BIT}, `valid` = #{record.valid,jdbcType=BIT},
enable_pwd = #{record.enablePwd,jdbcType=BIT}, enable_pwd = #{record.enablePwd,jdbcType=BIT},
pwd = #{record.pwd,jdbcType=VARCHAR} pwd = #{record.pwd,jdbcType=VARCHAR},
over_time = #{record.overTime,jdbcType=BIGINT}
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
</if> </if>
...@@ -183,6 +194,9 @@ ...@@ -183,6 +194,9 @@
<if test="pwd != null"> <if test="pwd != null">
pwd = #{pwd,jdbcType=VARCHAR}, pwd = #{pwd,jdbcType=VARCHAR},
</if> </if>
<if test="overTime != null">
over_time = #{overTime,jdbcType=BIGINT},
</if>
</set> </set>
where resource_id = #{resourceId,jdbcType=VARCHAR} where resource_id = #{resourceId,jdbcType=VARCHAR}
</update> </update>
...@@ -190,7 +204,8 @@ ...@@ -190,7 +204,8 @@
update panel_link update panel_link
set `valid` = #{valid,jdbcType=BIT}, set `valid` = #{valid,jdbcType=BIT},
enable_pwd = #{enablePwd,jdbcType=BIT}, enable_pwd = #{enablePwd,jdbcType=BIT},
pwd = #{pwd,jdbcType=VARCHAR} pwd = #{pwd,jdbcType=VARCHAR},
over_time = #{overTime,jdbcType=BIGINT}
where resource_id = #{resourceId,jdbcType=VARCHAR} where resource_id = #{resourceId,jdbcType=VARCHAR}
</update> </update>
</mapper> </mapper>
\ No newline at end of file
package io.dataease.base.mapper.ext;
import org.apache.ibatis.annotations.Param;
import io.dataease.controller.request.panel.link.OverTimeRequest;
public interface ExtPanelLinkMapper {
void updateOverTime(@Param("request") OverTimeRequest request);
}
<?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.ext.ExtPanelLinkMapper">
<update id="updateOverTime" >
update panel_link set over_time = #{request.overTime} where resource_id = #{request.resourceId}
</update>
</mapper>
...@@ -6,6 +6,7 @@ import io.dataease.controller.ResultHolder; ...@@ -6,6 +6,7 @@ import io.dataease.controller.ResultHolder;
import io.dataease.controller.request.chart.ChartExtRequest; import io.dataease.controller.request.chart.ChartExtRequest;
import io.dataease.controller.request.panel.link.EnablePwdRequest; import io.dataease.controller.request.panel.link.EnablePwdRequest;
import io.dataease.controller.request.panel.link.LinkRequest; import io.dataease.controller.request.panel.link.LinkRequest;
import io.dataease.controller.request.panel.link.OverTimeRequest;
import io.dataease.controller.request.panel.link.PasswordRequest; import io.dataease.controller.request.panel.link.PasswordRequest;
import io.dataease.dto.panel.link.GenerateDto; import io.dataease.dto.panel.link.GenerateDto;
import io.dataease.dto.panel.link.ValidateDto; import io.dataease.dto.panel.link.ValidateDto;
...@@ -29,6 +30,10 @@ public interface LinkApi { ...@@ -29,6 +30,10 @@ public interface LinkApi {
@PostMapping("/enablePwd") @PostMapping("/enablePwd")
void enablePwd(EnablePwdRequest request); void enablePwd(EnablePwdRequest request);
@ApiOperation("过期时间")
@PostMapping("/resetOverTime")
void resetOverTime(OverTimeRequest request);
@ApiOperation("启用/禁用链接分享") @ApiOperation("启用/禁用链接分享")
@PostMapping("/switchLink") @PostMapping("/switchLink")
void switchLink(LinkRequest request); void switchLink(LinkRequest request);
......
...@@ -8,6 +8,7 @@ import io.dataease.controller.panel.api.LinkApi; ...@@ -8,6 +8,7 @@ import io.dataease.controller.panel.api.LinkApi;
import io.dataease.controller.request.chart.ChartExtRequest; import io.dataease.controller.request.chart.ChartExtRequest;
import io.dataease.controller.request.panel.link.EnablePwdRequest; import io.dataease.controller.request.panel.link.EnablePwdRequest;
import io.dataease.controller.request.panel.link.LinkRequest; import io.dataease.controller.request.panel.link.LinkRequest;
import io.dataease.controller.request.panel.link.OverTimeRequest;
import io.dataease.controller.request.panel.link.PasswordRequest; import io.dataease.controller.request.panel.link.PasswordRequest;
import io.dataease.controller.request.panel.link.ValidateRequest; import io.dataease.controller.request.panel.link.ValidateRequest;
import io.dataease.dto.panel.link.GenerateDto; import io.dataease.dto.panel.link.GenerateDto;
...@@ -46,6 +47,14 @@ public class LinkServer implements LinkApi { ...@@ -46,6 +47,14 @@ public class LinkServer implements LinkApi {
panelLinkService.changeEnablePwd(request); panelLinkService.changeEnablePwd(request);
} }
@Override
public void resetOverTime(@RequestBody OverTimeRequest request) {
panelLinkService.overTime(request);
}
@Override @Override
public void switchLink(@RequestBody LinkRequest request) { public void switchLink(@RequestBody LinkRequest request) {
panelLinkService.changeValid(request); panelLinkService.changeValid(request);
...@@ -74,6 +83,7 @@ public class LinkServer implements LinkApi { ...@@ -74,6 +83,7 @@ public class LinkServer implements LinkApi {
dto.setValid(one.getValid()); dto.setValid(one.getValid());
dto.setEnablePwd(one.getEnablePwd()); dto.setEnablePwd(one.getEnablePwd());
dto.setPassPwd(panelLinkService.validateHeads(one)); dto.setPassPwd(panelLinkService.validateHeads(one));
dto.setExpire(panelLinkService.isExpire(one));
return dto; return dto;
} }
......
package io.dataease.controller.request.panel.link;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
@Getter
@Setter
public class OverTimeRequest {
@ApiModelProperty("资源ID")
private String resourceId;
@ApiModelProperty("过期时间")
private Long overTime;
}
...@@ -14,4 +14,6 @@ public class GenerateDto { ...@@ -14,4 +14,6 @@ public class GenerateDto {
private String uri; private String uri;
@ApiModelProperty("密码") @ApiModelProperty("密码")
private String pwd; private String pwd;
@ApiModelProperty("有效期")
private Long overTime;
} }
...@@ -6,6 +6,9 @@ import lombok.Data; ...@@ -6,6 +6,9 @@ import lombok.Data;
@Data @Data
public class ValidateDto { public class ValidateDto {
@ApiModelProperty("是否过期")
private boolean expire;
@ApiModelProperty("是否可用") @ApiModelProperty("是否可用")
private boolean valid; private boolean valid;
@ApiModelProperty("是否启用密码") @ApiModelProperty("是否启用密码")
......
...@@ -9,10 +9,12 @@ import io.dataease.base.domain.PanelGroupWithBLOBs; ...@@ -9,10 +9,12 @@ import io.dataease.base.domain.PanelGroupWithBLOBs;
import io.dataease.base.domain.PanelLink; import io.dataease.base.domain.PanelLink;
import io.dataease.base.mapper.PanelGroupMapper; import io.dataease.base.mapper.PanelGroupMapper;
import io.dataease.base.mapper.PanelLinkMapper; import io.dataease.base.mapper.PanelLinkMapper;
import io.dataease.base.mapper.ext.ExtPanelLinkMapper;
import io.dataease.commons.utils.ServletUtils; import io.dataease.commons.utils.ServletUtils;
import io.dataease.controller.ResultHolder; import io.dataease.controller.ResultHolder;
import io.dataease.controller.request.panel.link.EnablePwdRequest; import io.dataease.controller.request.panel.link.EnablePwdRequest;
import io.dataease.controller.request.panel.link.LinkRequest; import io.dataease.controller.request.panel.link.LinkRequest;
import io.dataease.controller.request.panel.link.OverTimeRequest;
import io.dataease.controller.request.panel.link.PasswordRequest; import io.dataease.controller.request.panel.link.PasswordRequest;
import io.dataease.dto.panel.link.GenerateDto; import io.dataease.dto.panel.link.GenerateDto;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
...@@ -45,6 +47,9 @@ public class PanelLinkService { ...@@ -45,6 +47,9 @@ public class PanelLinkService {
@Resource @Resource
private PanelGroupMapper panelGroupMapper; private PanelGroupMapper panelGroupMapper;
@Resource
private ExtPanelLinkMapper extPanelLinkMapper;
public void changeValid(LinkRequest request){ public void changeValid(LinkRequest request){
PanelLink po = new PanelLink(); PanelLink po = new PanelLink();
po.setResourceId(request.getResourceId()); po.setResourceId(request.getResourceId());
...@@ -66,6 +71,14 @@ public class PanelLinkService { ...@@ -66,6 +71,14 @@ public class PanelLinkService {
mapper.updateByPrimaryKeySelective(po); mapper.updateByPrimaryKeySelective(po);
} }
public void overTime(OverTimeRequest request) {
/* PanelLink po = new PanelLink();
po.setResourceId(request.getResourceId());
po.setOverTime(request.getOverTime());
mapper.updateByPrimaryKeySelective(po); */
extPanelLinkMapper.updateOverTime(request);
}
public PanelLink findOne(String resourceId){ public PanelLink findOne(String resourceId){
PanelLink panelLink = mapper.selectByPrimaryKey(resourceId); PanelLink panelLink = mapper.selectByPrimaryKey(resourceId);
return panelLink; return panelLink;
...@@ -123,6 +136,7 @@ public class PanelLinkService { ...@@ -123,6 +136,7 @@ public class PanelLinkService {
result.setEnablePwd(linl.getEnablePwd()); result.setEnablePwd(linl.getEnablePwd());
result.setPwd(linl.getPwd()); result.setPwd(linl.getPwd());
result.setUri(baseUrl+buildLinkParam(linl.getResourceId())); result.setUri(baseUrl+buildLinkParam(linl.getResourceId()));
result.setOverTime(linl.getOverTime());
return result; return result;
} }
...@@ -144,6 +158,14 @@ public class PanelLinkService { ...@@ -144,6 +158,14 @@ public class PanelLinkService {
return verify; return verify;
} }
// 验证链接是否过期
public Boolean isExpire(PanelLink panelLink) {
if (ObjectUtils.isEmpty(panelLink.getOverTime())) {
return false;
}
return System.currentTimeMillis() > panelLink.getOverTime();
}
public boolean validatePwd(PasswordRequest request) throws Exception { public boolean validatePwd(PasswordRequest request) throws Exception {
String password = decryptParam(request.getPassword()); String password = decryptParam(request.getPassword());
String resourceId = request.getResourceId(); String resourceId = request.getResourceId();
......
ALTER TABLE `chart_view` ADD COLUMN `render` varchar(50) COMMENT '视图渲染方式' AFTER `type`; ALTER TABLE `chart_view` ADD COLUMN `render` varchar(50) COMMENT '视图渲染方式' AFTER `type`;
UPDATE `chart_view` SET `render` = 'echarts' WHERE `type` != 'liquid'; UPDATE `chart_view` SET `render` = 'echarts' WHERE `type` != 'liquid';
UPDATE `chart_view` SET `render` = 'antv' WHERE `type` = 'liquid'; UPDATE `chart_view` SET `render` = 'antv' WHERE `type` = 'liquid';
ALTER TABLE `panel_link` ADD COLUMN `over_time` bigint(13) NULL DEFAULT NULL COMMENT '有效截止时间' AFTER `pwd`;
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
<!--要生成的数据库表 --> <!--要生成的数据库表 -->
<table tableName="chart_view"/> <table tableName="panel_link"/>
<!-- <table tableName="sys_dict_item"/>--> <!-- <table tableName="sys_dict_item"/>-->
<!-- <table tableName="dataset_table_field"/>--> <!-- <table tableName="dataset_table_field"/>-->
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
"core-js": "^2.6.5", "core-js": "^2.6.5",
"echarts": "^5.0.1", "echarts": "^5.0.1",
"element-resize-detector": "^1.2.3", "element-resize-detector": "^1.2.3",
"element-ui": "2.13.0", "element-ui": "2.15.6",
"file-save": "^0.2.0", "file-save": "^0.2.0",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"fit2cloud-ui": "1.5.0-beta.0", "fit2cloud-ui": "1.5.0-beta.0",
......
...@@ -26,6 +26,14 @@ export function setPwd(data) { ...@@ -26,6 +26,14 @@ export function setPwd(data) {
}) })
} }
export function setOverTime(data) {
return request({
url: 'api/link/resetOverTime',
method: 'post',
data
})
}
export function switchValid(data) { export function switchValid(data) {
return request({ return request({
url: 'api/link/switchLink', url: 'api/link/switchLink',
......
...@@ -1180,6 +1180,8 @@ export default { ...@@ -1180,6 +1180,8 @@ export default {
passwd_protect: 'Password Protect', passwd_protect: 'Password Protect',
link: 'Link', link: 'Link',
link_share: 'Share Link', link_share: 'Share Link',
over_time: 'Over time',
link_expire: 'Link is expire',
link_share_desc: 'After opening the link, anyone can access the dashboard through this link.', link_share_desc: 'After opening the link, anyone can access the dashboard through this link.',
share: 'Share', share: 'Share',
datalist: 'Chart List', datalist: 'Chart List',
......
...@@ -1183,6 +1183,8 @@ export default { ...@@ -1183,6 +1183,8 @@ export default {
passwd_protect: '密碼保護', passwd_protect: '密碼保護',
link: '鏈接', link: '鏈接',
link_share: '鏈接分享', link_share: '鏈接分享',
over_time: '有效期',
link_expire: '鏈接已過期!',
link_share_desc: '開啓鏈接後,任何人可通過此鏈接訪問儀表板。', link_share_desc: '開啓鏈接後,任何人可通過此鏈接訪問儀表板。',
share: '分享', share: '分享',
datalist: '視圖列表', datalist: '視圖列表',
...@@ -1535,6 +1537,23 @@ export default { ...@@ -1535,6 +1537,23 @@ export default {
deyear: { deyear: {
label: '年份', label: '年份',
placeholder: '請選擇年份' placeholder: '請選擇年份'
},
deshowdate: {
label: '時間',
show_week: '顯示星期',
show_date: '顯示日期',
time_format: '時間格式',
date_format: '日期格式',
custom: '自定義格式',
open_mode: '展示風格',
m_default: '簡單風格',
m_elec: '電子時鐘',
m_simple: '簡單錶盤',
m_complex: '複雜錶盤',
select_openMode: '請選擇展示風格',
select_time_format: '請選擇時間各式',
select_date_format: '請選擇日期格式'
} }
} }
...@@ -1187,6 +1187,8 @@ export default { ...@@ -1187,6 +1187,8 @@ export default {
copy_short_link_passwd: '复制短链接及密码', copy_short_link_passwd: '复制短链接及密码',
passwd_protect: '密码保护', passwd_protect: '密码保护',
link: '链接', link: '链接',
over_time: '有效期',
link_expire: '链接已过期!',
link_share: '链接分享', link_share: '链接分享',
link_share_desc: '开启链接后,任何人可通过此链接访问仪表板。', link_share_desc: '开启链接后,任何人可通过此链接访问仪表板。',
share: '分享', share: '分享',
...@@ -1558,7 +1560,7 @@ export default { ...@@ -1558,7 +1560,7 @@ export default {
m_complex: '复杂表盘', m_complex: '复杂表盘',
select_openMode: '请选择展示风格', select_openMode: '请选择展示风格',
select_time_format: '请选择时间格式', select_time_format: '请选择时间格式',
select_date_format: '请选择时间格式' select_date_format: '请选择日期格式'
} }
} }
...@@ -9,7 +9,7 @@ import '@/components/canvas/custom-component' // 注册自定义组件 ...@@ -9,7 +9,7 @@ import '@/components/canvas/custom-component' // 注册自定义组件
import widgets from '@/components/widget' import widgets from '@/components/widget'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import UmyUi from 'umy-ui' import UmyUi from 'umy-ui'
import '@/utils/DateUtil'
Vue.use(UmyUi) Vue.use(UmyUi)
Vue.prototype.$echarts = echarts Vue.prototype.$echarts = echarts
Vue.config.productionTip = false Vue.config.productionTip = false
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div> <div>
<el-form ref="createOrganization" inline :model="form" size="small" label-width="80px"> <el-form ref="createOrganization" inline :model="form" size="small" label-width="80px">
<el-form-item :label="$t('panel.link_share')"> <el-form-item ref="form" :label="$t('panel.link_share')">
<el-switch <el-switch
v-model="valid" v-model="valid"
style="width: 370px;" style="width: 370px;"
...@@ -22,6 +22,19 @@ ...@@ -22,6 +22,19 @@
/> />
</el-form-item> </el-form-item>
<el-form-item v-if="valid" :label="$t('panel.over_time')">
<el-date-picker
v-model="form.overTime"
type="datetime"
placeholder="选择日期时间"
align="right"
value-format="timestamp"
:picker-options="pickerOptions"
default-time="23:59:59"
@change="resetOverTime"
/>
</el-form-item>
<el-form-item v-if="valid" label=" "> <el-form-item v-if="valid" label=" ">
<el-checkbox v-model="form.enablePwd" @change="resetEnablePwd">{{ $t('panel.passwd_protect') }} </el-checkbox> <el-checkbox v-model="form.enablePwd" @change="resetEnablePwd">{{ $t('panel.passwd_protect') }} </el-checkbox>
...@@ -45,7 +58,7 @@ ...@@ -45,7 +58,7 @@
</template> </template>
<script> <script>
import { loadGenerate, setPwd, switchValid, switchEnablePwd, shortUrl } from '@/api/link' import { loadGenerate, setPwd, switchValid, switchEnablePwd, shortUrl, setOverTime } from '@/api/link'
import { encrypt, decrypt } from '@/utils/rsaEncrypt' import { encrypt, decrypt } from '@/utils/rsaEncrypt'
export default { export default {
...@@ -65,7 +78,28 @@ export default { ...@@ -65,7 +78,28 @@ export default {
valid: false, valid: false,
form: {}, form: {},
newUrl: null, newUrl: null,
defaultForm: { enablePwd: false, pwd: null, uri: null } defaultForm: { enablePwd: false, pwd: null, uri: null },
pickerOptions: {
disabledDate: time => {
return time < (Date.now() - 8.64e7)
},
shortcuts: [{
text: '一天',
onClick: function(picker) {
picker.$emit('pick', this.limitDate('day'))
}.bind(this)
}, {
text: '一周',
onClick: (picker) => {
picker.$emit('pick', this.limitDate('week'))
}
}, {
text: '一月',
onClick: (picker) => {
picker.$emit('pick', this.limitDate('month'))
}
}]
}
} }
}, },
computed: { computed: {
...@@ -80,12 +114,14 @@ export default { ...@@ -80,12 +114,14 @@ export default {
methods: { methods: {
currentGenerate() { currentGenerate() {
loadGenerate(this.resourceId).then(res => { loadGenerate(this.resourceId).then(res => {
const { valid, enablePwd, pwd, uri } = res.data const { valid, enablePwd, pwd, uri, overTime } = res.data
this.valid = valid this.valid = valid
this.form.enablePwd = enablePwd this.form.enablePwd = enablePwd
this.form.uri = uri ? (this.origin + uri) : uri this.form.uri = uri ? (this.origin + uri) : uri
// 返回的密码是共钥加密后的 所以展示需要私钥解密一波 // 返回的密码是共钥加密后的 所以展示需要私钥解密一波
pwd && (this.form.pwd = decrypt(pwd)) pwd && (this.form.pwd = decrypt(pwd))
/* overTime && (this.form.overTime = overTime) */
overTime && (this.$set(this.form, 'overTime', overTime))
this.requestShort() this.requestShort()
}) })
}, },
...@@ -122,6 +158,16 @@ export default { ...@@ -122,6 +158,16 @@ export default {
value && !this.form.pwd && this.resetPwd() value && !this.form.pwd && this.resetPwd()
}) })
}, },
resetOverTime(value) {
const param = {
resourceId: this.resourceId,
overTime: value
}
setOverTime(param).then(res => {
// this.form.overTime = value
this.$forceUpdate()
})
},
onCopy(e) { onCopy(e) {
// alert('You just copied: ' + e.text) // alert('You just copied: ' + e.text)
...@@ -152,6 +198,33 @@ export default { ...@@ -152,6 +198,33 @@ export default {
this.newUrl = res.data this.newUrl = res.data
} }
}) })
},
limitDate(type) {
const now = new Date()
const nowTime = now.getTime()
const oneDay = 24 * 60 * 60 * 1000
if (type === 'day') {
const tom = new Date(nowTime + oneDay)
return new Date(tom.format('yyyy-MM-dd') + ' 23:59:59')
}
if (type === 'week') {
const tom = new Date(nowTime + oneDay * 7)
return new Date(tom.format('yyyy-MM-dd') + ' 23:59:59')
}
if (type === 'month') {
const result = new Date()
const curMonth = now.getMonth() + 1
if (curMonth === 12) {
result.setYear(now.getYear() + 1)
result.setMonth(0)
} else {
result.setMonth(curMonth)
}
return new Date(result.format('yyyy-MM-dd') + ' 23:59:59')
}
return null
} }
} }
} }
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<link-error v-if="showIndex===0" :resource-id="resourceId" /> <link-error v-if="showIndex===0" :resource-id="resourceId" />
<link-pwd v-if="showIndex===1" :resource-id="resourceId" @fresh-token="refreshToken" /> <link-pwd v-if="showIndex===1" :resource-id="resourceId" @fresh-token="refreshToken" />
<link-view v-if="showIndex===2" :resource-id="resourceId" /> <link-view v-if="showIndex===2" :resource-id="resourceId" />
<link-expire v-if="showIndex===3" :resource-id="resourceId" />
</div> </div>
</template> </template>
<script> <script>
...@@ -11,9 +12,10 @@ import { validate } from '@/api/link' ...@@ -11,9 +12,10 @@ import { validate } from '@/api/link'
import LinkView from './view' import LinkView from './view'
import LinkError from './error' import LinkError from './error'
import LinkPwd from './pwd' import LinkPwd from './pwd'
import LinkExpire from './overtime'
export default { export default {
components: { components: {
LinkError, LinkPwd, LinkView LinkError, LinkPwd, LinkView, LinkExpire
}, },
data() { data() {
return { return {
...@@ -31,7 +33,7 @@ export default { ...@@ -31,7 +33,7 @@ export default {
loadInit() { loadInit() {
this.link = getQueryVariable(this.PARAMKEY) this.link = getQueryVariable(this.PARAMKEY)
validate({ link: this.link }).then(res => { validate({ link: this.link }).then(res => {
const { resourceId, valid, enablePwd, passPwd } = res.data const { resourceId, valid, enablePwd, passPwd, expire } = res.data
this.resourceId = resourceId this.resourceId = resourceId
// 如果链接无效 直接显示无效页面 // 如果链接无效 直接显示无效页面
if (!valid || !resourceId) { if (!valid || !resourceId) {
...@@ -39,6 +41,11 @@ export default { ...@@ -39,6 +41,11 @@ export default {
return return
} }
if (expire) {
this.showExpire()
return
}
if (enablePwd && !passPwd) { if (enablePwd && !passPwd) {
this.showPwd() this.showPwd()
return return
...@@ -64,6 +71,9 @@ export default { ...@@ -64,6 +71,9 @@ export default {
// 显示仪表板 // 显示仪表板
showView() { showView() {
this.showIndex = 2 this.showIndex = 2
},
showExpire() {
this.showIndex = 3
} }
} }
} }
......
<template>
<el-empty :description="$t('panel.link_expire')" />
</template>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论