소스 검색

修改借款,新增统计分析

余思翰 6 달 전
부모
커밋
f2756a5674

+ 11
- 2
oa-ui/src/api/oa/project/project.js 파일 보기

@@ -1,8 +1,8 @@
1 1
 /*
2 2
  * @Author: wrh
3 3
  * @Date: 2024-01-30 16:37:46
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-09-20 17:09:29
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-10-11 15:26:43
6 6
  */
7 7
 import request from '@/utils/request'
8 8
 
@@ -66,3 +66,12 @@ export function delProject(projectId) {
66 66
     method: 'delete'
67 67
   })
68 68
 }
69
+
70
+// 项目统计信息
71
+export function getProjectStatistic(query) {
72
+  return request({
73
+    url: '/oa/project/statistic',
74
+    method: 'get',
75
+    params: query
76
+  })
77
+}

BIN
oa-ui/src/assets/font/kaishu/dingding.ttf 파일 보기


BIN
oa-ui/src/assets/font/kaishu/puhuiti.ttf 파일 보기


BIN
oa-ui/src/assets/font/kaishu/puhuiti45.ttf 파일 보기


BIN
oa-ui/src/assets/icons/down.png 파일 보기


BIN
oa-ui/src/assets/icons/up.png 파일 보기


+ 12
- 0
oa-ui/src/assets/styles/index.scss 파일 보기

@@ -202,6 +202,18 @@ aside {
202 202
   font-family:'auditor'; // 根据自己用的去重命名字体名 
203 203
   src: url('~@/assets/font/kaishu/auditor.ttf');
204 204
 }
205
+@font-face{
206
+  font-family:'puhuiti'; // 根据自己用的去重命名字体名 
207
+  src: url('~@/assets/font/kaishu/puhuiti.ttf');
208
+}
209
+@font-face{
210
+  font-family:'puhuiti45'; // 根据自己用的去重命名字体名 
211
+  src: url('~@/assets/font/kaishu/puhuiti45.ttf');
212
+}
213
+@font-face{
214
+  font-family:'dingding'; // 根据自己用的去重命名字体名 
215
+  src: url('~@/assets/font/kaishu/dingding.ttf');
216
+}
205 217
 .vertical-text{
206 218
   writing-mode: vertical-rl;
207 219
   transform: rotate(360deg);

+ 1
- 15
oa-ui/src/router/index.js 파일 보기

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-01-03 09:23:11
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-10-09 15:45:22
5
+ * @LastEditTime: 2024-10-11 09:26:01
6 6
  */
7 7
 import Vue from 'vue'
8 8
 import Router from 'vue-router'
@@ -312,20 +312,6 @@ export const constantRoutes = [
312 312
       }
313 313
     ]
314 314
   },
315
-  // {
316
-  //   path: '/project/info',
317
-  //   component: Layout,
318
-  //   hidden: true,
319
-  //   children: [
320
-  //     {
321
-  //       path: '',
322
-  //       component: () => import('@/views/oa/project/info'),
323
-  //       name: 'projectInfo',
324
-  //       meta: { title: '项目详情', icon: '' }
325
-
326
-  //     }
327
-  //   ]
328
-  // },
329 315
   {
330 316
     path: '',
331 317
     component: Layout,

+ 27
- 0
oa-ui/src/utils/echarts.js 파일 보기

@@ -0,0 +1,27 @@
1
+/*
2
+ * @Descripttion: 
3
+ * @version: 
4
+ * @Author: ysh
5
+ * @Date: 2022-04-12 01:47:01
6
+ * @LastEditors: Please set LastEditors
7
+ * @LastEditTime: 2024-10-11 14:23:57
8
+ */
9
+import * as echarts from 'echarts'
10
+export  function disposeCharts(name) {
11
+  if (name != null && name != "" && name != undefined) {
12
+    name.dispose(); //销毁
13
+  }
14
+};
15
+export  function echartsSetoption(chart, option) {
16
+  chart.setOption(option);
17
+  window.addEventListener("resize", function () {
18
+    chart.resize();
19
+  });
20
+}
21
+export function ehcartsInit(myCharts,id,options){
22
+  disposeCharts(myCharts);
23
+  let chartDom = document.getElementById(id);
24
+  myCharts = echarts.init(chartDom);
25
+  let option = options;
26
+  echartsSetoption(myCharts, option);
27
+}

+ 73
- 67
oa-ui/src/views/flowable/form/finance/borrowForm.vue 파일 보기

@@ -2,25 +2,25 @@
2 2
   <div class="app-container" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
3 3
     <el-button type="success" @click="printOpen = true">打印</el-button>
4 4
     <el-row :gutter="20">
5
-      <el-col :span="flowDisabled ? 18 : 24" :xs="24">
5
+      <el-col :span="24" :md="flowDisabled ? 18 : 24">
6 6
         <h2 class="text-center">借款申请</h2>
7 7
         <el-divider></el-divider>
8
-        <el-form ref="form" :model="form" :rules="rules" label-width="150px">
8
+        <el-form ref="form" :model="form" :rules="rules" label-width="100px">
9 9
           <el-row :gutter="20">
10
-            <el-col :span="6" :xs="24">
10
+            <el-col :md="6" :span="24">
11 11
               <el-form-item label="申请人" prop="user.nickName">
12 12
                 {{ form.applierUser ? form.applierUser.nickName : form.user.nickName }}
13 13
               </el-form-item>
14 14
             </el-col>
15
-            <el-col :span="6" :xs="24">
15
+            <el-col :md="6" :span="24">
16 16
               <el-form-item label="申请部门" prop="dept.deptName">
17 17
                 {{ form.dept.deptName }}
18 18
               </el-form-item>
19 19
             </el-col>
20
-            <el-col :span="6" :xs="24">
20
+            <el-col :md="6" :span="24">
21 21
               <el-form-item label="申请时间" prop="date">
22 22
                 <el-date-picker style="width:140px;" v-model="form.applyDate" value-format="yyyy-MM-dd" type="date"
23
-                  placeholder="选择日期" :disabled="taskName != '借款申请'">
23
+                  placeholder="选择日期" disabled>
24 24
                 </el-date-picker>
25 25
               </el-form-item>
26 26
             </el-col>
@@ -45,7 +45,7 @@
45 45
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
46 46
                 }}</el-descriptions-item>
47 47
               <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
48
-    chooseProject.projectLeaderUser.nickName : ''
48
+                chooseProject.projectLeaderUser.nickName : ''
49 49
                 }}</el-descriptions-item>
50 50
               <el-descriptions-item label="承担部门" label-class-name="my-label">
51 51
                 <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
@@ -54,57 +54,60 @@
54 54
                 }}</el-descriptions-item>
55 55
             </el-descriptions>
56 56
           </el-form-item>
57
-          <el-form-item label="借款明细">
58
-            <table border="1" class="table">
59
-              <tr>
60
-                <td style="width:50px;">序号</td>
61
-                <td style="width:200px">开支项目</td>
62
-                <td>单位</td>
63
-                <td>单价</td>
64
-                <td>数量</td>
65
-                <td>申请金额</td>
66
-                <!-- <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">项目管理部校核金额</td> -->
67
-                <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">分管领导审核金额</td>
68
-                <td>操作</td>
69
-              </tr>
70
-              <tr v-for="(detail, index) in detailList" :key="index">
71
-                <td>
72
-                  {{ index + 1 }}
73
-                </td>
74
-                <td>
75
-                  <el-input v-model="detail.borrowItem" type="textarea" :disabled="taskName != '借款申请'"></el-input>
76
-                </td>
77
-                <td>
78
-                  <el-input v-model="detail.unit" :disabled="taskName != '借款申请'"></el-input>
79
-                </td>
80
-                <td>
81
-                  <el-input-number :controls="false" style="width:100%" v-model="detail.price"
82
-                    @change="calculateAmount(detail)" :disabled="taskName != '借款申请'"></el-input-number>
83
-                </td>
84
-                <td>
85
-                  <el-input-number :controls="false" style="width:100%" v-model="detail.quantity"
86
-                    @change="calculateAmount(detail)" :disabled="taskName != '借款申请'"></el-input-number>
87
-                </td>
88
-                <td>
89
-                  <el-input v-model="detail.applyAmount" :disabled="taskName != '借款申请'"></el-input>
90
-                </td>
91
-                <!-- <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">
57
+          <!-- <el-form-item label="借款明细"> -->
58
+          <table border="1" class="table">
59
+            <tr style="height:30px;font-weight:bold;font-family:'puhuiti'">
60
+              <td :colspan="8">借款明细</td>
61
+            </tr>
62
+            <tr>
63
+              <td style="width:50px;">序号</td>
64
+              <td style="min-width:150px">开支项目</td>
65
+              <td>单位</td>
66
+              <td>单价</td>
67
+              <td>数量</td>
68
+              <td>申请金额</td>
69
+              <!-- <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">项目管理部校核金额</td> -->
70
+              <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">分管领导审核金额</td>
71
+              <td>操作</td>
72
+            </tr>
73
+            <tr v-for="(detail, index) in detailList" :key="index">
74
+              <td>
75
+                {{ index + 1 }}
76
+              </td>
77
+              <td>
78
+                <el-input v-model="detail.borrowItem" type="textarea" :disabled="taskName != '借款申请'"></el-input>
79
+              </td>
80
+              <td>
81
+                <el-input v-model="detail.unit" :disabled="taskName != '借款申请'"></el-input>
82
+              </td>
83
+              <td>
84
+                <el-input-number :controls="false" style="width:100%" v-model="detail.price"
85
+                  @change="calculateAmount(detail)" :disabled="taskName != '借款申请'"></el-input-number>
86
+              </td>
87
+              <td>
88
+                <el-input-number :controls="false" style="width:100%" v-model="detail.quantity"
89
+                  @change="calculateAmount(detail)" :disabled="taskName != '借款申请'"></el-input-number>
90
+              </td>
91
+              <td>
92
+                <el-input v-model="detail.applyAmount" :disabled="taskName != '借款申请'"></el-input>
93
+              </td>
94
+              <!-- <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">
92 95
                   <el-input v-model="detail.xmAmount" :disabled="taskName != '项目部审核'"
93 96
                     @change="calculateXmAmount(detail)"></el-input>
94 97
                 </td> -->
95
-                <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">
96
-                  <el-input v-model="detail.managerAmount" :disabled="taskName != '分管审核'"
97
-                    @blur="calculateManagerAmount(detail)"></el-input>
98
-                </td>
99
-                <td>
100
-                  <el-button type="text" style="color:#F56C6C" icon="el-icon-delete" size="mini" circle
101
-                    :disabled="taskName != '借款申请'" @click="deleDetailItem(index)">删除行</el-button>
102
-                </td>
103
-              </tr>
104
-            </table>
105
-            <el-button icon="el-icon-plus" size="mini" @click="addDetailList()" type="primary" plain
106
-              :disabled="taskName != '借款申请'"></el-button>
107
-          </el-form-item>
98
+              <td v-if="form.borrowUsage == 0 || form.borrowUsage == 1">
99
+                <el-input v-model="detail.managerAmount" :disabled="taskName != '分管审核'"
100
+                  @blur="calculateManagerAmount(detail)"></el-input>
101
+              </td>
102
+              <td>
103
+                <el-button type="text" style="color:#F56C6C" icon="el-icon-delete" size="mini" circle
104
+                  :disabled="taskName != '借款申请'" @click="deleDetailItem(index)">删除行</el-button>
105
+              </td>
106
+            </tr>
107
+          </table>
108
+          <el-button icon="el-icon-plus" size="mini" @click="addDetailList()" type="primary" plain
109
+            :disabled="taskName != '借款申请'"></el-button>
110
+          <!-- </el-form-item> -->
108 111
           <el-form-item label="最大借款金额" v-if="isSelect">
109 112
             <el-tag>{{ totalBudget.toFixed(2) }}(大写:{{ formatNumberWithWan(totalBudget) }})</el-tag>
110 113
           </el-form-item>
@@ -113,22 +116,22 @@
113 116
           </el-form-item>
114 117
           <el-form-item label="可用借款" v-if="isSelect">
115 118
             <el-tag type="success">{{ (totalBudget - hasBorrow).toFixed(2) }}(大写:{{ formatNumberWithWan((totalBudget -
116
-    hasBorrow)) }})</el-tag>
119
+              hasBorrow)) }})</el-tag>
117 120
           </el-form-item>
118 121
           <el-row :gutter="20">
119
-            <el-col :span="8" :xs="24">
122
+            <el-col :span="12" :xs="24">
120 123
               <el-form-item label="申请金额" prop="applyAmount">
121 124
                 <el-input v-model="form.applyAmount" placeholder="请输入申请金额" :disabled="taskName != '借款申请'" />
122 125
                 <span style="color:#E74C3C" v-if="exceed && form.borrowUsage == 0">超过预算金额:{{ getMoreAmount('0')
123 126
                   }}</span>
124 127
               </el-form-item>
125 128
             </el-col>
126
-            <el-col :span="8" :xs="24">
129
+            <el-col :span="12" :xs="24">
127 130
               <el-form-item label="核准金额" prop="managerAmount">
128 131
                 <el-input v-model="form.managerAmount" placeholder="请输入核准金额"
129 132
                   :disabled="taskName != '分管审核' && taskName != '党工团审核'" />
130 133
                 <span style="color:#E74C3C" v-if="exceed && form.managerAmount && form.borrowUsage == 0">超过预算金额:{{
131
-    getMoreAmount('1') }}</span>
134
+                  getMoreAmount('1') }}</span>
132 135
               </el-form-item>
133 136
             </el-col>
134 137
           </el-row>
@@ -154,7 +157,7 @@
154 157
           <el-divider></el-divider>
155 158
           <!-- 非党工团审核 -->
156 159
           <div v-if="form.borrowUsage == 0 || form.borrowUsage == 1">
157
-            <el-form-item label="部门负责人意见" prop="deptComment">
160
+            <el-form-item label="部门负责人意见" prop="deptComment" label-width="150px">
158 161
               <el-input type="textarea" v-model="form.deptComment" placeholder="请输入部门负责人意见"
159 162
                 :disabled="taskName != '部门审核'" :autosize="{ minRows: 4 }" />
160 163
             </el-form-item>
@@ -170,7 +173,7 @@
170 173
                 </el-form-item>
171 174
               </el-col>
172 175
             </el-row>
173
-            <el-form-item label="分管领导审核意见" prop="managerComment">
176
+            <el-form-item label="分管领导审核意见" prop="managerComment" label-width="150px">
174 177
               <el-input type="textarea" v-model="form.managerComment" placeholder="请输入分管领导审核意见"
175 178
                 :disabled="taskName != '分管审核'" :autosize="{ minRows: 4 }" />
176 179
             </el-form-item>
@@ -186,7 +189,7 @@
186 189
                 </el-form-item>
187 190
               </el-col>
188 191
             </el-row>
189
-            <el-form-item label="总经理审批意见" prop="zjlComment">
192
+            <el-form-item label="总经理审批意见" prop="zjlComment" label-width="150px">
190 193
               <el-input type="textarea" v-model="form.zjlComment" placeholder="请输入总经理审批意见"
191 194
                 :disabled="taskName != '总经理审核'" :autosize="{ minRows: 4 }" />
192 195
             </el-form-item>
@@ -202,7 +205,7 @@
202 205
                 </el-form-item>
203 206
               </el-col>
204 207
             </el-row>
205
-            <el-form-item label="董事长批准意见" prop="dszComment">
208
+            <el-form-item label="董事长批准意见" prop="dszComment" label-width="150px">
206 209
               <el-input type="textarea" v-model="form.dszComment" placeholder="请输入董事长批准意见"
207 210
                 :disabled="taskName != '董事长批准'" :autosize="{ minRows: 4 }" />
208 211
             </el-form-item>
@@ -278,7 +281,7 @@
278 281
           <el-button type="primary" @click="submitForm">提 交</el-button>
279 282
         </div>
280 283
       </el-col>
281
-      <el-col :span="6" :xs="24" v-if="flowDisabled">
284
+      <el-col :span="24" :md="6" v-if="flowDisabled">
282 285
         <el-card>
283 286
           <h2 style="text-align: center;">流程进度</h2>
284 287
           <div>
@@ -451,13 +454,13 @@ export default {
451 454
   },
452 455
   methods: {
453 456
     initRules() {
454
-      if(this.taskName == '借款申请'){
457
+      if (this.taskName == '借款申请') {
455 458
         this.rules = {
456 459
           remark: [
457 460
             { required: true, message: '请输入说明', trigger: 'blur' },
458 461
           ],
459 462
         }
460
-      }else if (this.taskName == '部门审核') {
463
+      } else if (this.taskName == '部门审核') {
461 464
         this.rules = {
462 465
           deptComment: [
463 466
             { required: true, message: '请输入部门负责人意见', trigger: 'blur' },
@@ -713,6 +716,8 @@ export default {
713 716
 
714 717
             })
715 718
           }
719
+        } else {
720
+          this.$message.error('请完善必填项')
716 721
         }
717 722
       });
718 723
 
@@ -798,7 +803,7 @@ export default {
798 803
       } else if (val.length == 1) {
799 804
         this.chooseProject = val[0]
800 805
         this.isSelect = true
801
-        this.form.projectId = val[0].projectId
806
+        this.$set(this.form, 'projectId', val[0].projectId)
802 807
       }
803 808
       this.openProject = false
804 809
       this.getBudgetSettle();
@@ -896,6 +901,7 @@ export default {
896 901
 table {
897 902
   text-align: center;
898 903
   border-collapse: collapse;
904
+  border: 1px solid #ccc;
899 905
 
900 906
   td {
901 907
     padding: .0625rem;

+ 21
- 0
oa-ui/src/views/statistics/components/content.vue 파일 보기

@@ -0,0 +1,21 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-10-11 16:41:17
4
+ * @LastEditors: 
5
+ * @LastEditTime: 2024-10-11 16:41:28
6
+-->
7
+<template>
8
+  <div>
9
+    
10
+  </div>
11
+</template>
12
+
13
+<script>
14
+  export default {
15
+    
16
+  }
17
+</script>
18
+
19
+<style lang="scss" scoped>
20
+
21
+</style>

+ 252
- 0
oa-ui/src/views/statistics/components/topHead.vue 파일 보기

@@ -0,0 +1,252 @@
1
+<template>
2
+  <div>
3
+    <div class="titles">整体统计</div>
4
+    <div class="item-wapper">
5
+      <div class="one item-box">
6
+        <div class="data-left">
7
+          <div class="data-title">{{ thisYear }}年项目总数</div>
8
+          <div class="number">{{ projectNum.toLocaleString('en-US') }}</div>
9
+          <div>
10
+            <span class="text-1">较去年</span>
11
+            <span class="text-2" :class="{ upColor: isProjectUp, dowColor: !isProjectUp }">{{ subYear }}</span>
12
+            <img :src="isProjectUp ? upImg : downImg" alt="">
13
+          </div>
14
+        </div>
15
+        <div class="chart-box">
16
+          <div id="thisYear"></div>
17
+        </div>
18
+      </div>
19
+      <div class="two item-box">
20
+        <div class="data-left">
21
+          <div class="data-title">2024项目总数</div>
22
+          <div class="number">{{ projectNum.toLocaleString('en-US') }}</div>
23
+          <div>
24
+            <span class="text-1">较去年</span>
25
+            <span class="text-2" :class="{ upColor: isProjectUp, dowColor: !isProjectUp }">206</span>
26
+            <img :src="isProjectUp ? upImg : downImg" alt="">
27
+          </div>
28
+        </div>
29
+        <div class="chart-box">
30
+          <div id=""></div>
31
+        </div>
32
+      </div>
33
+      <div class="three item-box">
34
+        <div class="data-left">
35
+          <div class="data-title">2024项目总数</div>
36
+          <div class="number">{{ projectNum.toLocaleString('en-US') }}</div>
37
+          <div>
38
+            <span class="text-1">较去年</span>
39
+            <span class="text-2" :class="{ upColor: isProjectUp, dowColor: !isProjectUp }">206</span>
40
+            <img :src="isProjectUp ? upImg : downImg" alt="">
41
+          </div>
42
+        </div>
43
+        <div class="chart-box">
44
+          <div id=""></div>
45
+        </div>
46
+      </div>
47
+      <div class="four item-box">
48
+        <div class="data-left">
49
+          <div class="data-title">2024项目总数</div>
50
+          <div class="number">{{ projectNum.toLocaleString('en-US') }}</div>
51
+          <div>
52
+            <span class="text-1">较去年</span>
53
+            <span class="text-2" :class="{ upColor: isProjectUp, dowColor: !isProjectUp }">206</span>
54
+            <img :src="isProjectUp ? upImg : downImg" alt="">
55
+          </div>
56
+        </div>
57
+        <div class="chart-box">
58
+          <div id=""></div>
59
+        </div>
60
+      </div>
61
+    </div>
62
+  </div>
63
+</template>
64
+
65
+<script>
66
+import upSrc from '@/assets/icons/up.png'
67
+import downSrc from '@/assets/icons/down.png'
68
+import * as echarts from 'echarts'
69
+import { disposeCharts, echartsSetoption, ehcartsInit } from '@/utils/echarts'
70
+import { getProjectStatistic } from '@/api/oa/project/project'
71
+let thisYearChart
72
+export default {
73
+  data() {
74
+    return {
75
+      projectNum: 12345,
76
+      upImg: upSrc,
77
+      downImg: downSrc,
78
+      isProjectUp: false,
79
+      thisYear: new Date().getFullYear(),
80
+      year: {},
81
+      type: {},
82
+      source: {},
83
+      dept: {},
84
+      subYear: 0
85
+    }
86
+  },
87
+  watch: {
88
+    year() {
89
+      this.initChartOne();
90
+    }
91
+  },
92
+  created() {
93
+    this.initDatas();
94
+  },
95
+  mounted() {
96
+    // this.initChartOne();
97
+  },
98
+  methods: {
99
+    async initDatas() {
100
+      let res = await getProjectStatistic();
101
+      console.log(res);
102
+      if (res.data) {
103
+        this.year = res.data.year[0];
104
+        this.type = res.data.type[0];
105
+        this.source = res.data.source[0];
106
+        this.dept = res.data.dept[0];
107
+        // this.initChartOne();
108
+        this.getProjectYearSub(this.year);
109
+      }
110
+    },
111
+    initChartOne() {
112
+      let option = {
113
+        grid: {
114
+          left: '1%',
115
+          right: '1%',
116
+          bottom: '0%',
117
+          height: '60%',
118
+          containLabel: true
119
+        },
120
+        tooltip: {
121
+          trigger: 'axis',
122
+          axisPointer: {
123
+            type: 'none',
124
+            label: {
125
+              backgroundColor: '#6a7985'
126
+            }
127
+          }
128
+        },
129
+        xAxis: {
130
+          type: 'category',
131
+          data: Object.keys(this.year).slice(-6),
132
+          show: false
133
+        },
134
+        yAxis: {
135
+          type: 'value',
136
+          axisLabel: { show: false },
137
+          splitLine: { show: false }
138
+        },
139
+        series: [
140
+          {
141
+            min: 0,
142
+            data: Object.values(this.year).slice(-6),
143
+            type: 'line',
144
+            smooth: true,
145
+          }
146
+        ]
147
+      };
148
+      ehcartsInit(thisYearChart, 'thisYear', option);
149
+    },
150
+    getProjectYearSub(year) {
151
+      let arr = Object.values(year).slice(-2);
152
+      this.subYear = Number(arr[1]) - Number(arr[0]);
153
+      this.projectNum = Number(arr[1])
154
+      if (this.subYear < 0) {
155
+        this.subYear = - this.subYear;
156
+        this.isProjectUp = false
157
+      } else {
158
+        this.isProjectUp = true
159
+      }
160
+    }
161
+  },
162
+}
163
+</script>
164
+
165
+<style lang="scss" scoped>
166
+.item-wapper {
167
+  height: 134px;
168
+  width: 100%;
169
+  display: flex;
170
+}
171
+.titles {
172
+  font-family: 'puhuiti';
173
+  font-size: 16px;
174
+  margin-bottom: 16px;
175
+}
176
+.item-box:hover{
177
+  box-shadow: 0 0 15px #e7e5e5;
178
+}
179
+.item-box {
180
+  flex: 1;
181
+  margin: 0 10px;
182
+  height: 100%;
183
+  padding: 13px;
184
+  display: flex;
185
+  cursor: pointer;
186
+
187
+  .data-left {
188
+    flex: 1;
189
+
190
+    .data-title {
191
+      font-family: 'puhuiti45';
192
+      font-weight: 500;
193
+      margin-bottom: 24px;
194
+      font-size: 16px;
195
+    }
196
+
197
+    .number {
198
+      font-size: 24px;
199
+      font-family: 'puhuiti45';
200
+      font-weight: 700;
201
+    }
202
+
203
+    .text-1 {
204
+      color: #4E5969;
205
+      font-size: 12px;
206
+      margin-right: 10px;
207
+    }
208
+
209
+    .text-2 {
210
+      font-size: 14px;
211
+      font-family: 'puhuiti45';
212
+      font-weight: 700;
213
+      margin-right: 5px;
214
+    }
215
+  }
216
+
217
+  .chart-box {
218
+    flex: 2;
219
+  }
220
+
221
+}
222
+
223
+
224
+#thisYear {
225
+  width: 100%;
226
+  height: 100%;
227
+}
228
+
229
+.one {
230
+  background-color: #F2F9FE;
231
+}
232
+
233
+.two {
234
+  background-color: #F5FEF2;
235
+}
236
+
237
+.three {
238
+  background-color: #F2F9FE;
239
+}
240
+
241
+.four {
242
+  background-color: #F6F6FF;
243
+}
244
+
245
+.upColor {
246
+  color: #F44C4C;
247
+}
248
+
249
+.dowColor {
250
+  color: #00B42A
251
+}
252
+</style>

+ 45
- 0
oa-ui/src/views/statistics/index.vue 파일 보기

@@ -0,0 +1,45 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-10-11 09:23:15
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-10-11 16:30:17
6
+-->
7
+<template>
8
+  <div class="app-container bg">
9
+    <div class="head">
10
+      <top-head></top-head>
11
+    </div>
12
+    <div class="content">
13
+      
14
+    </div>
15
+  </div>
16
+</template>
17
+
18
+<script>
19
+import topHead from './components/topHead.vue'
20
+export default {
21
+  components: { topHead },
22
+  data() {
23
+    return {
24
+    }
25
+  },
26
+  mounted() {
27
+  },
28
+  methods: {
29
+
30
+  },
31
+}
32
+</script>
33
+
34
+<style lang="scss" scoped>
35
+.bg {
36
+  background-color: #f0f4f7;
37
+}
38
+
39
+.head {
40
+  background-color: #fff;
41
+  height: 210px;
42
+  border-radius: 4px;
43
+  padding: 20px;
44
+}
45
+</style>

Loading…
취소
저장