阅行客电子档案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

316 lines
8.6 KiB

2 years ago
  1. <template>
  2. <div class="dashboard-container">
  3. <div class="dashboard-editor-container">
  4. <panel-group />
  5. <el-row :gutter="20" style="margin-bottom:20px;height: 152px;">
  6. <el-col :xs="24" :sm="24" :lg="16">
  7. <div class="container-left search-area">
  8. <span class="right-top-line" />
  9. <span class="left-bottom-line" />
  10. <SearchAcrives />
  11. </div>
  12. </el-col>
  13. <el-col :xs="24" :sm="24" :lg="8">
  14. <div class="container-left" style="height: 100%;margin: 0">
  15. <span class="right-top-line" />
  16. <span class="left-bottom-line" />
  17. <h3 class=" table-title">
  18. <p class="title-arrow">
  19. <svg-icon icon-class="a-3Dkufang" class-name="warehouse-svg" />3D库房
  20. </p>
  21. </h3>
  22. <div class="warehouse-tab">
  23. <ul class="warehouse-nav">
  24. <li @click="changeActiveTab(0)">
  25. <span />
  26. <p>全景图</p>
  27. </li>
  28. <li @click="changeActiveTab(1)">
  29. <span />
  30. <p>档案库</p>
  31. </li>
  32. <li @click="changeActiveTab(2)">
  33. <span />
  34. <p>整理室</p>
  35. </li>
  36. <li @click="changeActiveTab(3)">
  37. <span />
  38. <p>阅览室</p>
  39. </li>
  40. </ul>
  41. </div>
  42. </div>
  43. </el-col>
  44. </el-row>
  45. <el-row :gutter="20" style="margin-bottom:20px;height: calc(50vh - 251px);">
  46. <el-col :xs="24" :sm="24" :lg="8">
  47. <!-- 待办事项 -->
  48. <div class="container-wrap">
  49. <span class="right-top-line" />
  50. <span class="left-bottom-line" />
  51. <h3 class="table-title">
  52. <p class="title-arrow">
  53. <svg-icon icon-class="tongzhigonggao" class-name="warehouse-svg" />待办事项
  54. </p>
  55. </h3>
  56. <div style="height: calc(100% - 40px);overflow-y: auto;overflow-x: hidden;">
  57. <ul v-if="waitBorrowerData.length !== 0" class="todo-list">
  58. <li v-for="(item,index) in waitBorrowerData" :key="index">
  59. <el-tooltip class="item" effect="dark" :content="item.title" :enterable="false" placement="top">
  60. <p>{{ item.title }}</p>
  61. </el-tooltip>
  62. <span>{{ item.update_time | parseTime }}</span>
  63. </li>
  64. </ul>
  65. <div v-else class="empty-main" style="height: 100%;">
  66. <svg-icon icon-class="empty" class-name="empty-img" />
  67. <p>暂无数据</p>
  68. </div>
  69. </div>
  70. </div>
  71. </el-col>
  72. <el-col :xs="24" :sm="24" :lg="8">
  73. <!-- 门禁记录 -->
  74. <security-door :height="'calc(100% - 40px)'" />
  75. </el-col>
  76. <el-col :xs="24" :sm="24" :lg="8">
  77. <!-- 报警记录 -->
  78. <warehouse-warning :height="'calc(100% - 40px)'" />
  79. </el-col>
  80. </el-row>
  81. <el-row :gutter="20" style="height: calc(50vh - 251px);">
  82. <el-col :xs="24" :sm="24" :lg="8">
  83. <!-- 档案借阅 -->
  84. <div class="container-wrap">
  85. <span class="right-top-line" />
  86. <span class="left-bottom-line" />
  87. <h3 class="table-title">
  88. <p class="title-arrow">档案借阅</p>
  89. </h3>
  90. <div class="chart-wrapper">
  91. <lend-across :lend-data="lendData" />
  92. </div>
  93. </div>
  94. </el-col>
  95. <el-col :xs="24" :sm="24" :lg="8">
  96. <!-- 档案类别 -->
  97. <div class="container-wrap">
  98. <span class="right-top-line" />
  99. <span class="left-bottom-line" />
  100. <h3 class="table-title">
  101. <p class="title-arrow">档案类别</p>
  102. </h3>
  103. <div class="chart-wrapper">
  104. <cate-pie :cate-data="cateData" />
  105. </div>
  106. </div>
  107. </el-col>
  108. <el-col :xs="24" :sm="24" :lg="8">
  109. <!-- 档案类型 -->
  110. <div class="container-wrap">
  111. <span class="right-top-line" />
  112. <span class="left-bottom-line" />
  113. <h3 class="table-title">
  114. <p class="title-arrow">档案类型</p>
  115. </h3>
  116. <div v-if="typeData.length !== 0" class="chart-wrapper">
  117. <type-pie :type-data="typeData" />
  118. </div>
  119. <div v-else class="empty-main">
  120. <svg-icon icon-class="empty" class-name="empty-img" />
  121. <p>暂无数据</p>
  122. </div>
  123. </div>
  124. </el-col>
  125. </el-row>
  126. </div>
  127. </div>
  128. </template>
  129. <script>
  130. import PanelGroup from './dashboard/PanelGroup'
  131. import lendAcross from '@/views/components/echarts/lendAcross.vue'
  132. import catePie from '@/views/components/echarts/catePie.vue'
  133. import typePie from '@/views/components/echarts/typePie.vue'
  134. import WarehouseWarning from '@/views/components/WarehouseWarning'
  135. import SecurityDoor from '@/views/components/SecurityDoor'
  136. import SearchAcrives from '@/views/archivesManage/archivesSearch/index'
  137. import { statisticsCrud } from '@/views/system/archiveStatistics/mixins/statistics'
  138. import { FetchWaitBorrower } from '@/api/archivesManage/lendManage'
  139. export default {
  140. name: 'Dashboard',
  141. components: {
  142. WarehouseWarning,
  143. SecurityDoor,
  144. PanelGroup,
  145. lendAcross,
  146. catePie,
  147. typePie,
  148. SearchAcrives
  149. },
  150. mixins: [statisticsCrud],
  151. data() {
  152. return {
  153. waitBorrowerData: []
  154. }
  155. },
  156. created() {
  157. this.getWaitBorrower()
  158. },
  159. methods: {
  160. getWaitBorrower() {
  161. FetchWaitBorrower().then(data => {
  162. if (data) {
  163. this.waitBorrowerData = data
  164. }
  165. })
  166. },
  167. changeActiveTab(id) {
  168. this.$router.push({
  169. name: 'warehouse3D',
  170. params: {
  171. roomId: id
  172. }
  173. })
  174. }
  175. }
  176. }
  177. </script>
  178. <style rel="stylesheet/scss" lang="scss" scoped>
  179. .dashboard-editor-container {
  180. padding: 20px;
  181. position: relative;
  182. .chart-wrapper {
  183. height: calc(100% - 40px);
  184. }
  185. }
  186. @media (max-width: 1024px) {
  187. .chart-wrapper {
  188. padding: 8px;
  189. }
  190. }
  191. .warehouse-tab {
  192. .warehouse-nav {
  193. display: flex;
  194. justify-content: space-around;
  195. position: absolute;
  196. bottom: 15px;
  197. z-index: 11;
  198. width: 100%;
  199. padding: 0;
  200. li {
  201. display: flex;
  202. flex-direction: column;
  203. align-items: center;
  204. flex-wrap: nowrap;
  205. align-content: center;
  206. justify-content: center;
  207. height: 90px;
  208. text-align: right;
  209. font-size: 14px;
  210. position: relative;
  211. &:hover {
  212. cursor: pointer;
  213. }
  214. span {
  215. width: 72px;
  216. height: 52px;
  217. margin-bottom: 7px;
  218. }
  219. p {
  220. text-align: left;
  221. }
  222. &:first-child span {
  223. background: url("~@/assets/images/tab_fullview_logo.png") no-repeat;
  224. }
  225. &:nth-child(2) span {
  226. background: url("~@/assets/images/tab_archives_logo.png") no-repeat;
  227. }
  228. &:nth-child(3) span {
  229. background: url("~@/assets/images/tab_collate_logo.png") no-repeat;
  230. }
  231. &:nth-child(4) span {
  232. background: url("~@/assets/images/tab_read_logo.png") no-repeat;
  233. }
  234. }
  235. }
  236. }
  237. .el-col {
  238. height: 100%;
  239. }
  240. .container-left,
  241. .container-right,
  242. .container-wrap,
  243. .el-card,
  244. .header-container-wrap {
  245. min-height: 100%;
  246. }
  247. .warehose-el-table ::v-deep .el-table__header-wrapper {
  248. box-shadow: inset 0px 0px 6px 1px #339cff;
  249. background: none !important;
  250. }
  251. .container-wrap {
  252. min-height: auto;
  253. height: 100%;
  254. }
  255. .todo-list {
  256. padding: 0 20px;
  257. & li {
  258. height: 42px;
  259. line-height: 42px;
  260. margin-bottom: 10px;
  261. font-size: 13px;
  262. color: #ffffff;
  263. background: #02255f;
  264. box-shadow: inset 0px 0px 6px 1px #339cff;
  265. border-radius: 26px;
  266. opacity: 1;
  267. cursor: pointer;
  268. & p {
  269. display: inline-block;
  270. width: calc(100% - 140px);
  271. padding-left: 10px;
  272. text-overflow: ellipsis;
  273. overflow: hidden;
  274. white-space: nowrap;
  275. word-break: break-all;
  276. }
  277. & span {
  278. float: right;
  279. padding-right: 10px;
  280. }
  281. }
  282. }
  283. ::v-deep
  284. .el-table--striped
  285. .el-table__body
  286. tr.el-table__row--striped
  287. td.el-table__cell {
  288. background: #02255f;
  289. }
  290. .search-area {
  291. width: 100%;
  292. height: 100%;
  293. margin: 0;
  294. display: flex;
  295. align-items: center;
  296. justify-content: center;
  297. }
  298. ::v-deep .search-main{
  299. padding: 0 62px;
  300. .head-container{
  301. padding: 0;
  302. width: 100% !important;
  303. .search-input {
  304. width: 100% !important;
  305. }
  306. .input-with-select{
  307. width: 100% !important;
  308. }
  309. }
  310. }
  311. </style>