index.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <div class="container">
  3. <save-form inline :model="search" @submit="FetchDetail" @reset="FetchDetail">
  4. <el-form-item prop="year">
  5. <el-date-picker
  6. v-model="search.year"
  7. type="year"
  8. :picker-options="{
  9. disabledDate(time) {
  10. return time.getTime() > Date.now()
  11. }
  12. }"
  13. placeholder="请选择年份">
  14. </el-date-picker>
  15. </el-form-item>
  16. <el-form-item prop="organIds">
  17. <el-select
  18. multiple
  19. clearable
  20. filterable
  21. collapse-tags
  22. v-model="search.organIds"
  23. >
  24. <el-option v-for="(item,index) in selects.branchs"
  25. :key="index"
  26. :label="item.name"
  27. :value="item.id"></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-button native-type="submit" type="primary">搜索</el-button>
  31. <el-button native-type="reset" type="danger">重置</el-button>
  32. </save-form>
  33. <empty desc="暂无统计数据" v-if="isEmpty"/>
  34. <el-row v-else class="rows" :gutter="20">
  35. <el-col :xs="24" :sm="24" :md="12" :span="7">
  36. <operate :data="dataInfo"/>
  37. </el-col>
  38. <el-col :xs="24" :sm="24" :md="12" :span="7">
  39. <business :data="dataInfo"/>
  40. </el-col>
  41. <el-col :xs="24" :sm="24" :md="24" :span="10">
  42. <management :data="dataInfo"/>
  43. </el-col>
  44. <el-col :xs="24" :sm="24" :md="12" :span="7">
  45. <hrdata :data="dataInfo"/>
  46. </el-col>
  47. <el-col :xs="24" :sm="24" :md="12" :span="7">
  48. <student :data="dataInfo"/>
  49. </el-col>
  50. <el-col :xs="24" :sm="24" :md="24" :span="10">
  51. <curriculum :data="dataInfo"/>
  52. </el-col>
  53. </el-row>
  54. </div>
  55. </template>
  56. <script>
  57. import { getIndex } from '../api'
  58. import operate from './operate'
  59. import business from './business'
  60. import management from './management'
  61. import hrdata from './hr'
  62. import student from './student'
  63. import curriculum from './curriculum'
  64. export default {
  65. components: {
  66. operate,
  67. business,
  68. management,
  69. hrdata,
  70. student,
  71. curriculum,
  72. },
  73. data () {
  74. return {
  75. search: {
  76. year: '',
  77. organIds: []
  78. },
  79. dataInfo: {},
  80. business: {},
  81. }
  82. },
  83. computed: {
  84. isEmpty() {
  85. return !Object.keys(this.dataInfo).length
  86. }
  87. },
  88. mounted () {
  89. this.FetchDetail();
  90. this.$store.dispatch('setBranchs')
  91. },
  92. methods: {
  93. async FetchDetail() {
  94. const data = {}
  95. try {
  96. const res = await getIndex({
  97. ...this.search,
  98. year: this.$helpers.dayjs(this.search.year).year() || '',
  99. organIds: this.search.organIds.join(',')
  100. })
  101. for (const item of res.data) {
  102. data[item.dataType] = item
  103. }
  104. } catch (error) {
  105. console.log(error)
  106. }
  107. this.dataInfo = data
  108. },
  109. }
  110. }
  111. </script>
  112. <style lang="less" scoped>
  113. .container{
  114. overflow: hidden;
  115. .rows{
  116. >div{
  117. margin-bottom: 20px;
  118. }
  119. }
  120. }
  121. </style>