Browse Source

公文首页接口联调

master
xuhuajiao 4 weeks ago
parent
commit
e1fbebbca8
  1. 2
      src/api/home/cpu/index.js
  2. 51
      src/api/system/documentArchives.js
  3. 22
      src/views/archivesMIOD/miodLibrary/module/detail.vue
  4. 7
      src/views/archivesMIOD/miodSearch/index.vue
  5. 11
      src/views/archivesMIOD/miodSearch/module/resultList.vue
  6. 183
      src/views/archivesMIOD/miodStatistics/miodTable.vue
  7. 38
      src/views/components/BindingTagDlg.vue
  8. 230
      src/views/components/echarts/catePie copy.vue
  9. 46
      src/views/components/echarts/catePie.vue
  10. 1744
      src/views/components/echarts/data.json
  11. 160
      src/views/components/echarts/graph1.vue
  12. 85
      src/views/components/echarts/graph2.vue
  13. 425
      src/views/components/echarts/graph222.vue
  14. 253
      src/views/components/echarts/graph4.vue
  15. 217
      src/views/components/echarts/graph5.vue
  16. 219
      src/views/components/echarts/graph6.vue
  17. 2
      src/views/components/echarts/typePie.vue
  18. 17
      src/views/dashboard/PanelGroup.vue
  19. 162
      src/views/home.vue

2
src/api/home/cpu/index.js

@ -3,7 +3,7 @@ import request from '@/utils/request'
// 获取服务器基础信息
export function FetchSystemInfo(params) {
return request({
url: '/api/home/getSystemInfo',
url: '/api/overview/getSystemInfo',
params,
method: 'get'
})

51
src/api/system/documentArchives.js

@ -149,6 +149,51 @@ export function FetchInitOperate(params) {
method: 'get'
})
}
// 绑定标签
export function FetchBingdingLabel(data) {
return request({
url: 'api/documentArchives/bingdingLabel',
method: 'post',
data
})
}
// 解绑标签
export function FetchUnbindTag(data) {
return request({
url: 'api/documentArchives/unbindTag',
method: 'post',
data
})
}
// 首页 - 初始化统计数量
export function FetchInitStatisBase(params) {
return request({
url: 'api/overview/initStatisBase',
method: 'get',
params
})
}
// 首页 - 根据档案类型获取近一年新增数据
export function FetchDocumentTypeByTime(params) {
return request({
url: 'api/overview/getDocumentTypeByTime',
method: 'get',
params
})
}
// 首页 - 根据所属来源获取公文数量
export function FetchDocumentByDocDepartment(params) {
return request({
url: 'api/overview/getDocumentByDocDepartment',
method: 'get',
params
})
}
export default {
FetchInitDocumentParam,
updateDocumentParam,
@ -166,5 +211,9 @@ export default {
FetchAddDocumentDetails,
FetchDeleteDocumentDetails,
FetchInitDistributorByDocumentId,
FetchInitOperate
FetchInitOperate,
FetchBingdingLabel,
FetchUnbindTag,
FetchInitStatisBase,
FetchDocumentByDocDepartment
}

22
src/views/archivesMIOD/miodLibrary/module/detail.vue

@ -118,13 +118,14 @@
/>
</div>
</div>
<binding-tag-dlg ref="bindingTag" :binding-id="crud.selections[0] && crud.selections[0].id" :binding-type="4" binding-txt="借阅证" @refresh="crud.refresh" />
<binding-tag-dlg ref="bindingTag" :selected-document="selectedDocument" :binding-id="crud.selections[0] && crud.selections[0].id" :binding-type="1" binding-txt="公文" @refresh="crud.refresh" />
</div>
</el-dialog>
</template>
<script>
import { form } from '@crud/crud'
// , FetchUnbindTag
import { FetchArchivesDetails, FetchInitDocumentDetailsList, FetchAddDocumentDetails, FetchDeleteDocumentDetails, FetchInitDistributorByDocumentId, FetchInitOperate } from '@/api/system/documentArchives'
import { mapGetters } from 'vuex'
@ -339,6 +340,7 @@ export default {
})
},
bindingTag(data) {
console.log('bindingTag', data)
if (data.tid) {
this.$refs.bindingTag.isBinding = true
this.$refs.bindingTag.tidCode = data[0].tid
@ -353,14 +355,16 @@ export default {
dangerouslyUseHTMLString: true
}).then(() => {
this.unbindBtnLoading = true
// const unbindData = data.map((item) => {
// return {
// labelType: item.isType,
// tid: item.tid
// }
// })
// console.log('unbindData', unbindData)
// unbindTag(unbindData).then((res) => {
const documentId = this.selectedDocument.isType === 2
? this.selectedDocument.id
: this.selectedDocument.documentId
const unbindData = {
labelType: data.details_type,
tid: data.tid,
documentId: documentId
}
console.log('unbindData', unbindData)
// FetchUnbindTag(unbindData).then((res) => {
// this.unbindBtnLoading = false
// this.$message({ message: '', type: 'success', offset: 8 })
// this.crud.refresh()

7
src/views/archivesMIOD/miodSearch/index.vue

@ -7,7 +7,7 @@
<span class="bg_icon4" />
<div class="search-content">
<h2>{{ isCommon ? '档案检索': '高级检索' }}</h2>
<h2>{{ isCommon ? '公文检索': '高级检索' }}</h2>
<div v-if="isCommon" class="common-search">
<div class="search-input">
<!-- @keyup.enter.native="dimSearch" -->
@ -24,13 +24,13 @@
<el-button slot="append" @click="handleSearch"><i class="iconfont icon-sousuo" />搜索</el-button>
<div class="advanced-search-btn" @click="isCommon=!isCommon">高级检索</div>
</div>
<div class="search-tab">
<!-- <div class="search-tab">
<span :class="{'active' : tagIndex === 0}" @click="searchTagChange(0)">全部</span>
<span :class="{'active' : tagIndex === 1}" @click="searchTagChange(1)">项目</span>
<span :class="{'active' : tagIndex === 2}" @click="searchTagChange(2)">案卷</span>
<span :class="{'active' : tagIndex === 3}" @click="searchTagChange(3)">文件</span>
<span :class="{'active' : tagIndex === 4}" @click="searchTagChange(4)">原文</span>
</div>
</div> -->
<div class="history-keyword">
<h4>历史检索</h4>
<div class="history-tag">
@ -486,6 +486,7 @@ export default {
height: 54px;
background-color: #fff;
border-radius: 3px;
margin-bottom: 30px;
.input-with-select{
::v-deep .el-input__inner{
width: 664px;

11
src/views/archivesMIOD/miodSearch/module/resultList.vue

@ -2,7 +2,7 @@
<div class="result-main">
<div class="result-left">
<el-collapse v-model="activeNames" @change="handleChange">
<el-collapse-item title="全宗" name="1">
<el-collapse-item title="所属文件" name="1">
<el-input
v-model="filterFondsText"
class="quick-search"
@ -20,7 +20,7 @@
@check-change="getFondsCheckedKeys"
/>
</el-collapse-item>
<el-collapse-item title="档案门类" name="2">
<el-collapse-item title="年度" name="2">
<el-input
v-model="filterCategoryText"
class="quick-search"
@ -38,16 +38,13 @@
@check-change="getCategoryCheckedKeys"
/>
</el-collapse-item>
<el-collapse-item title="档案分类" name="3">
<!-- <el-collapse-item title="档案分类" name="3">
<el-input
v-model="filterClassifyText"
class="quick-search"
placeholder="快速检索"
suffix-icon="el-icon-search"
/>
<!-- <div class="propListHeader">
<el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="checkAllChange">全部选择</el-checkbox>
</div> -->
<el-tree
ref="treeClassify"
v-loading="classifyLoading"
@ -77,7 +74,7 @@
:filter-node-method="filterLevelNode"
@check-change="getLevelCheckedKeys"
/>
</el-collapse-item>
</el-collapse-item> -->
</el-collapse>
</div>
<div class="result-right">

183
src/views/archivesMIOD/miodStatistics/miodTable.vue

@ -1,45 +1,82 @@
<template>
<div style="height: calc(100vh - 234px); margin-top: 20px; ">
<!-- 第一个表格 -->
<el-table ref="table" :data="tableData1" border show-summary :cell-style="tableCellStyle">
<el-table-column prop="year" label="年份" width="60" align="center" />
<el-table-column prop="ZB" label="中共中央" width="80" align="center" />
<el-table-column prop="GB" label="国务院" width="80" align="center" />
<el-table-column prop="ST" label="省交通厅" width="80" align="center" />
<el-table-column prop="EB" label="省委" width="80" align="center" />
<el-table-column prop="SW" label="市委" width="80" align="center" />
<el-table-column prop="EZ" label="省政府" width="80" align="center" />
<el-table-column prop="WZ" label="市政府" width="80" align="center" />
<el-table-column prop="PS" label="省市领导批示件" width="120" align="center" />
<el-table-column prop="ZH" label="综合" width="80" align="center" />
<el-table-column prop="total" label="合计" width="60" align="center" />
</el-table>
<!-- 第二个表格 -->
<!-- <el-table :data="tableData2" border class="mt-10">
<div v-if="activeIndex===0" class="table-content">
<div class="table-right-date">截止到{{ nowDate }}</div>
<el-table ref="table" :data="tableData1" border show-summary :cell-style="tableCellStyle">
<el-table-column prop="year" label="年份" width="60" align="center" />
<el-table-column prop="公开" label="公开" width="80" align="center" />
<el-table-column prop="限制" label="限制" width="80" align="center" />
<el-table-column prop="秘密" label="秘密" width="80" align="center" />
<el-table-column prop="机密" label="机密" width="80" align="center" />
<el-table-column prop="绝密" label="绝密" width="80" align="center" />
<el-table-column prop="ZB" label="中共中央" width="80" align="center" />
<el-table-column prop="GB" label="国务院" width="80" align="center" />
<el-table-column prop="ST" label="省交通厅" width="80" align="center" />
<el-table-column prop="EB" label="省委" width="80" align="center" />
<el-table-column prop="SW" label="市委" width="80" align="center" />
<el-table-column prop="EZ" label="省政府" width="80" align="center" />
<el-table-column prop="WZ" label="市政府" width="80" align="center" />
<el-table-column prop="PS" label="省市领导批示件" width="120" align="center" />
<el-table-column prop="ZH" label="综合" width="80" align="center" />
<el-table-column prop="total" label="合计" width="60" align="center" />
</el-table>
</div>
<!-- 第二个表格 -->
<!-- 默认显示当前年份 -->
<div v-if="activeIndex===1" class="table-content">
<div class="table-right-date">选择年份
<el-select v-model="yearValue" placeholder="请选择" style="width: 90px;">
<el-option
v-for="item in yearOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<el-table ref="table" :data="tableData2" border show-summary :cell-style="tableCellStyle">
<el-table-column prop="month" label="月份" width="60" align="center" />
<el-table-column prop="ZB" label="中共中央" width="80" align="center" />
<el-table-column prop="GB" label="国务院" width="80" align="center" />
<el-table-column prop="ST" label="省交通厅" width="80" align="center" />
<el-table-column prop="EB" label="省委" width="80" align="center" />
<el-table-column prop="SW" label="市委" width="80" align="center" />
<el-table-column prop="EZ" label="省政府" width="80" align="center" />
<el-table-column prop="WZ" label="市政府" width="80" align="center" />
<el-table-column prop="PS" label="省市领导批示件" width="120" align="center" />
<el-table-column prop="ZH" label="综合" width="80" align="center" />
<el-table-column prop="total" label="合计" width="60" align="center" />
</el-table> -->
</el-table>
</div>
<!-- 第三个表格 -->
<!-- <el-table :data="tableData3" border class="mt-10">
<el-table-column prop="year" label="年份" width="60" align="center" />
<el-table-column prop="pingJi" label="平急" width="80" align="center" />
<el-table-column prop="jiaJi" label="加急" width="80" align="center" />
<el-table-column prop="teJi" label="特急" width="80" align="center" />
<el-table-column prop="teTi" label="特提" width="80" align="center" />
<!-- 默认是起止时间以当天时间为准给近1个月的数据 -->
<div v-if="activeIndex===2" class="table-content">
<div class="table-right-date">自定义起止时间
<el-date-picker
v-model="customYear"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
</div>
<el-table ref="table" :data="tableData3" border show-summary :cell-style="tableCellStyle">
<el-table-column prop="name" label="借阅者" width="100" align="center" />
<el-table-column prop="ZB" label="中共中央" width="80" align="center" />
<el-table-column prop="GB" label="国务院" width="80" align="center" />
<el-table-column prop="ST" label="省交通厅" width="80" align="center" />
<el-table-column prop="EB" label="省委" width="80" align="center" />
<el-table-column prop="SW" label="市委" width="80" align="center" />
<el-table-column prop="EZ" label="省政府" width="80" align="center" />
<el-table-column prop="WZ" label="市政府" width="80" align="center" />
<el-table-column prop="PS" label="省市领导批示件" width="120" align="center" />
<el-table-column prop="ZH" label="综合" width="80" align="center" />
<el-table-column prop="total" label="合计" width="60" align="center" />
</el-table> -->
</el-table>
</div>
</div>
</template>
<script>
import CRUD, { presenter, crud } from '@crud/crud'
import { getCurrentTime } from '@/utils/index'
export default {
name: 'MiodTable',
@ -71,6 +108,16 @@ export default {
},
data() {
return {
nowDate: getCurrentTime(),
yearValue: '2025',
yearOptions: [{
value: '2025',
label: '2025'
}, {
value: '2024',
label: '2024'
}],
customYear: this.calculateDefaultRange(),
tableData1: [
{ year: '2020', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ year: '2021', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
@ -81,22 +128,25 @@ export default {
// { year: '', ZB: 6, GB: 6, ST: 6, EB: 6, SW: 6, total: 30 }
],
tableData2: [
{ year: '2020', 公开: 1, 限制: 1, 秘密: 1, 机密: 1, 绝密: 1, total: 5 },
{ year: '2021', 公开: 1, 限制: 1, 秘密: 1, 机密: 1, 绝密: 1, total: 5 },
{ year: '2022', 公开: 1, 限制: 1, 秘密: 1, 机密: 1, 绝密: 1, total: 5 },
{ year: '2023', 公开: 1, 限制: 1, 秘密: 1, 机密: 1, 绝密: 1, total: 5 },
{ year: '2024', 公开: 1, 限制: 1, 秘密: 1, 机密: 1, 绝密: 1, total: 5 },
{ year: '2025', 公开: 1, 限制: 1, 秘密: 1, 机密: 1, 绝密: 1, total: 5 },
{ year: '合计', 公开: 6, 限制: 6, 秘密: 6, 机密: 6, 绝密: 6, total: 30 }
{ month: '1月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '2月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '3月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '4月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '5月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '6月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '7月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '8月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '9月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '10月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '11月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ month: '12月', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 }
],
tableData3: [
{ year: '2020', pingJi: 1, jiaJi: 1, teJi: 1, teTi: 2, total: 5 },
{ year: '2021', pingJi: 1, jiaJi: 1, teJi: 1, teTi: 2, total: 5 },
{ year: '2022', pingJi: 1, jiaJi: 1, teJi: 1, teTi: 2, total: 5 },
{ year: '2023', pingJi: 1, jiaJi: 1, teJi: 1, teTi: 2, total: 5 },
{ year: '2024', pingJi: 1, jiaJi: 1, teJi: 1, teTi: 2, total: 5 },
{ year: '2025', pingJi: 1, jiaJi: 1, teJi: 1, teTi: 2, total: 5 },
{ year: '合计', pingJi: 6, jiaJi: 6, teJi: 6, teTi: 12, total: 30 }
{ name: '张三', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ name: '李四', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ name: '王五', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ name: '办公室', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 },
{ name: '档案室', ZB: 1, GB: 1, ST: 1, EB: 1, SW: 1, EZ: 1, WZ: 1, PS: 1, ZH: 1, total: 9 }
]
}
},
@ -113,17 +163,58 @@ export default {
tableCellStyle({ row, column, rowIndex, columnIndex }) {
// lightblue
if (columnIndex === this.$refs.table.columns.length - 1) {
return 'background-color: #f5f7fa; border-top: 1px solid #dfe6ec;'
return 'background-color: #f5f7fa;border-top: 1px solid #dfe6ec;'
}
return ''
},
//
calculateDefaultRange() {
const now = new Date() //
const oneMonthAgo = new Date() //
oneMonthAgo.setMonth(now.getMonth() - 1) // 1
//
if (now.getDate() < oneMonthAgo.getDate()) {
oneMonthAgo.setDate(1) //
}
// ISO 'YYYY-MM-DD HH:mm:ss'
const start = this.formatDate(oneMonthAgo)
const end = this.formatDate(now) //
return [start, end]
},
formatDate(date) {
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0') //
const day = String(date.getDate()).padStart(2, '0') //
const hours = String(date.getHours()).padStart(2, '0') //
const minutes = String(date.getMinutes()).padStart(2, '0') //
const seconds = String(date.getSeconds()).padStart(2, '0') //
// 'YYYY-MM-DD'
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
}
}
}
</script>
<style lang="scss" scoped>
.mt-10 {
margin-top: 18px;
.table-content {
box-sizing: border-box;
display: inline-block;
border: 1px solid #dfe6ec;
border-bottom: none;
border-right: none;
font-size: 14px;
.table-right-date{
line-height: 40px;
text-align: right;
padding: 5px 10px;
font-weight: bold;
color: #0c0e1e;
border-bottom: 1px solid #dfe6ec;
border-right: 1px solid #dfe6ec;
}
}
// ::v-deep .el-table{
// width: auto !important;

38
src/views/components/BindingTagDlg.vue

@ -89,7 +89,8 @@
<script>
import RFID from '@/api/RFID/RFID'
import { bingdingLabel } from '@/api/archivesManage/bindTagList'
// import { bingdingLabel } from '@/api/archivesManage/bindTagList'
import { FetchBingdingLabel } from '@/api/system/documentArchives'
const devData = {
'createBy': 'admin',
@ -170,6 +171,12 @@ export default {
components: {},
mixins: [],
props: {
selectedDocument: {
type: Object,
default: function() {
return {}
}
},
bindingId: {
type: String,
default: ''
@ -213,6 +220,9 @@ export default {
clearTimeout(this.timeOut)
this.timeOut = null
},
mounted() {
console.log('this.bindingId', this.bindingId)
},
methods: {
initData() {
this.step = 1
@ -250,9 +260,9 @@ export default {
return new Promise((resolve, reject) => {
RFID.readEpc(param).then(res => {
// XU
// res = JSON.parse(res)
res = JSON.parse(res)
// , { "epc": "AEF8830626D2478D875D8880", "tid": "E28068942000400B728799B1", "eas": 1, "type": 2, "codeid": "F8830626D2478D875D8880" }, { "epc": "C204300020000BEBC2160005", "tid": "E28068942000400B728799AF", "eas": -1, "type": -1, "codeid": "" }, { "epc": "3834AB70C6DC30C6DC30C318", "tid": "E28011052000765B612B0A9D", "eas": 0, "type": 3, "codeid": "MJ-01-001-0001" }, { "epc": "9EF8830626D2478D875DAA30", "tid": "E28068942000500B728799B0", "eas": 1, "type": 1, "codeid": "F8830626D2478D875DAA30" }
res = JSON.parse('{ "code": "0", "message": "读epc成功", "data": [ { "epc": "982CAB70C6DC30C6DC30C31CB4D76DF8", "tid": "E280689420004015E1B708D6", "eas": 1, "type": 1, "codeid": "KJ-01-001-0001245678" }] }')
// res = JSON.parse('{ "code": "0", "message": "epc", "data": [ { "epc": "982CAB70C6DC30C6DC30C31CB4D76DF8", "tid": "E280689420004015E1B708D6", "eas": 1, "type": 1, "codeid": "KJ-01-001-0001245678" }] }')
if (res.code && res.code === '0') {
this.step = 3
this.errorStep = 0
@ -310,11 +320,27 @@ export default {
console.log(isCover)
return await new Promise(async(resolve, reject) => {
this.step4Message = '绑定中'
const data = { id: this.bindingId, labelType: this.bindingType, tid: this.readData.tid }
//
// const data = {
// id: this.bindingId,
// labelType: this.bindingType,
// tid: this.readData.tid
// }
//
const documentId = this.selectedDocument.isType === 2
? this.selectedDocument.id
: this.selectedDocument.documentId
const data = {
documentId: documentId, // id
parentsId: this.bindingId, // id
labelType: this.bindingType, // 1
tid: this.readData.tid, // id
eas: '1' //
}
if (isCover || this.readData.tid === this.tidCode) {
data.coverLabel = true
data.coverLabel = true //
}
const res = await bingdingLabel(data)
const res = await FetchBingdingLabel(data)
if (res === '当前标签已被绑定') {
this.coverBindingVisible = true
resolve()

230
src/views/components/echarts/catePie copy.vue

@ -0,0 +1,230 @@
<template>
<!-- 档案类型 -->
<div id="main3" :style="{height:height,width:width}" />
</template>
<script>
import echarts from 'echarts'
import resize from '@/views/dashboard/mixins/resize'
export default {
name: 'AcrossEcharts',
mixins: [resize],
props: {
addArcivesData: {
type: Object,
require: true,
default: function() {
return {}
}
},
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: '100%'
}
},
data() {
return {
chart: null
}
},
watch: {
'addArcivesData': {
handler(val) {
setTimeout(() => {
this.drawChart()
}, 100)
},
immediate: true,
deep: true
}
},
mounted() {
this.drawChart()
window.addEventListener('resize', this.__resizeHandler)
},
methods: {
drawChart() {
const chartDom = document.getElementById('main3')
this.chart = echarts.init(chartDom)
let option = null
option = {
grid: { //
left: '2%',
right: '5%',
bottom: '3%',
top: '15%',
containLabel: true
},
legend: {
data: ['案卷', '文件'],
right: 20,
top: 0,
icon: 'circle',
textStyle: {
color: '#1D2129'
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#339cff'
}
},
formatter: function(params) {
var res = "<div style='width:100%;height:24px;margin-bottom:5px;padding:0 12px;line-height:24px;'><p>" + echarts.format.formatTime('yyyy年M月', new Date(params[0].name)) + ' </p></div>'
for (var i = 0; i < params.length; i++) {
res += `<div style="color: #fff;font-size: 14px; padding:0 12px;line-height: 24px">
<span style="display:inline-block;margin-right:5px;border-radius:2px;width:10px;height:10px;background-color:${[params[i].color]};"></span>
${params[i].seriesName}
${params[i].data}
</div>`
}
return res
}
},
xAxis: {
type: 'category',
data: this.addArcivesData.addArcivesMonth,
axisLine: {// 线
lineStyle: {
color: '#E5E6EB'
}
},
axisLabel: {// x
show: true,
textStyle: {
color: '#A6ADB6'
},
formatter: function(value) {
return echarts.format.formatTime('M月', new Date(value))
}
}
},
yAxis: {
type: 'value',
min: 0,
max: this.addArcivesData.addArcivesMaxCount,
// splitNumber: 5,
axisLine: {// 线
lineStyle: {
color: '#E5E6EB'
}
},
axisLabel: {// x
show: true,
textStyle: {
color: '#A6ADB6'
}
},
axisTick: { // 线
show: false
},
splitLine: {// 线
lineStyle: {
color: '#E5E6EB',
type: 'dashed'
}
}
},
series: [
{
name: '案卷',
data: this.addArcivesData.addArcivesNum,
type: 'line',
areaStyle: {
normal: {
color: {
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0.1,
color: 'rgba(22, 93, 255, 0.64)' // 0%
},
{
offset: 0.5,
color: 'rgba(22, 93, 255, 0.3)' // 0%
},
{
offset: 0.7,
color: 'rgba(22, 93, 255, 0.1)' // 0%
},
{
offset: 0.9,
color: 'rgba(0,0,0, 0.1)' // 100%
}
]
// globalCoord: false // false
}
}
},
itemStyle: {
normal: {
color: '#165DFF', // 线
lineStyle: {
color: '#165DFF' // 线
}
}
}
},
{
name: '文件',
data: this.addArcivesData.addArcivesNumFile,
type: 'line',
areaStyle: {
normal: {
color: {
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0.1,
color: 'rgba(20, 201, 201, 0.64)' // 0%
},
{
offset: 0.5,
color: 'rgba(20, 201, 201, 0.3)' // 0%
},
{
offset: 0.7,
color: 'rgba(20, 201, 201, 0.1)' // 0%
},
{
offset: 0.9,
color: 'rgba(0,0,0, 0.1)' // 100%
}
]
// globalCoord: false // false
}
}
},
itemStyle: {
normal: {
color: '#14C9C9', // 线
lineStyle: {
color: '#14C9C9' // 线
}
}
}
}
]
}
option && this.chart.setOption(option)
}
}
}
</script>
<style lang="scss" scoped>
</style>

46
src/views/components/echarts/catePie.vue

@ -61,7 +61,7 @@ export default {
containLabel: true
},
legend: {
data: ['案卷', '文件'],
data: ['公文'],
right: 20,
top: 0,
icon: 'circle',
@ -135,7 +135,7 @@ export default {
},
series: [
{
name: '案卷',
name: '公文',
data: this.addArcivesData.addArcivesNum,
type: 'line',
areaStyle: {
@ -175,48 +175,6 @@ export default {
}
}
}
},
{
name: '文件',
data: this.addArcivesData.addArcivesNumFile,
type: 'line',
areaStyle: {
normal: {
color: {
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0.1,
color: 'rgba(20, 201, 201, 0.64)' // 0%
},
{
offset: 0.5,
color: 'rgba(20, 201, 201, 0.3)' // 0%
},
{
offset: 0.7,
color: 'rgba(20, 201, 201, 0.1)' // 0%
},
{
offset: 0.9,
color: 'rgba(0,0,0, 0.1)' // 100%
}
]
// globalCoord: false // false
}
}
},
itemStyle: {
normal: {
color: '#14C9C9', // 线
lineStyle: {
color: '#14C9C9' // 线
}
}
}
}
]
}

1744
src/views/components/echarts/data.json
File diff suppressed because it is too large
View File

160
src/views/components/echarts/graph1.vue

@ -1,160 +0,0 @@
<template>
<div id="atlasChart" style="width:100%; height: calc(100vh - 184px);" />
</template>
<script>
// import * as echarts from 'echarts'
import echarts from 'echarts'
export default {
data() {
return {
categories: [],
types: ['未作答', '较好', '一般', '较差'],
datas: [
{ id: '1', name: '集合与逻辑用语', category: 1, url: 'knowMath' },
{ id: '2', name: '等式与不等式', category: 1, url: 'knowMath' },
{ id: '3', name: '基本初等函数', category: 1, url: 'knowMath' },
{ id: '4', name: '三角函数', category: 1, url: 'knowMath' },
{ id: '5', name: '平面向量', category: 1, url: 'knowMath' },
{ id: '6', name: '复数', category: 1, url: 'knowMath' },
{ id: '7', name: '空间向量与立体几何', category: 1, url: 'knowMath' },
{ id: '8', name: '直线与圆', category: 1, url: 'knowMath' },
{ id: '9', name: '平面解析几何', category: 1, url: 'knowMath' },
{ id: '10', name: '数列', category: 1, url: 'knowMath' },
{ id: '11', name: '导数', category: 1, url: 'knowMath' },
{ id: '12', name: '计数原理与概率统计', category: 1, url: 'knowMath' }
],
links: [
{ target: '1', name: 'link02', des: 'link02des' },
{ target: '2', name: 'link03', des: 'link03des' },
{ target: '3', name: 'link04', des: 'link05des' },
{ target: '4', name: 'link04', des: 'link05des' },
{ target: '5', name: 'link04', des: 'link05des' },
{ target: '6', name: 'link04', des: 'link05des' },
{ target: '7', name: 'link04', des: 'link05des' },
{ target: '8', name: 'link04', des: 'link05des' },
{ target: '9', name: 'link04', des: 'link05des' },
{ target: '10', name: 'link04', des: 'link05des' },
{ target: '11', name: 'link04', des: 'link05des' },
{ target: '12', name: 'link04', des: 'link05des' }
]
}
},
created() {
this.$nextTick(function() {
this.montheahcrt()
})
},
methods: {
montheahcrt() {
var myChart = echarts.init(document.getElementById('atlasChart'))
for (var i = 0; i < this.types.length; i++) {
this.categories[i] = {
name: this.types[i]
}
}
var option = {
animationDurationUpdate: 1500, //
animationEasingUpdate: 'quinticInOut', //
color: ['#008000', '#cc6633', '#c00', '#ccc'],
title: {
text: '掌握情况:', //
bottom: '20px', //
left: '20px', //
textStyle: { //
fontSize: 16,
fontWeight: 550,
color: '#666'
}
},
grid: {
top: 0,
bottom: 0,
left: 0,
right: 0
},
legend: [{
// selectedMode: 'single',
//
bottom: '20px',
left: '120px',
textStyle: { //
fontSize: 16,
fontWeight: 550,
color: '#666'
},
icon: 'circle', // 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
itemGap: 35, //
data: this.categories.map(function(a) {
return a.name
})
}],
series: [{
type: 'graph', // :
layout: 'force', //
focusNodeAdjacency: true, //
draggable: true, //
symbolSize: 23, //
roam: 'scale', // , 'scale' 'move' true
edgeSymbol: ['circle', 'arrow'], // edgeSymbol: ['circle', 'arrow']
edgeSymbolSize: [2, 10], //
edgeLabel: {
normal: {
show: false,
formatter: function(x) {
return x.data.name
},
textStyle: {
fontSize: 14,
color: '#000'
}
}
},
force: { //
layoutAnimation: true,
// xAxisIndex : 0, //x
// yAxisIndex : 0, //y
gravity: 0.02, //
edgeLength: 30, // repulsion[10, 50]
repulsion: 300 //
// repulsion: 3000, //
// edgeLength: 80 // repulsion[10, 50]
},
lineStyle: {
normal: {
width: 1,
color: '#4b565b',
// color: 'target', //
curveness: 0.1,
type: 'dashed' // 'dotted'线 'solid'线 'dashed'线线
}
},
label: {
show: true,
position: 'top',
formatter: '{b}',
textStyle: {
fontSize: 16,
fontWeight: 600,
color: '#666'
}
},
//
data: this.datas,
links: this.links,
categories: this.categories
}]
}
myChart.setOption(option)
window.addEventListener('resize', function() {
myChart.resize()
})
}
}
}
</script>
<style scoped>
</style>

85
src/views/components/echarts/graph2.vue

@ -1,85 +0,0 @@
<template>
<div id="atlasChart" style="width:100%; height: calc(100vh - 184px);" />
</template>
<script>
// import * as echarts from 'echarts'
import echarts from 'echarts'
require('echarts/theme/macarons')
import data from './data.json'
export default {
data() {
return {
datas: data
}
},
created() {
this.$nextTick(function() {
this.montheahcrt()
})
},
methods: {
montheahcrt() {
var myChart = echarts.init(document.getElementById('atlasChart'))
this.datas.nodes.forEach(function(node) {
node.label = {
show: node.symbolSize > 30
}
})
var option = {
title: {
text: '',
subtext: '',
top: 'bottom',
left: 'right'
},
tooltip: {},
legend: [
{
// selectedMode: 'single',
data: this.datas.categories.map(function(a) {
return a.name
})
}
],
animationDuration: 1500,
animationEasingUpdate: 'quinticInOut',
series: [
{
name: 'Les Miserables',
type: 'graph',
legendHoverLink: false,
layout: 'none',
data: this.datas.nodes,
links: this.datas.links,
categories: this.datas.categories,
roam: true,
label: {
position: 'right',
formatter: '{b}'
},
lineStyle: {
color: 'source',
curveness: 0.3
},
emphasis: {
focus: 'adjacency',
lineStyle: {
width: 10
}
}
}
]
}
myChart.setOption(option)
window.addEventListener('resize', function() {
myChart.resize()
})
}
}
}
</script>
<style scoped>
</style>

425
src/views/components/echarts/graph222.vue

@ -1,425 +0,0 @@
<template>
<div>
<!-- <div id="graph-container">
<div v-if="isLoading">Loading data from Neo4j...</div>
<div v-if="errorMessage">{{ errorMessage }}</div>
</div> -->
<div ref="myPage" class="my-graph" style="height: calc(100vh - 184px);">
<!-- :on-node-click="onNodeClick"
:on-line-click="onLineClick"
:on-canvas-click="onCanvasClick"
:on-node-expand="onNodeExpand" -->
<RelationGraph
ref="graphRef"
:options="graphOptions"
:on-node-click="onNodeClick"
:on-canvas-click="onCanvasClick"
>
<template #node="{node}">
<div @mouseover="showNodeTips(node, $event)" @mouseout="hideNodeTips(node, $event)">
<!-- :class="node.id === '1' ? 'c-my-rg-node c-big-style': 'c-my-rg-node '" -->
<div class="c-my-rg-node" :style="{'height': node.width + 'px', 'line-height': node.width + 'px'}">
{{ node.text }}
</div>
</div>
</template>
<template #graph-plug>
<div v-if="isShowNodeTipsPanel" :style="{left: nodeMenuPanelPosition.x + 'px', top: nodeMenuPanelPosition.y + 'px' }" style="z-index: 999;padding:10px;background-color: #ffffff;border:#eeeeee solid 1px;box-shadow: 0px 0px 8px #cccccc;position: absolute;">
<div style="line-height: 25px;padding-left: 10px;color: #888888;font-size: 12px;">节点名称{{ currentNode.text }}</div>
<div class="c-node-menu-item">id:{{ currentNode.id }}</div>
</div>
</template>
</RelationGraph>
</div>
</div>
</template>
<script>
import { getGraphData } from '../../../neo4j.js'
import RelationGraph from 'relation-graph'
// https://relation-graph.com/#/docs/start
const graph_json_data = {
// 'rootId': 1,
'nodes': [
{ id: '1', text: '文书档案', force_weight: 10000, color: '#ec6941', borderColor: '#ff875e', width: 150, height: 150 },
{ id: '2', text: '档案分类' },
{ id: '21', text: '行政管理' },
{ id: '22', text: '党群工作' },
{ id: '23', text: '经营管理' },
{ id: '24', text: '生成管理' },
{ id: '3', text: '保管期限' },
{ id: '31', text: '永久' },
{ id: '32', text: '定期30年' },
{ id: '33', text: '定期10年' },
{ id: '4', text: '年度' },
{ id: '41', text: '2022' },
{ id: '42', text: '2023' },
{ id: '43', text: '2024' },
{ id: '5', text: '密级' },
{ id: '51', text: '公开' },
{ id: '52', text: '限制' },
{ id: '53', text: '秘密' },
{ id: '54', text: '机密' },
{ id: '55', text: '绝密' }
],
'lines': [
{ from: '1', to: '2', text: 'class', dashType: 1 },
{ from: '1', to: '3', text: 'retention', dashType: 2 },
{ from: '1', to: '4', text: 'year', dashType: 3 },
{ from: '1', to: '5', text: 'classification', dashType: 4 },
{ from: '2', to: '21', text: 'class_01' },
{ from: '2', to: '22', text: 'class_02' },
{ from: '2', to: '23', text: 'class_03' },
{ from: '2', to: '24', text: 'class_04' },
{ from: '3', to: '31', text: 'retention_01' },
{ from: '3', to: '32', text: 'retention_02' },
{ from: '3', to: '33', text: 'retention_03' },
{ from: '4', to: '41', text: 'year_01' },
{ from: '4', to: '42', text: 'year_02' },
{ from: '4', to: '43', text: 'year_03' },
{ from: '5', to: '51', text: 'classification_01' },
{ from: '5', to: '52', text: 'classification_02' },
{ from: '5', to: '53', text: 'classification_03' },
{ from: '5', to: '54', text: 'classification_04' },
{ from: '5', to: '55', text: 'classification_05' }
]
}
export default {
name: 'Demo',
components: { RelationGraph },
data() {
return {
allData: graph_json_data,
isShowCodePanel: false,
isShowNodeTipsPanel: false,
nodeMenuPanelPosition: { x: 0, y: 0 },
currentNode: {},
graphOptions: {
useAnimationWhenExpanded: true,
useAnimationWhenRefresh: true,
placeOtherGroup: true,
disableNodeclickEffect: true,
reLayoutWhenExpandedOrCollapsed: true,
defaultExpandHolderPosition: 'bottom',
zoomToFitWhenRefresh: true,
layout: {
layoutName: 'force',
// 'maxLayoutTimes': 10000,
// 'force_node_repulsion': 1.5,
'force_line_elastic': 0.5
},
allowSwitchLineShape: true,
allowSwitchJunctionPoint: true,
defaultLineColor: 'rgba(0,0,0,0.5)',
defaultNodeBorderWidth: 0,
defaultNodeBorderColor: 'transpanret',
defaultNodeFontColor: '#000', //
// defaultNodeColor: 'transparent',
// defaultNodeShape: 0,
defaultFocusRootNode: false //
// lineUseTextPath: true
},
isLoading: false,
errorMessage: '',
nodes: [],
edges: []
}
},
mounted() {
// this.showGraph()
this.resizeTimer = setInterval(async() => {
// const graphInstance = this.$refs.graphRef.getInstance();
// await graphInstance.zoomToFit();
}, 3000)
const query = "MATCH path = (target:Archives {id: '0047B3542CE88B895E41DE'})-[rels:HAS_KEYWORD*1..4]-(related:Archives) WHERE target <> related UNWIND relationships(path) AS r WITH startNode(r) AS n, r, endNode(r) AS m, length(path)/2 AS depth RETURN DISTINCT n, r, m;"
this.fetchData(query)
},
beforeDestroy() {
clearInterval(this.resizeTimer)
},
methods: {
async fetchData(query) {
this.isLoading = true
this.errorMessage = ''
try {
// getGraphData
const { nodes, edges } = await getGraphData(query)
this.nodes = nodes
this.edges = edges
//
// this.renderGraph()
// const colors = ['#FD8042', '#0348f3', '#F65163', '#563BE1', '#2B67DD', '#1AAE93', '#0FBED9', '#ffa4a4']
const colors = ['rgb(225,151,102)', 'rgb(194,159,87)', 'rgb(253,183,112)', 'rgb(127,181,123)', 'rgb(224,178,159)', 'rgb(196,149,72)', 'rgb(255,162,24)', 'rgb(189,237,229)']
const typeColorMap = {}
this.allData.nodes = nodes.map(item => {
const newItem = { ...item, id: String(item.id) }
// if (item.type === 'CategoryClass') {
// // newItem.color = '#ec6941'
// // newItem.borderColor = '#ff875e'
// } else if (item.type === 'Category') {
// newItem.color = '#ec6941'
// newItem.borderColor = '#ff875e'
// }
if (item.type) {
if (!typeColorMap[item.type]) {
typeColorMap[item.type] = colors[Object.keys(typeColorMap).length % colors.length]
}
newItem.color = typeColorMap[item.type]
newItem.borderColor = typeColorMap[item.type]
}
return newItem
})
this.allData.nodes.sort((a, b) => {
return parseInt(a.id) - parseInt(b.id)
})
this.allData.lines = edges.map(item => {
return {
...item,
from: String(item.from),
to: String(item.to)
}
})
console.log('this.allData', this.allData)
this.showGraph()
} catch (error) {
//
this.errorMessage = `Error fetching data from Neo4j: ${error.message}`
} finally {
this.isLoading = false
}
},
renderGraph() {
try {
const container = document.getElementById('graph-container')
console.log('container', container)
if (!container) {
throw new Error('Graph container not found')
}
const graph = new RelationGraph(container, {
nodes: this.nodes,
edges: this.edges
})
console.lo('graph', graph)
//
graph.render()
} catch (error) {
this.errorMessage = `Error rendering graph: ${error.message}`
}
},
async showGraph() {
const rootId = this.allData.nodes[0].id
this.allData.rootId = rootId
// this.allData.nodes.forEach(n => {
// if (n.id !== rootId) {
// this.allData.lines.push({ from: rootId, to: n.id, opacity: 0 })
// }
// })
const graphInstance = this.$refs.graphRef.getInstance()
await this.stopForceIfNeed()
await graphInstance.setJsonData(this.allData)
setTimeout(async() => {
await graphInstance.setZoom(100)
await graphInstance.moveToCenter()
await graphInstance.zoomToFit()
}, 1800)
},
async stopForceIfNeed() {
const graphInstance = this.$refs.graphRef.getInstance()
await graphInstance.stopAutoLayout()
},
async updateLayouterOptions() {
await this.stopForceIfNeed()
const graphInstance = this.$refs.graphRef.getInstance()
graphInstance.layouter.maxLayoutTimes = this.graphOptions.layout.maxLayoutTimes
graphInstance.layouter.force_node_repulsion = this.graphOptions.layout.force_node_repulsion
graphInstance.layouter.force_line_elastic = this.graphOptions.layout.force_line_elastic
setTimeout(async() => {
await graphInstance.startAutoLayout()
}, 500)
},
// onNodeExpand(node, e) {
// // //
// if (node.data.childrenLoaded) {
// console.log('')
// return
// }
// //
// if (!node.data.isNeedLoadDataFromRemoteServer) {
// console.log('')
// alert('')
// return
// }
// },
onNodeClick(nodeObject, $event) {
console.log('节点数据:', nodeObject)
const nodeId = nodeObject.id
const query = `MATCH (n) WHERE id(n) = ${nodeId} MATCH (n)-[r]-(m) RETURN n, r,m;`
this.fetchData(query)
console.log('query', query)
const _all_nodes = this.$refs.graphRef.getInstance().getNodes()
// const _all_lines = this.$refs.graphRef.getLines()
const { lot } = nodeObject
//
if (lot.childs && lot.childs.length) {
_all_nodes.forEach((thisNode) => {
let _isHideThisNode = false
lot.childs.forEach((childNode) => {
if (thisNode.id === childNode.id || thisNode.id === nodeObject.id) {
_isHideThisNode = true
}
if (lot.parent && thisNode.id === lot.parent.id) {
_isHideThisNode = true
}
})
thisNode.opacity = _isHideThisNode ? 1 : 0.1
})
} else {
//
_all_nodes.forEach((thisNode) => {
let _isHideThisNode = false
if (thisNode.id === nodeObject.id) {
_isHideThisNode = true
}
if (lot.parent && thisNode.id === lot.parent.id) {
_isHideThisNode = true
}
thisNode.opacity = _isHideThisNode ? 1 : 0.1
})
}
// console.log('onNodeClick:', nodeObject)
// const allChildIds = this.deepGeAlltChildIds(nodeObject)
// console.log('allChildIds', allChildIds)
// const graphInstance = this.$refs.graphRef.getInstance()
// for (const node of graphInstance.getNodes()) {
// if (allChildIds.includes(node.id)) {
// node.opacity = 1
// node.color = 'rgb(116,2,173)'
// } else {
// node.opacity = 0.1
// node.color = undefined
// }
// }
// for (const link of graphInstance.getLinks()) {
// if (allChildIds.includes(link.fromNode.id) && allChildIds.includes(link.toNode.id)) {
// link.relations.forEach(line => {
// line.color = 'rgb(116,2,173)'
// })
// } else {
// link.relations.forEach(line => {
// line.color = ''
// })
// }
// }
},
// deepGeAlltChildIds(node, ids = []) {
// if (ids.includes(node.id)) return
// ids.push(node.id)
// // node.lot.childs
// // node.targetNodes
// console.log('node.lot.childs', node.lot.childs)
// for (const cNode of node.lot.childs) {
// this.deepGeAlltChildIds(cNode, ids)
// }
// return ids
// },
onCanvasClick($event) {
// console.log('onCanvasClick:')
// const graphInstance = this.$refs.graphRef.getInstance()
// for (const node of graphInstance.getNodes()) {
// node.opacity = 1
// this.allData.nodes.forEach((item, index) => {
// if (item.id === node.id) {
// node.color = item.color
// }
// })
// }
// for (const link of graphInstance.getLinks()) {
// link.relations.forEach(line => {
// line.color = undefined
// })
// }
const _all_nodes = this.$refs.graphRef.getInstance().getNodes()
_all_nodes.forEach((thisNode) => {
const _isHideThisNode = true
thisNode.opacity = _isHideThisNode ? 1 : 0.1
})
},
// onLineClick(lineObject, linkObject, $event) {
// console.log('onLineClick:', lineObject)
// },
showNodeTips(nodeObject, $event) {
this.currentNode = nodeObject
const _base_position = this.$refs.graphRef.getInstance().options.fullscreen ? { x: 0, y: 0 } : this.$refs.myPage.getBoundingClientRect()
// console.log('showNodeMenus:', this.$refs.graphRef.getInstance().options.fullscreen, $event.clientX, $event.clientY, _base_position)
this.isShowNodeTipsPanel = true
this.nodeMenuPanelPosition.x = $event.clientX - _base_position.x + 10
this.nodeMenuPanelPosition.y = $event.clientY - _base_position.y + 10
},
hideNodeTips(nodeObject, $event) {
this.isShowNodeTipsPanel = false
}
}
}
</script>
<style>
</style>
<style lang="scss" scoped>
::v-deep .rel-toolbar{
color: #000;
.c-current-zoom{
color: #000;
}
}
// .my-graph{
// // background: linear-gradient(to right, rgb(16, 185, 129), rgb(101, 163, 13));
// }
.c-my-rg-node {
font-size: 13px;
border-radius: 50%;
cursor: pointer;
height: 80px;
display: flex;
justify-content: center;
align-items: center;
}
.c-node-menu-item{
line-height: 30px;
padding-left: 10px;cursor: pointer;color: #444444;font-size: 14px;border-top:#efefef solid 1px;
}
.c-node-menu-item:hover{
background-color: rgba(66,187,66,0.2);
}
.c-big-style{
font-size: 30px;
}
::v-deep .c-rg-line-text{
font-size: 10px !important;
// fill: red !important;
}
</style>

253
src/views/components/echarts/graph4.vue

@ -1,253 +0,0 @@
<template>
<div id="chart" class="chart" />
</template>
<script>
// import { expendNodes } from './mock'
var echarts = require('echarts/lib/echarts')
require('echarts/lib/chart/graph')
require('echarts/lib/component/tooltip')
require('echarts/lib/component/title')
const data = [
{
id: 1,
name: '测试节点',
categary: '1',
symbolSize: 60
},
{
id: 2,
name: '测试节点',
categary: '1',
symbolSize: 40
},
{
id: 3,
name: '测试节点',
categary: '2'
},
{
id: 4,
name: '测试节点',
categary: ''
},
{
id: 5,
name: '测试节点测试节点',
categary: ''
},
{
id: 6,
name: '测试节点',
categary: '2'
},
{
id: 7,
name: '测试节点',
categary: ''
},
{
id: 8,
name: '测试节点',
categary: ''
},
{
id: 9,
name: '测试节点',
categary: ''
},
{
id: 10,
name: '测试节点',
categary: ''
}
]
// 线
const linkData = [
{ source: '2', target: '3', name: '' },
{ source: '3', target: '4', name: '' },
{ source: '3', target: '5', name: '' },
{ source: '5', target: '6', name: '' },
{ source: '5', target: '7', name: '' },
{ source: '5', target: '8', name: '' },
{ source: '9', target: '10', name: '' },
{ source: '10', target: '9', name: '' },
{ source: '1', target: '2', name: '' },
{ source: '1', target: '10', name: '' }
]
export default {
name: 'Charts',
props: {
// chartList: {
// type: Object,
// required: true
// }
},
data() {
return {
myChart: '',
seriesData: data,
seriesLinks: linkData,
categories: [],
lastClickId: '',
colors: ['#a3d2ca', '#056676', '#ea2c62', '#16a596', '#03c4a1', '#f5a25d',
'#8CD282', '#32e0c4', '#00FAE1', '#f05454']
}
},
watch: {
// chartList: {
// handler(val) {
// this.formatData(val || [], true)
// }
// }
},
beforeDestroy() {},
methods: {
/**
* 节点点击事件
*/
async nodeClick(params) {
const index = this.seriesData.findIndex(
(item) => item.id === params.data.id
)
console.log('点了节点:' + index + 1, 'clicked')
},
/**
* 设置echarts配置项,重绘画布
*/
initCharts() {
// const that = this
if (!this.myChart) {
this.myChart = echarts.init(document.getElementById('chart'))
this.myChart.on('click', (params) => {
if (params.dataType === 'node') {
//
this.nodeClick(params)
}
})
}
//
const option = {
//
animationDurationUpdate: 500,
animationEasingUpdate: 'quinticInOut',
tooltip: {
show: false
},
series: [
{
type: 'graph',
layout: 'force',
legendHoverLink: true, // hover()
hoverAnimation: true, //
focusNodeAdjacency: true,
edgeLabel: {
position: 'middle', //
normal: {
show: true,
textStyle: {
fontSize: 12
},
position: 'middle',
formatter: function(x) {
return x.data.name
}
}
},
edgeSymbol: ['', 'arrow'],
force: {
edgeLength: 15,
repulsion: 200
},
roam: true,
draggable: true, //
itemStyle: {
normal: {
color: '#00FAE1',
cursor: 'pointer',
// color:Math.floor(Math.random()*16777215).toString(16),
// color: ['#fc853e','#28cad8','#9564bf','#bd407e','#28cad8','#fc853e','#e5a214'],
label: {
show: true,
position: [-10, -15],
textStyle: {
//
color: '#fff', //
fontStyle: 'normal', // 'normal' 'italic' 'oblique'
fontWeight: 'bold', // 'normal''bold''bolder''lighter'100 | 200 | 300 | 400...
fontFamily: 'sans-serif', //
fontSize: 12 //
}
},
nodeStyle: {
brushType: 'both',
borderColor: 'rgba(255,215,0,0.4)',
borderWidth: 1
}
},
//
emphasis: {
shadowColor: '#00FAE1',
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowBlur: 40
}
},
lineStyle: {
width: 2
},
label: {
fontSize: 18
},
symbolSize: 24, //
links: this.seriesLinks,
data: this.seriesData,
categories: this.categories,
cursor: 'pointer'
}
]
}
// 使
this.myChart.setOption(option)
},
/**
* 格式化数据到表格需要的数据
*/
formatData(list, reset = false) {
const that = this
const nodes = list.seriesData
this.seriesData = []
this.seriesLinks = []
let colorIndex = 0
const data = []
const loadedCat = []
nodes.forEach((item, index) => {
if (item.categary && loadedCat.indexOf(item.categary) === -1) {
colorIndex = Math.floor((Math.random() * that.colors.length))
loadedCat.push(item.categary)
this.categories.push({ name: item.categary })
}
item.itemStyle = {
color: that.colors[colorIndex],
borderColor: '#ffffff'
}
data.push(item)
})
this.seriesData.push(...data)
this.seriesLinks.push(...list.linksData)
this.initCharts()
}
}
}
</script>
<style scoped>
.chart {
height: 100%;
}
</style>

217
src/views/components/echarts/graph5.vue

@ -1,217 +0,0 @@
<template>
<div id="knowledge-graph" style="width: 100%; height: calc(100vh - 184px);" />
</template>
<script>
import echarts from 'echarts'
export default {
name: 'KnowledgeGraph',
mounted() {
this.initChart()
},
methods: {
initChart() {
// echarts
const chart = echarts.init(document.getElementById('knowledge-graph'))
//
// const data = [
// { name: '', itemStyle: { color: '#cc6633' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#cc3399' }},
// { name: '', itemStyle: { color: '#cc3399' }},
// { name: '30', itemStyle: { color: '#cc3399' }},
// { name: '10', itemStyle: { color: '#cc3399' }},
// { name: '', itemStyle: { color: '#6699cc' }},
// { name: '2022', itemStyle: { color: '#6699cc' }},
// { name: '2023', itemStyle: { color: '#6699cc' }},
// { name: '2024', itemStyle: { color: '#6699cc' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }}
// ]
const data = [
{ name: '文书档案' },
{ name: '档案分类' },
{ name: '行政管理' },
{ name: '党群工作' },
{ name: '经营管理' },
{ name: '生成管理' },
{ name: '保管期限' },
{ name: '永久' },
{ name: '定期30年' },
{ name: '定期10年' },
{ name: '年度' },
{ name: '2022' },
{ name: '2023' },
{ name: '2024' },
{ name: '密级' },
{ name: '公开' },
{ name: '限制' },
{ name: '秘密' },
{ name: '机密' },
{ name: '绝密' }
]
const links = [
{ source: '文书档案', target: '档案分类' },
{ source: '文书档案', target: '年度' },
{ source: '文书档案', target: '保管期限' },
{ source: '文书档案', target: '密级' },
{ source: '保管期限', target: '永久' },
{ source: '保管期限', target: '定期30年' },
{ source: '保管期限', target: '定期10年' },
{ source: '年度', target: '2022' },
{ source: '年度', target: '2023' },
{ source: '年度', target: '2024' },
{ source: '密级', target: '公开' },
{ source: '密级', target: '限制' },
{ source: '密级', target: '秘密' },
{ source: '密级', target: '机密' },
{ source: '密级', target: '绝密' },
{ source: '档案分类', target: '行政管理' },
{ source: '档案分类', target: '党群工作' },
{ source: '档案分类', target: '经营管理' },
{ source: '档案分类', target: '生成管理' }
]
//
const option = {
tooltip: {},
series: [
{
type: 'graph',
layout: 'force',
data: data,
links: links,
cursor: 'pointer',
color: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(255, 149, 0, 0.1)' // 0%
}, {
offset: 1,
color: 'rgba(255, 149, 0, 1)' // 100%
}],
global: false // false
},
legendHoverLink: true, // hover()
hoverAnimation: true, //
focusNodeAdjacency: true, //
draggable: true, //
symbolSize: 60, //
roam: 'scale', // , 'scale' 'move' true
edgeSymbol: ['', 'arrow'], // edgeSymbol: ['circle', 'arrow']
edgeSymbolSize: [2, 6], //
edgeLabel: {
// position: 'middle', //
// normal: {
// show: true,
// textStyle: {
// fontSize: 12
// },
// position: 'middle',
// formatter: function(x) {
// return x.data.name
// }
// }
},
itemStyle: {
normal: {
// color: '#00FAE1',
cursor: 'pointer',
// color:Math.floor(Math.random()*16777215).toString(16),
label: {
show: true,
// position: [-10, -15],
textStyle: {
//
color: '#000', //
fontStyle: 'normal', // 'normal' 'italic' 'oblique'
fontWeight: 'bold',
fontFamily: 'sans-serif', //
fontSize: 14 //
}
},
nodeStyle: {
brushType: 'both',
borderColor: 'rgba(255,215,0,0.4)',
borderWidth: 1
}
}
//
// emphasis: {
// shadowColor: '#00FAE1',
// shadowOffsetX: 0,
// shadowOffsetY: 0,
// shadowBlur: 40
// }
},
label: {
show: true,
position: 'top',
formatter: '{b}',
textStyle: {
fontSize: 20,
fontWeight: 600,
color: '#000'
}
},
lineStyle: {
width: 2,
color: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 1,
colorStops: [{
offset: 0, color: 'rgba(0, 255, 244, 0.01)' // 0%
}, {
offset: 1, color: 'rgba(0, 255, 244, 1)' // 100%
}],
global: false
},
curveness: 0.2//
},
force: { //
layoutAnimation: true,
xAxisIndex: 0, // x
yAxisIndex: 0, // y
gravity: 0.1, //
edgeLength: 100, // repulsion[10, 50]
repulsion: 500 //
}
}
]
}
// 使
chart.setOption(option)
//
window.addEventListener('resize', () => {
chart.resize()
})
}
}
}
</script>
<style scoped>
/* 可以在这里添加样式 */
</style>

219
src/views/components/echarts/graph6.vue

@ -1,219 +0,0 @@
<template>
<div id="knowledge-graph" style="width: 100%; height: calc(100vh - 184px);" />
</template>
<script>
import echarts from 'echarts'
export default {
name: 'KnowledgeGraph',
mounted() {
this.initChart()
},
methods: {
// https://relation-graph.com/#/docs/start
initChart() {
// echarts
const chart = echarts.init(document.getElementById('knowledge-graph'))
//
// const data = [
// { name: '', itemStyle: { color: '#cc6633' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#66cc33' }},
// { name: '', itemStyle: { color: '#cc3399' }},
// { name: '', itemStyle: { color: '#cc3399' }},
// { name: '30', itemStyle: { color: '#cc3399' }},
// { name: '10', itemStyle: { color: '#cc3399' }},
// { name: '', itemStyle: { color: '#6699cc' }},
// { name: '2022', itemStyle: { color: '#6699cc' }},
// { name: '2023', itemStyle: { color: '#6699cc' }},
// { name: '2024', itemStyle: { color: '#6699cc' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }},
// { name: '', itemStyle: { color: '#cc9966' }}
// ]
const data = [
{ name: '文书档案' },
{ name: '档案分类' },
{ name: '行政管理' },
{ name: '党群工作' },
{ name: '经营管理' },
{ name: '生成管理' },
{ name: '保管期限' },
{ name: '永久' },
{ name: '定期30年' },
{ name: '定期10年' },
{ name: '年度' },
{ name: '2022' },
{ name: '2023' },
{ name: '2024' },
{ name: '密级' },
{ name: '公开' },
{ name: '限制' },
{ name: '秘密' },
{ name: '机密' },
{ name: '绝密' }
]
const links = [
{ source: '文书档案', target: '档案分类' },
{ source: '文书档案', target: '年度' },
{ source: '文书档案', target: '保管期限' },
{ source: '文书档案', target: '密级' },
{ source: '保管期限', target: '永久' },
{ source: '保管期限', target: '定期30年' },
{ source: '保管期限', target: '定期10年' },
{ source: '年度', target: '2022' },
{ source: '年度', target: '2023' },
{ source: '年度', target: '2024' },
{ source: '密级', target: '公开' },
{ source: '密级', target: '限制' },
{ source: '密级', target: '秘密' },
{ source: '密级', target: '机密' },
{ source: '密级', target: '绝密' },
{ source: '档案分类', target: '行政管理' },
{ source: '档案分类', target: '党群工作' },
{ source: '档案分类', target: '经营管理' },
{ source: '档案分类', target: '生成管理' }
]
//
const option = {
tooltip: {},
series: [
{
type: 'graph',
layout: 'force',
data: data,
links: links,
cursor: 'pointer',
// color: {
// type: 'linear',
// x: 0,
// y: 0,
// x2: 1,
// y2: 1,
// colorStops: [{
// offset: 0,
// color: 'rgba(255, 149, 0, 0.1)' // 0%
// }, {
// offset: 1,
// color: 'rgba(255, 149, 0, 1)' // 100%
// }],
// global: false // false
// },
legendHoverLink: true, // hover()
hoverAnimation: true, //
focusNodeAdjacency: true, //
draggable: true, //
symbolSize: 60, //
roam: 'scale', // , 'scale' 'move' true
edgeSymbol: ['', 'arrow'], // edgeSymbol: ['circle', 'arrow']
edgeSymbolSize: [2, 6], //
edgeLabel: {
// position: 'middle', //
// normal: {
// show: true,
// textStyle: {
// fontSize: 12
// },
// position: 'middle',
// formatter: function(x) {
// return x.data.name
// }
// }
},
itemStyle: {
normal: {
// color: '#00FAE1',
cursor: 'pointer',
// color:Math.floor(Math.random()*16777215).toString(16),
label: {
show: true,
// position: [-10, -15],
textStyle: {
//
color: '#000', //
fontStyle: 'normal', // 'normal' 'italic' 'oblique'
fontWeight: 'bold',
fontFamily: 'sans-serif', //
fontSize: 14 //
}
},
nodeStyle: {
brushType: 'both',
borderColor: 'rgba(255,215,0,0.4)',
borderWidth: 1
}
}
//
// emphasis: {
// shadowColor: '#00FAE1',
// shadowOffsetX: 0,
// shadowOffsetY: 0,
// shadowBlur: 40
// }
},
label: {
show: true,
position: 'top',
formatter: '{b}',
textStyle: {
fontSize: 20,
fontWeight: 600,
color: '#000'
}
},
lineStyle: {
width: 2,
color: '#999'
// color: {
// type: 'linear',
// x: 0,
// y: 0,
// x2: 1,
// y2: 1,
// colorStops: [{
// offset: 0, color: 'rgba(0, 255, 244, 0.01)' // 0%
// }, {
// offset: 1, color: 'rgba(0, 255, 244, 1)' // 100%
// }],
// global: false
// }
// curveness: 0.2//
},
force: { //
layoutAnimation: true,
xAxisIndex: 0, // x
yAxisIndex: 0, // y
gravity: 0.1, //
edgeLength: 100, // repulsion[10, 50]
repulsion: 500 //
}
}
]
}
// 使
chart.setOption(option)
//
window.addEventListener('resize', () => {
chart.resize()
})
}
}
}
</script>
<style scoped>
/* 可以在这里添加样式 */
</style>

2
src/views/components/echarts/typePie.vue

@ -103,7 +103,7 @@ export default {
},
series: [
{
name: '档案门类',
name: '公文统计',
type: 'pie',
radius: ['30%', '70%'],
center: ['35%', '50%'], //

17
src/views/dashboard/PanelGroup.vue

@ -8,7 +8,7 @@
<div class="card-panel-description">
公文总量
<div class="card-panel-text">
<count-to :start-val="0" :end-val="topObjectNum && topObjectNum.caseNum" :duration="3200" class="card-panel-num" />
<count-to :start-val="0" :end-val="topObjectNum && topObjectNum.documentTotal" :duration="3200" class="card-panel-num" />
</div>
</div>
</div>
@ -21,7 +21,7 @@
<div class="card-panel-description">
未传阅数量
<div class="card-panel-text">
<count-to :start-val="0" :end-val="topObjectNum && topObjectNum.archivesNum" :duration="3200" class="card-panel-num" />
<count-to :start-val="0" :end-val="topObjectNum && topObjectNum.notCirculate" :duration="3200" class="card-panel-num" />
</div>
</div>
</div>
@ -34,7 +34,7 @@
<div class="card-panel-description">
传阅中数量
<div class="card-panel-text">
<count-to :start-val="0" :end-val="topObjectNum && topObjectNum.documentNum" :duration="3200" class="card-panel-num" />
<count-to :start-val="0" :end-val="topObjectNum && topObjectNum.circulateing" :duration="3200" class="card-panel-num" />
</div>
</div>
</div>
@ -47,7 +47,7 @@
<div class="card-panel-description">
已完成数量
<div class="card-panel-text">
<count-to :start-val="0" :end-val="topObjectNum && topObjectNum.fileNum" :duration="3200" class="card-panel-num" />
<count-to :start-val="0" :end-val="topObjectNum && topObjectNum.circulated" :duration="3200" class="card-panel-num" />
</div>
</div>
</div>
@ -72,11 +72,10 @@ export default {
},
data() {
return {
caseNum: 0,
anjuanNum: 0,
fileNum: 0,
documentNum: 0,
archivesNum: 0
documentTotal: 0,
circulated: 0,
circulateing: 0,
notCirculate: 0
}
},
mounted() {

162
src/views/home.vue

@ -69,7 +69,7 @@
<span class="right-top-line" />
<span class="left-bottom-line" />
<h3 class="home-item-title">
档案类型
公文新增
</h3>
<div class="chart-wrapper">
<cate-pie :add-arcives-data="addArcivesData" />
@ -82,7 +82,7 @@
<span class="right-top-line" />
<span class="left-bottom-line" />
<h3 class="home-item-title">
档案门类
公文统计
</h3>
<div v-if="typeData.length !== 0" class="chart-wrapper">
<type-pie :type-data="typeData" />
@ -104,6 +104,7 @@ import PanelGroup from './dashboard/PanelGroup'
import catePie from '@/views/components/echarts/catePie.vue'
import typePie from '@/views/components/echarts/typePie.vue'
import serverProgress from '@/views/components/echarts/serverProgress.vue'
import { FetchInitStatisBase, FetchDocumentTypeByTime, FetchDocumentByDocDepartment } from '@/api/system/documentArchives'
import { FetchMainData } from '@/api/archivesManage/library'
import { FetchSystemInfo } from '@/api/home/cpu/index'
import { mapGetters } from 'vuex'
@ -120,10 +121,10 @@ export default {
data() {
return {
topObjectNum: {
archivesNum: 0,
caseNum: 0,
documentNum: 0,
fileNum: 0
documentTotal: 0,
notCirculate: 0,
circulateing: 0,
circulated: 0
},
archivesTotalNum: 0,
flowableData: [],
@ -137,8 +138,7 @@ export default {
addArcivesData: {
addArcivesMaxCount: null,
addArcivesMonth: [],
addArcivesNum: [],
addArcivesNumFile: []
addArcivesNum: []
},
echartsTimer: null,
refreshtime: 10000,
@ -156,8 +156,11 @@ export default {
])
},
created() {
this.handleMainData()
this.getTopData()
this.getSystemInfo()
this.getDocumentTypeByTime()
this.getDocumentByDocDepartment()
// this.handleMainData()
// this.get()
},
mounted() {
@ -211,94 +214,97 @@ export default {
toMoreProcess() {
this.$router.push({ path: '/user/center?activeIndex=2' })
},
handleMainData() {
const fondsAffiliation = []
fondsAffiliation.push(this.user.fonds.id.toString())
const params = {
fondsAffiliations: fondsAffiliation
}
FetchMainData(params).then(data => {
getTopData() {
FetchInitStatisBase().then(data => {
this.topObjectNum = {
archivesNum: data.archivesNum,
caseNum: data.caseNum,
documentNum: data.documentNum,
fileNum: data.fileNum
notCirculate: data.notCirculate, //
documentTotal: data.documentTotal, //
circulateing: data.circulateing, //
circulated: data.circulated //
}
this.flowableData = data.flows
// '', '', '', '', '', '', ''
// "archivesTotalNum archivesTagNum installNum storageNum borrowNum openNum entityNum approveNum
//
this.lendData.archivesTotalNum = data.archivesTotalNum
this.lendData.otherData = [
data.archivesTagNum, data.installNum, data.storageNum, data.borrowNum, data.openNum, data.entityNum, data.approveNum
]
//
})
},
getDocumentTypeByTime() {
FetchDocumentTypeByTime().then(data => {
let maxCount = 0
data.statisNumJSON.archives.forEach(archive => {
data.forEach(archive => {
if (archive.count > maxCount) {
maxCount = archive.count
}
})
data.statisNumJSON.singles.forEach(single => {
if (single.count > maxCount) {
maxCount = single.count
}
})
this.addArcivesData.addArcivesMaxCount = maxCount
const currentDate = new Date() //
const currentYear = currentDate.getFullYear() //
const currentMonth = currentDate.getMonth() // 0 11 1
//
const currentDate = new Date()
const currentYear = currentDate.getFullYear()
const currentMonth = currentDate.getMonth() + 1 // 1
// 12
const result = [] //
const xResult = [] // x
let startYear = currentYear - 1 //
let startMonth = currentMonth + 1 // 1
for (let i = 11; i >= 0; i--) {
// i
let year = currentYear
let month = currentMonth - i
const result = [] //
const xResult = []
while (startYear < currentYear || startMonth <= currentMonth) {
xResult.push(startYear + '/' + startMonth)
result.push({ year: startYear, month: startMonth, archivesCount: 0, singlesCount: 0 })
//
startMonth += 1
if (startMonth > 12) {
startYear += 1
startMonth = 1
// 0
while (month <= 0) {
month += 12
year -= 1
}
}
result.forEach(yearMonthObj => {
data.statisNumJSON.archives.forEach(archive => {
if (parseInt(archive.month) === yearMonthObj.month) {
yearMonthObj.archivesCount = archive.count
return
}
})
//
const formattedMonth = month.toString().padStart(2, '0')
// x
xResult.push(`${year}/${month}`)
// yearmonth
const found = data.find(archive =>
archive.month === formattedMonth && (archive.year === undefined || parseInt(archive.year) === year)
)
data.statisNumJSON.singles.forEach(single => {
if (parseInt(single.month) === yearMonthObj.month) {
yearMonthObj.singlesCount = single.count
return
}
// 使0
result.push({
year,
month,
archivesCount: found ? found.count : 0,
singlesCount: 0
})
})
}
//
this.addArcivesData.addArcivesMonth = xResult
this.addArcivesData.addArcivesNum = result.map(function(obj) {
return obj.archivesCount
})
this.addArcivesData.addArcivesNumFile = result.map(function(obj) {
return obj.singlesCount
})
this.addArcivesData.addArcivesNum = result.map(obj => obj.archivesCount)
})
},
getDocumentByDocDepartment() {
FetchDocumentByDocDepartment().then(data => {
this.typeData = data.map(item => ({
name: item.docDepartment,
value: item.count
}))
})
},
//
for (const type in data.typeGroupBy) {
if (data.typeGroupBy.hasOwnProperty(type)) {
this.typeData.push({ name: type, value: data.typeGroupBy[type] })
}
}
handleMainData() {
const fondsAffiliation = []
fondsAffiliation.push(this.user.fonds.id.toString())
const params = {
fondsAffiliations: fondsAffiliation
}
FetchMainData(params).then(data => {
this.flowableData = data.flows
// '', '', '', '', '', '', ''
// "archivesTotalNum archivesTagNum installNum storageNum borrowNum openNum entityNum approveNum
//
this.lendData.archivesTotalNum = data.archivesTotalNum
this.lendData.otherData = [
data.archivesTagNum, data.installNum, data.storageNum, data.borrowNum, data.openNum, data.entityNum, data.approveNum
]
})
}
}

Loading…
Cancel
Save