| | |
| | | <version>${swagger.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.github.ulisesbocchio</groupId> |
| | | <artifactId>jasypt-spring-boot-starter</artifactId> |
| | | <version>2.0.0</version> |
| | | </dependency> |
| | | |
| | | <!-- 获取系统信息 --> |
| | | <dependency> |
| | | <groupId>com.github.oshi</groupId> |
| | |
| | | <version>13.0</version> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.ots</groupId> |
| | | <artifactId>tai-ots-framework</artifactId> |
| | |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | |
| | | <!-- <build>--> |
| | | <!-- <finalName>${project.artifactId}</finalName>--> |
| | | <!-- <plugins>--> |
| | | <!-- <plugin>--> |
| | | <!-- <groupId>org.springframework.boot</groupId>--> |
| | | <!-- <artifactId>spring-boot-maven-plugin</artifactId>--> |
| | | <!-- <configuration>--> |
| | | <!-- <fork>true</fork> <!– 如果没有该配置,devtools不会生效 –>--> |
| | | <!-- </configuration>--> |
| | | <!-- </plugin>--> |
| | | <!-- </plugins>--> |
| | | <!-- </build>--> |
| | | |
| | | |
| | | <build> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-compiler-plugin</artifactId> |
| | | <configuration> |
| | | <source>1.8</source> |
| | | <target>1.8</target> |
| | | <encoding>utf-8</encoding> |
| | | </configuration> |
| | | </plugin> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | <configuration> |
| | | <mainClass>com.ots.OtsApplication</mainClass> |
| | | <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments> |
| | | <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 --> |
| | | </configuration> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |
| | | |
| | | <repositories> |
| | | <repository> |
| | | <id>public</id> |
| | | <name>aliyun nexus</name> |
| | | <url>http://maven.aliyun.com/nexus/content/groups/public/</url> |
| | | <releases> |
| | | <enabled>true</enabled> |
| | | </releases> |
| | | </repository> |
| | | </repositories> |
| | | |
| | | <pluginRepositories> |
| | | <pluginRepository> |
| | | <id>public</id> |
| | | <name>aliyun nexus</name> |
| | | <url>http://maven.aliyun.com/nexus/content/groups/public/</url> |
| | | <releases> |
| | | <enabled>true</enabled> |
| | | </releases> |
| | | <snapshots> |
| | | <enabled>false</enabled> |
| | | </snapshots> |
| | | </pluginRepository> |
| | | </pluginRepositories> |
| | | |
| | | </project> |
| | |
| | | package com.ots; |
| | | import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; |
| | | import org.jasypt.encryption.StringEncryptor; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.CommandLineRunner; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; |
| | | import org.springframework.context.ApplicationContext; |
| | | import org.springframework.core.env.Environment; |
| | | |
| | | @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) |
| | | @EnableEncryptableProperties |
| | | public class OtsApplication implements CommandLineRunner { |
| | | |
| | | private static final Logger l = LoggerFactory.getLogger(OtsApplication.class); |
| | | |
| | | @Autowired |
| | | private StringEncryptor stringEncryptor; |
| | | |
| | | @Autowired |
| | | private ApplicationContext applicationContext; |
| | | |
| | | public class OtsApplication { |
| | | public static void main(String[] args) { |
| | | |
| | | SpringApplication.run(OtsApplication.class, args); |
| | |
| | | builder.append("** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **\n"); |
| | | builder.append("********************************************************************\n"); |
| | | System.out.println(builder.toString()); |
| | | } |
| | | |
| | | @Override |
| | | public void run(String... args) throws Exception { |
| | | Environment environment = applicationContext.getEnvironment(); |
| | | l.info(stringEncryptor.encrypt(environment.getProperty("password"))); |
| | | } |
| | | } |
| | |
| | | package com.ots.project.exam.controller; |
| | | import com.ots.common.constant.UserConstants; |
| | | import com.ots.common.enums.SenderType; |
| | | import com.ots.common.enums.TestMemberStatusEnum; |
| | | import com.ots.common.enums.TestPackageStatusEnum; |
| | | import com.ots.common.enums.UserTypeEnum; |
| | | import com.ots.common.utils.MessageUtils; |
| | |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | import static com.ots.common.enums.TestMemberStatusEnum.*; |
| | | import static com.ots.common.enums.UserTypeEnum.SYS_USER; |
| | | |
| | | @Controller |
| | |
| | | if (!SYS_USER.getUserType().equals(sysUser.getUserType())) { |
| | | entTestMember.setUserId(sysUser.getUserId()); |
| | | } |
| | | List<String> recyclingStatus = Arrays.asList( TestMemberStatusEnum.completed.getCode(), timeOut.getCode()); |
| | | entTestMember.setStatusList(recyclingStatus); |
| | | return getDataTable(entTestMemberService.selectEntTestMemberTopList(entTestMember)); |
| | | } |
| | | @PostMapping("/listTopAnswering2") |
| | | @ResponseBody |
| | | public TableDataInfo listTopAnswering2(EntTestMember entTestMember) { |
| | | startPage(); |
| | | User sysUser = ShiroUtils.getSysUser(); |
| | | if (!SYS_USER.getUserType().equals(sysUser.getUserType())) { |
| | | entTestMember.setUserId(sysUser.getUserId()); |
| | | } |
| | | List<String> recyclingStatus = Arrays.asList( answering.getCode()); |
| | | entTestMember.setStatusList(recyclingStatus); |
| | | return getDataTable(entTestMemberService.selectEntTestMemberTopList(entTestMember)); |
| | | } |
| | | @PostMapping("/queryList") |
| | |
| | | public AjaxResult editSave(@PathVariable("userId") Long userId, @PathVariable("addNum") Long addNum) { |
| | | return toAjax(sysUserExtendService.updateTestNum(userId, addNum)); |
| | | } |
| | | @PostMapping("/checkUser") |
| | | @ResponseBody |
| | | public AjaxResult checkUser() { |
| | | User sysUser = ShiroUtils.getSysUser(); |
| | | int result = 0; |
| | | if ("02".equals(sysUser.getUserType())) { |
| | | result = 1; |
| | | } |
| | | return toAjax(result); |
| | | } |
| | | @RequiresPermissions("exam:enterprise:remove") |
| | | @PostMapping("/remove") |
| | | @ResponseBody |
| | |
| | | |
| | | setSysHeadToEnglish(tExamReportList, reportResultMap, reportType); |
| | | |
| | | writeFile(fileNameResult, reportResultMap); |
| | | |
| | | writeMutiFile(fileNameResult, reportResultMap); |
| | | |
| | | return AjaxResult.success(examUtilService.getLangOrLocalLangString("", tExamReportList.get(0).getProductName()) + "_DateReport.xlsx"); |
| | | } |
| | |
| | | writer.close(); |
| | | } |
| | | } |
| | | private void writeMutiFile(String fileNameResult, Map<String, List<List<Object>>> reportResultMap) { |
| | | FileUtil.del(fileNameResult); |
| | | ExcelWriter writer = null; |
| | | for (Map.Entry<String, List<List<Object>>> entryReport : reportResultMap.entrySet()) { |
| | | if (Objects.isNull(writer)) { |
| | | writer = new ExcelWriter(fileNameResult,entryReport.getKey()); |
| | | } |
| | | writer.setSheet(entryReport.getKey()); |
| | | StyleSet styleSet = writer.getStyleSet(); |
| | | styleSet.setBorder(BorderStyle.NONE, IndexedColors.OLIVE_GREEN); |
| | | writer.write(entryReport.getValue(), true); |
| | | writer.autoSizeColumnAll(); |
| | | writer.setSheet(entryReport.getKey()); |
| | | } |
| | | writer.close(); |
| | | } |
| | | private void setReportResultList(List<Object> demographyHeadSystem, List<List<Object>> reportResultList, Map<String, Object> textMap) { |
| | | |
| | | List<Object> reportValue = new ArrayList<>(); |
| | |
| | | private String getReportType(TExamReport tExamReport) { |
| | | String reportType = ReportTypeEnum.RuiLin.getCode(); |
| | | TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(tExamReport.getProductId()); |
| | | tExamPaper.getName(); |
| | | if (tExamPaper.getName().indexOf("睿邻")>0 || tExamPaper.getName().indexOf("RuiLin")>0 ) { |
| | | return reportType; |
| | | } |
| | | List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(tExamPaper.getReportTemplateId()); |
| | | for (TReportTemplate tReportTemplate : tReportTemplateList) { |
| | | if (Objects.isNull(tReportTemplate.getReportType())) { |
| | |
| | | private Date emailTime; |
| | | |
| | | private String status; |
| | | private List<String> statusList; |
| | | private String firstName; |
| | | private String lastName; |
| | | private String userName; |
| | |
| | | TExamReport selectTExamReportById(Long id); |
| | | |
| | | List<TExamReport> selectTExamReportList(TExamReport tExamReport); |
| | | List<TExamReport> selectTExamReportNoStatusList(TExamReport tExamReport); |
| | | List<TExamReport> selectTExamHrEmailiReportList(TExamReport tExamReport); |
| | | List<TExamReport> selectViewReportList(TExamReport tExamReport); |
| | | List<TExamReport> selectHrResendTask(TExamReport tExamReport); |
| | |
| | | TExamReport selectTExamReportById(Long id); |
| | | |
| | | List<TExamReport> selectTExamReportList(TExamReport tExamReport); |
| | | List<TExamReport> selectTExamReportNoStatusList(TExamReport tExamReport); |
| | | |
| | | List<TExamReport> selectViewReportList(TExamReport tExamReport); |
| | | |
| | |
| | | import org.springframework.stereotype.Component; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import static com.ots.common.enums.TestMemberStatusEnum.answering; |
| | | import static com.ots.common.enums.TestMemberStatusEnum.timeOut; |
| | | |
| | | @Component |
| | | public class CountCalculateServiceImpl implements CountCalculateService { |
| | |
| | | if (Objects.nonNull(testMembers)) { |
| | | total = Long.valueOf(testMembers.size()); |
| | | finishNum = testMembers.stream().filter(testMember -> TestMemberStatusEnum.completed.getCode().equals(testMember.getStatus())).mapToLong(x -> 1).sum(); |
| | | testIngNum = testMembers.stream().filter(testMember -> TestMemberStatusEnum.answering.getCode().equals(testMember.getStatus())).mapToLong(x -> 1).sum(); |
| | | testIngNum = testMembers.stream().filter(testMember -> answering.getCode().equals(testMember.getStatus())).mapToLong(x -> 1).sum(); |
| | | unTestNum = total - testIngNum - finishNum; |
| | | } |
| | | numberOfUsersByPackage.setTestNum(total); |
| | |
| | | Map map = new HashMap(); |
| | | map.put("testIds", collect); |
| | | |
| | | List<String> recyclingStatus = Arrays.asList(TestMemberStatusEnum.unprocessed.getCode(), TestMemberStatusEnum.completed.getCode(), TestMemberStatusEnum.answering.getCode()); |
| | | List<String> recyclingStatus = Arrays.asList(TestMemberStatusEnum.unprocessed.getCode(), TestMemberStatusEnum.completed.getCode(), answering.getCode(), timeOut.getCode()); |
| | | map.put("status", recyclingStatus); |
| | | return entTestMemberMapper.selectEntTestMemberListByMap(map); |
| | | } |
| | |
| | | package com.ots.project.exam.service.impl; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import com.ots.common.enums.LangTypeEnum; |
| | | import com.ots.common.enums.ReportTypeEnum; |
| | | import com.ots.common.enums.TemplateTypeEnum; |
| | |
| | | import com.ots.project.tool.exam.JsonUtil; |
| | | import com.ots.project.tool.report.CAQ.CAQReport; |
| | | import com.ots.project.tool.report.MAQ.MAQReport; |
| | | import com.ots.project.tool.report.MAQNEW.MAQReport_V2; |
| | | import com.ots.project.tool.report.ReportResultData; |
| | | import com.ots.project.tool.report.RuilinMAQ.RuilinMAQReport; |
| | | import com.ots.project.tool.report.SAQ.SAQReport; |
| | |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | @Slf4j |
| | | public class TExamReportServiceImpl implements ITExamReportService { |
| | | @Autowired |
| | | private TExamReportMapper tExamReportMapper; |
| | |
| | | @Override |
| | | public List<TExamReport> selectTExamReportList(TExamReport tExamReport) { |
| | | return tExamReportMapper.selectTExamReportList(tExamReport); |
| | | } |
| | | @Override |
| | | public List<TExamReport> selectTExamReportNoStatusList(TExamReport tExamReport) { |
| | | return tExamReportMapper.selectTExamReportNoStatusList(tExamReport); |
| | | } |
| | | @Override |
| | | public List<TExamReport> selectViewReportList(TExamReport tExamReport) { |
| | |
| | | resultData = getSAQReportData(langType, ReportTypeEnum.codeOf(reportType), entry, tExamReport); |
| | | } else if (Objects.equals(reportType, ReportTypeEnum.JAQ.getCode())) { |
| | | resultData = getJAQReportData(entry.getValue()); |
| | | } else if(Objects.equals(reportType, ReportTypeEnum.MAQV2.getCode())){ |
| | | resultData = getMAQ_V2ReportData(langType, ReportTypeEnum.codeOf(reportType), entry, tExamReport); |
| | | } else { |
| | | resultData = getMAQReportData(langType, ReportTypeEnum.codeOf(reportType), entry, tExamReport); |
| | | } |
| | |
| | | dataMap.put("password", tExamReport.getTokenId()); |
| | | dataMap.put("reportId", tExamReport.getId().toString()); |
| | | dataMap.put("userName", tExamReport.getUserName()); |
| | | dataMap.put("memberName", tExamReport.getMemberName()); |
| | | dataMap.put("reportTemplateId", tExamReport.getReportTemplateId()); |
| | | dataMap.put("Begin Time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, tExamReport.getCreateTime())); |
| | | dataMap.put("End Time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, tExamReport.getUpdateTime())); |
| | |
| | | dataMap.put("Test Package", ExamUtil.getLangString(tExamReport.getLangType(), tExamReport.getTestName())); |
| | | dataMap.put("Test", ExamUtil.getLangString(tExamReport.getLangType(), tExamReport.getProductName())); |
| | | EntTestMember entTestMember = entTestMemberService.selectEntTestMemberById(tExamReport.getMemberId().longValue()); |
| | | if (Objects.isNull(entTestMember)) { |
| | | return; |
| | | } |
| | | dataMap.put("reportGenerationDate", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, entTestMember.getEndTime())); |
| | | List<ReportAPIResult> interfaceContentList = JsonUtil.parseArray(tExamReport.getInterfaceContent(), ReportAPIResult.class); |
| | | |
| | |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | public ReportResultData getMAQ_V2ReportData(String langType, ReportTypeEnum reportTypeEnum, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) { |
| | | MAQReport_V2 report = new MAQReport_V2(); |
| | | report.setQuestionnaireTaker(entry.getValue().get("memberName")); |
| | | report.setQuestionnaireID(entry.getValue().get("password")); |
| | | report.setReportGenerationDate(entry.getValue().get("reportGenerationDate")); |
| | | report.setQuestionnaireEmail(entry.getValue().get("testEmail")); |
| | | report.setUserName(entry.getValue().get("userName")); |
| | | report.setQuestionnaireStartTime(entry.getValue().get("beginTime")); |
| | | report.setQuestionnaireEndTime(entry.getValue().get("endTime")); |
| | | tExamReport.setId(Long.valueOf(entry.getValue().get("reportId"))); |
| | | ReportResultData resultData = report.getTemplateParameters(entry.getValue(), reportTypeEnum, LangTypeEnum.codeOf(langType)); |
| | | return resultData; |
| | | } |
| | | public ReportResultData getMAQReportData(String langType, ReportTypeEnum reportTypeEnum, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) { |
| | | MAQReport report = new MAQReport(); |
| | |
| | | String[] waterDropPicture = key.split("_"); |
| | | |
| | | String waterDropName =StringUtils.isNotEmpty(ExamUtil.getWaterDropPictureMap(waterDropPicture[0])) ? ExamUtil.getWaterDropPictureMap(waterDropPicture[0]) : ExamUtil.getWaterDropPictureMap(key); |
| | | if(waterDropPicture[1].equals("V2")){ |
| | | waterDropName = ExamUtil.getWaterDropPictureMap("ResponseFidelityDiagnosis_V2"); |
| | | } |
| | | if (StringUtils.isEmpty(waterDropName)) { |
| | | return; |
| | | } |
| | |
| | | deleteStrList.add(EssConfig.getProfile() + "/" + key + "_" + id + "_" + floatValue.toString() + "_" + suffixDate + ".png"); |
| | | |
| | | if (StringUtils.equals(key.split("_")[0], "ResponseFidelityDiagnosis")) { |
| | | if(StringUtils.equals(key.split("_")[1], "V2")){ |
| | | wordParam.setPicWidth(210); |
| | | wordParam.setPicHeight(50); |
| | | }else{ |
| | | wordParam.setPicWidth(446); |
| | | wordParam.setPicHeight(33); |
| | | } |
| | | } else if (StringUtils.equals(key.split("_")[0], "ResponseFidelityDiagnosisV2")){ |
| | | wordParam.setPicWidth(210); |
| | | wordParam.setPicHeight(33); |
| | | } else if (StringUtils.equals(key.split("_")[0], "RuilinTestResultValidityDiagnosisContext")) { |
| | | wordParam.setPicWidth(450); |
| | |
| | | fileNameResult.add(EssConfig.getProfile() + "/" + fileNameTemp); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("发生异常:{}", e); |
| | | return false; |
| | | } |
| | | return true; |
| | |
| | | # 项目相关配置 |
| | | ots: |
| | | # 名称 |
| | | name: ots |
| | | # 版本 |
| | | version: 1.0.5 |
| | | # 版权年份 |
| | | copyrightYear: 2020 |
| | | # 实例演示开关 |
| | | demoEnabled: false |
| | | # 文件路径 示例( Windows配置D:/ots/uploadPath,Linux配置 /home/data/ots/uploadPath) |
| | | profile: /home/data/ots/uploadPath |
| | | # 图片的url,如:vue端读http://139.199.11.114/images地址 |
| | | imagePath: http://120.24.39.179:8090/profile/images |
| | | # 获取ip地址开关 |
| | | addressEnabled: true |
| | | # 报告模版地址 |
| | | reportTemplates: /home/data/ots/reportTemplates/ |
| | | # http profile |
| | | httpProfilePath: http://120.24.39.179:8090/profile |
| | | |
| | | # 数据源配置 |
| | | spring: |
| | | datasource: |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.cj.jdbc.Driver |
| | | druid: |
| | | # 主库数据源 |
| | | master: |
| | | url: jdbc:mysql://120.24.39.179:3306/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://127.0.0.1:3306/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: TAI@2019#Zjun |
| | | # 从库数据源 |
| | | slave: |
| | | # 从数据源开关/默认关闭 |
| | | enabled: false |
| | | url: |
| | | username: |
| | | password: |
| | | # 初始连接数 |
| | | initialSize: 5 |
| | | # 最小连接池数量 |
| | | minIdle: 10 |
| | | # 最大连接池数量 |
| | | maxActive: 20 |
| | | # 配置获取连接等待超时的时间 |
| | | maxWait: 60000 |
| | | # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 |
| | | timeBetweenEvictionRunsMillis: 60000 |
| | | # 配置一个连接在池中最小生存的时间,单位是毫秒 |
| | | minEvictableIdleTimeMillis: 300000 |
| | | # 配置一个连接在池中最大生存的时间,单位是毫秒 |
| | | maxEvictableIdleTimeMillis: 900000 |
| | | # 配置检测连接是否有效 |
| | | validationQuery: SELECT 1 FROM DUAL |
| | | testWhileIdle: true |
| | | testOnBorrow: false |
| | |
| | | enabled: true |
| | | statViewServlet: |
| | | enabled: true |
| | | # 设置白名单,不填则允许所有访问 |
| | | allow: |
| | | url-pattern: /druid/* |
| | | # 控制台管理用户名和密码 |
| | | login-username: |
| | | login-password: |
| | | filter: |
| | | stat: |
| | | enabled: true |
| | | # 慢SQL记录 |
| | | log-slow-sql: true |
| | | slow-sql-millis: 1000 |
| | | merge-sql: true |
| | | wall: |
| | | config: |
| | | multi-statement-allow: true |
| | | |
| | | # 邮件服务 |
| | | mail: |
| | | |
| | | # VUE端访问地址 |
| | | vue: |
| | | url: http://120.24.39.179/exam-stu/#/ots/{0}/login |
| | | |
| | | # 远程泰国计算服务 |
| | | ATSTai: |
| | | host: 127.0.0.1 |
| | | port: 9123 |
| | | jasypt: |
| | | encryptor: |
| | | password: 5ciqxnka5s02w9qu |
| | | algorithm: PBEWithMD5AndDES |
| | |
| | | # 环境配置 |
| | | server: |
| | | # 服务器的HTTP端口,默认为80 |
| | | port: 8090 |
| | | servlet: |
| | | # 应用的访问路径 |
| | | context-path: / |
| | | tomcat: |
| | | # tomcat的URI编码 |
| | | uri-encoding: UTF-8 |
| | | # tomcat最大线程数,默认为200 |
| | | max-threads: 800 |
| | | # Tomcat启动初始化的线程数,默认值25 |
| | | min-spare-threads: 30 |
| | | |
| | | # 日志配置 |
| | | logging: |
| | | level: |
| | | com.ots: debug |
| | | org.springframework: warn |
| | | |
| | | # 用户配置 |
| | | user: |
| | | password: |
| | | # 密码错误{maxRetryCount}次锁定10分钟 |
| | | maxRetryCount: 5 |
| | | |
| | | # Spring配置 |
| | | spring: |
| | | # 模板引擎 |
| | | thymeleaf: |
| | | mode: HTML |
| | | encoding: utf-8 |
| | | # 禁用缓存 |
| | | cache: false |
| | | # 资源信息 |
| | | messages: |
| | | # 国际化资源文件路径 |
| | | basename: static/i18n/messages |
| | | jackson: |
| | | time-zone: GMT+8 |
| | | date-format: yyyy-MM-dd HH:mm:ss |
| | | profiles: |
| | | active: sand |
| | | active: dev |
| | | # 文件上传 |
| | | servlet: |
| | | multipart: |
| | | # 单个文件大小 |
| | | max-file-size: 10MB |
| | | # 设置总上传的文件大小 |
| | | max-request-size: 20MB |
| | | # 服务模块 |
| | | devtools: |
| | | restart: |
| | | # 热部署开关 |
| | | enabled: true |
| | | |
| | | # MyBatis |
| | | mybatis: |
| | | # 搜索指定包别名 |
| | | typeAliasesPackage: com.ots.project |
| | | # 配置mapper的扫描,找到所有的mapper.xml映射文件 |
| | | mapperLocations: classpath:mybatis/**/*Mapper.xml |
| | | # 加载全局的配置文件 |
| | | configLocation: classpath:mybatis/mybatis-config.xml |
| | | |
| | | # PageHelper分页插件 |
| | | pagehelper: |
| | | helperDialect: mysql |
| | | reasonable: true |
| | | supportMethodsArguments: true |
| | | params: count=countSql |
| | | |
| | | # Shiro |
| | | shiro: |
| | | user: |
| | | # 登录地址 |
| | | loginUrl: /login |
| | | # 权限认证失败地址 |
| | | unauthorizedUrl: /unauth |
| | | # 首页地址 |
| | | indexUrl: /index |
| | | # 验证码开关 |
| | | captchaEnabled: true |
| | | # 验证码类型 math 数组计算 char 字符 |
| | | captchaType: math |
| | | cookie: |
| | | # 设置Cookie的域名 默认空,即当前访问的域名 |
| | | domain: |
| | | # 设置cookie的有效访问路径 |
| | | path: / |
| | | # 设置HttpOnly属性 |
| | | httpOnly: true |
| | | # 设置Cookie的过期时间,天为单位 |
| | | maxAge: 30 |
| | | session: |
| | | # Session超时时间(默认30分钟) |
| | | expireTime: 30 |
| | | # 同步session到数据库的周期(默认1分钟) |
| | | dbSyncPeriod: 1 |
| | | # 相隔多久检查一次session的有效性,默认就是10分钟 |
| | | validationInterval: 10 |
| | | # 同一个用户最大会话数,比如2的意思是同一个账号允许最多同时两个人登录(默认-1不限制) |
| | | maxSession: -1 |
| | | # 踢出之前登录的/之后登录的用户,默认踢出之前登录的用户 |
| | | kickoutAfter: false |
| | | |
| | | # 防止XSS攻击 |
| | | xss: |
| | | # 过滤开关 |
| | | enabled: true |
| | | # 排除链接(多个用逗号分隔) |
| | | excludes: /system/notice/* |
| | | # 匹配链接 |
| | | urlPatterns: /system/*,/monitor/*,/tool/* |
| | | |
| | | # 代码生成 |
| | | gen: |
| | | # 作者 |
| | | author: ots |
| | | # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool |
| | | packageName: com.ots.project |
| | | # 自动去除表前缀,默认是true |
| | | autoRemovePre: true |
| | | # 表前缀(类名不会包含表前缀) |
| | | tablePrefix: sys_ |
| | |
| | | #\u7AEF\u53E3\u53F7 |
| | | mailPort=25 |
| | | #\u90AE\u7BB1\u8D26\u53F7 |
| | | mailUsername=xxxxx |
| | | mailUsername= |
| | | #\u90AE\u7BB1\u6388\u6743\u7801 |
| | | mailPassword=xxxxxx |
| | | mailPassword= |
| | | #\u65F6\u95F4\u5EF6\u8FDF |
| | | mailTimeout=25000 |
| | | #\u53D1\u9001\u4EBA |
| | | mailFrom=xxxxx |
| | | mailFrom= |
| | | #\u53D1\u4EF6\u4EBA |
| | | personal=\u9ED1\u767D\u8272\u8C03 |
| | | #\u4E3B\u9898 |
| | |
| | | <if test="memberEmail != null and memberEmail != ''"> and m.member_email like concat('%', #{memberEmail}, '%')</if> |
| | | <if test="memberPhone != null and memberPhone != ''"> and m.member_phone like concat('%', #{memberPhone}, '%')</if> |
| | | <if test="testId != null "> and m.test_id = #{testId}</if> |
| | | <if test="status != null and status != ''"> and m.status = #{status}</if> |
| | | <if test="statusList != null "> and m.status in |
| | | <foreach item="status" collection="statusList" open="(" separator="," close=")"> |
| | | #{status} |
| | | </foreach> |
| | | </if> |
| | | <if test="userId != null and userId != ''"> and u.user_id = #{userId}</if> |
| | | </where> |
| | | </select> |
| | |
| | | left join sys_user_extend e on e.user_id = u.user_id |
| | | </sql> |
| | | |
| | | <sql id = "selectTExamReportListVoForReport"> |
| | | select m.member_dept,p.status,t.id, t.product_id, t.product_name, t.content, t.token_id, t.create_time, t.update_time, t.states, |
| | | t.last_content,t.choice,t.do_time, t.question_count, t.member_id,t.user_id,t.parent_id,t.downloadTimes,t.verifyStatus,t.test_id, |
| | | t.finish,m.member_name,p.test_name,u.user_name,t.question_order, t.question_report, t.question_template_id, t.interface_content, |
| | | t.lang_type, t.report_address, p.report_template_id, t.send_hr_status, t.send_tester_status, m.member_email, p.test_email, |
| | | t.member_name, p.auto_send_report, e.hr_email, e.mail_content, t.option_order, t.remain_part_time, |
| | | t.report_address_new,t.hrReportEmail,t.hrTitle,t.hrSendTime,t.hrUpdateTime,t.retriesTime |
| | | from t_exam_report t |
| | | left join sys_user u on u.user_id = t.user_id |
| | | right join ent_test_member m on m.member_id = t.member_id and m.status = '1' |
| | | left join ent_test_package p on p.id = t.test_id |
| | | left join sys_user_extend e on e.user_id = u.user_id |
| | | </sql> |
| | | |
| | | <sql id = "selectTExamReportListNoStatusVo"> |
| | | select m.member_dept,p.status,t.id, t.product_id, t.product_name, t.content, t.token_id, t.create_time, t.update_time, t.states, |
| | | t.last_content,t.choice,t.do_time, t.question_count, t.member_id,t.user_id,t.parent_id,t.downloadTimes,t.verifyStatus,t.test_id, |
| | | t.finish,m.member_name,p.test_name,u.user_name,t.question_order, t.question_report, t.question_template_id, t.interface_content, |
| | | t.lang_type, t.report_address, p.report_template_id, t.send_hr_status, t.send_tester_status, m.member_email, p.test_email, |
| | | t.member_name, p.auto_send_report, e.hr_email, e.mail_content, t.option_order, t.remain_part_time, |
| | | t.report_address_new,t.hrReportEmail,t.hrTitle,t.hrSendTime,t.hrUpdateTime,t.retriesTime |
| | | from t_exam_report t |
| | | left join sys_user u on u.user_id = t.user_id |
| | | right join ent_test_member m on m.member_id = t.member_id |
| | | left join ent_test_package p on p.id = t.test_id |
| | | left join sys_user_extend e on e.user_id = u.user_id |
| | | </sql> |
| | | |
| | | <select id="selectTExamReportList" parameterType="TExamReport" resultMap="TExamReportResult"> |
| | | <include refid="selectTExamReportListVo"/> |
| | | <where> |
| | |
| | | </where> |
| | | </select> |
| | | |
| | | <select id="selectTExamReportNoStatusList" parameterType="TExamReport" resultMap="TExamReportResult"> |
| | | <include refid="selectTExamReportListVo"/> |
| | | <where> |
| | | <if test="id != null "> and t.id = #{id}</if> |
| | | <if test="productId != null "> and t.product_id = #{productId}</if> |
| | | <if test="tokenId != null and tokenId != ''"> and t.token_id = #{tokenId}</if> |
| | | <if test="downloadTimes != null "> and t.downloadTimes = #{downloadTimes}</if> |
| | | <if test="verifyStatus != null "> and t.verifyStatus = #{verifyStatus}</if> |
| | | <if test="memberId != null and memberId != ''"> and t.member_id = #{memberId}</if> |
| | | <if test="productName != null and productName != ''"> and t.product_name like concat('%', #{productName}, '%')</if> |
| | | <if test="userName != null and userName != ''"> and u.user_name like concat('%', #{userName}, '%')</if> |
| | | <if test="testName != null and testName != ''"> and u.test_name like concat('%', #{testName}, '%')</if> |
| | | <if test="memberName != null and memberName != ''"> and m.member_name like concat('%', #{memberName}, '%')</if> |
| | | <if test="testId != null and testId != ''"> and t.test_id = #{testId}</if> |
| | | <if test="status != null and status != ''"> and p.status = #{status}</if> |
| | | <if test="finish != null and finish != ''"> and t.finish = #{finish}</if> |
| | | <if test="sendTesterStatus != null"> and t.send_tester_status = #{sendTesterStatus}</if> |
| | | <if test="hrReportEmail != null"> and t.hrReportEmail = #{hrReportEmail}</if> |
| | | <if test="sendHrStatus != null"> and t.send_hr_status = #{sendHrStatus}</if> |
| | | <if test="sendHrStatusList != null"> and t.send_hr_status in |
| | | <foreach collection="sendHrStatusList" item="sendStatus" open="(" separator="," close=")"> |
| | | #{sendStatus} |
| | | </foreach> |
| | | </if> |
| | | <if test="userIds != null"> and t.user_id in |
| | | <foreach collection="userIds" item="userId" open="(" separator="," close=")"> |
| | | #{userId} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | | <select id="selectTExamHrEmailiReportList" parameterType="TExamReport" resultMap="TExamReportResult"> |
| | | select id, product_id, product_name, content, token_id, create_time, update_time, states,last_content,choice,do_time, question_count, member_id,user_id,parent_id,downloadTimes,verifyStatus,test_id,finish, question_order, question_report, question_template_id, interface_content, lang_type, report_address, report_template_id, send_hr_status, send_tester_status, member_name, option_order, remain_part_time from t_exam_report |
| | | <where> |
| | |
| | | jsp.exam.report.userCode=\u7528\u6237\u7F16\u7801 |
| | | jsp.exam.report.downloadPermissions=\u4E0B\u8F7D\u6743\u9650 |
| | | jsp.exam.report.answerStatus=\u7B54\u9898\u72B6\u6001 |
| | | jsp.exam.report.exportEvaluationUserAnswerRecords=\u5BFC\u51FA\u8BC4\u6D4B\u7528\u6237\u7B54\u9898\u8BB0\u5F55 |
| | | jsp.exam.report.exportEvaluationUserAnswerRecords=\u5BFC\u51FA\u6D4B\u8BD5\u6570\u636E |
| | | jsp.exam.report.exportBaseReport=\u91CD\u65B0\u751F\u6210(\u57FA\u7840)\u62A5\u544A\u5E76\u5BFC\u51FA |
| | | jsp.exam.report.exportVerboseReport=\u91CD\u65B0\u751F\u6210(\u8BE6\u7EC6)\u62A5\u544A\u5E76\u5BFC\u51FA |
| | | jsp.exam.report.requestToDownloadTheSecondTestReport=\u7533\u8BF7\u4E0B\u8F7D\u7B2C\u4E8C\u4EFD\u6D4B\u8BD5\u62A5\u544A |
| | |
| | | dict.ic14113=\u5730\u5740\u65E0\u6548 |
| | | dict.ic14114=\u5DF2\u7ECF\u6253\u5F00 |
| | | confirm.the.need.for.recycling=\u786E\u8BA4\u9700\u8981\u56DE\u6536 |
| | | confirm.the.need.for.recycling.apend=\u5417? \u6D4B\u8BD5\u5305\u4E2D\u672A\u767B\u5F55\u8FC7\u7684\u4EBA\u5458\u5C06\u5931\u6548\uFF01=\u5417? \u6D4B\u8BD5\u5305\u4E2D\u672A\u767B\u5F55\u8FC7\u7684\u4EBA\u5458\u5C06\u5931\u6548\uFF01 |
| | | confirm.the.need.for.recycling.apend=\u5417? \u6D4B\u8BD5\u5305\u4E2D\u672A\u767B\u5F55\u8FC7\u7684\u4EBA\u5458\u5C06\u5931\u6548\uFF01 |
| | | in.special.cases=\u7279\u6B8A\u60C5\u51B5\u4E0B\uFF0C\u8BBE\u7F6E\u4E3A\u201C\u81EA\u5B9A\u6570\u636E\u6743\u9650\u201D |
| | | task.message.202008001=\u786E\u8BA4\u8981\u7ACB\u5373\u6267\u884C\u4E00\u6B21\u4EFB\u52A1\u5417\uFF1F |
| | | task.message.202008002=\u786E\u8BA4\u8981\u505C\u7528\u4EFB\u52A1\u5417\uFF1F |
| | |
| | | test.user.name.dict2=\u6309\u90AE\u7BB1\u641C\u7D22\u6D4B\u8BD5\u7528\u6237 |
| | | test.user.name.dict3=\u6309\u624B\u673A\u53F7\u7801\u641C\u7D22\u6D4B\u8BD5\u7528\u6237 |
| | | test.user.name.dict4=\u6309\u5BC6\u7801\u641C\u7D22\u6D4B\u8BD5\u7528\u6237 |
| | | jsp.main.other.001=\u6700\u8FD1\u5B8C\u6210\u6D4B\u8BD5\u8BB0\u5F55 |
| | | jsp.main.other.001=\u6700\u8FD1\u5B8C\u6210\u7684\u6D4B\u8BD5\u8BB0\u5F55 |
| | | jsp.main.other.002=\u672A\u5B8C\u6210\u7684\u6D4B\u8BD5\u8BB0\u5F55\uFF08\u6B63\u5728\u7B54\u9898\u6216\u8005\u6682\u65F6\u653E\u5F03\u7B54\u9898\uFF09 |
| | | jsp.main.other.003=\u6700\u8FD1\u521B\u5EFA\u7684\u6D4B\u8BD5\u5305 |
| | | jsp.main.other.004=\u6700\u540E\u72B6\u6001\u65F6\u95F4 |
| | |
| | | <div class="form-group"> |
| | | <label class="col-sm-4 control-label">[[#{jsp.exam.enterprise.availabletesters}]]:</label> |
| | | <div class="col-sm-8"> |
| | | <input name="testNum" class="form-control" type="number"> |
| | | <input name="testNum" class="form-control" type="number" required> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <input type="text" id="testIdSh" name="testIdSh" readonly th:value="${packageTestName}"> |
| | | </li> |
| | | <li> |
| | | <p>[[#{basis.name}]]</p> |
| | | <p>[[#{jsp.testPackage.name}]]</p> |
| | | <input type="text" name="memberName"/> |
| | | </li> |
| | | <!--<li> |
| | |
| | | <input type="text" name="userName"/> |
| | | </li> |
| | | <li> |
| | | <p>[[#{basis.name}]]:</p> |
| | | <p>[[#{jsp.exam.report.TestPackage}]]:</p> |
| | | <input type="text" name="testName"/> |
| | | </li> |
| | | <li> |
| | |
| | | class="btn" onclick="javascript:recover()" shiro:hasPermission="exam:test_package:recover"> |
| | | <i class="fa fa-address-book"></i> [[#{jsp.exam.test_package.006}]] |
| | | </a> |
| | | <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" |
| | | <a style="background-color:#b459d4;color:#ffffff" |
| | | class="btn" onclick="javascript:testReport()" shiro:hasPermission="exam:test_package:testreport"> |
| | | <i class="fa fa-download"></i> [[#{jsp.exam.test_package.007}]] |
| | | </a> |
| | |
| | | align: 'center', |
| | | formatter: function (value, row, index) { |
| | | var actions = []; |
| | | actions.push('<a class="btn btn-success btn-xs href="javascript:void(0)" onclick="$.operate.edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{jsp.product.package.authorization}]]+'</a> '); |
| | | actions.push('<a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" class="btn btn-success btn-xs href="javascript:void(0)" onclick="$.operate.edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{jsp.product.package.authorization}]]+'</a> '); |
| | | return actions.join(''); |
| | | } |
| | | }] |
| | |
| | | <form id="post-form1"> |
| | | <div class="select-list"> |
| | | <ul> |
| | | <li> |
| | | <li id="hideA"> |
| | | <p>[[#{jsp.exam.enterprise.companyname}]]:</p><input type="text" name="userName" |
| | | id="userName" value=""/> |
| | | </li> |
| | | <li><a class="btn btn-primary btn-rounded btn-sm" onclick="openUserList()"><i |
| | | <li id="hideB"><a class="btn btn-primary btn-rounded btn-sm" onclick="openUserList()"><i |
| | | class="fa fa-search"></i> [[#{menu.exam.enterprise.view1}]]</a></li> |
| | | <li> |
| | | <input type="text" name="queryValue" id="queryValue" value=""/> |
| | |
| | | </div> |
| | | </form> |
| | | </div> |
| | | <!-- <div class="col-sm-12 select-table" id="enterpriseInfo">--> |
| | | <!-- <p class="select-title" align="center">企业信息</p>--> |
| | | <!-- <table id="bootstrap-table1" data-mobile-responsive="true"></table>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="col-sm-12 select-table" id="memberInfo">--> |
| | | <!-- <p class="select-title" align="center">用户信息</p>--> |
| | | <!-- <table id="bootstrap-table2" data-mobile-responsive="true"></table>--> |
| | | <!-- </div>--> |
| | | <div class="col-sm-12 select-table"> |
| | | <p class="select-title" align="center">[[#{jsp.main.other.001}]]</p> |
| | | <table id="bootstrap-table-form1" data-mobile-responsive="true"></table> |
| | |
| | | var statusDatas = [[${@dict.getType('test_status')}]]; |
| | | var userId = [[${user.userId}]]; |
| | | |
| | | // $(function () { |
| | | // var options = { |
| | | // id: "bootstrap-table1", |
| | | // url: ctx + "exam/extend/list2?userType=02", |
| | | // showSearch: false, |
| | | // showRefresh: false, |
| | | // showToggle: false, |
| | | // showColumns: false, |
| | | // createUrl: ctx + "exam/enterprise/add", |
| | | // updateUrl: ctx + "exam/enterprise/edit/{id}", |
| | | // removeUrl: ctx + "exam/enterprise/remove", |
| | | // exportUrl: ctx + "exam/enterprise/export", |
| | | // modalName: [[#{jsp.exam.demographyParam.businessuser}]], |
| | | // // showRefresh: true, |
| | | // queryParams: queryParams, |
| | | // pageSize: 10, |
| | | // pageList: [10, 50, 100], |
| | | // columns: [ |
| | | // { |
| | | // field: 'userId', |
| | | // title: 'ID' |
| | | // }, |
| | | // { |
| | | // field: 'loginName', |
| | | // title: [[#{jsp.exam.distributor.loginname}]] |
| | | // }, |
| | | // { |
| | | // field: 'userName', |
| | | // title: [[#{jsp.exam.enterprise.companyname}]] |
| | | // }, |
| | | // { |
| | | // field: 'businessManager', |
| | | // title: [[#{jsp.exam.distributor.businessmanager}]] |
| | | // }, |
| | | // { |
| | | // field: 'testNum', |
| | | // title: [[#{jsp.exam.enterprise.usetimes}]], |
| | | // formatter: function (value, row, index) { |
| | | // return '<a href="javascript:void(0)" onclick="modifyUsageCount(\'' + row.id + '\')">' + value + '</a>'; |
| | | // } |
| | | // }, |
| | | // { |
| | | // field: 'effectTime', |
| | | // title: [[#{jsp.exam.enterprise.effectivetime}]] |
| | | // }, |
| | | // { |
| | | // field: 'invalidTime', |
| | | // title: [[#{jsp.exam.distributor.termcooperation}]] |
| | | // }, |
| | | // { |
| | | // field: 'legalPerson', |
| | | // title: [[#{jsp.exam.enterprise.corporate}]] |
| | | // }, |
| | | // { |
| | | // title: [[#{basis.operate}]], |
| | | // align: 'center', |
| | | // formatter: function (value, row, index) { |
| | | // var actions = []; |
| | | // actions.push('<a class="btn btn-danger btn-xs " href="javascript:void(0)" onclick="freelogin(\'' + row.userId + '\')"><i class="fa fa-eye"></i>' + [[#{basis.freelogin}]] + '</a>'); |
| | | // return actions.join(''); |
| | | // } |
| | | // } |
| | | // ] |
| | | // }; |
| | | // $.table.init(options); |
| | | // }); |
| | | $(function(){ //代码部分 |
| | | $.ajax({ |
| | | type: "post", |
| | | url: ctx + "exam/enterprise/checkUser", |
| | | success: function (data) { |
| | | if(data.code=='0') { |
| | | $("#hideA").css('display','none'); |
| | | $("#hideB").css('display','none'); |
| | | } |
| | | } |
| | | }); |
| | | }) |
| | | |
| | | function freelogin(id) { |
| | | $.ajax({ |
| | |
| | | } |
| | | $("#" + tableId).bootstrapTable('refresh', params); |
| | | } |
| | | |
| | | // function searchDefine2() { |
| | | // var tableId = 'bootstrap-table2'; |
| | | // var params = { |
| | | // queryValue: $("#queryValue").val(), |
| | | // queryType: $("#queryType").val(), |
| | | // limit: 10, |
| | | // } |
| | | // $("#" + tableId).bootstrapTable('refresh', params); |
| | | // } |
| | | // |
| | | // $(function () { |
| | | // var options = { |
| | | // id: "bootstrap-table2", |
| | | // url: ctx + "exam/testMember" + "/list", |
| | | // showSearch: false, |
| | | // showRefresh: false, |
| | | // showToggle: false, |
| | | // showColumns: false, |
| | | // createUrl: ctx + "exam/testMember" + "/add/" + $("#testId").val(), |
| | | // updateUrl: ctx + "exam/testMember" + "/edit/{id}", |
| | | // removeUrl: ctx + "exam/testMember" + "/remove", |
| | | // exportUrl: ctx + "exam/testMember" + "/export", |
| | | // exportUrlLinkTest: ctx + "exam/testMember" + "/exportLinkTest", |
| | | // importUrl: ctx + "exam/testMember" + "/importData/" + $("#testId").val(), |
| | | // importTemplateUrl: ctx + "exam/testMember" + "/importTemplate", |
| | | // modalName: [[#{jsp.exam.test_package.032}]], |
| | | // pageSize: 10, |
| | | // pageList: [10, 50, 100], |
| | | // queryParams: queryParams2, |
| | | // // queryParams: function (params) { |
| | | // // var temp = { |
| | | // // queryValue:$("#queryValue").val(), |
| | | // // queryType: $("#queryType").val(), |
| | | // // } |
| | | // // return temp; |
| | | // // }, |
| | | // columns: [ |
| | | // { |
| | | // field: 'memberId', |
| | | // title: [[#{jsp.exam.test_package.033}]], |
| | | // visible: false |
| | | // }, |
| | | // { |
| | | // field: 'memberName', |
| | | // title: [[#{jsp.exam.report.008}]] |
| | | // }, |
| | | // { |
| | | // field: 'memberDept', |
| | | // title: [[#{jsp.system.dept.002}]], |
| | | // sortable: true |
| | | // |
| | | // }, |
| | | // { |
| | | // field: 'memberEmail', |
| | | // title: [[#{jsp.system.user.profile.005}]] |
| | | // }, |
| | | // { |
| | | // field: 'memberPhone', |
| | | // title: [[#{jsp.system.user.profile.003}]] |
| | | // }, |
| | | // { |
| | | // field: 'testId', |
| | | // title: [[#{jsp.exam.report.014}]], |
| | | // visible: false |
| | | // }, |
| | | // { |
| | | // field: 'startTime', |
| | | // title: [[#{jsp.exam.test_package.startTime}]] |
| | | // }, |
| | | // { |
| | | // field: 'endTime', |
| | | // title: [[#{jsp.exam.test_package.endTime}]] |
| | | // }, |
| | | // { |
| | | // field: 'smsStatus', |
| | | // title: [[#{jsp.exam.test_package.035}]], |
| | | // formatter: function (value, row, index) { |
| | | // return $.table.selectDictLabel(sms_type, value); |
| | | // } |
| | | // }, |
| | | // { |
| | | // field: 'smsTime', |
| | | // title: [[#{jsp.exam.test_package.036}]] |
| | | // }, |
| | | // { |
| | | // field: 'emailStatus', |
| | | // title: [[#{jsp.exam.test_package.037}]], |
| | | // formatter: function (value, row, index) { |
| | | // return $.table.selectDictLabel(email_status, value); |
| | | // } |
| | | // }, |
| | | // { |
| | | // field: 'emailTime', |
| | | // title: [[#{jsp.exam.test_package.038}]] |
| | | // }, |
| | | // { |
| | | // field: 'status', |
| | | // title: [[#{basis.state}]], |
| | | // formatter: function (value, row, index) { |
| | | // return $.table.selectDictLabel(test_member_status, value); |
| | | // } |
| | | // }, |
| | | // { |
| | | // field: 'remark', |
| | | // title: [[#{basis.remark}]] |
| | | // }, |
| | | // { |
| | | // field: 'token', |
| | | // title: [[#{jsp.exam.test_package.testtoken}]], |
| | | // visible: false |
| | | // }, |
| | | // { |
| | | // field: 'hrEmailStatus', |
| | | // title: [[#{hr.mailbox.status}]], |
| | | // formatter: function (value, row, index) { |
| | | // if (value == 1) { |
| | | // return [[#{dict.ic138}]]; |
| | | // } else if (value == 2) { |
| | | // return [[#{dict.ic140}]]; |
| | | // } else { |
| | | // return "-"; |
| | | // } |
| | | // }, |
| | | // visible: false |
| | | // }, |
| | | // { |
| | | // title: [[#{basis.operate}]], |
| | | // align: 'center', |
| | | // formatter: function (value, row, index) { |
| | | // var actions = []; |
| | | // actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="openTestDetail(\'' + row.token + '\')"><i class="fa fa-edit"></i>[[#{jsp.exam.test_package.testinfo}]]</a> '); |
| | | // actions.push('<a class="btn btn-warning btn-xs " href="javascript:void(0)" onclick="openMemberReport(' + row.memberId + "," + row.testId + ')"><i class="fa fa-edit"></i>[[#{view.report}]]</a> '); |
| | | // return actions.join(''); |
| | | // } |
| | | // } |
| | | // ] |
| | | // }; |
| | | // $.table.init(options); |
| | | // }); |
| | | |
| | | // 查看测试进度 |
| | | function openTestDetail(token) { |
| | |
| | | $(function () { |
| | | var options = { |
| | | id: "bootstrap-table-form2", |
| | | url: "/exam/testMember/listTopAnswering", |
| | | url: "/exam/testMember/listTopAnswering2", |
| | | showSearch: false, |
| | | showRefresh: false, |
| | | showToggle: false, |