Commit eb2e33c6 authored by yangshuxing's avatar yangshuxing

ocr 视频版本

parent 2f2dbfcc
package com.dlbridge.feign;
import com.dlbridge.feign.bean.News;
import com.dlbridge.jadp.config.web.FeignConfig;
import com.dlbridge.jadp.fallback.NewsFallbackFactory;
import com.dlbridge.feign.bean.News;
import com.neusoft.www.utils.web.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -29,5 +28,5 @@ public interface NewsService {
public List<News> queryAllByUserId(@PathVariable("uid") int uid);
@RequestMapping(value = "/list/cmptId/{cmptid}", method = RequestMethod.GET)
List<News> queryNewsByCmptId(@PathVariable("cmptid") int cmptid);
public List<News> queryNewsByCmptId(@PathVariable("cmptid") int cmptid);
}
......@@ -69,7 +69,6 @@ public class RestfulUrlCleaner implements UrlCleaner {
replacedUrl.append(original[i]);
}
}
log.info("【sentinel】 \t\n 替换之前:"+originUrl+"\n 替换后的URL:"+replacedUrl.toString());
return replacedUrl.toString();
}
......
......@@ -3,12 +3,12 @@ package com.dlbridge.jadp.fallback;
import com.dlbridge.feign.NewsService;
import com.dlbridge.feign.bean.News;
import feign.hystrix.FallbackFactory;
import lombok.extern.log4j.Log4j;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@Log4j2
public class NewsFallbackFactory implements FallbackFactory<NewsService> {
......
package com.dlbridge.jadp.plugins.cmpt.bean;
import java.io.Serializable;
import java.util.Date;
public class News implements Serializable {
private static final long serialVersionUID = 6077164370141464290L;
private String id;
private String title;
private String type;
private String cover;
private String content;
private int delFlag;
private Integer userId;
private Date createDate;
private Date updateDate;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCover() {
return cover;
}
public void setCover(String cover) {
this.cover = cover;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public int getDelFlag() {
return delFlag;
}
public void setDelFlag(int delFlag) {
this.delFlag = delFlag;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
@Override
public String toString() {
return "News{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
", type='" + type + '\'' +
", cover='" + cover + '\'' +
", content='" + content + '\'' +
", delFlag=" + delFlag +
", userId=" + userId +
", createDate=" + createDate +
", updateDate=" + updateDate +
'}';
}
}
package com.dlbridge.jadp.plugins.cmpt.dao.mapper;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreField;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -29,4 +30,9 @@ public interface CmptScoreFieldMapper {
*/
public void update(CmptScoreField cmptScoreField);
void deleteOcrFiled(@Param("cmptId") int cmptId,@Param("type") int type);
CmptScoreField getCmptScoreFieldByCmptIdAndType(@Param("cmptId") int cmptId,@Param("type") int type);
List<CmptScoreField> getCmptScoreFieldByCmptIdWithoutOcr(Integer cmptId);
}
......@@ -8,6 +8,20 @@
where cmpt_id=#{cmptId} and is_delete=0 order by field_index
</select>
<select id="getCmptScoreFieldByCmptIdAndType" resultType="CmptScoreField">
select id,cmpt_id as cmptId,field_name
as fieldName,field_type as fieldType,field_index as filedIndex
from gk_cmpt_score_field
where cmpt_id=#{cmptId} and field_type = #{type} limit 1
</select>
<select id="getCmptScoreFieldByCmptIdWithoutOcr" resultType="CmptScoreField">
<![CDATA[
select id,cmpt_id as cmptId,field_name
as fieldName,field_type as fieldType,field_index as filedIndex
from gk_cmpt_score_field
where cmpt_id=#{cmptId} and field_type <> 3 and is_delete=0
]]>
</select>
<insert id="save" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
INSERT INTO gk_cmpt_score_field (cmpt_id,field_name,field_type,field_index,insert_time)
VALUES(#{cmptId},#{fieldName},#{fieldType},#{filedIndex},now())
......@@ -22,6 +36,9 @@
<if test="isDelete != null">
is_delete=#{isDelete},
</if>
<if test="fieldType != null">
field_type=#{fieldType},
</if>
<if test="true">
update_time = now()
</if>
......@@ -29,4 +46,8 @@
where id=#{id}
</update>
<update id="deleteOcrFiled">
UPDATE gk_cmpt_score_field set is_delete = 1,update_time = now()
where cmpt_id=#{cmptId} and field_type=#{type}
</update>
</mapper>
\ No newline at end of file
package com.dlbridge.jadp.plugins.cmpt.service;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreField;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreRule;
import com.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptScoreFieldMapper;
import com.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptScoreRuleMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -47,4 +45,16 @@ public class CmptScoreFieldService {
public void saveOrUpdate(CmptScoreField cmptScoreField) {
saveOrUpdate(Collections.singletonList(cmptScoreField));
}
public void deleteOcrFiled(int cmptId, int type) {
cmptScoreFieldMapper.deleteOcrFiled(cmptId,type);
}
public CmptScoreField getCmptScoreFieldByCmptIdAndType(int cmptId, int type) {
return cmptScoreFieldMapper.getCmptScoreFieldByCmptIdAndType(cmptId,type);
}
public List<CmptScoreField> getCmptScoreFieldByCmptIdWithoutOcr(Integer cmptId) {
return cmptScoreFieldMapper.getCmptScoreFieldByCmptIdWithoutOcr(cmptId);
}
}
package com.dlbridge.jadp.plugins.cmpt.web;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreField;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreRule;
import com.dlbridge.jadp.plugins.cmpt.service.CmptScoreFieldService;
import com.dlbridge.jadp.plugins.cmpt.service.CmptScoreRuleService;
import com.neusoft.www.utils.web.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.ApiSort;
import io.swagger.models.auth.In;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
......@@ -47,6 +41,28 @@ public class CmptScoreFieldController {
cmptScoreFieldService.saveOrUpdate(cmptScoreField);
return Result.success().setContent(cmptScoreField);
}
@RequestMapping("saveOrUpdateOcr")
@ResponseBody
private Result saveOrUpdateOcr(@RequestParam("cmptId") int cmptId,
@RequestParam("isOpen") int open){
if(open == 1){
CmptScoreField field = cmptScoreFieldService.getCmptScoreFieldByCmptIdAndType(cmptId, 3);
if(field == null){
field = new CmptScoreField();
}
field.setCmptId(cmptId);
field.setFieldType(3);
field.setIsDelete(0);
field.setFieldName("OCR成绩自动识别项");
field.setFiledIndex(0);
cmptScoreFieldService.saveOrUpdate(field);
return Result.success().setContent(field.getId());
}else{
cmptScoreFieldService.deleteOcrFiled(cmptId,3);
}
return Result.success();
}
@RequestMapping("del/{id}")
@ResponseBody
......
......@@ -2,10 +2,11 @@ package com.dlbridge.jadp.plugins.cmpt.web;
import com.alibaba.fastjson.JSONObject;
import com.dlbridge.feign.NewsService;
import com.dlbridge.feign.bean.News;
import com.dlbridge.jadp.common.service.JService;
import com.dlbridge.jadp.job.CountJob;
import com.dlbridge.jadp.plugins.cmpt.bean.*;
import com.dlbridge.jadp.plugins.cmpt.bean.Contact;
import com.dlbridge.jadp.plugins.cmpt.bean.*;
import com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt;
import com.dlbridge.jadp.plugins.cmpt.dao.model.FaceImg;
import com.dlbridge.jadp.plugins.cmpt.dao.model.Manual;
......@@ -14,7 +15,6 @@ import com.dlbridge.jadp.plugins.cmpt.service.*;
import com.dlbridge.jadp.plugins.cmpt.utils.*;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import com.dlbridge.feign.bean.News;
import com.neusoft.www.utils.web.Result;
import io.swagger.annotations.*;
import lombok.extern.log4j.Log4j2;
......
package com.dlbridge.jadp.plugins.cmpt.web;
import com.dlbridge.feign.NewsService;
import com.dlbridge.feign.bean.News;
import com.dlbridge.jadp.plugins.cmpt.bean.FuncSetting;
import com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt;
import com.dlbridge.jadp.plugins.cmpt.service.CmptService;
import com.dlbridge.feign.bean.News;
import com.dlbridge.jadp.plugins.cmpt.service.FuncSettingService;
import com.neusoft.www.utils.web.Result;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
......
......@@ -64,7 +64,8 @@ public class ScoreController {
@PageView
public ModelAndView index(@PathVariable("cmptId") Integer cmptId, ModelAndView mv) {
Cmpt cmpt = cmptService.queryCmptBycmptId(cmptId);
List<CmptScoreField> fields = cmptScoreFieldService.getCmptScoreFieldByCmptId(cmptId);
List<CmptScoreField> fields = cmptScoreFieldService.getCmptScoreFieldByCmptIdWithoutOcr(cmptId);
List<CmptScoreRule> rules = ruleService.getCmptScoreRulesByCmptId(cmptId);
long startTime = new Date().getTime();
......@@ -79,6 +80,9 @@ public class ScoreController {
mv.addObject("isClose",false);
}
FuncSetting settingByCmptId = funcSettingService.getSettingByCmptId(cmptId);
Optional<CmptScoreField> first = cmptScoreFieldService.getCmptScoreFieldByCmptId(cmptId)
.stream().filter(cmptScoreField -> cmptScoreField.getFieldType() == 3).findFirst();
mv.addObject("hasOcr",first.isPresent());
mv.addObject("rules",rules);
mv.addObject("fields",fields);
mv.addObject("setting",settingByCmptId);
......
......@@ -2,7 +2,7 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.password=mysql_master_geexek_408
spring.datasource.username=mysql_master
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://rm-bp15ojs1ys1eur32zwo.mysql.rds.aliyuncs.com:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.url=jdbc:mysql://rm-bp15ojs1ys1eur32z.mysql.rds.aliyuncs.com:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
mybatis.typeAliasesPackage=com.dlbridge.jadp.plugins
mybatis.mapperLocations=classpath:com/dlbridge/jadp/**/**.xml
......@@ -41,28 +41,22 @@ pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
weixin.micro.appid=wxf599f7763ad997c5
weixin.micro.secret=adc1789fddbaef7cf5b38f60b956529b
geexek.user.url=https://www.geexek.com/
geexek.cmpt.url=http://timerbackend.geexek.com/
geexek.shamus.url=http://shamus.geexek.com/
server.url=http://zs.geexek.com/
timer.url=http://timer.geexek.com/
server.url.https=https://zs.geexek.com/
weixin.micro.appid=wx96ce27826f39cdb3
weixin.micro.secret=11bfc4902e7c992b57a2cdcfeded623f
geexek.user.url=https://test.geexek.com.cn/
geexek.cmpt.url=https://testtimerbackend.geexek.cn/
geexek.shamus.url=http://shamus.geexek.com.cn/
timer.url=http://testtimer.geexek.cn/
server.url=http://testzs.geexek.com.cn/
server.url.https=https://testzs.geexek.com.cn/
spring.redis.cluster.max-redirects=3
spring.redis.cluster.nodes=10.29.114.167:7001,10.29.114.167:7002,10.29.114.167:7003
spring.redis.cluster.nodes=172.16.214.235:7001,172.16.214.235:7002,172.16.214.235:7003
spring.servlet.multipart.max-file-size=10Mb
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-request-size=50Mb
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
spring.application.name=micro-gksite
eureka.client.service-url.defaultZone=http://10.29.116.151:8020/eureka/
eureka.client.instance.instance-id=micro-gksite
eureka.instance.hostname=micro-gksite
ribbon.eureka.enable=true
eureka.instance.lease-renewal-interval-in-seconds=2
eureka.instance.lease-expiration-duration-in-seconds=5
spring.servlet.multipart.max-request-size=50Mb
spring.application.name=micro-gksite
ribbon.eureka.enable=true
#feign调用连接超时时间
feign.client.config.default.connect-timeout=2000
#feign调用读取超时时间
......@@ -87,12 +81,14 @@ spring.sleuth.sampler.probability=0.1
spring.zipkin.sender.type=web
swagger.enable=false
base.url=http://testzs.geexek.com.cn/
spring.cloud.nacos.server-addr=http://nacos.geexek.com.cn
spring.cloud.nacos.discovery.group=test
spring.cloud.nacos.server-addr=https://nacos.geexek.com
spring.cloud.nacos.discovery.group=production
#spring.cloud.sentinel.servlet.blockPage=test
spring.cloud.sentinel.transport.dashboard=https://sentinel.geexek.com
spring.cloud.sentinel.transport.dashboard=https://nacos.geexek.com
spring.cloud.sentinel.transport.port=8719
spring.cloud.sentinel.eager=true
spring.cloud.sentinel.filter.enabled=false
......@@ -100,11 +96,11 @@ spring.cloud.sentinel.skip-keys=cmptId
spring.cloud.sentinel.exclude-urls=/static/**,**.css,**.js
## nacos 地址
spring.cloud.sentinel.datasource.ds.nacos.server-addr=http://nacos.geexek.com.cn
spring.cloud.sentinel.datasource.ds.nacos.server-addr=https://nacos.geexek.com
spring.cloud.sentinel.datasource.ds.nacos.dataId=micro-gksite-sentinel
spring.cloud.sentinel.datasource.ds.nacos.data-type=json
spring.cloud.sentinel.datasource.ds.nacos.groupId=test
spring.cloud.sentinel.datasource.ds.nacos.groupId=production
#spring.cloud.sentinel.datasource.ds1.nacos.namespace=fad8a39-a3e7-49a1-ae96-0f7aaf39136b
#
## 规则类型
spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow
\ No newline at end of file
spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow
......@@ -94,11 +94,11 @@ spring.cloud.sentinel.transport.dashboard=http://localhost:9948
spring.cloud.sentinel.transport.port=8719
spring.cloud.sentinel.eager=true
spring.cloud.sentinel.filter.enabled=false
myspring.cloud.sentinel.skip-keys=cmptId
spring.cloud.sentinel.skip-keys=cmptId
spring.cloud.sentinel.exclude-urls=/static/**,**.css,**.js
## nacos 地址
spring.cloud.sentinel.datasource.ds.nacos.server-addr=192.168.1.108:8848
spring.cloud.sentinel.datasource.ds.nacos.server-addr=192.168.1.115:8848
spring.cloud.sentinel.datasource.ds.nacos.dataId=micro-gksite-sentinel
spring.cloud.sentinel.datasource.ds.nacos.data-type=json
spring.cloud.sentinel.datasource.ds.nacos.groupId=dev
......
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#spring.datasource.password=geexekNewPass4!
#spring.datasource.username=geexek
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://47.111.166.211:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.password=mysql_master_geexek_408
spring.datasource.username=mysql_master
spring.datasource.password=geexekNewPass4!
spring.datasource.username=geexek
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://rm-bp15ojs1ys1eur32zwo.mysql.rds.aliyuncs.com:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.url=jdbc:mysql://47.111.166.211:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
mybatis.typeAliasesPackage=com.dlbridge.jadp.plugins
mybatis.mapperLocations=classpath:com/dlbridge/jadp/**/**.xml
......@@ -49,11 +43,11 @@ pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
weixin.micro.appid=wx96ce27826f39cdb3
weixin.micro.secret=11bfc4902e7c992b57a2cdcfeded623f
geexek.user.url=https://www.geexek.com/
geexek.cmpt.url=http://timerbackend.geexek.com/
geexek.user.url=https://test.geexek.com.cn/
geexek.cmpt.url=http://testtimerbackend.geexek.cn/
geexek.shamus.url=http://shamus.geexek.com/
timer.url=http://testtimer.geexek.com/
server.url=http://testzs.geexek.com.cn/
timer.url=http://testtimer.geexek.cn/
server.url=https://testzs.geexek.com.cn/
server.url.https=https://testzs.geexek.com.cn/
spring.redis.cluster.max-redirects=3
spring.redis.cluster.nodes=172.16.214.235:7001,172.16.214.235:7002,172.16.214.235:7003
......@@ -107,4 +101,4 @@ spring.cloud.sentinel.datasource.ds.nacos.groupId=test
## 规则类型
spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow
base.url=http://testzs.geexek.com.cn/
\ No newline at end of file
base.url=https://testzs.geexek.com.cn/
\ No newline at end of file
......@@ -4,11 +4,11 @@ spring:
cloud:
nacos:
config:
server-addr: http://192.168.1.114:8848
server-addr: http://192.168.1.115:8848
file-extension: properties
group: dev
namespace: 187c2f4d-80c2-4a67-b4e5-319d5c9151d1
server-addr: http://192.168.1.114:8848
server-addr: http://192.168.1.115:8848
discovery:
group: dev
namespace: 187c2f4d-80c2-4a67-b4e5-319d5c9151d1
......
......@@ -28,13 +28,38 @@
<link rel="stylesheet" href="${ctxStatic}/leaflet/css/leaflet_label.css"/>
<link rel="stylesheet" href="${ctxStatic}/cmpt/road.css?v=<%=System.currentTimeMillis()%>"/>
<link rel="stylesheet" href="${ctxStatic}/cmpt/road-new.css?v=<%=System.currentTimeMillis()%>"/>
<script src="${ctxStatic}/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<script src="${ctxStatic}/newdermon/vendor/jquery/jquery.min.js"></script>
<script src="${ctxStatic}/newdermon/js/jquery-ui.js"></script>
<script src="http://cdn.highcharts.com.cn/highcharts/8.0.4/highcharts.js"></script>
<script type="text/javascript" charset="utf-8" src="${ctxStatic}/layer/layer.js"></script>
<link rel="stylesheet" href="${ctxStatic}/layer/skin/layer.css">
<link rel="stylesheet" href="/static/cmpt/score.css?<%=System.currentTimeMillis()%>">
<style>
.select{
line-height: 45px;
margin: 14px 0px 0px 0px;
text-transform: none;
padding: 0px 15px;
background: rgba(250,250,250,1);
border: none;
outline: none;
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
cursor: pointer;
width: 100px;
height: 45px;
background: rgba(247,247,247,1);
border-radius: 4px;
border: 1px solid rgba(229,229,229,1);
font-size:16px;
}
.ocr-opt{
justify-content: center;
display: flex;
align-items: center;
height: 80px;
}
</style>
</head>
<body>
<jsp:include page="../common/header.jsp"></jsp:include>
......@@ -43,50 +68,8 @@
<div class="rght">
<div class="title-new">
<span class="title">提交成绩</span>
<%-- <div style="line-height: 22px">
<span class="road-notice"></span>
<span class="road-notice-txt">此功能仅适用于自助赛事的成绩提交,比赛开始后不可修改</span>
</div>--%>
</div>
<%--<div class="section">
<h3 class="title">上传次数</h3>
<div>
<label for="" class="tip">比赛期间上传成绩次数</label>
<input type="number" class="count-input" placeholder="请填写上传次数" value="${fn:length(rules)}" data-value="${fn:length(rules)}">
</div>
<div id="rule-section" style="margin-bottom: 15px">
<c:forEach var="item" items="${rules}" varStatus="vs">
<div class="rule-item" data-id="${item.id}">
<label for="">第${vs.index+1}次上传成绩的起止时间</label>
<div class="input-group">
<input type="text" ${isClose ? 'disabled':''} class="time-input" readonly name="start"
onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'})"
value="<fmt:formatDate value='${item.startTime}' pattern='yyyy-MM-dd HH:mm'></fmt:formatDate>" >
<span class="down-arrow"></span>
</div>
<div class="line"></div>
<div class="input-group">
<input type="text" ${isClose ? 'disabled':''} class="time-input" readonly name="end"
onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'})"
value="<fmt:formatDate value='${item.endTime}' pattern='yyyy-MM-dd HH:mm'></fmt:formatDate>">
<span class="down-arrow"></span>
</div>
</div>
</c:forEach>
<div class="clear"></div>
</div>
<c:if test="${!isClose}">
<div style="text-align: center;" >
<span class="save-btn">保存</span>
<div class="clear"></div>
</div>
</c:if>
</div>--%>
<div class="section">
<h3 class="title">成绩照片</h3>
<div style="line-height: 22px">
......@@ -95,33 +78,59 @@
</div>
<div class="add-btn">
<span>+</span>
<span>添加照片项</span>
<span>添加佐证项</span>
</div>
</div>
<div style="margin-top: -10px;margin-bottom: 50px">
<table style="width: 100%" class="rule-field">
<colgroup>
<col width="90%">
<col width="10%">
<col width="55%">
<col width="25%">
<col width="20%">
</colgroup>
<thead>
<tr>
<th style="padding-left: 25px">照片</th>
<th style="padding-left: 36px">操作</th>
<th style="padding-left: 25px">佐证项名称</th>
<th style="text-align: center">类型</th>
<th style="text-align: center">操作</th>
</tr>
</thead>
<tbody>
<c:if test="${cmpt.cmptType != 7}">
<tr id="ocr" data-type="3" data-index="0">
<td class="name">OCR成绩自动识别项</td>
<td style="text-align: center;position: relative;font-size: 16px;"><span>照片</span></td>
<td class="ocr-opt">
<div class="radio ${hasOcr?'checked':'unchecked'} status" data-type="4" data-visibility="1">
<span class="txt">${hasOcr?'启动':'未启动'}</span>
<span class="dot"></span>
</div>
</td>
</tr>
</c:if>
<c:forEach var="item" items="${fields}">
<tr data-id="${item.id}" data-index="${item.filedIndex}">
<tr data-id="${item.id}" data-type="${item.fieldType}" data-index="${item.filedIndex}">
<td class="name">${item.fieldName}</td>
<td style="text-align: right">
<td style="text-align: center;position: relative;">
<div style="visibility: ${item.fieldType == 3 ? 'hidden':'visible'}">
<select name="" id="" class="select">
<option value="1" ${item.fieldType == 1?'selected':''}>照片</option>
<option value="2" ${item.fieldType == 2?'selected':''}>视频</option>
</select>
<span class="down-arrow"></span>
</div>
</td>
<td style="text-align: center">
<div>
<div class="opt edit.opt">
<span class="icon-edit"></span><span class="edit">编辑</span>
</div>
<div class="opt del">
<div class="opt del" style="display: ${item.fieldType == 3 ? 'none':'flex'}">
<span class="icon-del"></span><span class="del">删除</span>
</div>
</div>
......@@ -131,22 +140,6 @@
</tbody>
</table>
</div>
<!--成绩附加项-->
<%--<div class="section">
<h3 class="title">成绩附加项</h3>
<div style="line-height: 22px">
<span class="road-notice"></span>
<span class="road-notice-txt">每一个附加项在每次成绩上传时均为必填,请谨慎启用</span>
</div>
<div class="extra-item">
<span>里程</span>
<div class="radio status ${setting.mileage == 1?'checked':'unchecked'}" >
<span class="txt">${setting.mileage == 1?'启动':'未启动'}</span>
<span class="dot"></span>
</div>
</div>
</div>--%>
</div>
</div>
......@@ -158,7 +151,7 @@
<div class="mask">
<div class="dialog">
<h3>照片名称</h3>
<h3>佐证项名称</h3>
<input type="text" placeholder="请输入照片名称,最多10个字">
<div style=" margin: 70px 0px 0px 0px;text-align: right;">
<span class="btn cancel" style="margin-right: 30px">取消</span>
......@@ -169,16 +162,4 @@
<div class="rule-item template" style="display: none">
<label for="">第1次上传成绩的起止时间</label>
<div class="input-group">
<input type="text" class="time-input" readonly name="start" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'})" value="${ cmpt.startTime}">
<span class="down-arrow"></span>
</div>
<div class="line"></div>
<div class="input-group">
<input type="text" class="time-input" readonly name="end" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'})" value="${ cmpt.startTime}">
<span class="down-arrow"></span>
</div>
</div>
</html>
......@@ -34,6 +34,18 @@
<script type="text/javascript" charset="utf-8" src="${ctxStatic}/layer/layer.js"></script>
<link rel="stylesheet" href="${ctxStatic}/layer/skin/layer.css">
<link rel="stylesheet" href="/static/cmpt/score.css?<%=System.currentTimeMillis()%>">
<style>
.img-item video{
width: 66px;
height: 66px;
}
.preview video{
width: 100%;
height: 100%;
border: none;
outline: none;
}
</style>
</head>
<body>
<jsp:include page="../common/header.jsp"></jsp:include>
......@@ -148,7 +160,8 @@
</div>
<div class="flex score-img" v-on:click.stop="">
<div class="img-item" v-for="item in score.scoreFieldValueList">
<img v-on:click="preview($event)" class="img" :src="item" alt="">
<video v-if="item.fieldType == 2" v-on:click="preview($event,item)" name="media"><source :src="item.scoreFieldValue" type="video/mp4"></video>
<img v-else v-on:click="preview($event,item)" class="img" :src="item.scoreFieldValue" alt="">
<span class="bigger"></span>
</div>
</div>
......@@ -181,7 +194,8 @@
<div id="dialog" v-show="dialog" >
<div style="position: relative;" class="preview">
<img width="auto" height="100%" v-bind:src="previewImg" alt="">
<video v-if="previewItem.fieldType==2" v-bind:src="previewItem.previewImg" controls name="media" preload="none"></video>
<img v-else width="auto" height="100%" v-bind:src="previewItem.previewImg" alt="">
<span v-on:click="closeDialog" class="iconClose"></span>
</div>
</div>
......
......@@ -30,7 +30,7 @@
<link rel="stylesheet" href="${ctxStatic}/cmpt/road-new.css"/>
<script src="${ctxStatic}/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<script src="${ctxStatic}/newdermon/vendor/jquery/jquery.min.js"></script>
<script src="http://cdn.highcharts.com.cn/highcharts/8.0.4/highcharts.js"></script>
<script src="https://cdn.highcharts.com.cn/highcharts/8.0.4/highcharts.js"></script>
<script type="text/javascript" charset="utf-8" src="${ctxStatic}/layer/layer.js"></script>
<link rel="stylesheet" href="${ctxStatic}/layer/skin/layer.css">
<link rel="stylesheet" href="/static/cmpt/score.css?<%=System.currentTimeMillis()%>">
......@@ -54,7 +54,7 @@
getCharts();
function getCharts() {
$.ajax({
url : 'http://testzs.geexek.com.cn/geexekscore/api/v1/cmpt-score-rule-scoreinfo/scoreStatistic?cmptId='+getCId(),
url : baseURL+'geexekscore/api/v1/cmpt-score-rule-scoreinfo/scoreStatistic?cmptId='+getCId(),
success:function (data) {
var roads = data.data;
var roadNames = [];
......
......@@ -125,7 +125,7 @@
<span class="menu-txt">形象管理</span>
</a>
</li>
<ul>
<ul style="padding: 0px">
<li class="cmptSetting menu-item">
<a href="/gk/cmpt/cmptSetting/${cmpt.cmptId}?uId=${uId}&cId=${cId}&timestamp=${timestamp}&sign=${sign}">
<span class="icon-function"></span>
......@@ -133,7 +133,7 @@
<%--<span class="meun-arrow"></span>--%>
</a>
</li>
<ul class="collapse list-unstyled show">
<ul class="collapse list-unstyled show" style="padding: 0px">
<li class="banner menu-sub-item">
<a href="/gk/banner/index/${cmpt.cmptId}?uId=${uId}&cId=${cId}&timestamp=${timestamp}&sign=${sign}">
<span class="left-arrow"></span>
......@@ -209,13 +209,13 @@
<span class="arrow"></span>
</a>
</li>
<ul>
<li class="route menu-sub-item">
<ul style="padding: 0px">
<%-- <li class="route menu-sub-item">
<a href="/gk/route/index/${cmpt.cmptId}?uId=${uId}&cId=${cId}&timestamp=${timestamp}&sign=${sign}">
<span class="left-arrow"></span>
<span class="menu-txt">路线下载</span>
</a>
</li>
</li>--%>
<li class="road menu-sub-item">
<a href="/gk/road/index/${cmpt.cmptId}?uId=${uId}&cId=${cId}&timestamp=${timestamp}&sign=${sign}">
<span class="left-arrow"></span>
......
......@@ -114,9 +114,10 @@ tbody tr td{
}
.rule-field tbody tr td:first-child{
padding-left: 25px;
height: 80px;
}
.rule-field tbody tr td:nth-child(2n){
padding-right: 25px;
text-align: center;
}
.rule-field tbody tr:nth-child(odd){
background:rgba(247,247,247,1);
......@@ -135,7 +136,6 @@ tbody tr td{
}
.opt{
display: flex;
width: 104px;
height: 60px;
align-items: center;
cursor: pointer;
......@@ -212,8 +212,8 @@ label{
background-position: center;
background-repeat: no-repeat;
position: absolute;
top: 15px;
right: 4px;
top: 40px;
right: 86px;
background-size: contain;
}
.line{
......
......@@ -53,8 +53,8 @@ $(document).ready(function () {
param.push(obj);
})
if(timerCount < 3){
layer.msg('保存用于计时的打卡点不能少于三个!',{icon:5});
if(timerCount < 2){
layer.msg('保存用于计时的打卡点不能少于两个!',{icon:5});
return ;
}
if(flag){
......@@ -335,7 +335,7 @@ function getPlaceMakers(roadId) {
$('.markers-edit').append('<div data-checkpointId="'+e.checkpointId+'" class="marker">' +
'<input data-before="'+e.name+'" type="text" value="'+e.name+'">' +
'<input type="number" value="'+(e.distance?Number(e.distance/1000).toFixed(3):"")+'" placeholder="单位:KM">'+
'<input type="number" value="'+((e.distance === '' || e.distance == null)? "0":Number(e.distance/1000).toFixed(3))+'" placeholder="单位:KM">'+
'<input type="checkbox" '+(e.isTime ? "checked=checked":"")+'></div>');
});
}
......
This diff is collapsed.
......@@ -20,7 +20,10 @@ var score = new Vue({
reviewStatus : 0, // 0待审核 1审核通过 -1审核不通过
pass: false,
noPass: false,
previewImg: '',
previewItem: {
previewImg:'',
fieldType:1
},
dialog: false,
totalPage:0,
roads: [],
......@@ -64,9 +67,11 @@ var score = new Vue({
closeDialog:function(){
score.$data.dialog = false;
},
preview : function (event) {
preview : function (event,item) {
score.$data.dialog = true;
score.$data.previewImg = event.target.src
score.$data.previewItem.fieldType = item.fieldType;
score.$data.previewItem.previewImg = item.scoreFieldValue;
},
changeStatus:function (event) {
score.$data.reviewStatus = event;
......@@ -77,10 +82,14 @@ var score = new Vue({
score.$data.checked = !score.$data.checked
},
changeRoad:function () {
console.log(score.$data.selectedRoadId)
console.log(score.$data.selectedRoadId);
score.$data.jumpToPage = 1;
score.$data.param.page = 0;
reviewPage.reloadPage();
},
searchKd:function () {
score.$data.jumpToPage = 1;
score.$data.param.page = 0;
reviewPage.reloadPage();
},
changeOrigin:function () {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment