Browse Source

excel数据导入及更换后台图标

master
蟑螂恶霸 3 years ago
parent
commit
54c00eff3d
  1. 355
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/css/newsty.css
  2. 6641
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/css/style.default.css
  3. BIN
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/img/logo-qmyl.png
  4. 1616
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/index.html
  5. 880
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/index_t.html
  6. 406
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/login.html
  7. 11
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/library/view.html
  8. 4
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/question/add.html
  9. 6
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/question/detail.html
  10. 4
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/question/edit.html
  11. 49
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/question/view.html
  12. 32
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/QuestionBankController.java
  13. 1
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/SceneManageController.java
  14. 79
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/domain/QuestionImportDataModel.java
  15. 49
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/domain/SceneImportDataModel.java
  16. 8
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/mapper/QuestionBankMapper.java
  17. 8
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/IQuestionBankService.java
  18. 4
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/BannerManageServiceImpl.java
  19. 4
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/KnowledgeLibraryServiceImpl.java
  20. 51
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/QuestionBankServiceImpl.java
  21. 9
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/resources/mapper/QuestionBankMapper.xml

355
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/css/newsty.css

@ -1,177 +1,178 @@
@charset "utf-8";
/* CSS Document */
body {
font-size: 14px;
}
.navbar {
margin-bottom: 0;
min-height: 90px;
}
.logosys {
margin-left: 16px;
width: 360px;
height: 72px;
/*background: url(../img/logo-yjy.png) no-repeat center 22px;*/
background: url(../img/logo-car.png) no-repeat center 22px;
/*background: url(../img/zxt.png) no-repeat center 22px;*/
/*background: url(../img/log-szsf.png) no-repeat 10px 22px;*/
background-size: 92%;
float: left;
line-height: 40em;
overflow: hidden;
}
.minimalize-styl-2 {
color: rgba(255, 255, 255, .5);
}
.minimalize-styl-2:hover {
color: rgba(255, 255, 255, 1);
}
.fa {
margin-right: 5px;
}
.arrow {
margin-right: 0;
}
.navbox {
float: right;
margin-right: 2%;
}
.navbox {
float: right;
margin-right: 1%;
}
.navbox > li > a {
display: inline-block;
width: 90px;
text-align: center;
margin: 10px 25% 0;
cursor: pointer;
height: auto;
padding: 8px 0;
opacity: 0.7;
}
.navbox > li > a.active, .navbox > li > a:hover {
opacity: 1.0;
/*background-color: transparent;
background-image: linear-gradient(rgba(0, 0, 0, 0.25), transparent);
border-radius: 5px;*/
}
.navbox > li > a > i {
display: block;
width: 100%;
height: 40px;
background-position: center top;
background-repeat: no-repeat;
}
/*.nav.navbar-top-links a {
font-size: 16px;
}*/
.nav_home {
background: url(../img/icontop_home.png);
}
.nav_yjzs {
background: url(../img/icontop_yjzs.png);
}
.nav_yjbz {
background: url(../img/icontop_yjbz.png);
}
.nav_yagl {
background: url(../img/icontop_yagl.png);
}
.nav_fxyh {
background: url(../img/icontop_fxyh.png);
}
.nav_ycyj {
background: url(../img/icontop_ycyj.png);
}
.nav_xxfb {
background: url(../img/icontop_xxfb.png);
}
.nav_fzjc {
background: url(../img/icontop_fzjc.png);
}
.nav_zhdd {
background: url(../img/icontop_zhdd.png);
}
.nav_mnyl {
background: url(../img/icontop_mnyl.png);
}
.nav_yjpg {
background: url(../img/icontop_yjpg.png);
}
.nav_htgl {
background: url(../img/icontop_htgl.png);
}
/*********** left icon **********/
/*
.leftmenu_case {
background: url(../img/iconleft_anli_16.png);
}
.leftmenu_info {
background: url(../img/iconleft_info_16_2.png);
}
.leftmenu_drill {
background: url(../img/iconleft_yanlian_16.png);
}
.leftmenu_early {
background: url(../img/iconleft_ycyj_16.png);
}
.leftmenu_plan {
background: url(../img/iconleft_yanlian_16.png);
}
.leftmenu_com {
background: url(../img/iconleft_zhdd_16.png);
}
.leftmenu_duty {
background: url(../img/iconleft_zhiban_16.png);
}
.leftmenu_knfile {
background: url(../img/iconleft_zhishiku_16.png);
}*/
@media screen and (min-width: 1024px) and (max-width: 1913px) {
.nav.navbar-top-links a {
font-size: 14px;
}
.logosys {
background-size: 80%;
background-position-x: 20px;
}
.navbox > li > a {
width: 70px;
}
}
@charset "utf-8";
/* CSS Document */
body {
font-size: 14px;
}
.navbar {
margin-bottom: 0;
min-height: 90px;
}
.logosys {
margin-left: 16px;
width: 360px;
height: 72px;
background: url(../img/logo-qmyl.png) no-repeat center 22px;
/*background: url(../img/logo-yjy.png) no-repeat center 22px;*/
/*background: url(../img/logo-car.png) no-repeat center 22px;*/
/*background: url(../img/zxt.png) no-repeat center 22px;*/
/*background: url(../img/log-szsf.png) no-repeat 10px 22px;*/
background-size: 92%;
float: left;
line-height: 40em;
overflow: hidden;
}
.minimalize-styl-2 {
color: rgba(255, 255, 255, .5);
}
.minimalize-styl-2:hover {
color: rgba(255, 255, 255, 1);
}
.fa {
margin-right: 5px;
}
.arrow {
margin-right: 0;
}
.navbox {
float: right;
margin-right: 2%;
}
.navbox {
float: right;
margin-right: 1%;
}
.navbox > li > a {
display: inline-block;
width: 90px;
text-align: center;
margin: 10px 25% 0;
cursor: pointer;
height: auto;
padding: 8px 0;
opacity: 0.7;
}
.navbox > li > a.active, .navbox > li > a:hover {
opacity: 1.0;
/*background-color: transparent;
background-image: linear-gradient(rgba(0, 0, 0, 0.25), transparent);
border-radius: 5px;*/
}
.navbox > li > a > i {
display: block;
width: 100%;
height: 40px;
background-position: center top;
background-repeat: no-repeat;
}
/*.nav.navbar-top-links a {
font-size: 16px;
}*/
.nav_home {
background: url(../img/icontop_home.png);
}
.nav_yjzs {
background: url(../img/icontop_yjzs.png);
}
.nav_yjbz {
background: url(../img/icontop_yjbz.png);
}
.nav_yagl {
background: url(../img/icontop_yagl.png);
}
.nav_fxyh {
background: url(../img/icontop_fxyh.png);
}
.nav_ycyj {
background: url(../img/icontop_ycyj.png);
}
.nav_xxfb {
background: url(../img/icontop_xxfb.png);
}
.nav_fzjc {
background: url(../img/icontop_fzjc.png);
}
.nav_zhdd {
background: url(../img/icontop_zhdd.png);
}
.nav_mnyl {
background: url(../img/icontop_mnyl.png);
}
.nav_yjpg {
background: url(../img/icontop_yjpg.png);
}
.nav_htgl {
background: url(../img/icontop_htgl.png);
}
/*********** left icon **********/
/*
.leftmenu_case {
background: url(../img/iconleft_anli_16.png);
}
.leftmenu_info {
background: url(../img/iconleft_info_16_2.png);
}
.leftmenu_drill {
background: url(../img/iconleft_yanlian_16.png);
}
.leftmenu_early {
background: url(../img/iconleft_ycyj_16.png);
}
.leftmenu_plan {
background: url(../img/iconleft_yanlian_16.png);
}
.leftmenu_com {
background: url(../img/iconleft_zhdd_16.png);
}
.leftmenu_duty {
background: url(../img/iconleft_zhiban_16.png);
}
.leftmenu_knfile {
background: url(../img/iconleft_zhishiku_16.png);
}*/
@media screen and (min-width: 1024px) and (max-width: 1913px) {
.nav.navbar-top-links a {
font-size: 14px;
}
.logosys {
background-size: 80%;
background-position-x: 20px;
}
.navbox > li > a {
width: 70px;
}
}

6641
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/css/style.default.css

File diff suppressed because it is too large

BIN
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/img/logo-qmyl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

1616
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/index.html

File diff suppressed because it is too large

880
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/index_t.html

@ -1,441 +1,441 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<title>公务车辆管理系统</title>
<!-- CSS files -->
<link href="/workStyle/tabler/css/tabler.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/tabler-flags.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/tabler-payments.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/tabler-vendors.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/demo.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/iconfont/tabler-icons.css" rel="stylesheet"/>
<style>
@import url('https://rsms.me/inter/inter.css');
:root {
--tblr-font-sans-serif: Inter, -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
}
</style>
</head>
<body class=" layout-fluid">
<script src="/workStyle/tabler/js/demo-theme.min.js"></script>
<div class="page">
<!-- Navbar -->
<header class="navbar navbar-expand-md navbar-light d-print-none">
<div class="container-xl">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-menu">
<span class="navbar-toggler-icon"></span>
</button>
<h1 class="navbar-brand navbar-brand-autodark d-none-navbar-horizontal pe-0 pe-md-3">
<a href=".">
<img src="../img/logo-yjyb.png" width="110" height="32" alt="Tabler" class="navbar-brand-image">
</a>
</h1>
<div class="navbar-nav flex-row order-md-last">
<div class="d-none d-md-flex">
<a href="?theme=dark" class="nav-link px-0 hide-theme-dark" title="Enable dark mode"
data-bs-toggle="tooltip"
data-bs-placement="bottom">
<!-- Download SVG icon from http://tabler-icons.io/i/moon -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24"
stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"/>
</svg>
</a>
<a href="?theme=light" class="nav-link px-0 hide-theme-light" title="Enable light mode"
data-bs-toggle="tooltip"
data-bs-placement="bottom">
<!-- Download SVG icon from http://tabler-icons.io/i/sun -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24"
stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<circle cx="12" cy="12" r="4"/>
<path d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7"/>
</svg>
</a>
<div class="nav-item dropdown d-none d-md-flex me-3">
<a href="#" class="nav-link px-0" data-bs-toggle="dropdown" tabindex="-1"
aria-label="Show notifications">
<!-- Download SVG icon from http://tabler-icons.io/i/bell -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M10 5a2 2 0 0 1 4 0a7 7 0 0 1 4 6v3a4 4 0 0 0 2 3h-16a4 4 0 0 0 2 -3v-3a7 7 0 0 1 4 -6"/>
<path d="M9 17v1a3 3 0 0 0 6 0v-1"/>
</svg>
<span class="badge bg-red"></span>
</a>
<div class="dropdown-menu dropdown-menu-arrow dropdown-menu-end dropdown-menu-card">
<div class="card">
<div class="card-header">
<h3 class="card-title">Last updates</h3>
</div>
<div class="list-group list-group-flush list-group-hoverable">
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-auto"><span
class="status-dot status-dot-animated bg-red d-block"></span></div>
<div class="col text-truncate">
<a href="#" class="text-body d-block">Example 1</a>
<div class="d-block text-muted text-truncate mt-n1">
Change deprecated html tags to text decoration classes (#29604)
</div>
</div>
<div class="col-auto">
<a href="#" class="list-group-item-actions">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon text-muted"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z"/>
</svg>
</a>
</div>
</div>
</div>
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-auto"><span class="status-dot d-block"></span></div>
<div class="col text-truncate">
<a href="#" class="text-body d-block">Example 2</a>
<div class="d-block text-muted text-truncate mt-n1">
justify-content:between ⇒ justify-content:space-between (#29734)
</div>
</div>
<div class="col-auto">
<a href="#" class="list-group-item-actions show">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon text-yellow"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z"/>
</svg>
</a>
</div>
</div>
</div>
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-auto"><span class="status-dot d-block"></span></div>
<div class="col text-truncate">
<a href="#" class="text-body d-block">Example 3</a>
<div class="d-block text-muted text-truncate mt-n1">
Update change-version.js (#29736)
</div>
</div>
<div class="col-auto">
<a href="#" class="list-group-item-actions">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon text-muted"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z"/>
</svg>
</a>
</div>
</div>
</div>
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-auto"><span
class="status-dot status-dot-animated bg-green d-block"></span>
</div>
<div class="col text-truncate">
<a href="#" class="text-body d-block">Example 4</a>
<div class="d-block text-muted text-truncate mt-n1">
Regenerate package-lock.json (#29730)
</div>
</div>
<div class="col-auto">
<a href="#" class="list-group-item-actions">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon text-muted"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z"/>
</svg>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="nav-item dropdown">
<a href="#" class="nav-link d-flex lh-1 text-reset p-0" data-bs-toggle="dropdown"
aria-label="Open user menu">
<img class="avatar avatar-sm user-image" th:src="(${user.avatar} == '') ? @{/img/profile.jpg} : @{${user.avatar}}"
>
<!-- <span class="avatar avatar-sm user-image" th:style="'background-image:'+(${user.avatar} == '') ? '/img/profile.jpg' : ${user.avatar}" ></span>-->
<div class="d-none d-xl-block ps-2">
<div>[[${user.userName}]]</div>
<div class="mt-1 small text-muted">[[${user.loginName}]]</div>
</div>
</a>
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
<a th:href="@{/system/user/profile}" class="dropdown-item">个人中心</a>
<a onclick="resetPwd()" class="dropdown-item">修改密码</a>
<a th:href="@{logout}" class="dropdown-item">退出登录</a>
<!-- <div class="dropdown-divider"></div>-->
<!-- <a href="./settings.html" class="dropdown-item">Settings</a>-->
<!-- <a href="./sign-in.html" class="dropdown-item">Logout</a>-->
</div>
</div>
</div>
</div>
</header>
<div class="navbar-expand-md">
<div class="collapse navbar-collapse" id="navbar-menu">
<div class="navbar navbar-light">
<div class="container-xl">
<ul class="navbar-nav" id="conent">
</ul>
<!-- <div class="my-2 my-md-0 flex-grow-1 flex-md-grow-0 order-first order-md-last">-->
<!-- <form action="./" method="get" autocomplete="off" novalidate>-->
<!-- <div class="input-icon">-->
<!-- <span class="input-icon-addon">-->
<!-- &lt;!&ndash; Download SVG icon from http://tabler-icons.io/i/search &ndash;&gt;-->
<!-- <svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24"-->
<!-- stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"-->
<!-- stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><circle cx="10"-->
<!-- cy="10"-->
<!-- r="7"/><line-->
<!-- x1="21" y1="21" x2="15" y2="15"/></svg>-->
<!-- </span>-->
<!-- <input type="text" value="" class="form-control" placeholder="Search…"-->
<!-- aria-label="Search in website">-->
<!-- </div>-->
<!-- </form>-->
<!-- </div>-->
</div>
</div>
</div>
</div>
<div class="page-wrapper">
<iframe id="iframeId" class="RuoYi_iframe" name="iframe0" width="100%" height="100%" data-id="/system/main"
src="" frameborder="0" seamless></iframe>
</div>
</div>
<div class="modal modal-blur fade" id="modal-report" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">New report</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label class="form-label">Name</label>
<input type="text" class="form-control" name="example-text-input" placeholder="Your report name">
</div>
<label class="form-label">Report type</label>
<div class="form-selectgroup-boxes row mb-3">
<div class="col-lg-6">
<label class="form-selectgroup-item">
<input type="radio" name="report-type" value="1" class="form-selectgroup-input" checked>
<span class="form-selectgroup-label d-flex align-items-center p-3">
<span class="me-3">
<span class="form-selectgroup-check"></span>
</span>
<span class="form-selectgroup-label-content">
<span class="form-selectgroup-title strong mb-1">Simple</span>
<span class="d-block text-muted">Provide only basic data needed for the report</span>
</span>
</span>
</label>
</div>
<div class="col-lg-6">
<label class="form-selectgroup-item">
<input type="radio" name="report-type" value="1" class="form-selectgroup-input">
<span class="form-selectgroup-label d-flex align-items-center p-3">
<span class="me-3">
<span class="form-selectgroup-check"></span>
</span>
<span class="form-selectgroup-label-content">
<span class="form-selectgroup-title strong mb-1">Advanced</span>
<span class="d-block text-muted">Insert charts and additional advanced analyses to be inserted in the report</span>
</span>
</span>
</label>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="mb-3">
<label class="form-label">Report url</label>
<div class="input-group input-group-flat">
<span class="input-group-text">
https://tabler.io/reports/
</span>
<input type="text" class="form-control ps-0" value="report-01" autocomplete="off">
</div>
</div>
</div>
<div class="col-lg-4">
<div class="mb-3">
<label class="form-label">Visibility</label>
<select class="form-select">
<option value="1" selected>Private</option>
<option value="2">Public</option>
<option value="3">Hidden</option>
</select>
</div>
</div>
</div>
</div>
<div class="modal-body">
<div class="row">
<div class="col-lg-6">
<div class="mb-3">
<label class="form-label">Client name</label>
<input type="text" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="mb-3">
<label class="form-label">Reporting period</label>
<input type="date" class="form-control">
</div>
</div>
<div class="col-lg-12">
<div>
<label class="form-label">Additional information</label>
<textarea class="form-control" rows="3"></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<a href="#" class="btn btn-link link-secondary" data-bs-dismiss="modal">
Cancel
</a>
<a href="#" class="btn btn-primary ms-auto" data-bs-dismiss="modal">
<!-- Download SVG icon from http://tabler-icons.io/i/plus -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24"
stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<line x1="12" y1="5" x2="12" y2="19"/>
<line x1="5" y1="12" x2="19" y2="12"/>
</svg>
Create new report
</a>
</div>
</div>
</div>
</div>
<!-- Libs JS -->
<script src="/workStyle/tabler/libs/apexcharts/dist/apexcharts.min.js" defer></script>
<script src="/workStyle/tabler/libs/jsvectormap/dist/js/jsvectormap.min.js" defer></script>
<script src="/workStyle/tabler/libs/jsvectormap/dist/maps/world.js" defer></script>
<script src="/workStyle/tabler/libs/jsvectormap/dist/maps/world-merc.js" defer></script>
<!-- Tabler Core -->
<script src="/workStyle/tabler/js/tabler.min.js" defer></script>
<script src="/workStyle/tabler/js/demo.min.js" defer></script>
<script th:src="@{/js/jquery.min.js}"></script>
<script>
$(function () {
queryMu();
})
function queryMu(){
$.ajax({
url: "system/queryStyleMenus",
type: "POST",
dataType: "json",
// async: "true",
success: function (result) {
debugger
var html="";
if (result.code == 0) {
for(var i=0;i<result.data.length;i++){
if(result.data[i].menuVo.menus.length==1&&(result.data[i].menuVo.menus[0].children.length==0)){
if(i==0){
html+="<li class='nav-item active'>"
$("#iframeId").attr("src",result.data[i].menuVo.menus[0].url).attr("height",document.body.clientHeight)
// $("#iframeId").attr("src", result.data[i].menuVo.menus[0].url)
}else{
html+="<li class='nav-item'>"
}
// html+="<li class='nav-item active'>"
html+=" <a class='nav-link' onclick='num(this);' dataurl='"+result.data[i].menuVo.menus[0].url+"'>"
// html+="<span class=\"nav-link-icon d-md-none d-lg-inline-block\">"
html+="<i class='"+result.data[i].systemCodeDto.remark+"'></i>"
// html+="</span>"
html+="<span class=\"nav-link-title\">"+result.data[i].systemCodeDto.dictLabel+"</span>"
html+="</a></li>"
}else{
html+="<li class=\"nav-item dropdown\">"
html+=" <a class=\"nav-link dropdown-toggle\" href=\"#navbar-base\" data-bs-toggle=\"dropdown\"\n" +
" data-bs-auto-close=\"outside\" role=\"button\" aria-expanded=\"false\">"
html+="<i class='"+result.data[i].systemCodeDto.remark+"'></i>"
html+=" <span class=\"nav-link-title\">"+result.data[i].systemCodeDto.dictLabel+"</span>"
html+=" </span></a>"
html+="<div class=\"dropdown-menu\"><div class=\"dropdown-menu-columns\"><div class=\"dropdown-menu-column\">"
for(var j=0;j<result.data[i].menuVo.menus.length;j++){
if(result.data[i].menuVo.menus[j].children.length==0){
html+="<a class=\"dropdown-item\" href="+result.data[i].menuVo.menus[j].url+">"+result.data[i].menuVo.menus[j].menuName+"</a>"
}else{
html+="<div class=\"dropend\"><a class=\"dropdown-item dropdown-toggle\" href=\"#sidebar-cards\"\n" +
" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" role=\"button\"\n" +
" aria-expanded=\"false\">"
html+=result.data[i].menuVo.menus[j].menuName
html+="</a><div class=\"dropdown-menu\">"
for(var k=0;k<result.data[i].menuVo.menus[j].children.length;k++){
html+=" <a onclick='num(this);' dataurl="+result.data[i].menuVo.menus[j].children[k].url+" class=\"dropdown-item\">"+result.data[i].menuVo.menus[j].children[k].menuName
html+="</a>"
}
html+="</div> </div>"
}
}
html+=" </div> </div> </div></li>"
}
}
$("#conent").html(html)
}
if(result.code == 1){
location.href = ctx + 'login';
}
}
})
}
function num(obj){
$("li").removeClass('active')
$(obj).parents("li").addClass('active')
$("a").removeClass('active')
$(obj).addClass('active').parent().siblings('a').addClass('active')
$("#iframeId").attr("src",$(obj).attr("dataurl")).attr("height",document.body.clientHeight-110)
$("a").removeClass('show')
$("div").removeClass('show')
// alert($(obj).attr("dataurl"))
}
</script>
</body>
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<title>全民演练管理系统</title>
<!-- CSS files -->
<link href="/workStyle/tabler/css/tabler.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/tabler-flags.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/tabler-payments.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/tabler-vendors.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/demo.min.css" rel="stylesheet"/>
<link href="/workStyle/tabler/css/iconfont/tabler-icons.css" rel="stylesheet"/>
<style>
@import url('https://rsms.me/inter/inter.css');
:root {
--tblr-font-sans-serif: Inter, -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
}
</style>
</head>
<body class=" layout-fluid">
<script src="/workStyle/tabler/js/demo-theme.min.js"></script>
<div class="page">
<!-- Navbar -->
<header class="navbar navbar-expand-md navbar-light d-print-none">
<div class="container-xl">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-menu">
<span class="navbar-toggler-icon"></span>
</button>
<h1 class="navbar-brand navbar-brand-autodark d-none-navbar-horizontal pe-0 pe-md-3">
<a href=".">
<img src="../img/logo-yjyb.png" width="110" height="32" alt="Tabler" class="navbar-brand-image">
</a>
</h1>
<div class="navbar-nav flex-row order-md-last">
<div class="d-none d-md-flex">
<a href="?theme=dark" class="nav-link px-0 hide-theme-dark" title="Enable dark mode"
data-bs-toggle="tooltip"
data-bs-placement="bottom">
<!-- Download SVG icon from http://tabler-icons.io/i/moon -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24"
stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"/>
</svg>
</a>
<a href="?theme=light" class="nav-link px-0 hide-theme-light" title="Enable light mode"
data-bs-toggle="tooltip"
data-bs-placement="bottom">
<!-- Download SVG icon from http://tabler-icons.io/i/sun -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24"
stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<circle cx="12" cy="12" r="4"/>
<path d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7"/>
</svg>
</a>
<div class="nav-item dropdown d-none d-md-flex me-3">
<a href="#" class="nav-link px-0" data-bs-toggle="dropdown" tabindex="-1"
aria-label="Show notifications">
<!-- Download SVG icon from http://tabler-icons.io/i/bell -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M10 5a2 2 0 0 1 4 0a7 7 0 0 1 4 6v3a4 4 0 0 0 2 3h-16a4 4 0 0 0 2 -3v-3a7 7 0 0 1 4 -6"/>
<path d="M9 17v1a3 3 0 0 0 6 0v-1"/>
</svg>
<span class="badge bg-red"></span>
</a>
<div class="dropdown-menu dropdown-menu-arrow dropdown-menu-end dropdown-menu-card">
<div class="card">
<div class="card-header">
<h3 class="card-title">Last updates</h3>
</div>
<div class="list-group list-group-flush list-group-hoverable">
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-auto"><span
class="status-dot status-dot-animated bg-red d-block"></span></div>
<div class="col text-truncate">
<a href="#" class="text-body d-block">Example 1</a>
<div class="d-block text-muted text-truncate mt-n1">
Change deprecated html tags to text decoration classes (#29604)
</div>
</div>
<div class="col-auto">
<a href="#" class="list-group-item-actions">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon text-muted"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z"/>
</svg>
</a>
</div>
</div>
</div>
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-auto"><span class="status-dot d-block"></span></div>
<div class="col text-truncate">
<a href="#" class="text-body d-block">Example 2</a>
<div class="d-block text-muted text-truncate mt-n1">
justify-content:between ⇒ justify-content:space-between (#29734)
</div>
</div>
<div class="col-auto">
<a href="#" class="list-group-item-actions show">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon text-yellow"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z"/>
</svg>
</a>
</div>
</div>
</div>
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-auto"><span class="status-dot d-block"></span></div>
<div class="col text-truncate">
<a href="#" class="text-body d-block">Example 3</a>
<div class="d-block text-muted text-truncate mt-n1">
Update change-version.js (#29736)
</div>
</div>
<div class="col-auto">
<a href="#" class="list-group-item-actions">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon text-muted"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z"/>
</svg>
</a>
</div>
</div>
</div>
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-auto"><span
class="status-dot status-dot-animated bg-green d-block"></span>
</div>
<div class="col text-truncate">
<a href="#" class="text-body d-block">Example 4</a>
<div class="d-block text-muted text-truncate mt-n1">
Regenerate package-lock.json (#29730)
</div>
</div>
<div class="col-auto">
<a href="#" class="list-group-item-actions">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon text-muted"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z"/>
</svg>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="nav-item dropdown">
<a href="#" class="nav-link d-flex lh-1 text-reset p-0" data-bs-toggle="dropdown"
aria-label="Open user menu">
<img class="avatar avatar-sm user-image" th:src="(${user.avatar} == '') ? @{/img/profile.jpg} : @{${user.avatar}}"
>
<!-- <span class="avatar avatar-sm user-image" th:style="'background-image:'+(${user.avatar} == '') ? '/img/profile.jpg' : ${user.avatar}" ></span>-->
<div class="d-none d-xl-block ps-2">
<div>[[${user.userName}]]</div>
<div class="mt-1 small text-muted">[[${user.loginName}]]</div>
</div>
</a>
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
<a th:href="@{/system/user/profile}" class="dropdown-item">个人中心</a>
<a onclick="resetPwd()" class="dropdown-item">修改密码</a>
<a th:href="@{logout}" class="dropdown-item">退出登录</a>
<!-- <div class="dropdown-divider"></div>-->
<!-- <a href="./settings.html" class="dropdown-item">Settings</a>-->
<!-- <a href="./sign-in.html" class="dropdown-item">Logout</a>-->
</div>
</div>
</div>
</div>
</header>
<div class="navbar-expand-md">
<div class="collapse navbar-collapse" id="navbar-menu">
<div class="navbar navbar-light">
<div class="container-xl">
<ul class="navbar-nav" id="conent">
</ul>
<!-- <div class="my-2 my-md-0 flex-grow-1 flex-md-grow-0 order-first order-md-last">-->
<!-- <form action="./" method="get" autocomplete="off" novalidate>-->
<!-- <div class="input-icon">-->
<!-- <span class="input-icon-addon">-->
<!-- &lt;!&ndash; Download SVG icon from http://tabler-icons.io/i/search &ndash;&gt;-->
<!-- <svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24"-->
<!-- stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"-->
<!-- stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><circle cx="10"-->
<!-- cy="10"-->
<!-- r="7"/><line-->
<!-- x1="21" y1="21" x2="15" y2="15"/></svg>-->
<!-- </span>-->
<!-- <input type="text" value="" class="form-control" placeholder="Search…"-->
<!-- aria-label="Search in website">-->
<!-- </div>-->
<!-- </form>-->
<!-- </div>-->
</div>
</div>
</div>
</div>
<div class="page-wrapper">
<iframe id="iframeId" class="RuoYi_iframe" name="iframe0" width="100%" height="100%" data-id="/system/main"
src="" frameborder="0" seamless></iframe>
</div>
</div>
<div class="modal modal-blur fade" id="modal-report" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">New report</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label class="form-label">Name</label>
<input type="text" class="form-control" name="example-text-input" placeholder="Your report name">
</div>
<label class="form-label">Report type</label>
<div class="form-selectgroup-boxes row mb-3">
<div class="col-lg-6">
<label class="form-selectgroup-item">
<input type="radio" name="report-type" value="1" class="form-selectgroup-input" checked>
<span class="form-selectgroup-label d-flex align-items-center p-3">
<span class="me-3">
<span class="form-selectgroup-check"></span>
</span>
<span class="form-selectgroup-label-content">
<span class="form-selectgroup-title strong mb-1">Simple</span>
<span class="d-block text-muted">Provide only basic data needed for the report</span>
</span>
</span>
</label>
</div>
<div class="col-lg-6">
<label class="form-selectgroup-item">
<input type="radio" name="report-type" value="1" class="form-selectgroup-input">
<span class="form-selectgroup-label d-flex align-items-center p-3">
<span class="me-3">
<span class="form-selectgroup-check"></span>
</span>
<span class="form-selectgroup-label-content">
<span class="form-selectgroup-title strong mb-1">Advanced</span>
<span class="d-block text-muted">Insert charts and additional advanced analyses to be inserted in the report</span>
</span>
</span>
</label>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="mb-3">
<label class="form-label">Report url</label>
<div class="input-group input-group-flat">
<span class="input-group-text">
https://tabler.io/reports/
</span>
<input type="text" class="form-control ps-0" value="report-01" autocomplete="off">
</div>
</div>
</div>
<div class="col-lg-4">
<div class="mb-3">
<label class="form-label">Visibility</label>
<select class="form-select">
<option value="1" selected>Private</option>
<option value="2">Public</option>
<option value="3">Hidden</option>
</select>
</div>
</div>
</div>
</div>
<div class="modal-body">
<div class="row">
<div class="col-lg-6">
<div class="mb-3">
<label class="form-label">Client name</label>
<input type="text" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="mb-3">
<label class="form-label">Reporting period</label>
<input type="date" class="form-control">
</div>
</div>
<div class="col-lg-12">
<div>
<label class="form-label">Additional information</label>
<textarea class="form-control" rows="3"></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<a href="#" class="btn btn-link link-secondary" data-bs-dismiss="modal">
Cancel
</a>
<a href="#" class="btn btn-primary ms-auto" data-bs-dismiss="modal">
<!-- Download SVG icon from http://tabler-icons.io/i/plus -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24"
stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<line x1="12" y1="5" x2="12" y2="19"/>
<line x1="5" y1="12" x2="19" y2="12"/>
</svg>
Create new report
</a>
</div>
</div>
</div>
</div>
<!-- Libs JS -->
<script src="/workStyle/tabler/libs/apexcharts/dist/apexcharts.min.js" defer></script>
<script src="/workStyle/tabler/libs/jsvectormap/dist/js/jsvectormap.min.js" defer></script>
<script src="/workStyle/tabler/libs/jsvectormap/dist/maps/world.js" defer></script>
<script src="/workStyle/tabler/libs/jsvectormap/dist/maps/world-merc.js" defer></script>
<!-- Tabler Core -->
<script src="/workStyle/tabler/js/tabler.min.js" defer></script>
<script src="/workStyle/tabler/js/demo.min.js" defer></script>
<script th:src="@{/js/jquery.min.js}"></script>
<script>
$(function () {
queryMu();
})
function queryMu(){
$.ajax({
url: "system/queryStyleMenus",
type: "POST",
dataType: "json",
// async: "true",
success: function (result) {
debugger
var html="";
if (result.code == 0) {
for(var i=0;i<result.data.length;i++){
if(result.data[i].menuVo.menus.length==1&&(result.data[i].menuVo.menus[0].children.length==0)){
if(i==0){
html+="<li class='nav-item active'>"
$("#iframeId").attr("src",result.data[i].menuVo.menus[0].url).attr("height",document.body.clientHeight)
// $("#iframeId").attr("src", result.data[i].menuVo.menus[0].url)
}else{
html+="<li class='nav-item'>"
}
// html+="<li class='nav-item active'>"
html+=" <a class='nav-link' onclick='num(this);' dataurl='"+result.data[i].menuVo.menus[0].url+"'>"
// html+="<span class=\"nav-link-icon d-md-none d-lg-inline-block\">"
html+="<i class='"+result.data[i].systemCodeDto.remark+"'></i>"
// html+="</span>"
html+="<span class=\"nav-link-title\">"+result.data[i].systemCodeDto.dictLabel+"</span>"
html+="</a></li>"
}else{
html+="<li class=\"nav-item dropdown\">"
html+=" <a class=\"nav-link dropdown-toggle\" href=\"#navbar-base\" data-bs-toggle=\"dropdown\"\n" +
" data-bs-auto-close=\"outside\" role=\"button\" aria-expanded=\"false\">"
html+="<i class='"+result.data[i].systemCodeDto.remark+"'></i>"
html+=" <span class=\"nav-link-title\">"+result.data[i].systemCodeDto.dictLabel+"</span>"
html+=" </span></a>"
html+="<div class=\"dropdown-menu\"><div class=\"dropdown-menu-columns\"><div class=\"dropdown-menu-column\">"
for(var j=0;j<result.data[i].menuVo.menus.length;j++){
if(result.data[i].menuVo.menus[j].children.length==0){
html+="<a class=\"dropdown-item\" href="+result.data[i].menuVo.menus[j].url+">"+result.data[i].menuVo.menus[j].menuName+"</a>"
}else{
html+="<div class=\"dropend\"><a class=\"dropdown-item dropdown-toggle\" href=\"#sidebar-cards\"\n" +
" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" role=\"button\"\n" +
" aria-expanded=\"false\">"
html+=result.data[i].menuVo.menus[j].menuName
html+="</a><div class=\"dropdown-menu\">"
for(var k=0;k<result.data[i].menuVo.menus[j].children.length;k++){
html+=" <a onclick='num(this);' dataurl="+result.data[i].menuVo.menus[j].children[k].url+" class=\"dropdown-item\">"+result.data[i].menuVo.menus[j].children[k].menuName
html+="</a>"
}
html+="</div> </div>"
}
}
html+=" </div> </div> </div></li>"
}
}
$("#conent").html(html)
}
if(result.code == 1){
location.href = ctx + 'login';
}
}
})
}
function num(obj){
$("li").removeClass('active')
$(obj).parents("li").addClass('active')
$("a").removeClass('active')
$(obj).addClass('active').parent().siblings('a').addClass('active')
$("#iframeId").attr("src",$(obj).attr("dataurl")).attr("height",document.body.clientHeight-110)
$("a").removeClass('show')
$("div").removeClass('show')
// alert($(obj).attr("dataurl"))
}
</script>
</body>
</html>

406
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/login.html

@ -1,203 +1,203 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<title>登录智慧应急管理云平台</title>
<meta name="description" content="后台管理框架">
<link href="../static/css/bootstrap-4.2.1/css/bootstrap.css" th:href="@{/css/bootstrap-4.2.1/css/bootstrap.css}" rel="stylesheet"/>
<!--<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>-->
<!--<link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>-->
<!--<link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>-->
<!--<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.1.0}" rel="stylesheet"/>-->
<!-- 360浏览器急速模式 -->
<meta name="renderer" content="webkit">
<!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>-->
<style type="text/css">label.error { position:inherit; }</style>
<link href="../static/css/style.default.css" th:href="@{/css/style.default.css}" rel="stylesheet"/>
<script>
if(window.top!==window.self){window.top.location=window.location};
</script>
</head>
<body>
<div class="page login-page">
<div class="container d-flex align-items-center">
<div class="form-holder has-shadow">
<div class="row">
<div class="col-lg-6">
<div class="info d-flex align-items-center">
<div class="content">
<div class="logo">
</div>
<div class="logosys">公务车辆管理系统</div>
</div>
</div>
</div>
<div class="col-lg-6 bg-white">
<!--<div class="form d-flex align-items-center" style="background: url(../img/ztf.jpg) no-repeat bottom 10% right 10%;-->
<!--background-size: 30%;">-->
<div class="form d-flex align-items-center">
<div class="content">
<h1>欢迎登录</h1>
<!--<form id="loginFrom">-->
<div class="form-group">
<input id="login-username" type="text" name="username" required data-msg="请输入用户名" placeholder="用户名" class="input-material">
</div>
<div class="form-group">
<input id="login-password" type="password" name="password" required data-msg="请输入密码" placeholder="密码" class="input-material">
</div>
<!--<div class="form-group" th:if="${captchaEnabled==true}">-->
<!--&lt;!&ndash;<div class="col-xs-6">&ndash;&gt;-->
<!--<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" autocomplete="off">-->
<!--<a href="javascript:void(0);" title="点击更换验证码">-->
<!--<img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>-->
<!--</a>-->
<!--</div>-->
<!--<div class="col-xs-6">-->
<!--</div>-->
<!--</div>-->
<button id="login" type="submit" class="btn btn-primary">登录</button>
<div style="margin-top: -40px;">
<!--<div class="custom-control custom-checkbox " style="float: right;">-->
<!--<input type="checkbox" class="custom-control-input" id="check2">-->
<!--<label class="custom-control-label" for="check2">自动登录</label>-->
<!--</div>-->
<!--<div class="custom-control custom-checkbox " style="float: right;">
<input type="checkbox" class="custom-control-input" id="check1">
<label class="custom-control-label" for="check1">记住密码&nbsp;&nbsp;</label>
</div>-->
</div>
<!--</form>-->
<br />
<!-- <small>没有账号?</small><a target=“_blank” href="/safety/enterprise/register" class="signup">&nbsp;注册</a>-->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--<script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script>-->
<!--<script src="https://www.jq22.com/jquery/bootstrap-3.3.4.js"></script>-->
<!--<script src="vendor/jquery-validation/jquery.validate.min.js"></script>-->
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
<!--<script src="js/front.js"></script>-->
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
<!--<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>-->
<!-- 验证插件 -->
<!--<script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>-->
<!--<script src="../static/ajax/libs/validate/messages_zh.min.js" th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>-->
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
<!--<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.1.0}"></script>-->
<!--<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>-->
<!--<script src="../static/js/crypto-js.js" type="text/javascript"></script>-->
<script src="../static/js/crypto-js.js" th:src="@{/js/crypto-js.js}"></script>
<script>
let data = {
from: 'iframe logout',
code: 403,
data: '退出登录'
};
window.top.postMessage(data, '*');
</script>
<script>
$(function(){
/*判断上次是否勾选记住密码和自动登录*/
/*var check1s=localStorage.getItem("check1");
var check2s=localStorage.getItem("check2");
var oldName=localStorage.getItem("userName");
var oldPass=localStorage.getItem("passWord");
if(check1s=="true"){
$("#login-username").val(oldName);
$("#login-password").val(oldPass);
$("#check1").prop('checked',true);
}else{
$("#login-username").val('');
$("#login-password").val('');
$("#check1").prop('checked',false);
}
if(check2s=="true"){
$("#check2").prop('checked',true);
$("#loginFrom").submit();
//location="https://www.baidu.com?userName="+oldName+"&passWord="+oldPass;//添加退出当前账号功能
}else{
$("#check2").prop('checked',false);
}*/
/*拿到刚刚注册的账号*/
/*if(localStorage.getItem("name")!=null){
$("#login-username").val(localStorage.getItem("name"));
}*/
/*登录*/
$("#login").click(function(){
login();
})
$(document).keypress(function (e) {
if (e.keyCode == 13){
login();
}
})
})
/**
* 登录
*/
function login() {
//var rememberMe = $("#check1").prop('checked');
//var rememberMe = false;
var userName=$("#login-username").val();
var passWord=$("#login-password").val();
$.ajax({
type: "post",
url: ctx + "login",
data: {
"username": userName,
"password": Encrypt(passWord)
//"rememberMe": rememberMe
},
success: function(r) {
if (r.code == 0) {
location.href = ctx + 'index';
} else {
layer.msg(r.msg)
}
}
});
}
/**
* 加密密码
* @param passWord
* @constructor
*/
function Encrypt(passWord) {
var keyStr = '1234567898745621';
var ivStr = keyStr;
var key = CryptoJS.enc.Utf8.parse(keyStr);
var iv = CryptoJS.enc.Utf8.parse(ivStr);
var srcs = CryptoJS.enc.Utf8.parse(passWord);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<title>登录智慧应急管理云平台</title>
<meta name="description" content="后台管理框架">
<link href="../static/css/bootstrap-4.2.1/css/bootstrap.css" th:href="@{/css/bootstrap-4.2.1/css/bootstrap.css}" rel="stylesheet"/>
<!--<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>-->
<!--<link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>-->
<!--<link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>-->
<!--<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.1.0}" rel="stylesheet"/>-->
<!-- 360浏览器急速模式 -->
<meta name="renderer" content="webkit">
<!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>-->
<style type="text/css">label.error { position:inherit; }</style>
<link href="../static/css/style.default.css" th:href="@{/css/style.default.css}" rel="stylesheet"/>
<script>
if(window.top!==window.self){window.top.location=window.location};
</script>
</head>
<body>
<div class="page login-page">
<div class="container d-flex align-items-center">
<div class="form-holder has-shadow">
<div class="row">
<div class="col-lg-6">
<div class="info d-flex align-items-center">
<div class="content">
<div class="logo">
</div>
<div class="logosys">全民演练系统</div>
</div>
</div>
</div>
<div class="col-lg-6 bg-white">
<!--<div class="form d-flex align-items-center" style="background: url(../img/ztf.jpg) no-repeat bottom 10% right 10%;-->
<!--background-size: 30%;">-->
<div class="form d-flex align-items-center">
<div class="content">
<h1>欢迎登录</h1>
<!--<form id="loginFrom">-->
<div class="form-group">
<input id="login-username" type="text" name="username" required data-msg="请输入用户名" placeholder="用户名" class="input-material">
</div>
<div class="form-group">
<input id="login-password" type="password" name="password" required data-msg="请输入密码" placeholder="密码" class="input-material">
</div>
<!--<div class="form-group" th:if="${captchaEnabled==true}">-->
<!--&lt;!&ndash;<div class="col-xs-6">&ndash;&gt;-->
<!--<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" autocomplete="off">-->
<!--<a href="javascript:void(0);" title="点击更换验证码">-->
<!--<img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>-->
<!--</a>-->
<!--</div>-->
<!--<div class="col-xs-6">-->
<!--</div>-->
<!--</div>-->
<button id="login" type="submit" class="btn btn-primary">登录</button>
<div style="margin-top: -40px;">
<!--<div class="custom-control custom-checkbox " style="float: right;">-->
<!--<input type="checkbox" class="custom-control-input" id="check2">-->
<!--<label class="custom-control-label" for="check2">自动登录</label>-->
<!--</div>-->
<!--<div class="custom-control custom-checkbox " style="float: right;">
<input type="checkbox" class="custom-control-input" id="check1">
<label class="custom-control-label" for="check1">记住密码&nbsp;&nbsp;</label>
</div>-->
</div>
<!--</form>-->
<br />
<!-- <small>没有账号?</small><a target=“_blank” href="/safety/enterprise/register" class="signup">&nbsp;注册</a>-->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--<script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script>-->
<!--<script src="https://www.jq22.com/jquery/bootstrap-3.3.4.js"></script>-->
<!--<script src="vendor/jquery-validation/jquery.validate.min.js"></script>-->
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
<!--<script src="js/front.js"></script>-->
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
<!--<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>-->
<!-- 验证插件 -->
<!--<script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>-->
<!--<script src="../static/ajax/libs/validate/messages_zh.min.js" th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>-->
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
<!--<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.1.0}"></script>-->
<!--<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>-->
<!--<script src="../static/js/crypto-js.js" type="text/javascript"></script>-->
<script src="../static/js/crypto-js.js" th:src="@{/js/crypto-js.js}"></script>
<script>
let data = {
from: 'iframe logout',
code: 403,
data: '退出登录'
};
window.top.postMessage(data, '*');
</script>
<script>
$(function(){
/*判断上次是否勾选记住密码和自动登录*/
/*var check1s=localStorage.getItem("check1");
var check2s=localStorage.getItem("check2");
var oldName=localStorage.getItem("userName");
var oldPass=localStorage.getItem("passWord");
if(check1s=="true"){
$("#login-username").val(oldName);
$("#login-password").val(oldPass);
$("#check1").prop('checked',true);
}else{
$("#login-username").val('');
$("#login-password").val('');
$("#check1").prop('checked',false);
}
if(check2s=="true"){
$("#check2").prop('checked',true);
$("#loginFrom").submit();
//location="https://www.baidu.com?userName="+oldName+"&passWord="+oldPass;//添加退出当前账号功能
}else{
$("#check2").prop('checked',false);
}*/
/*拿到刚刚注册的账号*/
/*if(localStorage.getItem("name")!=null){
$("#login-username").val(localStorage.getItem("name"));
}*/
/*登录*/
$("#login").click(function(){
login();
})
$(document).keypress(function (e) {
if (e.keyCode == 13){
login();
}
})
})
/**
* 登录
*/
function login() {
//var rememberMe = $("#check1").prop('checked');
//var rememberMe = false;
var userName=$("#login-username").val();
var passWord=$("#login-password").val();
$.ajax({
type: "post",
url: ctx + "login",
data: {
"username": userName,
"password": Encrypt(passWord)
//"rememberMe": rememberMe
},
success: function(r) {
if (r.code == 0) {
location.href = ctx + 'index';
} else {
layer.msg(r.msg)
}
}
});
}
/**
* 加密密码
* @param passWord
* @constructor
*/
function Encrypt(passWord) {
var keyStr = '1234567898745621';
var ivStr = keyStr;
var key = CryptoJS.enc.Utf8.parse(keyStr);
var iv = CryptoJS.enc.Utf8.parse(ivStr);
var srcs = CryptoJS.enc.Utf8.parse(passWord);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
</script>
</body>
</html>

11
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/library/view.html

@ -147,6 +147,17 @@
return $.table.selectDictLabel(pinneds, value);
}
},
{
field: 'creator',
title: '创建人',
align: 'center',
},
{
field: 'createTime',
title: '创建时间',
align: 'center',
sortable: true
},
{
field: 'publishdate',
title: '发布时间',

4
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/question/add.html

@ -29,6 +29,10 @@
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
<label class="col-sm-2 control-label is-required">答案:</label>
<div class="col-sm-4">
<input class="form-control" type="text" name="answer" id="answer" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">选项:</label>

6
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/question/detail.html

@ -18,7 +18,7 @@
<div class="form-group">
<label class="col-sm-2 control-label is-required">标题:</label>
<div class="col-sm-10">
<input class="form-control" type="text" name="title" id="title" th:field="*{title}" required>
<input class="form-control" type="text" name="title" id="title" th:field="*{title}" disabled required>
</div>
</div>
<div class="form-group">
@ -35,6 +35,10 @@
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:field="*{type}" th:value="${dict.dictValue}"></option>
</select>
</div>
<label class="col-sm-2 control-label is-required">答案:</label>
<div class="col-sm-4">
<input class="form-control" type="text" name="answer" id="answer" th:field="*{answer}" disabled required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">选项:</label>

4
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/question/edit.html

@ -30,6 +30,10 @@
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:field="*{type}" th:value="${dict.dictValue}"></option>
</select>
</div>
<label class="col-sm-2 control-label is-required">答案:</label>
<div class="col-sm-4">
<input class="form-control" type="text" name="answer" id="answer" th:field="*{answer}" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">选项:</label>

49
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/smallProgram/question/view.html

@ -46,7 +46,10 @@
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('small:question:edit')}]];
var removeFlag = [[${@permission.hasPermi('small:question:remove')}]];
var importFlag = [[${@permission.hasPermi('small:question:import')}]];
var publishStates = [[${@dict.getType('publish_state')}]];
var questionTypes = [[${@dict.getType('question_type')}]];
var importboolen = (importFlag == "" ? true : false)
var prefix = ctx + "small/question";
$(function () {
@ -60,9 +63,14 @@
updateUrl: prefix + "/edit/{id}",
detailUrl: prefix + "/detail/{id}",
removeUrl: prefix + "/remove",
importUrl: prefix + "/importData",
sortName: "srot",
modalName: "知识点",
uniqueId:"guid",
showCustomImport: importboolen,
customImportFunction: function () {
$.table.importExcel();
},
columns: [{
checkbox: true
},
@ -82,6 +90,18 @@
field: 'title',
title: '标题'
},
{
field: 'answer',
title: '答案'
},
{
field: 'type',
title: '题型',
align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(questionTypes, value);
}
},
{
field : 'status',
title : '状态',
@ -90,6 +110,17 @@
return $.table.selectDictLabel(statuss, value);
}
},
{
field: 'creator',
title: '创建人',
align: 'center',
},
{
field: 'createTime',
title: '创建时间',
align: 'center',
sortable: true
},
{
field: 'publishdate',
title: '发布时间',
@ -111,11 +142,6 @@
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.guid + '\')"><i class="fa fa-edit"></i> 详情</a> ');
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.guid + '\')"><i class="fa fa-edit"></i> 编辑</a> ');
if (row.publishstate == 0) {
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="toPublishState(\'' + row.guid + '\',1)"><i class="fa fa-edit"></i> 发布</a> ');
} else if (row.publishstate == 1) {
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="toPublishState(\'' + row.guid + '\',3)"><i class="fa fa-edit"></i> 下线</a> ');
}
// more.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.guid + '\')"><i class="fa fa-remove"></i> 删除</a>');
return actions.join('');
}
@ -192,4 +218,17 @@
</script>
</body>
<script id="importTpl" type="text/template">
<form enctype="multipart/form-data" class="mt20 mb10">
<div class="col-xs-offset-1">
<input type="file" id="file" name="file"/>
<div class="mt10 pt5">
<a href="/small/question/importTemplate"><i class="fa fa-file-excel-o"></i> 下载模板</a>
</div>
<font color="red" class="pull-left mt10">
提示:仅允许导入“xls”或“xlsx”格式文件!
</font>
</div>
</form>
</script>
</html>

32
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/QuestionBankController.java

@ -1,5 +1,6 @@
package com.zdxt.knowledge.controller;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@ -9,11 +10,17 @@ import com.zdxt.common.controller.BaseController;
import com.zdxt.common.util.TableDataInfo;
import com.zdxt.knowledge.domain.AnswerBank;
import com.zdxt.knowledge.domain.QuestionBank;
import com.zdxt.knowledge.domain.QuestionImportDataModel;
import com.zdxt.knowledge.domain.SceneImportDataModel;
import com.zdxt.knowledge.dto.QuestionBankBean;
import com.zdxt.knowledge.service.IAnswerBankService;
import com.zdxt.knowledge.service.IQuestionBankService;
import com.zdxt.knowledge.utils.ExcelUtil;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
@ -181,4 +188,29 @@ public class QuestionBankController extends BaseController
return ZDResponse.error("操作失败");
}
}
/**
* 删除
*/
@PostMapping("/importData")
@ResponseBody
@ApiOperation("导入记录")
public ZDResponse importRecord(@RequestPart("file") MultipartFile multipartFile) {
return questionBankService.importData(multipartFile);
}
/**
* 导入模版
*/
@GetMapping("/importTemplate")
@ApiOperation("获得导入记录文档样品")
@ResponseBody
public ResponseEntity<Resource> exampleImportRecord() {
QuestionImportDataModel dataModel = new QuestionImportDataModel();
return ExcelUtil.getExcelSimpleResponseEntity(
null,
Collections.singletonList(dataModel),
QuestionImportDataModel.class
);
}
}

1
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/SceneManageController.java

@ -146,7 +146,6 @@ public class SceneManageController extends BaseController {
dataModel.setType("文字");
dataModel.setSourceUnit("深圳消防");
dataModel.setIsOpen("是");
dataModel.setSort(1);
dataModel.setSceneBackground("开展全员消防培训及演练活动,增强员工防火意识、提升火灾处理能力");
dataModel.setDescribe("逐人过关熟悉掌握基本防火意识及注意事项;强化操练灭火器等消防装备器材的使用方法和操作");
return ExcelUtil.getExcelSimpleResponseEntity(

79
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/domain/QuestionImportDataModel.java

@ -0,0 +1,79 @@
package com.zdxt.knowledge.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.zdxt.common.BaseDomain;
/**
* 题库对象 question_bank
*
* @author ruoyi
* @date 2023-12-29
*/
public class QuestionImportDataModel {
/** 标题 */
@ExcelProperty("标题")
@ColumnWidth(20)
private String title;
/** 内容 */
@ExcelProperty("内容")
@ColumnWidth(20)
private String content;
/** 提示 */
@ExcelProperty("文字提示")
@ColumnWidth(20)
private String tips;
/** 答案 */
@ExcelProperty("答案")
@ColumnWidth(20)
private String answer;
/** 类型(0:单选,1:多选,2:判断) */
@ExcelProperty("类型")
@ColumnWidth(20)
private String type;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTips() {
return tips;
}
public void setTips(String tips) {
this.tips = tips;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}

49
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/domain/SceneImportDataModel.java

@ -2,12 +2,10 @@ package com.zdxt.knowledge.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
/**
* @author yanyan
*/
@Data
public class SceneImportDataModel {
/**
@ -50,4 +48,51 @@ public class SceneImportDataModel {
@ColumnWidth(20)
private String describe;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSourceUnit() {
return sourceUnit;
}
public void setSourceUnit(String sourceUnit) {
this.sourceUnit = sourceUnit;
}
public String getIsOpen() {
return isOpen;
}
public void setIsOpen(String isOpen) {
this.isOpen = isOpen;
}
public String getSceneBackground() {
return sceneBackground;
}
public void setSceneBackground(String sceneBackground) {
this.sceneBackground = sceneBackground;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
}

8
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/mapper/QuestionBankMapper.java

@ -1,6 +1,7 @@
package com.zdxt.knowledge.mapper;
import com.zdxt.knowledge.domain.QuestionBank;
import com.zdxt.knowledge.domain.SceneManage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -67,4 +68,11 @@ public interface QuestionBankMapper
* @return
*/
public int updatePublishState(@Param("guids") String[] guids, @Param("state") String state, @Param("publishdate") String publishdate);
/**
* 批量新增【请填写功能名称】
* @param questionBanks 【请填写功能名称】
* @return 结果
*/
public int batchInsertQuestion(List<QuestionBank> questionBanks);
}

8
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/IQuestionBankService.java

@ -1,5 +1,6 @@
package com.zdxt.knowledge.service;
import com.zdxt.common.ZDResponse;
import com.zdxt.common.zdxtFile.AttFileRespDTO;
import com.zdxt.knowledge.domain.QuestionBank;
import com.zdxt.knowledge.dto.QuestionBankBean;
@ -83,4 +84,11 @@ public interface IQuestionBankService
* @return
*/
public int removeFile(String key);
/**
* 导入【请填写功能名称】信息
* @param multipartFile
* @return 结果
*/
ZDResponse importData(MultipartFile multipartFile);
}

4
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/BannerManageServiceImpl.java

@ -7,6 +7,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.zdxt.auth.dto.ZdxtFileBean;
import com.zdxt.auth.feign.FileUploadApi;
import com.zdxt.auth.feign.UserApi;
import com.zdxt.auth.feign.ZdxtFileCommonApi;
import com.zdxt.common.util.Convert;
import com.zdxt.common.util.DateUtils;
@ -33,6 +34,7 @@ public class BannerManageServiceImpl implements IBannerManageService
@Autowired private BannerManageMapper bannerManageMapper;
@Autowired private FileUploadApi fileUploadApi;
@Autowired private ZdxtFileCommonApi zdxtFileCommonApi;
@Autowired private UserApi userApi;
/**
* 查询横幅管理
@ -69,6 +71,7 @@ public class BannerManageServiceImpl implements IBannerManageService
{
bannerManage.setGuid(StringUtils.getUUID());
bannerManage.setSrot(0L);
bannerManage.setCreator(userApi.getCurrentUser().getUserName());
int resNum = bannerManageMapper.insertBannerManage(bannerManage);
// 上传文件,并在附件表中添加记录
@ -95,6 +98,7 @@ public class BannerManageServiceImpl implements IBannerManageService
@Override
public int updateBannerManage(BannerManage bannerManage, MultipartFile[] files)
{
bannerManage.setUpdator(userApi.getCurrentUser().getUserName());
int resNum = bannerManageMapper.updateBannerManage(bannerManage);
// 上传文件,并在附件表中添加记录

4
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/KnowledgeLibraryServiceImpl.java

@ -7,6 +7,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.zdxt.auth.dto.ZdxtFileBean;
import com.zdxt.auth.feign.FileUploadApi;
import com.zdxt.auth.feign.UserApi;
import com.zdxt.auth.feign.ZdxtFileCommonApi;
import com.zdxt.common.util.Convert;
import com.zdxt.common.util.DateUtils;
@ -33,6 +34,7 @@ public class KnowledgeLibraryServiceImpl implements IKnowledgeLibraryService
@Autowired private KnowledgeLibraryMapper knowledgeLibraryMapper;
@Autowired private FileUploadApi fileUploadApi;
@Autowired private ZdxtFileCommonApi zdxtFileCommonApi;
@Autowired private UserApi userApi;
/**
* 查询知识库
@ -69,6 +71,7 @@ public class KnowledgeLibraryServiceImpl implements IKnowledgeLibraryService
{
knowledgeLibrary.setGuid(StringUtils.getUUID());
knowledgeLibrary.setSrot(0L);
knowledgeLibrary.setCreator(userApi.getCurrentUser().getUserName());
int resNum = knowledgeLibraryMapper.insertKnowledgeLibrary(knowledgeLibrary);
// 上传文件,并在附件表中添加记录
@ -102,6 +105,7 @@ public class KnowledgeLibraryServiceImpl implements IKnowledgeLibraryService
@Override
public int updateKnowledgeLibrary(KnowledgeLibrary knowledgeLibrary, MultipartFile[] files)
{
knowledgeLibrary.setUpdator(userApi.getCurrentUser().getUserName());
int resNum = knowledgeLibraryMapper.updateKnowledgeLibrary(knowledgeLibrary);
// 上传文件,并在附件表中添加记录

51
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/QuestionBankServiceImpl.java

@ -2,24 +2,34 @@ package com.zdxt.knowledge.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.zdxt.auth.dto.DictDataBean;
import com.zdxt.auth.dto.UserBean;
import com.zdxt.auth.dto.ZdxtFileBean;
import com.zdxt.auth.feign.DictDataApi;
import com.zdxt.auth.feign.FileUploadApi;
import com.zdxt.auth.feign.UserApi;
import com.zdxt.auth.feign.ZdxtFileCommonApi;
import com.zdxt.common.ZDResponse;
import com.zdxt.common.util.Convert;
import com.zdxt.common.util.DateUtils;
import com.zdxt.common.util.StringUtils;
import com.zdxt.common.zdxtFile.AttFileRespDTO;
import com.zdxt.common.zdxtFile.FilePreviewUtilBean;
import com.zdxt.common.zdxtFile.ZdxtFileCommon;
import com.zdxt.knowledge.domain.AnswerBank;
import com.zdxt.knowledge.domain.QuestionBank;
import com.zdxt.knowledge.domain.*;
import com.zdxt.knowledge.dto.QuestionBankBean;
import com.zdxt.knowledge.mapper.AnswerBankMapper;
import com.zdxt.knowledge.mapper.QuestionBankMapper;
import com.zdxt.knowledge.service.IQuestionBankService;
import com.zdxt.knowledge.utils.ExcelUtil;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@ -37,6 +47,8 @@ public class QuestionBankServiceImpl implements IQuestionBankService
@Autowired private AnswerBankMapper answerBankMapper;
@Autowired private FileUploadApi fileUploadApi;
@Autowired private ZdxtFileCommonApi zdxtFileCommonApi;
@Autowired private UserApi userApi;
@Autowired private DictDataApi dictDataApi;
/**
* 查询题库
@ -76,6 +88,7 @@ public class QuestionBankServiceImpl implements IQuestionBankService
questionBank.setGuid(StringUtils.getUUID());
questionBank.setSrot(0L);
questionBank.setCreator(userApi.getCurrentUser().getUserName());
int resNum = questionBankMapper.insertQuestionBank(questionBank);
String[] codes = bean.getCodes().split(",");
String[] values = bean.getValues().split(",");
@ -112,6 +125,7 @@ public class QuestionBankServiceImpl implements IQuestionBankService
{
QuestionBank questionBank = new QuestionBank();
BeanUtil.copyProperties(bean, questionBank);
questionBank.setUpdator(userApi.getCurrentUser().getUserName());
int resNum = questionBankMapper.updateQuestionBank(questionBank);
String[] codes = bean.getCodes().split(",");
@ -194,4 +208,37 @@ public class QuestionBankServiceImpl implements IQuestionBankService
public int removeFile(String key) {
return zdxtFileCommonApi.deleteZdxtFileById(key);
}
@Override
public ZDResponse importData(MultipartFile multipartFile) {
List<QuestionImportDataModel> dataModelList = ExcelUtil.read(multipartFile, QuestionImportDataModel.class);
DictDataBean dictDataBean = new DictDataBean();
dictDataBean.setDictType("question_type");
List<DictDataBean> questionTypeDict = dictDataApi.getDictData(dictDataBean);
Map<String, String> questionTypeMap = questionTypeDict.stream().collect(Collectors.toMap(DictDataBean::getDictLabel, DictDataBean::getDictValue));
if (CollectionUtils.isNotEmpty(dataModelList)) {
List<QuestionBank> questionBankList = dataModelList.stream()
.filter(Objects::nonNull).peek(item -> {
String type = questionTypeMap.get(item.getType());
item.setType(type == null ? item.getType() : type);
})
.map(item -> {
UserBean userBean = userApi.getCurrentUser();
QuestionBank questionBank = new QuestionBank();
BeanUtils.copyProperties(item, questionBank);
questionBank.setGuid(StringUtils.getUUID());
questionBank.setType(Integer.valueOf(item.getType()));
questionBank.setCreator(userBean.getUserName());
return questionBank;
})
.collect(Collectors.toList());
return questionBankMapper.batchInsertQuestion(questionBankList) > 0
? ZDResponse.success("导入成功") : ZDResponse.error("导入失败");
} else {
return ZDResponse.error("上传数据不允许为空!");
}
}
}

9
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/resources/mapper/QuestionBankMapper.xml

@ -125,5 +125,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{guid}
</foreach>
</update>
<insert id="batchInsertQuestion">
insert into question_bank
(guid, title, `content`, tips, answer, `type`, creator) values
<foreach collection="questionBanks" item="obj" separator=",">
(#{obj.guid},#{obj.title},#{obj.content},#{obj.tips},#{obj.answer},#{obj.type},#{obj.creator})
</foreach>
</insert>
</mapper>
Loading…
Cancel
Save