Quellcode durchsuchen

修改借款、预算、工作量填报

余思翰 vor 9 Monaten
Ursprung
Commit
3b0ae9a71e

+ 6
- 2
oa-ui/src/views/flowable/form/budget/budgetInfo.vue Datei anzeigen

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-03 16:28:09
3
  * @Date: 2024-04-03 16:28:09
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-02 15:23:33
5
+ * @LastEditTime: 2024-08-21 15:49:18
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="main">
8
   <div class="main">
30
             <table border="1" style="width: 100%;">
30
             <table border="1" style="width: 100%;">
31
               <tr style="background-color:#f8f8f9">
31
               <tr style="background-color:#f8f8f9">
32
                 <td style="width: 250px">工作内容</td>
32
                 <td style="width: 250px">工作内容</td>
33
-                <td style="width: 100px">等级或比例尺</td>
33
+                <td style="width: 100px">比例尺/等级</td>
34
                 <td style="width: 100px">单位</td>
34
                 <td style="width: 100px">单位</td>
35
                 <td style="width: 100px">工作量</td>
35
                 <td style="width: 100px">工作量</td>
36
                 <td style="width: 100px">要求完成时间</td>
36
                 <td style="width: 100px">要求完成时间</td>
64
             <tr style="background-color:#f8f8f9" v-if="workList.length != 0">
64
             <tr style="background-color:#f8f8f9" v-if="workList.length != 0">
65
               <td>工作简述</td>
65
               <td>工作简述</td>
66
               <td>工作内容</td>
66
               <td>工作内容</td>
67
+              <td>比例尺/等级</td>
67
               <td>数量</td>
68
               <td>数量</td>
68
               <td>单价</td>
69
               <td>单价</td>
69
               <td>单位</td>
70
               <td>单位</td>
74
             <tr v-for="work in workList">
75
             <tr v-for="work in workList">
75
               <td>{{ work.content }}</td>
76
               <td>{{ work.content }}</td>
76
               <td>{{ work.cmcPrice ? work.cmcPrice.workItem : '' }}</td>
77
               <td>{{ work.cmcPrice ? work.cmcPrice.workItem : '' }}</td>
78
+              <td>
79
+                {{ work.scaleGrade  }}
80
+              </td>
77
               <td v-if="taskName == '分管审核' || taskName == '总经理审核'">
81
               <td v-if="taskName == '分管审核' || taskName == '总经理审核'">
78
                 <el-input-number :controls="false" style="width:100px;" v-model="work.workload"
82
                 <el-input-number :controls="false" style="width:100px;" v-model="work.workload"
79
                   @change="computeWorkSettle(work)"></el-input-number>
83
                   @change="computeWorkSettle(work)"></el-input-number>

+ 3
- 2
oa-ui/src/views/flowable/form/budget/components/chooseMoney.vue Datei anzeigen

40
             <td>工作类别</td>
40
             <td>工作类别</td>
41
             <td>工作项目</td>
41
             <td>工作项目</td>
42
             <!-- <td>项目细项</td> -->
42
             <!-- <td>项目细项</td> -->
43
-            <td>比例尺</td>
43
+            <td>比例尺/等级</td>
44
             <td>地类类型</td>
44
             <td>地类类型</td>
45
             <td style="width:90px;">单价</td>
45
             <td style="width:90px;">单价</td>
46
             <td>单位</td>
46
             <td>单位</td>
104
               <el-button type="text" @click="getCoefficientRemark(work.workType)">系数备注</el-button>
104
               <el-button type="text" @click="getCoefficientRemark(work.workType)">系数备注</el-button>
105
             </td>
105
             </td>
106
             <td>
106
             <td>
107
-              <el-input v-model="work.settle"></el-input>
107
+              <!-- <el-input v-model="work.settle"></el-input> -->
108
+              {{ work.settle }}
108
             </td>
109
             </td>
109
             <td>
110
             <td>
110
               <el-input type="textarea" v-model="work.remark"></el-input>
111
               <el-input type="textarea" v-model="work.remark"></el-input>

+ 1
- 1
oa-ui/src/views/flowable/form/finance/borrowForm.vue Datei anzeigen

490
       }
490
       }
491
     },
491
     },
492
     initForm() {
492
     initForm() {
493
-      listBorrowDetail({ borrowId: this.taskForm.formId }).then(res => {
493
+      listBorrowDetail({ pageSize:999, borrowId: this.taskForm.formId }).then(res => {
494
         if (res.rows.length != 0) {
494
         if (res.rows.length != 0) {
495
           this.detailList = res.rows
495
           this.detailList = res.rows
496
         }
496
         }

+ 50
- 47
oa-ui/src/views/flowable/form/work/declareForm.vue Datei anzeigen

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-08-16 09:16:36
3
  * @Date: 2024-08-16 09:16:36
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-19 11:05:07
5
+ * @LastEditTime: 2024-08-21 14:11:13
6
 -->
6
 -->
7
 <template>
7
 <template>
8
-  <div class="app-container">
8
+  <div>
9
     <el-row :gutter="20">
9
     <el-row :gutter="20">
10
       <el-col :span="isFlow ? 18 : 24" :xs="24">
10
       <el-col :span="isFlow ? 18 : 24" :xs="24">
11
         <h2 class="text-center">项目工作填报表</h2>
11
         <h2 class="text-center">项目工作填报表</h2>
14
           <el-form-item label="项目名称:" prop="projectId">
14
           <el-form-item label="项目名称:" prop="projectId">
15
             <el-button icon="el-icon-plus" type="primary" @click="prOpen = true" size="mini"
15
             <el-button icon="el-icon-plus" type="primary" @click="prOpen = true" size="mini"
16
               v-if="taskName == '工作填报'">选择项目</el-button>
16
               v-if="taskName == '工作填报'">选择项目</el-button>
17
-            <el-descriptions border v-if="form.projectId" style="margin-top: 10px" :column="2">
18
-              <el-descriptions-item label="项目编号">
19
-                {{ chooseProject.projectNumber }}
20
-              </el-descriptions-item>
21
-              <el-descriptions-item label="项目名称">
22
-                {{ chooseProject.projectName }}
23
-              </el-descriptions-item>
24
-              <el-descriptions-item label="项目负责人">
25
-                {{ getUserName(chooseProject.projectLeader) }}
26
-              </el-descriptions-item>
27
-              <el-descriptions-item label="甲方单位">
28
-                {{ chooseProject.partyA ? chooseProject.partyA.partyAName : '' }}
29
-              </el-descriptions-item>
30
-              <el-descriptions-item label="联系人">
31
-                {{ chooseProject.contactPerson }}
32
-              </el-descriptions-item>
33
-              <el-descriptions-item label="联系电话">
34
-                {{ chooseProject.telephone }}
35
-              </el-descriptions-item>
36
-              <el-descriptions-item label="项目类型">
37
-                {{ chooseProject.projectType }}
38
-              </el-descriptions-item>
39
-              <el-descriptions-item label="项目级别">
40
-                {{ chooseProject.projectLevel == "0" ? " 一般项目" : "重大项目" }}
41
-              </el-descriptions-item>
42
-              <el-descriptions-item label="承担部门">
43
-                {{ chooseProject.undertakingDeptName }}
44
-              </el-descriptions-item>
45
-              <el-descriptions-item label="项目登记人">
46
-                {{ chooseProject.projectRegistrantUser ? chooseProject.projectRegistrantUser.nickName : "" }}
47
-              </el-descriptions-item>
48
-            </el-descriptions>
49
           </el-form-item>
17
           </el-form-item>
18
+          <el-descriptions class="mb20" border v-if="form.projectId" style="margin-top: 10px" :column="1">
19
+            <el-descriptions-item label="项目编号">
20
+              {{ chooseProject.projectNumber }}
21
+            </el-descriptions-item>
22
+            <el-descriptions-item label="项目名称">
23
+              {{ chooseProject.projectName }}
24
+            </el-descriptions-item>
25
+            <el-descriptions-item label="项目负责人">
26
+              {{ getUserName(chooseProject.projectLeader) }}
27
+            </el-descriptions-item>
28
+          </el-descriptions>
50
           <el-form-item label="工作类别:" prop="workType">
29
           <el-form-item label="工作类别:" prop="workType">
51
-            <el-select v-model="form.workType" @change="getWorkItemList(form.workType)" :style="{ width: '100%' }"
30
+            <el-select v-model="form.workType" @change="getWorkTypeList(form.workType)" :style="{ width: '100%' }"
52
               :disabled="taskName != '工作填报'">
31
               :disabled="taskName != '工作填报'">
53
-              <el-option v-for="item in workTypeList" :key="item.value" :label="item.label" :value="item.value">
54
-              </el-option>
32
+              <el-option label="外业" value="外业"></el-option>
33
+              <el-option label="内业" value="内业"></el-option>
55
             </el-select>
34
             </el-select>
56
           </el-form-item>
35
           </el-form-item>
57
           <el-form-item label="工作细项:" prop="workItem">
36
           <el-form-item label="工作细项:" prop="workItem">
58
             <el-select v-model="form.workItem" :style="{ width: '100%' }" :disabled="taskName != '工作填报'">
37
             <el-select v-model="form.workItem" :style="{ width: '100%' }" :disabled="taskName != '工作填报'">
59
-              <el-option v-for="item in workItemList" :key="item.value" :label="item.label" :value="item.value">
38
+              <el-option v-for="item in workTypeList" :key="item.value" :label="item.label" :value="item.value">
60
               </el-option>
39
               </el-option>
61
             </el-select>
40
             </el-select>
62
           </el-form-item>
41
           </el-form-item>
104
         </el-card>
83
         </el-card>
105
       </el-col>
84
       </el-col>
106
     </el-row>
85
     </el-row>
107
-    <el-dialog title="选择项目" :visible.sync="prOpen" width="70%" append-to-body>
86
+    <el-dialog title="选择项目" :visible.sync="prOpen" :width="deviceWidth" append-to-body>
108
       <choose-project @chooseProject="confirmProject"></choose-project>
87
       <choose-project @chooseProject="confirmProject"></choose-project>
109
     </el-dialog>
88
     </el-dialog>
110
   </div>
89
   </div>
113
 <script>
92
 <script>
114
 import flow from '@/views/flowable/task/todo/detail/flow';
93
 import flow from '@/views/flowable/task/todo/detail/flow';
115
 import { flowXmlAndNode } from "@/api/flowable/definition";
94
 import { flowXmlAndNode } from "@/api/flowable/definition";
116
-import { getWorkTypeList, getWorkItemList } from '@/api/oa/price/price'
95
+import { listPrice, getWorkTypeList, getWorkItemList } from '@/api/oa/price/price'
117
 import { listDeclare, getDeclare, addDeclare, updateDeclare } from '@/api/oa/declare/declare';
96
 import { listDeclare, getDeclare, addDeclare, updateDeclare } from '@/api/oa/declare/declare';
118
 import { listProject, getProject } from "@/api/oa/project/project";
97
 import { listProject, getProject } from "@/api/oa/project/project";
119
 import { mapState } from 'vuex';
98
 import { mapState } from 'vuex';
150
     }
129
     }
151
   },
130
   },
152
   created() {
131
   created() {
153
-    this.getWorkTypeList();
154
     this.initForm();
132
     this.initForm();
155
     if (this.device == 'mobile') {
133
     if (this.device == 'mobile') {
156
-      this.isFlow = false
134
+      this.isFlow = false;
135
+      this.deviceWidth = '450px'
136
+    }else{
137
+      this.deviceWidth = '70%'
157
     }
138
     }
158
     if (this.isFlow) {
139
     if (this.isFlow) {
159
       flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
140
       flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
163
   },
144
   },
164
   data() {
145
   data() {
165
     return {
146
     return {
147
+      deviceWidth: '400px',
166
       flowData: {},
148
       flowData: {},
167
       form: {
149
       form: {
168
         workLoad: 1,
150
         workLoad: 1,
189
       chooseProject: {},
171
       chooseProject: {},
190
       workTypeList: [],
172
       workTypeList: [],
191
       workItemList: [],
173
       workItemList: [],
174
+      projectList: [],
192
       hasForm: false,
175
       hasForm: false,
193
       money: 0
176
       money: 0
194
     }
177
     }
199
         this.$set(this.form, 'userId', this.$store.state.user.id)
182
         this.$set(this.form, 'userId', this.$store.state.user.id)
200
         this.form.submitTime = parseTime(new Date(), "{y}-{m}-{d}")
183
         this.form.submitTime = parseTime(new Date(), "{y}-{m}-{d}")
201
       }
184
       }
185
+      listProject({ pageSize: 20 }).then(res => {
186
+        this.projectList = res.rows
187
+      })
202
       getDeclare(this.taskForm.formId).then(res => {
188
       getDeclare(this.taskForm.formId).then(res => {
203
         if (res.data) {
189
         if (res.data) {
204
           this.form = res.data;
190
           this.form = res.data;
304
       this.$refs.form.validateField('projectId');
290
       this.$refs.form.validateField('projectId');
305
     },
291
     },
306
     /* 获取工作类别 */
292
     /* 获取工作类别 */
307
-    getWorkTypeList() {
308
-      getWorkTypeList().then(res => {
309
-        if (res) {
310
-          this.workTypeList = this.setArray(res);
293
+    getWorkTypeList(workType) {
294
+      listPrice({ workType: workType, pageNum: 1, pageSize: 9999 }).then(res => {
295
+        if (res.code == 200) {
296
+          let data = res.rows;
297
+          let list = [];
298
+          for (let d of data) {
299
+            list.push(d.workItem)
300
+          }
301
+          if (workType == '内业') {
302
+            list.push('其他')
303
+          }
304
+          this.workTypeList = this.setArray(list);
311
         }
305
         }
312
-      });
306
+      })
313
     },
307
     },
314
     /* 获取工作项目 */
308
     /* 获取工作项目 */
315
     getWorkItemList(workType) {
309
     getWorkItemList(workType) {
336
         return [];
330
         return [];
337
       }
331
       }
338
     },
332
     },
333
+    remoteMethod(val) {
334
+      listProject({
335
+        pageNum: 1,
336
+        pageSize: 20,
337
+        projectNumber: val
338
+      }).then(res => {
339
+        this.projectList = res.rows;
340
+      })
341
+    },
339
   },
342
   },
340
 }
343
 }
341
 </script>
344
 </script>

+ 143
- 0
oa-ui/src/views/oa/borrow/borrowTable.vue Datei anzeigen

1
+<template>
2
+  <div>
3
+    <el-table v-loading="loading" :data="borrowList">
4
+      <el-table-column label="序号" align="center" type="index" />
5
+      <el-table-column label="借款类型" align="center" prop="borrowUsage">
6
+        <template slot-scope="scope">
7
+          <el-tag :type="setTagType(scope.row.borrowUsage)">
8
+            {{ setBorrowUsage(scope.row.borrowUsage) }}
9
+          </el-tag>
10
+        </template>
11
+      </el-table-column>
12
+      <el-table-column label="借款事由" align="center" prop="applyReason" :formatter="setReasonByUsage" />
13
+      <el-table-column label="申请金额" align="center" prop="applyAmount" />
14
+      <el-table-column label="核准金额" align="center" prop="managerAmount" />
15
+      <el-table-column label="借款人" align="center" prop="applier">
16
+        <template slot-scope="scope">
17
+          {{ getUserName(scope.row.applier) }}
18
+        </template>
19
+      </el-table-column>
20
+      <el-table-column label="借款人说明" align="center" prop="remark" show-overflow-tooltip />
21
+      <el-table-column label="借款日期" align="center" prop="applyDate" width="180">
22
+        <template slot-scope="scope">
23
+          <span>{{ parseTime(scope.row.applyDate, '{y}-{m}-{d}') }}</span>
24
+        </template>
25
+      </el-table-column>
26
+      <el-table-column label="借款支付时间" align="center" prop="lendTime" width="180">
27
+        <template slot-scope="scope">
28
+          <span>{{ parseTime(scope.row.lendTime, '{y}-{m}-{d}') }}</span>
29
+        </template>
30
+      </el-table-column>
31
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
32
+        <template slot-scope="scope">
33
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)">查看</el-button>
34
+        </template>
35
+      </el-table-column>
36
+    </el-table>
37
+  </div>
38
+</template>
39
+
40
+<script>
41
+import { listBorrow, getBorrow, delBorrow, addBorrow, updateBorrow } from "@/api/oa/borrow/borrow";
42
+import { listProject } from '@/api/oa/project/project';
43
+import BorrowForm from '../../flowable/form/finance/borrowForm.vue';
44
+import { mapGetters } from 'vuex'
45
+export default {
46
+  props: {
47
+    borrowUsage: {
48
+      type: String
49
+    },
50
+  },
51
+  computed: {
52
+    ...mapGetters(['roles', 'deptId']),
53
+  },
54
+  data() {
55
+    return {
56
+      borrowList: [],
57
+      queryParams: {
58
+        pageNum: 1,
59
+        pageSize: 10,
60
+        projectId: null,
61
+        borrowType: null,
62
+        applyReason: null,
63
+        applier: null,
64
+        applyDate: null,
65
+        applyAmount: null,
66
+        managerAmount: null,
67
+        deptComment: null,
68
+        deptUserId: null,
69
+        xmUserId: null,
70
+        xmComment: null,
71
+        managerComment: null,
72
+        managerUserId: null,
73
+        zjlUserId: null,
74
+        zjlComment: null,
75
+        cwUserId: null,
76
+        cwComment: null,
77
+        deptTime: null,
78
+        xmTime: null,
79
+        managerTime: null,
80
+        zjlTime: null,
81
+        lendTime: null,
82
+        applyDept: null
83
+      },
84
+    }
85
+  },
86
+  created() {
87
+    this.getList();
88
+  },
89
+  methods: {
90
+    getList() {
91
+      this.loading = true;
92
+      this.queryParams.borrowUsage = this.borrowUsage;
93
+      if (this.roles.some(element => element === "dept")) {
94
+        this.queryParams.applyDept = this.deptId;
95
+        // this.queryParams.undertakingDept = this.deptId;
96
+      }
97
+      listBorrow(this.queryParams).then(response => {
98
+        this.borrowList = response.rows;
99
+        this.total = response.total;
100
+        this.loading = false;
101
+      });
102
+    },
103
+    handleView(row) {
104
+      this.$emit('clickView', row)
105
+    },
106
+    setBorrowUsage(row) {
107
+      if (row == '0') {
108
+        return '项目借款'
109
+      } else if (row == '1') {
110
+        return '非项目借款'
111
+      } else if (row == '2') {
112
+        return '工会借款'
113
+      } else if (row == '3') {
114
+        return '党委借款'
115
+      } else if (row == '4') {
116
+        return '团委借款'
117
+      }
118
+    },
119
+    setTagType(row) {
120
+      if (row == '0') {
121
+        return 'success'
122
+      } else if (row == '1') {
123
+        return 'warning'
124
+      } else if (row == '2') {
125
+        return ''
126
+      } else if (row == '3') {
127
+        return ''
128
+      } else if (row == '14') {
129
+        return ''
130
+      }
131
+    },
132
+    setReasonByUsage(row) {
133
+      if (row.projectId) {
134
+        return row.project.projectNumber + '-' + row.project.projectName
135
+      } else {
136
+        return row.applyReason
137
+      }
138
+    },
139
+  },
140
+}
141
+</script>
142
+
143
+<style lang="scss" scoped></style>

+ 30
- 5
oa-ui/src/views/oa/borrow/index.vue Datei anzeigen

1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-06-21 18:51:59
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-08-21 10:22:33
6
+-->
1
 <template>
7
 <template>
2
   <div class="app-container">
8
   <div class="app-container">
3
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
9
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
38
     <el-row :gutter="10" class="mb8">
44
     <el-row :gutter="10" class="mb8">
39
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
45
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
40
     </el-row>
46
     </el-row>
41
-
47
+    <!-- <el-tabs v-model="activeName" type="card" @tab-click="handleClick" v-if="roles.some(element => element === 'dept')">
48
+      <el-tab-pane label="项目借款" name="0">
49
+        <borrow-table :borrowUsage="activeName" @clickView="handleView"></borrow-table>
50
+      </el-tab-pane>
51
+      <el-tab-pane label="非项目借款" name="1"></el-tab-pane>
52
+      <el-tab-pane label="工会借款" name="2"></el-tab-pane>
53
+      <el-tab-pane label="党委借款" name="3"></el-tab-pane>
54
+      <el-tab-pane label="团委借款" name="4"></el-tab-pane>
55
+    </el-tabs> -->
42
     <el-table v-loading="loading" :data="borrowList" @selection-change="handleSelectionChange">
56
     <el-table v-loading="loading" :data="borrowList" @selection-change="handleSelectionChange">
43
       <el-table-column label="序号" align="center" type="index" />
57
       <el-table-column label="序号" align="center" type="index" />
44
       <el-table-column label="借款类型" align="center" prop="borrowUsage">
58
       <el-table-column label="借款类型" align="center" prop="borrowUsage">
93
 import { listProject } from '@/api/oa/project/project';
107
 import { listProject } from '@/api/oa/project/project';
94
 import BorrowForm from '../../flowable/form/finance/borrowForm.vue';
108
 import BorrowForm from '../../flowable/form/finance/borrowForm.vue';
95
 import { mapGetters } from 'vuex'
109
 import { mapGetters } from 'vuex'
110
+import BorrowTable from './borrowTable.vue';
96
 export default {
111
 export default {
97
   name: "Borrow",
112
   name: "Borrow",
98
   components: {
113
   components: {
99
-    BorrowForm
114
+    BorrowForm,
115
+    BorrowTable
100
   },
116
   },
101
   computed: {
117
   computed: {
102
-    ...mapGetters(['roles','deptId']),
118
+    ...mapGetters(['roles', 'deptId']),
103
   },
119
   },
104
   data() {
120
   data() {
105
     return {
121
     return {
157
       taskForm: {
173
       taskForm: {
158
         formId: '',
174
         formId: '',
159
         procDefName: '借款审批'
175
         procDefName: '借款审批'
160
-      }
176
+      },
177
+      activeName: '0'
161
     };
178
     };
162
   },
179
   },
163
   created() {
180
   created() {
181
+    this.queryParams.borrowUsage = '0'
164
     this.getList();
182
     this.getList();
165
   },
183
   },
166
   methods: {
184
   methods: {
167
     /** 查询cmc借款申请列表 */
185
     /** 查询cmc借款申请列表 */
168
     getList() {
186
     getList() {
169
       this.loading = true;
187
       this.loading = true;
170
-      if(this.roles.some(element => element === "dept")){
188
+      if (this.roles.some(element => element === "dept")) {
171
         this.queryParams.applyDept = this.deptId;
189
         this.queryParams.applyDept = this.deptId;
172
         // this.queryParams.undertakingDept = this.deptId;
190
         // this.queryParams.undertakingDept = this.deptId;
173
       }
191
       }
192
+      if (this.roles.some(e => e === 'leader')) {
193
+        this.queryParams.applyDept = null;
194
+        this.queryParams.undertakingDept = null;
195
+      }
174
       listBorrow(this.queryParams).then(response => {
196
       listBorrow(this.queryParams).then(response => {
175
         this.borrowList = response.rows;
197
         this.borrowList = response.rows;
176
         this.total = response.total;
198
         this.total = response.total;
324
       } else {
346
       } else {
325
         return row.applyReason
347
         return row.applyReason
326
       }
348
       }
349
+    },
350
+    handleClick() {
351
+
327
     }
352
     }
328
   }
353
   }
329
 };
354
 };

Laden…
Abbrechen
Speichern