余思翰 пре 11 месеци
родитељ
комит
2fcb6cee53

+ 279
- 39
oa-back/sql/cmc_oa(小余测试数据).sql
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 28
- 8
oa-ui/src/views/flowable/form/budget/budgetInfo.vue Прегледај датотеку

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-03 16:28:09
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-10 19:15:14
5
+ * @LastEditTime: 2024-07-11 18:17:52
6 6
 -->
7 7
 <template>
8 8
   <div class="main">
@@ -62,8 +62,7 @@
62 62
         </el-descriptions-item>
63 63
         <el-descriptions-item label="直接成本" :span="3">
64 64
           <table border="1" style="width:100%">
65
-            <tr style="background-color:#f8f8f9">
66
-              <td :rowspan="workLen + 2">直接成本</td>
65
+            <tr style="background-color:#f8f8f9" v-if="workList.length != 0">
67 66
               <td>工作简述</td>
68 67
               <td>工作内容</td>
69 68
               <td>数量</td>
@@ -191,7 +190,7 @@
191 190
             </tr>
192 191
           </table>
193 192
         </el-descriptions-item>
194
-        <el-descriptions-item label="外协费用" :span="3">
193
+        <el-descriptions-item label="外协费用" :span="2">
195 194
           <div v-if="taskName == '分管审核' || taskName == '总经理审核'">
196 195
             <el-input-number :controls="false" style="width:100%;" v-model="budgetForm.outExpense"
197 196
               @blur="computedDirectExpense()"></el-input-number>
@@ -200,7 +199,10 @@
200 199
             {{ budgetForm.outExpense }}
201 200
           </div>
202 201
         </el-descriptions-item>
203
-        <el-descriptions-item label="车船租赁" :span="3">
202
+        <el-descriptions-item label="备注" :span="1">
203
+          {{ budgetForm.outRemark }}
204
+        </el-descriptions-item>
205
+        <el-descriptions-item label="车船租赁" :span="2">
204 206
           <div v-if="taskName == '分管审核' || taskName == '总经理审核'">
205 207
             <el-input-number :controls="false" style="width:100%;" v-model="budgetForm.rentExpense"
206 208
               @blur="computedDirectExpense()"></el-input-number>
@@ -209,7 +211,10 @@
209 211
             {{ budgetForm.rentExpense }}
210 212
           </div>
211 213
         </el-descriptions-item>
212
-        <el-descriptions-item label="其他费用" :span="3">
214
+        <el-descriptions-item label="备注" :span="1">
215
+          {{ budgetForm.rentRemark }}
216
+        </el-descriptions-item>
217
+        <el-descriptions-item label="其他费用" :span="2">
213 218
           <div v-if="taskName == '分管审核' || taskName == '总经理审核'">
214 219
             <el-input-number :controls="false" style="width:100%;" v-model="budgetForm.otherExpense"
215 220
               @blur="computedDirectExpense()"></el-input-number>
@@ -218,7 +223,10 @@
218 223
             {{ budgetForm.otherExpense }}
219 224
           </div>
220 225
         </el-descriptions-item>
221
-        <el-descriptions-item label="税费成本" :span="3">
226
+        <el-descriptions-item label="备注" :span="1">
227
+          {{ budgetForm.otherRemark }}
228
+        </el-descriptions-item>
229
+        <el-descriptions-item label="税费成本" :span="2">
222 230
           <div v-if="taskName == '分管审核' || taskName == '总经理审核'">
223 231
             <el-input-number :controls="false" style="width:100%;" v-model="budgetForm.taxExpense"
224 232
               @blur="computedDirectExpense()"></el-input-number>
@@ -227,7 +235,10 @@
227 235
             {{ budgetForm.taxExpense }}
228 236
           </div>
229 237
         </el-descriptions-item>
230
-        <el-descriptions-item label="经营管理费用" :span="3">
238
+        <el-descriptions-item label="备注" :span="1">
239
+          {{ budgetForm.taxRemark }}
240
+        </el-descriptions-item>
241
+        <el-descriptions-item label="经营管理费用" :span="2">
231 242
           <div v-if="taskName == '分管审核' || taskName == '总经理审核'">
232 243
             <el-input-number :controls="false" style="width:100%;" v-model="budgetForm.businessExpense"
233 244
               @blur="computedDirectExpense()"></el-input-number>
@@ -236,6 +247,9 @@
236 247
             {{ budgetForm.businessExpense }}
237 248
           </div>
238 249
         </el-descriptions-item>
250
+        <el-descriptions-item label="备注" :span="1">
251
+          {{ budgetForm.businessRemark }}
252
+        </el-descriptions-item>
239 253
         <el-descriptions-item label="预算成本合计" :span="3">
240 254
           <div class="text-center" style="font-weight:bold;font-size:18px;color:orange">
241 255
             {{ budgetForm.totalBudget }}
@@ -333,6 +347,11 @@ export default {
333 347
       type: String,
334 348
     }
335 349
   },
350
+  watch: {
351
+    'taskForm.formId'() {
352
+      this.initBudgetForm();
353
+    }
354
+  },
336 355
   data() {
337 356
     return {
338 357
       projectId: '',
@@ -608,6 +627,7 @@ export default {
608 627
 
609 628
 <style lang="scss" scoped>
610 629
 @import "@/assets/styles/element-reset.scss";
630
+
611 631
 .main {
612 632
   width: 100%;
613 633
   margin: 0 auto;

+ 7
- 12
oa-ui/src/views/flowable/form/components/settlePrint.vue Прегледај датотеку

@@ -101,18 +101,6 @@
101 101
           <td :colspan="2" style="text-align:left;">签名:<span class="auditor">{{ form.jsUserName }}</span></td>
102 102
           <td :colspan="2" style="text-align:left;">日期:{{ form.jsTime }}</td>
103 103
         </tr>
104
-        <tr>
105
-          <td :colspan="2" class="fontbold">项目管理部(结算)</td>
106
-          <td :colspan="4" class="conment-width">{{ form.xmComment }}</td>
107
-          <td :colspan="2" style="text-align:left;">签名:<span class="auditor">{{ form.xmUserName }}</span></td>
108
-          <td :colspan="2" style="text-align:left;">日期:{{ form.xmTime }}</td>
109
-        </tr>
110
-        <tr>
111
-          <td :colspan="2" class="fontbold">项目承担部门(确认)</td>
112
-          <td :colspan="4" class="conment-width">{{ form.deptComment }}</td>
113
-          <td :colspan="2" style="text-align:left;">签名:<span class="auditor">{{ form.deptUserName }}</span></td>
114
-          <td :colspan="2" style="text-align:left;">日期:{{ form.deptTime }}</td>
115
-        </tr>
116 104
         <tr>
117 105
           <td :colspan="2" class="fontbold">经营发展部(校核)</td>
118 106
           <td :colspan="4" class="conment-width">{{ form.jyComment }}</td>
@@ -131,6 +119,12 @@
131 119
           <td :colspan="2" style="text-align:left;">签名:<span class="auditor">{{ form.gmUserName }}</span></td>
132 120
           <td :colspan="2" style="text-align:left;">日期:{{ form.gmTime }}</td>
133 121
         </tr>
122
+        <tr v-if="form.dszTime">
123
+          <td :colspan="2" class="fontbold">董事长(批准)</td>
124
+          <td :colspan="4" class="conment-width">{{ form.dszComment }}</td>
125
+          <td :colspan="2" style="text-align:left;">签名:<span class="auditor">{{ form.dszUserName }}</span></td>
126
+          <td :colspan="2" style="text-align:left;">日期:{{ form.dszTime }}</td>
127
+        </tr>
134 128
       </table>
135 129
     </div>
136 130
     <div class="text-center mt20">
@@ -192,6 +186,7 @@ export default {
192 186
   },
193 187
   methods: {
194 188
     initTable() {
189
+      console.log(this.settleList);
195 190
       this.deductionsList = []
196 191
       this.deptSettleList = []
197 192
       for (let s of this.settleList) {

+ 242
- 224
oa-ui/src/views/flowable/form/settleForm.vue Прегледај датотеку

@@ -1,13 +1,14 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-30 09:03:14
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-07-10 17:20:43
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-07-11 17:44:18
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container" v-loading="loading">
9 9
     <el-row :gutter="20">
10 10
       <el-col :span="flowDisabled ? 19 : 24" :xs="24">
11
+        <el-button type="success" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
11 12
         <h2 class="text-center">项目结算表</h2>
12 13
         <div class="headers">
13 14
           项目信息
@@ -15,7 +16,8 @@
15 16
         </div>
16 17
         <el-form ref="settleForm" :model="form" :rules="rules" label-width="160px" :disabled="disabled">
17 18
           <el-form-item label="项目编号" prop="projectId">
18
-            <el-button icon="el-icon-plus" size="mini" type="primary" @click="prOpen = true">选择项目</el-button>
19
+            <el-button icon="el-icon-plus" size="mini" type="primary" @click="prOpen = true"
20
+              :disabled="taskName != '结算发起'">选择项目</el-button>
19 21
             <el-descriptions border v-if="isSelect" style="margin-top: 10px" :column="2">
20 22
               <el-descriptions-item label="项目编号" label-class-name="my-label">
21 23
                 {{ chooseProject.projectNumber }}
@@ -30,10 +32,10 @@
30 32
                 {{ chooseProject.contractNumber }}
31 33
               </el-descriptions-item>
32 34
               <el-descriptions-item label="项目负责人" label-class-name="my-label">
33
-                {{ chooseProject.projectLeaderUser ? chooseProject.projectLeaderUser.nickName : "" }}
35
+                {{ getUserName(chooseProject.projectLeader) }}
34 36
               </el-descriptions-item>
35 37
               <el-descriptions-item label="甲方单位" label-class-name="my-label">
36
-                {{ chooseProject.partyA.partyAName }}
38
+                {{ chooseProject.partyA ? chooseProject.partyA.partyAName : '' }}
37 39
               </el-descriptions-item>
38 40
               <el-descriptions-item label="联系人" label-class-name="my-label">
39 41
                 {{ chooseProject.contactPerson }}
@@ -79,13 +81,7 @@
79 81
             <FileUpload v-if="taskName == '结算发起'" :limit="1" :filePathName="'项目结算/原始数据'"
80 82
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setSettleDocument">
81 83
             </FileUpload>
82
-            <div v-if="form.settleDocument && taskName != '结算发起'" class="upload-list">
83
-              <!-- <el-link :href="`${baseUrl}${'/profile/upload' + form.settleDocument}`" :underline="false"
84
-                target="_blank">
85
-                <span class="el-icon-document" style="color: #00f">
86
-                  {{ getFileName(form.settleDocument) }}
87
-                </span>
88
-              </el-link> -->
84
+            <div v-if="form.settleDocument" class="upload-list">
89 85
               <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.settleDocument}`)">
90 86
                 {{ getFileName(form.settleDocument) }}
91 87
               </el-link>
@@ -95,28 +91,31 @@
95 91
               </el-link>
96 92
             </div>
97 93
           </el-form-item>
98
-          <!-- <el-form-item label="项目管理部审核结算单" prop="">
99
-            <FileUpload v-if="taskName == '项目管理部结算'" :limit="1" :filePathName="'项目结算/项目管理部审核结算单'"
94
+          <el-form-item label="经营发展部审核结算单" prop="">
95
+            <FileUpload v-if="taskName == '经营发展部校核'" :limit="1" :filePathName="'项目结算/经营发展部审核结算单'"
100 96
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setModifyDocument">
101 97
             </FileUpload>
102
-            <div v-if="taskName != '项目管理部结算' && form.modifyDocument" class="upload-list">
103
-              <el-link :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`" :underline="false"
104
-                target="_blank">
105
-                <span class="el-icon-document" style="color: #00f">
106
-                  {{ getFileName(form.modifyDocument) }}
107
-                </span>
98
+            <div v-if="form.modifyDocument" class="upload-list">
99
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.modifyDocument}`)">
100
+                {{ getFileName(form.modifyDocument) }}
101
+              </el-link>
102
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`"
103
+                :underline="false" target="_blank">
104
+                <span class="el-icon-download">下载文件</span>
108 105
               </el-link>
109 106
             </div>
110
-          </el-form-item> -->
107
+          </el-form-item>
111 108
           <el-form-item label="分管领导审核结算单" prop="">
112 109
             <FileUpload v-if="taskName == '分管审核'" :limit="1" :filePathName="'项目结算/分管领导审核结算单'"
113 110
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setFinalDocument">
114 111
             </FileUpload>
115
-            <div v-if="taskName != '分管审核' && form.finalDocument" class="upload-list">
116
-              <el-link :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`" :underline="false" target="_blank">
117
-                <span class="el-icon-document" style="color: #00f">
118
-                  {{ getFileName(form.finalDocument) }}
119
-                </span>
112
+            <div v-if="form.finalDocument" class="upload-list">
113
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.finalDocument}`)">
114
+                {{ getFileName(form.finalDocument) }}
115
+              </el-link>
116
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`"
117
+                :underline="false" target="_blank">
118
+                <span class="el-icon-download">下载文件</span>
120 119
               </el-link>
121 120
             </div>
122 121
           </el-form-item>
@@ -180,14 +179,14 @@
180 179
                 <td>
181 180
               <tr>
182 181
                 <td>
183
-                  <el-button size="mini" type="primary" icon="el-icon-plus"
182
+                  <el-button size="mini" type="primary" icon="el-icon-plus" :disabled="isModify"
184 183
                     @click="handleChoosePrice(work, index)">选择工作内容</el-button>
185 184
                 </td>
186 185
               </tr>
187 186
               <tr>
188 187
                 <td>
189
-                  <el-input v-model="work.content" type="textarea" clearable
190
-                    :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
188
+                  <el-input v-model="work.content" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }"
189
+                    :disabled="isModify"></el-input>
191 190
                 </td>
192 191
               </tr>
193 192
               </td>
@@ -205,12 +204,12 @@
205 204
               </td>
206 205
               <td>
207 206
                 <el-input-number :precision="2" style="width: 100px" v-model="work.workload" clearable
208
-                  @blur="calculateSettle(work)" :controls="false"></el-input-number>
207
+                  :disabled="isModify" @blur="calculateSettle(work)" :controls="false"></el-input-number>
209 208
               </td>
210 209
               <td>
211 210
                 <div style="display: flex">
212 211
                   <el-input-number :precision="2" style="width: 100px" v-model="work.coefficient" clearable
213
-                    @blur="calculateSettle(work)" :controls="false"></el-input-number>
212
+                    :disabled="isModify" @blur="calculateSettle(work)" :controls="false"></el-input-number>
214 213
                   <el-popover placement="top-start" title="系数备注" width="200" trigger="click">
215 214
                     <div v-html="work.noteTip"></div>
216 215
                     <i class="el-icon-info" slot="reference" @click="getCoefficientRemark(work, work.workType)"></i>
@@ -222,7 +221,7 @@
222 221
                 {{ work.settle }}
223 222
               </td>
224 223
               <td>
225
-                <el-input v-model="work.remark" type="textarea" clearable
224
+                <el-input v-model="work.remark" type="textarea" clearable :disabled="isModify"
226 225
                   :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
227 226
               </td>
228 227
               <td>
@@ -234,12 +233,16 @@
234 233
                 <td :colspan="8">结算费用合计</td>
235 234
                 <td>{{ settleSumTr.amount }}</td>
236 235
                 <td>
237
-                  <el-input v-model="settleSumTr.remark" type="textarea" clearable
236
+                  <el-input v-model="settleSumTr.remark" type="textarea" clearable :disabled="isModify"
238 237
                     :autosize="{ minRows: 2, maxRows: 10 }"></el-input>
239 238
                 </td>
240 239
               </tr>
241 240
             </table>
242 241
             <el-button icon="el-icon-plus" type="primary" plain size="mini" @click="addWorkList"></el-button>
242
+            <div v-if="exceed">
243
+              <el-alert :title="'超过预算金额:' + exceedAmount" type="error">
244
+              </el-alert>
245
+            </div>
243 246
           </el-form-item>
244 247
 
245 248
           <!-- 结算汇总 -->
@@ -257,21 +260,23 @@
257 260
                 <td style="width: 280px">备注</td>
258 261
                 <td style="width: 100px">操作</td>
259 262
               </tr>
260
-              <tr v-for="(work, index) in settleSumList" :key="index">
263
+              <tr v-for="(  work, index  ) in   settleSumList  " :key="index">
261 264
                 <td>
262 265
                   {{ index + 1 }}
263 266
                 </td>
264 267
                 <td>
265
-                  <el-input v-model="work.content" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
268
+                  <el-input v-model="work.content" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }"
269
+                    :disabled="isModify">
266 270
                   </el-input>
267 271
                 </td>
268 272
                 <td>
269 273
                   <el-input-number :min="0" :precision="2" style="width: 200px" v-model="work.amount" clearable
270
-                    :controls="false" @blur="calculateActualSumSettle()"></el-input-number>
274
+                    :disabled="isModify" :controls="false" @blur="calculateActualSumSettle()"></el-input-number>
271 275
                   <!-- {{ work.amount }} -->
272 276
                 </td>
273 277
                 <td>
274
-                  <el-input v-model="work.remark" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
278
+                  <el-input v-model="work.remark" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }"
279
+                    :disabled="isModify">
275 280
                   </el-input>
276 281
                 </td>
277 282
                 <td>
@@ -291,7 +296,7 @@
291 296
                 <td style="width: 280px">备注</td>
292 297
                 <td style="width: 100px">操作</td>
293 298
               </tr>
294
-              <tr v-for="(dept, index) in deptSettleList" :key="index">
299
+              <tr v-for="(  dept, index  ) in   deptSettleList  " :key="index">
295 300
                 <td :rowspan="deptSettleList.length" v-if="index == 0">
296 301
                   {{ Number(actualSumSettle).toFixed(2) }}
297 302
                 </td>
@@ -301,18 +306,20 @@
301 306
                 <td>
302 307
                   <!-- <el-input v-model="dept.content" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
303 308
                   </el-input> -->
304
-                  <el-select v-model="dept.content" placeholder="请选择" filterable clearable style="width:100%;">
305
-                    <el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName"
309
+                  <el-select v-model="dept.content" placeholder="请选择" filterable clearable style="width:100%;"
310
+                    :disabled="isModify">
311
+                    <el-option v-for="  item   in   deptList  " :key="item.deptId" :label="item.deptName"
306 312
                       :value="item.deptName">
307 313
                     </el-option>
308 314
                   </el-select>
309 315
                 </td>
310 316
                 <td>
311 317
                   <el-input-number :precision="2" style="width: 200px" v-model="dept.amount" clearable :controls="false"
312
-                    @blur="calculateDeptAmount(index)"></el-input-number>
318
+                    :disabled="isModify" @blur="calculateDeptAmount(index)"></el-input-number>
313 319
                 </td>
314 320
                 <td>
315
-                  <el-input v-model="dept.remark" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
321
+                  <el-input v-model="dept.remark" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }"
322
+                    :disabled="isModify">
316 323
                   </el-input>
317 324
                 </td>
318 325
                 <td>
@@ -324,7 +331,7 @@
324 331
                 <td :colspan="2">结算说明</td>
325 332
                 <td :colspan="3">
326 333
                   <el-input v-model="form.settleComment" type="textarea" clearable placeholder="请输入说明"
327
-                    :autosize="{ minRows: 2, maxRows: 10 }">
334
+                    :autosize="{ minRows: 2, maxRows: 10 }" :disabled="isModify">
328 335
                   </el-input>
329 336
                 </td>
330 337
               </tr>
@@ -372,40 +379,6 @@
372 379
                 </el-form-item>
373 380
               </el-col>
374 381
             </el-row>
375
-            <!-- <el-form-item label="项目管理部(结算)">
376
-              <el-input v-model="form.xmComment" type="textarea" :disabled="taskName != '项目管理部结算'" clearable
377
-                :autosize="{ minRows: 4, maxRows: 10 }">
378
-              </el-input>
379
-            </el-form-item>
380
-            <el-row>
381
-              <el-col :span="6" :xs="24" :offset="12">
382
-                <el-form-item label="签名:" label-width="120px">
383
-                  <span class="auditor"> {{ form.xmUserName }} </span>
384
-                </el-form-item>
385
-              </el-col>
386
-              <el-col :span="6">
387
-                <el-form-item label="日期:" label-width="120px">
388
-                  <span> {{ form.xmTime }} </span>
389
-                </el-form-item>
390
-              </el-col>
391
-            </el-row>
392
-            <el-form-item label="项目承担部门(确认)">
393
-              <el-input v-model="form.deptComment" type="textarea" :disabled="taskName != '结算发起人确认'" clearable
394
-                :autosize="{ minRows: 4, maxRows: 10 }">
395
-              </el-input>
396
-            </el-form-item>
397
-            <el-row>
398
-              <el-col :span="6" :xs="24" :offset="12">
399
-                <el-form-item label="签名:" label-width="120px">
400
-                  <span class="auditor"> {{ form.deptUserName }} </span>
401
-                </el-form-item>
402
-              </el-col>
403
-              <el-col :span="6">
404
-                <el-form-item label="日期:" label-width="120px">
405
-                  <span> {{ form.deptTime }} </span>
406
-                </el-form-item>
407
-              </el-col>
408
-            </el-row> -->
409 382
             <el-form-item label="经营发展部(校核)">
410 383
               <el-input v-model="form.jyComment" type="textarea" :disabled="taskName != '经营发展部校核'" clearable
411 384
                 :autosize="{ minRows: 4, maxRows: 10 }">
@@ -457,12 +430,31 @@
457 430
                 </el-form-item>
458 431
               </el-col>
459 432
             </el-row>
433
+
434
+            <el-form-item label="董事长(批准)" v-if="exceed">
435
+              <el-input v-model="form.dszComment" type="textarea" :disabled="taskName != '董事长批准'" clearable
436
+                :autosize="{ minRows: 4, maxRows: 10 }">
437
+              </el-input>
438
+            </el-form-item>
439
+            <el-row v-if="exceed">
440
+              <el-col :span="6" :xs="24" :offset="12">
441
+                <el-form-item label="签名:" label-width="120px">
442
+                  <span class="auditor"> {{ form.dszUserName }} </span>
443
+                </el-form-item>
444
+              </el-col>
445
+              <el-col :span="6">
446
+                <el-form-item label="日期:" label-width="120px">
447
+                  <span> {{ form.dszTime }} </span>
448
+                </el-form-item>
449
+              </el-col>
450
+            </el-row>
460 451
           </div>
461 452
         </el-form>
453
+        <el-button type="success" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
462 454
         <div style="text-align: center" v-if="!disabled">
463
-          <el-button type="success" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
464 455
           <el-button type="warning" @click="preserve">保存</el-button>
465
-          <el-button type="primary" @click="submitNextFlow">提交下一个流程</el-button>
456
+          <el-button type="primary" @click="submitNextFlow" v-if="taskName != '董事长批准'">提交下一个流程</el-button>
457
+          <el-button type="primary" @click="submitNextFlow" v-else>结算批准</el-button>
466 458
         </div>
467 459
       </el-col>
468 460
       <el-col :span="5" :xs="24" v-if="flowDisabled">
@@ -606,9 +598,16 @@ export default {
606 598
       clickWork: {},
607 599
       deptId: undefined,
608 600
       deptList: [],
609
-      isCorrect: true,
601
+      exceed: false, //是否超预算
602
+      exceedAmount: 0,
603
+      isModify: false, //是否可以修改结算工作量
610 604
     };
611 605
   },
606
+  watch: {
607
+    'chooseProject.projectId'(val) {
608
+      this.getBudgetSettle();
609
+    }
610
+  },
612 611
   created() {
613 612
     this.getProjectList(); //获取项目列表
614 613
     this.getContractDataList(); //获取合同编码和编号
@@ -631,40 +630,105 @@ export default {
631 630
       });
632 631
     } else {
633 632
       this.handleSelectProject(this.form.projectId);
634
-      this.getBudgetSettle();
635 633
     }
634
+    this.isModify = this.taskName != '结算发起' && this.taskName != '经营发展部校核' && this.taskName != '分管审核'
636 635
   },
637 636
   methods: {
638 637
     // 初始化表单
639
-    initForm() {
640
-      listSettle({ settleId: this.taskForm.formId }).then((res) => {
641
-        if (res.total == 1) {
642
-          this.form = res.rows[0];
643
-          this.flag = true;
644
-          this.handleSelectProject(res.rows[0].projectId);
645
-          this.listSettleWorkFn();
646
-          this.listSettleSummaryFn();
647
-          getUser(this.form.reporter).then((res) => {
648
-            if (res.data) {
649
-              this.form.reporterName = res.data.nickName;
650
-              this.deptId = res.data.deptId;
638
+    async initForm() {
639
+      const res = await listSettle({ settleId: this.taskForm.formId });
640
+      if (res.total === 1) {
641
+        this.form = res.rows[0];
642
+        this.flag = true;
643
+        const settleId = this.taskForm.formId;
644
+        const [
645
+          projectResponse,
646
+          budgetResponse,
647
+          settleWorkResponse,
648
+          settleSummaryResponse
649
+        ] = await Promise.all([
650
+          getProject(res.rows[0].projectId),
651
+          listBudget({ projectId: res.rows[0].projectId }),
652
+          listSettleWork({ settleId }),
653
+          listSettleSummary({ settleId })
654
+        ]);
655
+
656
+        if (projectResponse) {
657
+          this.chooseProject = projectResponse.data;
658
+          this.isSelect = true;
659
+        }
660
+        if (budgetResponse && budgetResponse.total === 1) {
661
+          const budgetId = budgetResponse.rows[0].budgetId;
662
+          const budgetSettleResponse = await listBudgetSettle({ budgetId });
663
+          if (budgetSettleResponse.code === 200) {
664
+            this.budgetList = budgetSettleResponse.rows;
665
+            this.budgetSettle = budgetResponse.rows[0].settleExpense;
666
+          } else {
667
+            this.budgetList = [];
668
+            this.budgetSettle = 0;
669
+          }
670
+        } else {
671
+          this.budgetList = [];
672
+          this.budgetSettle = 0;
673
+        }
674
+        // 获取申请工作量列表
675
+        if (settleWorkResponse) {
676
+          this.settleWorkList = settleWorkResponse.rows;
677
+          for (let work of this.settleWorkList) {
678
+            getPrice(work.priceId).then((settleWorkResponse) => {
679
+              if (settleWorkResponse.data) {
680
+                this.setValue(work, "scale", settleWorkResponse.data.scaleGrade);
681
+                this.setValue(work, "unit", settleWorkResponse.data.unit);
682
+                if (work.groundType == "0") {
683
+                  work.price = settleWorkResponse.data.commonPrice;
684
+                } else {
685
+                  work.price = settleWorkResponse.data.complexPrice;
686
+                }
687
+              }
688
+            });
689
+          }
690
+        }
691
+        // 结算汇总里的扣除明细以及部门结算金额
692
+        if (settleSummaryResponse) {
693
+          this.oldSettleSumList = settleSummaryResponse.rows;
694
+          for (let s of settleSummaryResponse.rows) {
695
+            if (s.content == "结算费用合计") {
696
+              this.settleSumTr = s;
697
+              break;
651 698
             }
652
-          });
653
-          this.getCurrentUser();
654
-        } else if (res.total == 0) {
655
-          this.flag = false;
656
-          if (this.taskName == "结算发起") {
657
-            this.form.reporter = this.$store.state.user.id;
658
-            this.form.reporterName = this.$store.state.user.name;
659
-            this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
660 699
           }
700
+          this.settleSumList = settleSummaryResponse.rows.filter((item) => item.tableNumber == "0");
701
+          this.deptSettleList = settleSummaryResponse.rows.filter(
702
+            (item) => item.tableNumber == "1"
703
+          );
704
+          this.calculateActualSumSettle();
661 705
         }
662
-        setTimeout(() => {
663
-          this.loading = false;
664
-          this.deptList = this.$store.state.user.deptList
665
-        }, 500);
666
-      });
706
+        if (this.settleSumTr.amount > this.budgetSettle) {
707
+          this.exceed = true
708
+        } else {
709
+          this.exceed = false
710
+        }
711
+        this.calcaulatExceed()
712
+
713
+        getUser(this.form.reporter).then((res) => {
714
+          if (res.data) {
715
+            this.form.reporterName = res.data.nickName;
716
+            this.deptId = res.data.deptId;
717
+          }
718
+        });
719
+        this.getCurrentUser();
720
+      } else if (res.total == 0) {
721
+        this.flag = false;
722
+        if (this.taskName == "结算发起") {
723
+          this.form.reporter = this.$store.state.user.id;
724
+          this.form.reporterName = this.$store.state.user.name;
725
+          this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
726
+        }
727
+      }
728
+      this.loading = false;
729
+      this.deptList = this.$store.state.user.deptList
667 730
     },
731
+
668 732
     async getBudgetSettle() {
669 733
       let budgetData = await listBudget({ projectId: this.form.projectId })
670 734
       if (budgetData.total == 1) {
@@ -672,10 +736,11 @@ export default {
672 736
         let datas = await listBudgetSettle({ budgetId })
673 737
         if (datas.code == 200) {
674 738
           this.budgetList = datas.rows;
675
-          this.budgetList.forEach(item => {
676
-            this.budgetSettle = this.budgetSettle + item.settle
677
-          })
739
+          this.budgetSettle = budgetData.rows[0].settleExpense
678 740
         }
741
+      } else {
742
+        this.budgetList = []
743
+        this.budgetSettle = 0
679 744
       }
680 745
     },
681 746
     // 获取当前处理人
@@ -688,14 +753,6 @@ export default {
688 753
         this.form.jsUserName = this.$store.state.user.name;
689 754
         this.form.jsUserId = this.$store.state.user.id;
690 755
         this.form.jsTime = parseTime(new Date(), "{y}-{m}-{d}");
691
-        // } else if (this.taskName == "项目管理部结算") {
692
-        //   this.form.xmUserName = this.$store.state.user.name;
693
-        //   this.form.xmUserId = this.$store.state.user.id;
694
-        //   this.form.xmTime = parseTime(new Date(), "{y}-{m}-{d}");
695
-        // } else if (this.taskName == "结算发起人确认") {
696
-        //   this.form.deptUserName = this.$store.state.user.name;
697
-        //   this.form.deptUserId = this.$store.state.user.id;
698
-        //   this.form.deptTime = parseTime(new Date(), "{y}-{m}-{d}");
699 756
       } else if (this.taskName == "经营发展部校核") {
700 757
         this.form.jyUserName = this.$store.state.user.name;
701 758
         this.form.jyUserId = this.$store.state.user.id;
@@ -708,31 +765,21 @@ export default {
708 765
         this.form.gmUserName = this.$store.state.user.name;
709 766
         this.form.gmUserId = this.$store.state.user.id;
710 767
         this.form.gmTime = parseTime(new Date(), "{y}-{m}-{d}");
768
+      } else if (this.taskName == "董事长批准") {
769
+        this.form.dszUserName = this.$store.state.user.name;
770
+        this.form.dszUserId = this.$store.state.user.id;
771
+        this.form.dszTime = parseTime(new Date(), "{y}-{m}-{d}");
711 772
       }
712 773
       this.getReviewerName();
713 774
     },
714 775
     // 获取审核人
715 776
     getReviewerName() {
716 777
       if (this.form.zhUserId) {
717
-        getUser(this.form.zhUserId).then((res) => {
718
-          this.form.zhUserName = res.data.nickName;
719
-        });
778
+        this.form.zhUserName = this.getUserName(this.form.zhUserId)
720 779
       }
721 780
       if (this.form.jsUserId) {
722
-        getUser(this.form.jsUserId).then((res) => {
723
-          this.form.jsUserName = res.data.nickName;
724
-        });
781
+        this.form.jsUserName = this.getUserName(this.form.jsUserId)
725 782
       }
726
-      // if (this.form.xmUserId) {
727
-      //   getUser(this.form.xmUserId).then((res) => {
728
-      //     this.form.xmUserName = res.data.nickName;
729
-      //   });
730
-      // }
731
-      // if (this.form.deptUserId) {
732
-      //   getUser(this.form.deptUserId).then((res) => {
733
-      //     this.form.deptUserName = res.data.nickName;
734
-      //   });
735
-      // }
736 783
       if (this.form.jyUserId) {
737 784
         getUser(this.form.jyUserId).then((res) => {
738 785
           this.form.jyUserName = res.data.nickName;
@@ -753,20 +800,15 @@ export default {
753 800
     preserve() {
754 801
       this.$refs["settleForm"].validate((vaild) => {
755 802
         if (vaild) {
756
-          if (this.isCorrect) {
757
-            if (this.flag) {
758
-              this.updateSettleFn();
759
-              this.updateSettleSummaryFn();
760
-              this.updateSettleWorkFn();
761
-              this.$message.success("保存成功");
762
-            } else {
763
-              this.addSettleFn();
764
-              this.$message.success("保存成功");
765
-            }
803
+          if (this.flag) {
804
+            this.updateSettleFn();
805
+            this.updateSettleSummaryFn();
806
+            this.updateSettleWorkFn();
807
+            this.$message.success("保存成功");
766 808
           } else {
767
-            this.$message.error('结算合计总金额不能大于预算内项目结算总金额!')
809
+            this.addSettleFn();
810
+            this.$message.success("保存成功");
768 811
           }
769
-
770 812
         } else {
771 813
           this.$message.error('请完善表单必填项')
772 814
         }
@@ -776,31 +818,33 @@ export default {
776 818
       this.$refs["settleForm"].validate((vaild) => {
777 819
         if (vaild) {
778 820
           this.preserve();
779
-          if (this.isCorrect) {
780
-            if (this.taskName == "结算发起") {
781
-              getUserByRole({ roleId: 4 }).then((res) => {
782
-                this.getNextFlowNodeFn(res.data[0]);
783
-              });
784
-            } else if (this.taskName == "综合事务部处理") {
785
-              this.getNextFlowNodeFn(null, 110, false);
786
-            } else if (this.taskName == "技术质量部审核") {
787
-              this.getNextFlowNodeFn(null, 107, false);
788
-              // } else if (this.taskName == "项目管理部结算") {
789
-              //   this.getNextFlowNodeFn();
790
-              // } else if (this.taskName == "结算发起人确认") {
791
-              //   this.getNextFlowNodeFn(null, 105, false);
792
-            } else if (this.taskName == "经营发展部校核") {
793
-              this.getNextFlowNodeFn(null, this.deptId, true);
794
-            } else if (this.taskName == "分管审核") {
795
-              getUserByPost({ postName: "总经理" }).then((res) => {
821
+          if (this.taskName == "结算发起") {
822
+            getUserByRole({ roleId: 4 }).then((res) => {
823
+              this.getNextFlowNodeFn(res.data[0]);
824
+            });
825
+          } else if (this.taskName == "综合事务部处理") {
826
+            this.getNextFlowNodeFn(null, 109, false);
827
+          } else if (this.taskName == "技术质量部审核") {
828
+            this.getNextFlowNodeFn(null, 105, true);
829
+          } else if (this.taskName == "经营发展部校核") {
830
+            this.getNextFlowNodeFn(null, this.deptId, true);
831
+          } else if (this.taskName == "分管审核") {
832
+            getUserByPost({ postName: "总经理" }).then((res) => {
833
+              this.getNextFlowNodeFn(res.data[0].userId);
834
+            });
835
+          } else if (this.taskName == "总经理审批") {
836
+            this.$set(this.taskForm.variables, "exceed", this.exceed);
837
+            if (this.exceed) {
838
+              getUserByPost({ postName: "董事长" }).then((res) => {
796 839
                 this.getNextFlowNodeFn(res.data[0].userId);
797 840
               });
798
-            } else if (this.taskName == "总经理审批") {
841
+            } else {
799 842
               this.getNextFlowNodeFn();
800 843
             }
801
-          } else {
802
-            this.$message.error('结算合计总金额不能大于预算内项目结算总金额!')
844
+          } else if (this.taskName == "董事长批准") {
845
+            this.getNextFlowNodeFn();
803 846
           }
847
+
804 848
         } else {
805 849
           this.$message.error('请完善表单必填项')
806 850
         }
@@ -812,39 +856,34 @@ export default {
812 856
       getNextFlowNode(params).then((res) => {
813 857
         if (userId) {
814 858
           this.$set(this.taskForm.variables, "approval", userId);
815
-          complete(this.taskForm).then((response) => {
816
-            this.$modal.msgSuccess(response.msg);
817
-            this.$emit("goBack");
818
-          });
859
+          this.handleComplete(this.taskForm);
819 860
         } else {
820 861
           if (deptId && isList) {
821 862
             getUsersManageLeaderByDept({ deptId }).then((res) => {
822
-              let id = [];
823
-              id.push(res.data[0].userId);
824
-              // id.push(10);
825
-              this.$set(this.taskForm.variables, "approvalList", id);
826
-              complete(this.taskForm).then((response) => {
827
-                this.$modal.msgSuccess(response.msg);
828
-                this.$emit("goBack");
829
-              });
863
+              let ids = [];
864
+              res.data.forEach(user => {
865
+                ids.push(user.userId)
866
+              })
867
+              this.$set(this.taskForm.variables, "approvalList", ids);
868
+              this.handleComplete(this.taskForm);
830 869
             });
831 870
           } else if (deptId && !isList) {
832 871
             getUsersDeptLeaderByDept({ deptId }).then((res) => {
833 872
               this.$set(this.taskForm.variables, "approval", res.data.userId);
834
-              complete(this.taskForm).then((response) => {
835
-                this.$modal.msgSuccess(response.msg);
836
-                this.$emit("goBack");
837
-              });
873
+              this.handleComplete(this.taskForm);
838 874
             });
839 875
           } else {
840
-            complete(this.taskForm).then((response) => {
841
-              this.$modal.msgSuccess(response.msg);
842
-              this.$emit("goBack");
843
-            });
876
+            this.handleComplete(this.taskForm);
844 877
           }
845 878
         }
846 879
       });
847 880
     },
881
+    handleComplete(taskForm) {
882
+      complete(taskForm).then(response => {
883
+        this.$modal.msgSuccess(response.msg);
884
+        this.$emit('goBack');
885
+      })
886
+    },
848 887
     // 查询项目列表
849 888
     getProjectList() {
850 889
       listProject({
@@ -860,6 +899,7 @@ export default {
860 899
         getProject(val).then((res) => {
861 900
           this.chooseProject = res.data;
862 901
           this.isSelect = true;
902
+          this.getBudgetSettle();
863 903
           getUser(this.chooseProject.projectRegistrant).then((res) => {
864 904
             if (res.data) {
865 905
               this.$set(
@@ -970,11 +1010,16 @@ export default {
970 1010
       }
971 1011
       this.settleSumTr.amount = sum.toFixed(2);
972 1012
       if (sum > this.budgetSettle) {
973
-        this.$message.error('结算合计总金额不能大于预算内项目结算总金额!')
974
-        this.settleSumTr.amount = this.budgetSettle.toFixed(2);
975
-        this.isCorrect = false;
1013
+        this.$confirm('结算合计总金额大于了预算内项目结算总金额,将走《超预算或预算外支付(报销)》流程', '提示', {
1014
+          confirmButtonText: '确定',
1015
+          type: 'warning'
1016
+        }).then(() => {
1017
+          this.exceed = true;
1018
+          this.calcaulatExceed();
1019
+          return
1020
+        })
976 1021
       } else {
977
-        this.isCorrect = true;
1022
+        this.exceed = false;
978 1023
       }
979 1024
     },
980 1025
     calculateActualSumSettle() {
@@ -984,6 +1029,8 @@ export default {
984 1029
         sum = sum + Number(a.amount);
985 1030
       }
986 1031
       this.actualSumSettle = Number(this.settleSumTr.amount) - sum;
1032
+      if (this.deptSettleList.length == 1)
1033
+        this.deptSettleList[0].amount = this.actualSumSettle;
987 1034
     },
988 1035
     calculateDeptAmount(index) {
989 1036
       let num = 0;
@@ -997,6 +1044,10 @@ export default {
997 1044
         }
998 1045
       }
999 1046
     },
1047
+    calcaulatExceed() {
1048
+      if (Number(this.budgetSettle) - Number(this.settleSumTr.amount) < 0)
1049
+        this.exceedAmount = Number(this.settleSumTr.amount) - Number(this.budgetSettle)
1050
+    },
1000 1051
     handleChoosePrice(work, index) {
1001 1052
       this.clickWork = work;
1002 1053
       this.clickWork.index = index;
@@ -1053,41 +1104,7 @@ export default {
1053 1104
         addSettleSummary(item);
1054 1105
       }
1055 1106
     },
1056
-    // 获取数据
1057
-    listSettleWorkFn() {
1058
-      listSettleWork({ settleId: this.taskForm.formId }).then((res) => {
1059
-        this.settleWorkList = res.rows;
1060
-        for (let work of this.settleWorkList) {
1061
-          getPrice(work.priceId).then((res) => {
1062
-            if (res.data) {
1063
-              this.setValue(work, "scale", res.data.scaleGrade);
1064
-              this.setValue(work, "unit", res.data.unit);
1065
-              if (work.groundType == "0") {
1066
-                work.price = res.data.commonPrice;
1067
-              } else {
1068
-                work.price = res.data.complexPrice;
1069
-              }
1070
-            }
1071
-          });
1072
-        }
1073
-      });
1074
-    },
1075
-    listSettleSummaryFn() {
1076
-      listSettleSummary({ settleId: this.taskForm.formId }).then((res) => {
1077
-        this.oldSettleSumList = res.rows;
1078
-        for (let s of res.rows) {
1079
-          if (s.content == "结算费用合计") {
1080
-            this.settleSumTr = s;
1081
-            break;
1082
-          }
1083
-        }
1084
-        this.settleSumList = res.rows.filter((item) => item.tableNumber == "0");
1085
-        this.deptSettleList = res.rows.filter(
1086
-          (item) => item.tableNumber == "1"
1087
-        );
1088
-        this.calculateActualSumSettle();
1089
-      });
1090
-    },
1107
+
1091 1108
     // 更新数据
1092 1109
     updateSettleFn() {
1093 1110
       updateSettle(this.form);
@@ -1181,6 +1198,7 @@ table {
1181 1198
   /* border: 1px solid black; */
1182 1199
   text-align: center;
1183 1200
   border-collapse: collapse;
1201
+  width: 100%;
1184 1202
   /*设置背景颜色*/
1185 1203
   /* background-color: #bfa; */
1186 1204
 }

+ 144
- 0
oa-ui/src/views/oa/budget/formData.vue Прегледај датотеку

@@ -0,0 +1,144 @@
1
+<template>
2
+  <div>
3
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
4
+      <el-form-item label="项目id" prop="projectId">
5
+        <el-select v-model="form.projectId" clearable filterable remote reserve-keyword placeholder="请输入项目编号"
6
+          :remote-method="remoteMethod" :loading="loading" style="width: 400px;">
7
+          <el-option v-for="project in projectList" :key="project.projectId"
8
+            :label="project.projectNumber + '-' + project.projectName" :value="project.projectId">
9
+          </el-option>
10
+        </el-select>
11
+      </el-form-item>
12
+      <el-form-item label="人员成本" prop="staffCost">
13
+        <el-input v-model="form.staffCost" placeholder="请输入人员成本" />
14
+      </el-form-item>
15
+      <el-form-item label="车辆成本" prop="carCost">
16
+        <el-input v-model="form.carCost" placeholder="请输入车辆成本" />
17
+      </el-form-item>
18
+      <el-form-item label="设备成本" prop="deviceCost">
19
+        <el-input v-model="form.deviceCost" placeholder="请输入设备成本" />
20
+      </el-form-item>
21
+      <el-form-item label="固定成本" prop="fixCost">
22
+        <el-input v-model="form.fixCost" placeholder="请输入固定成本" />
23
+      </el-form-item>
24
+      <el-form-item label="预结算额" prop="settleExpense">
25
+        <el-input v-model="form.settleExpense" placeholder="请输入预结算额" />
26
+      </el-form-item>
27
+      <el-form-item label="外协费用" prop="outExpense">
28
+        <el-input v-model="form.outExpense" placeholder="请输入外协费用" />
29
+      </el-form-item>
30
+      <el-form-item label="经营费用" prop="businessExpense">
31
+        <el-input v-model="form.businessExpense" placeholder="请输入经营费用" />
32
+      </el-form-item>
33
+      <el-form-item label="税费成本" prop="taxExpense">
34
+        <el-input v-model="form.taxExpense" placeholder="请输入税费成本" />
35
+      </el-form-item>
36
+      <el-form-item label="车船租赁" prop="rentExpense">
37
+        <el-input v-model="form.rentExpense" placeholder="请输入车船租赁" />
38
+      </el-form-item>
39
+      <el-form-item label="其他费用" prop="otherExpense">
40
+        <el-input v-model="form.otherExpense" placeholder="请输入其他费用" />
41
+      </el-form-item>
42
+      <el-form-item label="外协费用备注" prop="outRemark">
43
+        <el-input v-model="form.outRemark" placeholder="请输入外协费用备注" />
44
+      </el-form-item>
45
+      <el-form-item label="经营管理备注" prop="businessRemark">
46
+        <el-input v-model="form.businessRemark" placeholder="请输入经营管理备注" />
47
+      </el-form-item>
48
+      <el-form-item label="税费成本备注" prop="taxRemark">
49
+        <el-input v-model="form.taxRemark" placeholder="请输入税费成本备注" />
50
+      </el-form-item>
51
+      <el-form-item label="车船租赁备注" prop="rentRemark">
52
+        <el-input v-model="form.rentRemark" placeholder="请输入车船租赁备注" />
53
+      </el-form-item>
54
+      <el-form-item label="其他费用备注" prop="otherRemark">
55
+        <el-input v-model="form.otherRemark" placeholder="请输入其他费用备注" />
56
+      </el-form-item>
57
+      <el-form-item label="直接成本" prop="directExpense">
58
+        <el-input v-model="form.directExpense" placeholder="请输入直接成本" />
59
+      </el-form-item>
60
+      <el-form-item label="预算总额" prop="totalBudget">
61
+        <el-input v-model="form.totalBudget" placeholder="请输入预算总额" />
62
+      </el-form-item>
63
+      <el-form-item label="编制人" prop="compiler">
64
+        <el-input v-model="form.compiler" placeholder="请输入编制人" />
65
+      </el-form-item>
66
+      <el-form-item label="审核人" prop="auditor">
67
+        <el-input v-model="form.auditor" placeholder="请输入审核人" />
68
+      </el-form-item>
69
+    </el-form>
70
+    <el-dialog title="选择项目" :visible.sync="prOpen" width="70%" append-to-body>
71
+      <choose-project @chooseProject="confirmProject"></choose-project>
72
+    </el-dialog>
73
+  </div>
74
+</template>
75
+
76
+<script>
77
+import { listBudget, getBudget, delBudget, addBudget, updateBudget } from "@/api/oa/budget/budget";
78
+import { listProject } from '@/api/oa/project/project';
79
+import ChooseProject from '../../flowable/form/components/chooseProject.vue';
80
+export default {
81
+  components: {
82
+    ChooseProject
83
+  },
84
+  props: {
85
+    form: {
86
+      type: Object
87
+    }
88
+  },
89
+  data() {
90
+    return {
91
+      // 表单校验
92
+      rules: {
93
+      },
94
+      prOpen: false,
95
+      chooseProject: {},
96
+      projectList: []
97
+    }
98
+  },
99
+  methods: {
100
+    /** 提交按钮 */
101
+    submitForm() {
102
+      this.$refs["form"].validate(valid => {
103
+        if (valid) {
104
+          if (this.form.budgetId != null) {
105
+            updateBudget(this.form).then(response => {
106
+              this.$modal.msgSuccess("修改成功");
107
+              this.open = false;
108
+              this.getList();
109
+            });
110
+          } else {
111
+            addBudget(this.form).then(response => {
112
+              this.$modal.msgSuccess("新增成功");
113
+              this.open = false;
114
+              this.getList();
115
+            });
116
+          }
117
+        }
118
+      });
119
+    },
120
+    remoteMethod(val) {
121
+      listProject({
122
+        pageNum: 1,
123
+        pageSize: 20,
124
+        projectNumber: val
125
+      }).then(res => {
126
+        this.projectList = res.rows;
127
+      })
128
+    },
129
+    confirmProject() {
130
+      if (val.length == 1) {
131
+        this.prOpen = false;
132
+        this.chooseProject = val[0];
133
+        this.$set(this.form, 'projectId', val[0].projectId)
134
+        this.isSelect = true;
135
+      } else {
136
+        this.$message.error("项目只能选择一个!");
137
+        return;
138
+      }
139
+    }
140
+  },
141
+}
142
+</script>
143
+
144
+<style lang="scss" scoped></style>

+ 20
- 82
oa-ui/src/views/oa/budget/index.vue Прегледај датотеку

@@ -21,25 +21,25 @@
21 21
       </el-form-item>
22 22
     </el-form>
23 23
 
24
-    <!-- <el-row :gutter="10" class="mb8">
25
-      <el-col :span="1.5">
24
+    <el-row :gutter="10" class="mb8">
25
+      <!-- <el-col :span="1.5">
26 26
         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
27 27
           v-hasPermi="['oa:budget:add']">新增</el-button>
28
-      </el-col>
29
-      <el-col :span="1.5">
28
+      </el-col> -->
29
+      <!-- <el-col :span="1.5">
30 30
         <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
31 31
           v-hasPermi="['oa:budget:edit']">修改</el-button>
32
-      </el-col>
33
-      <el-col :span="1.5">
32
+      </el-col> -->
33
+      <!-- <el-col :span="1.5">
34 34
         <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
35 35
           v-hasPermi="['oa:budget:remove']">删除</el-button>
36
-      </el-col>
37
-      <el-col :span="1.5">
36
+      </el-col> -->
37
+      <!-- <el-col :span="1.5">
38 38
         <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
39 39
           v-hasPermi="['oa:budget:export']">导出</el-button>
40 40
       </el-col>
41
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
42
-    </el-row> -->
41
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
42
+    </el-row>
43 43
 
44 44
     <el-table v-loading="loading" :data="budgetList" @selection-change="handleSelectionChange">
45 45
       <el-table-column label="序号" align="center" type="index" />
@@ -79,77 +79,12 @@
79 79
       @pagination="getList" />
80 80
 
81 81
     <!-- 添加或修改cmc预算管理对话框 -->
82
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
83
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
84
-        <el-form-item label="项目id" prop="projectId">
85
-          <el-input v-model="form.projectId" placeholder="请输入项目id" />
86
-        </el-form-item>
87
-        <el-form-item label="人员成本" prop="staffCost">
88
-          <el-input v-model="form.staffCost" placeholder="请输入人员成本" />
89
-        </el-form-item>
90
-        <el-form-item label="车辆成本" prop="carCost">
91
-          <el-input v-model="form.carCost" placeholder="请输入车辆成本" />
92
-        </el-form-item>
93
-        <el-form-item label="设备成本" prop="deviceCost">
94
-          <el-input v-model="form.deviceCost" placeholder="请输入设备成本" />
95
-        </el-form-item>
96
-        <el-form-item label="固定成本" prop="fixCost">
97
-          <el-input v-model="form.fixCost" placeholder="请输入固定成本" />
98
-        </el-form-item>
99
-        <el-form-item label="预结算额" prop="settleExpense">
100
-          <el-input v-model="form.settleExpense" placeholder="请输入预结算额" />
101
-        </el-form-item>
102
-        <el-form-item label="外协费用" prop="outExpense">
103
-          <el-input v-model="form.outExpense" placeholder="请输入外协费用" />
104
-        </el-form-item>
105
-        <el-form-item label="经营费用" prop="businessExpense">
106
-          <el-input v-model="form.businessExpense" placeholder="请输入经营费用" />
107
-        </el-form-item>
108
-        <el-form-item label="税费成本" prop="taxExpense">
109
-          <el-input v-model="form.taxExpense" placeholder="请输入税费成本" />
110
-        </el-form-item>
111
-        <el-form-item label="车船租赁" prop="rentExpense">
112
-          <el-input v-model="form.rentExpense" placeholder="请输入车船租赁" />
113
-        </el-form-item>
114
-        <el-form-item label="其他费用" prop="otherExpense">
115
-          <el-input v-model="form.otherExpense" placeholder="请输入其他费用" />
116
-        </el-form-item>
117
-        <el-form-item label="外协费用备注" prop="outRemark">
118
-          <el-input v-model="form.outRemark" placeholder="请输入外协费用备注" />
119
-        </el-form-item>
120
-        <el-form-item label="经营管理备注" prop="businessRemark">
121
-          <el-input v-model="form.businessRemark" placeholder="请输入经营管理备注" />
122
-        </el-form-item>
123
-        <el-form-item label="税费成本备注" prop="taxRemark">
124
-          <el-input v-model="form.taxRemark" placeholder="请输入税费成本备注" />
125
-        </el-form-item>
126
-        <el-form-item label="车船租赁备注" prop="rentRemark">
127
-          <el-input v-model="form.rentRemark" placeholder="请输入车船租赁备注" />
128
-        </el-form-item>
129
-        <el-form-item label="其他费用备注" prop="otherRemark">
130
-          <el-input v-model="form.otherRemark" placeholder="请输入其他费用备注" />
131
-        </el-form-item>
132
-        <el-form-item label="直接成本" prop="directExpense">
133
-          <el-input v-model="form.directExpense" placeholder="请输入直接成本" />
134
-        </el-form-item>
135
-        <el-form-item label="预算总额" prop="totalBudget">
136
-          <el-input v-model="form.totalBudget" placeholder="请输入预算总额" />
137
-        </el-form-item>
138
-        <el-form-item label="编制人" prop="compiler">
139
-          <el-input v-model="form.compiler" placeholder="请输入编制人" />
140
-        </el-form-item>
141
-        <el-form-item label="审核人" prop="auditor">
142
-          <el-input v-model="form.auditor" placeholder="请输入审核人" />
143
-        </el-form-item>
144
-      </el-form>
145
-      <div slot="footer" class="dialog-footer">
146
-        <el-button type="primary" @click="submitForm">确 定</el-button>
147
-        <el-button @click="cancel">取 消</el-button>
148
-      </div>
82
+    <el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
83
+      <form-data :form="form" @close="open = false"></form-data>
149 84
     </el-dialog>
150 85
 
151 86
     <el-dialog :title="title" :visible.sync="infoOpen" width="70%" append-to-body>
152
-      <budget-info :taskForm="taskForm" :taskName="''"></budget-info>
87
+      <budget-info :taskForm="taskForm"  :taskName="''"></budget-info>
153 88
     </el-dialog>
154 89
   </div>
155 90
 </template>
@@ -158,9 +93,10 @@
158 93
 import { listBudget, getBudget, delBudget, addBudget, updateBudget } from "@/api/oa/budget/budget";
159 94
 import { listProject } from '@/api/oa/project/project';
160 95
 import budgetInfo from '../../flowable/form/budget/budgetInfo.vue';
96
+import FormData from './formData.vue';
161 97
 export default {
162 98
   name: "Budget",
163
-  components: { budgetInfo, },
99
+  components: { budgetInfo, FormData, },
164 100
   data() {
165 101
     return {
166 102
       // 遮罩层
@@ -212,7 +148,9 @@ export default {
212 148
       // 表单校验
213 149
       rules: {
214 150
       },
215
-      taskForm: {},
151
+      taskForm: {
152
+        formId:''
153
+      },
216 154
       projectList: []
217 155
     };
218 156
   },
@@ -291,7 +229,7 @@ export default {
291 229
     handleAdd() {
292 230
       this.reset();
293 231
       this.open = true;
294
-      this.title = "添加cmc预算管理";
232
+      this.title = "添加预算";
295 233
     },
296 234
     handleView(row) {
297 235
       this.taskForm.formId = row.projectId;
@@ -304,7 +242,7 @@ export default {
304 242
       getBudget(budgetId).then(response => {
305 243
         this.form = response.data;
306 244
         this.open = true;
307
-        this.title = "修改cmc预算管理";
245
+        this.title = "修改预算";
308 246
       });
309 247
     },
310 248
     /** 提交按钮 */

Loading…
Откажи
Сачувај